張開生 陳 明 李春化
(西安電子工程研究所 西安 710100)
現(xiàn)代雷達(dá)系統(tǒng)中,雷達(dá)控制計(jì)算機(jī)和信號(hào)產(chǎn)生板之間的控制信號(hào)主要是通過串口方式進(jìn)行傳輸?shù)?,雖然串口傳輸方式電路結(jié)構(gòu)簡(jiǎn)單、技術(shù)成熟且使用方便,但是串口傳輸方式具有其自身固有缺陷:傳輸距離受限、傳輸速度不高、抗干擾能力差。隨著我國(guó)雷達(dá)技術(shù)的發(fā)展以及雷達(dá)組網(wǎng)的建設(shè),大多數(shù)固定式雷達(dá)都架設(shè)在沒有遮擋的較高塔臺(tái)上,本地終端計(jì)算機(jī)安裝在距離雷達(dá)較遠(yuǎn)的雷達(dá)操作室內(nèi),同樣機(jī)動(dòng)式雷達(dá)在結(jié)構(gòu)設(shè)計(jì)上也用屏蔽網(wǎng)將雷達(dá)操控區(qū)與雷達(dá)機(jī)柜分割開,這樣可以減弱雷達(dá)工作時(shí)微波輻射和噪聲干擾[1]。同時(shí),由于計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,越來越多的設(shè)備需要網(wǎng)絡(luò)接入功能,以實(shí)現(xiàn)設(shè)備的遠(yuǎn)程監(jiān)控[2]。因此,串口傳輸方式由于其固有缺陷,已經(jīng)越來越難以滿足系統(tǒng)的要求,需要一種新的控制信號(hào)傳遞方式。
針對(duì)串口控制的缺點(diǎn),本文提出了基于SOC的雷達(dá)遠(yuǎn)程控制器,整個(gè)系統(tǒng)以Xilinx的Virtex-V FXT芯片為硬件核心,利用FPGA內(nèi)部的邏輯資源搭建一個(gè)以軟核CPU為核心的嵌入式系統(tǒng),通過移植操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧,為系統(tǒng)提供多任務(wù)處理能力和網(wǎng)絡(luò)接入能力。在遠(yuǎn)端的操控室中對(duì)雷達(dá)參數(shù)進(jìn)行設(shè)置,然后將雷達(dá)參數(shù)通過以太網(wǎng)發(fā)送給信號(hào)處理器,從而實(shí)現(xiàn)對(duì)信號(hào)處理器的遠(yuǎn)程控制和參數(shù)修改。這種控制方式同傳統(tǒng)的串口相比具有:傳輸距離遠(yuǎn)、傳輸速率高且抗干擾能力強(qiáng)的特點(diǎn)。
本文主要針對(duì)現(xiàn)在雷達(dá)系統(tǒng)中以FPGA為基礎(chǔ)的信號(hào)處理器,目前大多數(shù)信號(hào)處理都是基于FPGA器件,因?yàn)镕PGA器件在底層算法實(shí)現(xiàn)上具有處理速度快、可重構(gòu)性強(qiáng)和可編程的特點(diǎn)。在信號(hào)處理中,F(xiàn)PGA主要擔(dān)當(dāng)著中頻數(shù)據(jù)的正交分解、采樣速率轉(zhuǎn)換、FFT等一些運(yùn)算結(jié)構(gòu)簡(jiǎn)單、數(shù)據(jù)處理量大和處理速度高的算法實(shí)現(xiàn)。在現(xiàn)代雷達(dá)系統(tǒng)中,根據(jù)特定的環(huán)境或者要求快速可靠的對(duì)算法的某些參數(shù)進(jìn)行配置、修改或選擇顯得尤為重要。
目前對(duì)FPGA內(nèi)部參數(shù)的配置、修改或選擇主要是通過串口實(shí)現(xiàn),但是串口傳輸距離受到限制,同時(shí)也只能進(jìn)行點(diǎn)到點(diǎn)通訊,由于以太網(wǎng)傳輸方式相對(duì)串口傳輸方式的優(yōu)點(diǎn),可以將串口傳輸改為以太網(wǎng)傳輸。
本設(shè)計(jì)的基礎(chǔ)是利用FPGA內(nèi)部邏輯資源編寫雷達(dá)信號(hào)處理算法,當(dāng)邏輯資源有富余的情況下,在FPGA內(nèi)部嵌入軟核CPU。所謂軟核是完全用HDL(硬件描述語言)描述的實(shí)現(xiàn)特定功能的IP,它與實(shí)現(xiàn)技術(shù)無關(guān),可以按使用者的需要進(jìn)行修改,需要用戶進(jìn)行綜合,并在其SOC上實(shí)現(xiàn)[3]。軟核雖然占用了可編程邏輯器件的邏輯資源,但是為可編程邏輯器件提供了控制能力,增強(qiáng)了整個(gè)系統(tǒng)的靈活性。本設(shè)計(jì)采用的軟核CPU是Xilinx公司提供的MicroBlaze。系統(tǒng)總體設(shè)計(jì)思路是以硬件為基礎(chǔ),在硬件平臺(tái)上移植實(shí)時(shí)操作系統(tǒng)作為軟件開發(fā)的系統(tǒng)平臺(tái),在硬件和操作系統(tǒng)的基礎(chǔ)上進(jìn)行應(yīng)用層的開發(fā),從而實(shí)現(xiàn)硬件與軟件的有機(jī)結(jié)合,并擴(kuò)展系統(tǒng)功能,使得整個(gè)系統(tǒng)具有結(jié)構(gòu)層次分明的特點(diǎn)。為了提升系統(tǒng)的靈活性、降低開發(fā)和調(diào)試難度,所有硬件和軟件的設(shè)計(jì)均采用模塊化思想。在具有完整雷達(dá)信號(hào)處理器功能的硬件基礎(chǔ)上,以FPGA為核心并輔以必要的外圍電路模塊構(gòu)建嵌入式硬件服務(wù)器平臺(tái):控制計(jì)算機(jī)作為遠(yuǎn)程控制的客戶端,服務(wù)器和客戶端作為系統(tǒng)的硬件平臺(tái)。系統(tǒng)總體框圖如圖1所示。
嵌入式硬件平臺(tái)由軟核CPU、程序和數(shù)據(jù)存儲(chǔ)器、中斷控制器、標(biāo)準(zhǔn)輸入輸出設(shè)備、網(wǎng)絡(luò)傳輸設(shè)備、電源模塊和其他外圍設(shè)備組成。其中大部分硬件設(shè)備在FPGA內(nèi)部都提供了相應(yīng)的控制器。因此只需要調(diào)用相應(yīng)的控制器并輔助以外圍電路就可以很方便的搭建嵌入式系統(tǒng)硬件平臺(tái)。
圖1 系統(tǒng)總體框圖
操作系統(tǒng)是連接底層硬件和用戶之間的橋梁,用戶通過操作系統(tǒng)的用戶界面輸入命令,操作系統(tǒng)則對(duì)命令進(jìn)行解釋,驅(qū)動(dòng)硬件設(shè)備,實(shí)現(xiàn)用戶要求[4]。因此操作系統(tǒng)對(duì)嵌入式系統(tǒng)而言是必不可少的。為了提高任務(wù)響應(yīng)速度,本設(shè)計(jì)移植Xilinx公司的xilkernel作為操作系統(tǒng),該操作系統(tǒng)移植方便、實(shí)時(shí)性強(qiáng)、并且Xilinx公司提供了良好的技術(shù)支持;在移植完操作系統(tǒng)之后,在操作系統(tǒng)基礎(chǔ)上添加網(wǎng)絡(luò)協(xié)議,為系統(tǒng)提供網(wǎng)絡(luò)接入功能。由于嵌入式系統(tǒng)的存儲(chǔ)空間受限,本設(shè)計(jì)選用源碼開放的LWIP作為網(wǎng)絡(luò)協(xié)議棧,另外該協(xié)議棧移植簡(jiǎn)單,功能完善,很適合嵌入式系統(tǒng)。在硬件平臺(tái)的基礎(chǔ)上移植了操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議之后,整個(gè)嵌入式軟件開發(fā)平臺(tái)就已建立起來,開發(fā)者就可以在此平臺(tái)上進(jìn)行應(yīng)用層面的開發(fā)。
對(duì)于應(yīng)用層開發(fā),為了說明本設(shè)計(jì)在雷達(dá)信號(hào)處理器中的應(yīng)用,實(shí)現(xiàn)了一個(gè)雷達(dá)發(fā)射信號(hào)脈沖參數(shù)的遠(yuǎn)程控制,其原理是在硬件層面中添加用戶自定義的IP核作為遠(yuǎn)程控制的硬件。該IP核主要完成雷達(dá)發(fā)射信號(hào)脈沖的產(chǎn)生,通過在遠(yuǎn)程控制計(jì)算機(jī)上運(yùn)行的客戶端程序?qū)Πl(fā)射信號(hào)脈沖參數(shù)進(jìn)行設(shè)置,同時(shí)在雷達(dá)信號(hào)處理器中運(yùn)行服務(wù)器程序,為客戶端提供服務(wù)響應(yīng),當(dāng)客戶端設(shè)置的數(shù)據(jù)通過以太網(wǎng)傳輸?shù)嚼走_(dá)信號(hào)處理器后,服務(wù)器程序接收配置數(shù)據(jù)然后更改IP核參數(shù),從而實(shí)現(xiàn)信號(hào)處理器的遠(yuǎn)程控制;另外服務(wù)器程序也可以為客戶端程序提供狀態(tài)檢測(cè)服務(wù),實(shí)現(xiàn)雷達(dá)信號(hào)處理器的遠(yuǎn)程監(jiān)控。
本系統(tǒng)采用的硬件平臺(tái)式Xilinx的ML507評(píng)估套件,其搭載的核心芯片為Vertex-5 FXT。該芯片提供了豐富的硬件資源,內(nèi)部集成以太網(wǎng)控制器硬核,片內(nèi)Block RAM由36Kbit存儲(chǔ)塊組成(最多可達(dá)10Mbit),4個(gè)以太網(wǎng)MAC模塊和內(nèi)嵌6個(gè)PLL和12個(gè)DCM(時(shí)鐘管理管道)用于滿足復(fù)雜的時(shí)鐘和時(shí)鐘域需求。開發(fā)工具選擇Xilinx公司提供的 EDK(Environment Development Kit)和 ISE,EDK主要完成嵌入式系統(tǒng)搭建和自定義IP核總線接口的創(chuàng)建,ISE主要完成對(duì)自定義IP核代碼編寫與功能仿真調(diào)試。
FPGA內(nèi)部有一個(gè)PLBv46 master總線,所有內(nèi)部模塊都通過PLBv46總線slave接口進(jìn)行連接,同時(shí)所有內(nèi)部模塊均使用內(nèi)部的邏輯資源或固有硬件資源。CPU選擇Xilinx公司的MicroBlaze,它是Xilinx公司提供的一款硬件功能可剪裁的軟核CPU,該CPU采用哈佛RISC架構(gòu),具有32位獨(dú)立的數(shù)據(jù)總線和地址總線,專門針對(duì)Xilinx的FPGA進(jìn)行了優(yōu)化。MicroBlaze使用32位指令集,3級(jí)流水,有32個(gè)32位的通用寄存器,可選的硬件乘法器,不支持用戶自定義指令、協(xié)處理器、Cache、MMU,外部總線主要使用IBM的CoreConnect標(biāo)準(zhǔn)[5]。
在雷達(dá)信號(hào)處理器基本功能完整的情況下,以FPGA為核心構(gòu)建嵌入式系統(tǒng),整個(gè)系統(tǒng)硬件組成如圖2所示。該系統(tǒng)由一片DDR2芯片用于存放和運(yùn)行嵌入式系統(tǒng)的程序,其由內(nèi)部的多端口控制器通過總線進(jìn)行控制;一片Marvell 88E111芯片作為網(wǎng)絡(luò)芯片,該芯片由內(nèi)部的TEMAC進(jìn)行控制,實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的收發(fā);中斷控制器實(shí)現(xiàn)各個(gè)模塊的中斷管理并向CPU發(fā)送中斷請(qǐng)求;定時(shí)器為操作系統(tǒng)提供時(shí)鐘基準(zhǔn);串口用于調(diào)試信息的輸出和輸出;嵌入式系統(tǒng)的搭建過程詳見參考文獻(xiàn)[6]。
圖2 硬件系統(tǒng)組成框圖
對(duì)于自定義IP核,采用軟硬件協(xié)同的方法實(shí)現(xiàn)對(duì)自定義IP核的訪問與控制,自定義IP核主要完成雷達(dá)信號(hào)處理器發(fā)射脈沖和定時(shí)信號(hào)的產(chǎn)生。該IP核主要利用EDK(嵌入式開發(fā)套件)軟件提供的IP核接口軟件創(chuàng)建IP核總線接口,內(nèi)部邏輯在ISE軟件中通過verilog語言實(shí)現(xiàn)功能描述,其主要功能是輸出不同形式的脈沖重復(fù)信號(hào),其占空比、重復(fù)周期、輸出模式以及其他參數(shù)均可以通過IP核內(nèi)部寄存器進(jìn)行修改。對(duì)內(nèi)部寄存器的修改可以通過編寫相應(yīng)的驅(qū)動(dòng)程序來完成,圖3的功能仿真圖顯示的是:將輸入的ADC_Clk進(jìn)行2分頻作為發(fā)射脈沖信號(hào)的計(jì)數(shù)時(shí)鐘ADC_div_clk,輸出的發(fā)射脈沖信號(hào)為8個(gè)計(jì)數(shù)周期,高脈沖為2個(gè)計(jì)數(shù)周期。
圖3 功能仿真
選擇EDK中內(nèi)嵌的SDK(Software Development Kit)作為軟件開發(fā)環(huán)境,為了實(shí)現(xiàn)各種任務(wù)的切換和處理,需要在硬件平臺(tái)的基礎(chǔ)上移植操作系統(tǒng),為了在規(guī)定的時(shí)間內(nèi),對(duì)服務(wù)進(jìn)行響應(yīng),需要一個(gè)實(shí)時(shí)操作系統(tǒng),對(duì)于本平臺(tái)可以移植ucos-II或者Xilinx公司提供的xilkernel,前者是一個(gè)完全開源的實(shí)時(shí)操作系統(tǒng),而后者的內(nèi)核操作和任務(wù)調(diào)度函數(shù)是通過函數(shù)庫(kù)的形式提供給用戶的,但是這兩個(gè)操作系統(tǒng)在應(yīng)用層系統(tǒng)函數(shù)上差別不大,為了較少移植難度,選擇Xilinx公司的xilkernel作為本系統(tǒng)的操作系統(tǒng)。另一方面為了實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的傳輸,需要移植網(wǎng)絡(luò)傳輸協(xié)議棧,選用的LWIP協(xié)議棧為系統(tǒng)提供網(wǎng)絡(luò)服務(wù),LWIP協(xié)議是一套用于嵌入式系統(tǒng)的開放源碼的輕型TCP/IP協(xié)議棧,被設(shè)計(jì)用于存儲(chǔ)容量有限的嵌入式系統(tǒng)[7],LWIP協(xié)議在設(shè)計(jì)之初就考慮了移植問題,同操作系統(tǒng)之間提供了專用的函數(shù)接口,在特定操作系統(tǒng)上移植只需要利用操作系統(tǒng)的系統(tǒng)函數(shù)實(shí)現(xiàn)接口函數(shù)功能即可,另外對(duì)于選定的PHY芯片,需要移植相應(yīng)的網(wǎng)絡(luò)芯片驅(qū)動(dòng)程序。
對(duì)于發(fā)射脈沖觸發(fā)信號(hào)IP核,編寫相應(yīng)的IP核驅(qū)動(dòng)程序,實(shí)現(xiàn)對(duì)內(nèi)部寄存器的讀取,從而為上層軟件提供標(biāo)準(zhǔn)的接口函數(shù),實(shí)現(xiàn)對(duì)IP核的控制。
在移植完操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議棧之后,利用操作系統(tǒng)函數(shù)、網(wǎng)絡(luò)協(xié)議函數(shù)和發(fā)射脈沖信號(hào)編寫遠(yuǎn)程控制函數(shù),在嵌入式系統(tǒng)上利用網(wǎng)絡(luò)協(xié)議搭建一個(gè)網(wǎng)絡(luò)服務(wù)器,遠(yuǎn)程控制計(jì)算機(jī)上編寫客戶端程序,客戶端與服務(wù)器之間通過TCP協(xié)議進(jìn)行可靠連接,客戶端與服務(wù)器之間定義一套相應(yīng)的通信協(xié)議,實(shí)現(xiàn)客戶端和服務(wù)器之間的通信處理??刂屏鞒虨?
圖4 處理流程圖
a.在控制計(jì)算機(jī)上通過客戶端程序?qū)γ}沖信號(hào)進(jìn)行參數(shù)設(shè)置;
b.由于嵌入式系統(tǒng)內(nèi)部的軟核CPU效率較低,因此設(shè)置的參數(shù)與寄存器值的轉(zhuǎn)換在控制計(jì)算機(jī)上完成;
c.轉(zhuǎn)換之后的寄存器值通過網(wǎng)絡(luò)傳送給服務(wù)器
d.服務(wù)器接收到相應(yīng)的命令后,對(duì)命令進(jìn)行解析并對(duì)相應(yīng)的寄存器進(jìn)行修改,從而實(shí)現(xiàn)對(duì)脈沖信號(hào)參數(shù)的控制;
同時(shí)服務(wù)器程序也可以讀取IP核的硬件信息或雷達(dá)信號(hào)處理器的其他信息,將信息進(jìn)行打包然后傳給客戶端,客戶端接收到數(shù)據(jù)之后對(duì)數(shù)據(jù)包進(jìn)行解析,最后顯示接收到的狀態(tài)信息,從而實(shí)現(xiàn)雷達(dá)信號(hào)處理器的遠(yuǎn)程監(jiān)控。
客戶端程序運(yùn)行在搭載Linux系統(tǒng)的控制計(jì)算機(jī)中,利用Linux系統(tǒng)提供的函數(shù)編寫客戶端程序,實(shí)現(xiàn)參數(shù)的設(shè)置、寄存器值轉(zhuǎn)換、寄存器值發(fā)送和參數(shù)接收功能。服務(wù)器程序通過接收客戶端發(fā)送的功能號(hào)和寄存器值,對(duì)相應(yīng)的寄存器進(jìn)行讀取和更新,在完成相應(yīng)操作之后向客戶端發(fā)送應(yīng)答信息和狀態(tài)信息,客戶端實(shí)現(xiàn)狀態(tài)信息的顯示。
測(cè)試時(shí)在客戶端設(shè)置脈沖發(fā)射信號(hào)周期為100μs,脈沖寬度為40μs,客戶端輸入數(shù)據(jù)截圖見圖5。將輸入數(shù)據(jù)轉(zhuǎn)換為IP核內(nèi)部寄存器存儲(chǔ)格式,將設(shè)置的參數(shù)通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器端,服務(wù)器接收到寄存器信息后更新寄存器值,實(shí)現(xiàn)參數(shù)修改。實(shí)際輸出發(fā)射脈沖信號(hào)如圖5所示。
圖5 周期100μs脈沖寬度40μs輸出實(shí)驗(yàn)圖
圖5中輸入時(shí)鐘為62.5MHz,分頻系數(shù)為8,分頻之后得到分頻后時(shí)鐘為7.812MHz,將該時(shí)鐘作為計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘,由于計(jì)數(shù)器的值只能為整數(shù),所以需要對(duì)計(jì)算出的計(jì)數(shù)器閾值進(jìn)行截?cái)嗵幚?,?jì)數(shù)器閾值計(jì)算方法如下式:
其中N為計(jì)數(shù)器閾值,T為要輸出脈沖寬度(單位:μs);fCNT為計(jì)數(shù)器輸入時(shí)鐘頻率(單位:MHz),此處為7.812。以40μs脈沖寬度為例,理論計(jì)數(shù)器值為312.48,但由于數(shù)據(jù)的截?cái)?,得到的N值實(shí)際為312。因此由于數(shù)據(jù)截?cái)嗨鸬淖畲笳`差為:
可以看出Errmax同輸入時(shí)鐘分頻系數(shù)和輸入時(shí)鐘有關(guān),對(duì)于計(jì)數(shù)器而言,分配系數(shù)越小,由數(shù)據(jù)截?cái)嗨鸬恼`差越小,本實(shí)驗(yàn)中理論最大誤差為:-0.128μs。試驗(yàn)中實(shí)際輸出脈沖周期為99.96μs,脈沖寬度為39.92μs,實(shí)際輸出信號(hào)在理論誤差范圍內(nèi),說明通過遠(yuǎn)程控制方式對(duì)雷達(dá)信號(hào)處理器參數(shù)控制的可行性。
本文討論了基于FPGA的SOC的雷達(dá)信號(hào)處理器遠(yuǎn)程控制系統(tǒng)的實(shí)現(xiàn)方法,在信號(hào)處理器內(nèi)部搭建服務(wù)器平臺(tái),同外界信息交換通過以太網(wǎng)實(shí)現(xiàn),大大提高了系統(tǒng)設(shè)計(jì)的靈活性,同時(shí)提高了軟件和硬件的擴(kuò)展性和控制能力。在標(biāo)準(zhǔn)的傳輸協(xié)議的下,可以將控制計(jì)算機(jī)對(duì)雷達(dá)信號(hào)處理器的控制與監(jiān)控變得模塊化,使得硬件和軟件同時(shí)具有可剪裁性。如果將雷達(dá)信號(hào)處理器中需要控制的模塊添加一個(gè)標(biāo)準(zhǔn)的總線接口,將其連接到嵌入式系統(tǒng)中,即可實(shí)現(xiàn)對(duì)接入模塊的遠(yuǎn)程控制。因此,本設(shè)計(jì)思想在雷達(dá)信號(hào)處理器中具有廣闊的應(yīng)用前景。
[1]范暉,曹俊武,徐謹(jǐn),汪旭東.網(wǎng)絡(luò)化顯控終端系統(tǒng)的軟件設(shè)計(jì)[J].測(cè)控技術(shù).2011,30(8):87-90.
[2] 梅大成,柴志勇.基于SOPC的以太網(wǎng)實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用.2009,29(12):108-112.
[3]楊強(qiáng)浩.基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機(jī)械工業(yè)出版社.2008.
[4]楊剛,肖宇彪,陳江等.32位嵌入式系統(tǒng)與SoC設(shè)計(jì)導(dǎo)論[M].北京:電子工業(yè)出版社,2006.
[5]趙峰,馬迪銘.FPGA上的嵌入式系統(tǒng)設(shè)計(jì)實(shí)例[M].陜西:西安電子科技大學(xué)出版社,2008.
[6]張開生,陳明,周子超.FPGA上實(shí)時(shí)操作系統(tǒng)uCOS-II的實(shí)現(xiàn).電子科技.2013,(10):36-39.
[7]Adam Dunkels.Design and implementation of the LwIP TCP/IP stack[M].Swedish Institute of Computer Science,2001.