基于SOPC的雷達采集和圖像顯示系統(tǒng)
1前言
雷達數(shù)據(jù)采集及圖像顯示是雷達的一個基本應用,普遍應用于軍事、氣象預測、環(huán)境監(jiān)測、船舶導航等領域。雷達數(shù)據(jù)具有實時性、高速性的特點。一般說來,對雷達信號采樣的時鐘頻率在100MHz以上,雷達數(shù)據(jù)采集和處理單元的數(shù)據(jù)吞吐量要求在Gbits/s以上。因此,要實現(xiàn)一個雷達數(shù)據(jù)采集和圖像顯示系統(tǒng),對處理器的處理速度要求很高。傳統(tǒng)的雷達數(shù)據(jù)采集和圖像顯示系統(tǒng)采用的是微處理器+FPGA(或DSP)方案,利用微處理器實現(xiàn)操作系統(tǒng)、雷達GUI和顯示器控制,利用FPGA(或DSP)實現(xiàn)高速雷達數(shù)據(jù)采集和處理,這種方案的缺點是要想實現(xiàn)雷達圖像在800*600以上分辨率的大屏幕顯示比較困難,要么有較高的處理器速度,要么有獨立顯卡的支持,這樣增加了系統(tǒng)復雜度和成本。
SOPC 是一種特殊的片上系統(tǒng),建立在可編程邏輯技術的基礎上,盡可能將一個大而完整的電子系統(tǒng)實現(xiàn)在一塊FPGA硅片上,具有硬件可裁剪、可擴充、可升級,軟件在系統(tǒng)可編程的特點,使得設計的系統(tǒng)在規(guī)模、功能、體積、性能、上市周期、開發(fā)成本等方面有著了很大的優(yōu)勢?;赟OPC技術的軟核處理器主頻雖然不是很高,目前Xilinx公司的microblaze處理器最高主頻為210MHz、240DMIPS的運算能力,Altera公司的NIOS II處理器最高主頻為340MHz、290DMIPS的運算能力,但是由于其極強的靈活性,可以通過軟硬件協(xié)同設計,在處理器速度不高的情況下,解決需要高速度處理器才能完成的問題。
本文基于SOPC技術,提出一種在主頻較低的軟核處理器上實現(xiàn)雷達數(shù)據(jù)采集和圖像大屏幕顯示的方法。
2總體方案設計
本設計采用microblaze軟核處理器作為開發(fā)平臺,SOPC系統(tǒng)框圖如圖1所示。
本設計通過以下辦法,解決在主頻較低的SOPC軟核處理器上實現(xiàn)雷達數(shù)據(jù)采集、處理和大屏幕圖像顯示的問題。
首先,使用FPGA硬件邏輯設計實現(xiàn)雷達數(shù)據(jù)采集、處理和顯示控制器。雷達數(shù)據(jù)采集、處理模塊負責對雷達上單元、ADC芯片的控制和對雷達數(shù)據(jù)的處理。顯示控制器模塊完成顯存數(shù)據(jù)的管理和顯示器的驅動。
其次,使用DMA傳輸。DMA負責將雷達數(shù)據(jù)采集、處理后數(shù)據(jù)通過DMA通道送到內存中。
最后,根據(jù)SOPC硬件可配置、可裁剪的特性,將雷達數(shù)據(jù)采集和處理模塊、顯示控制模塊和DMA模塊作為microblaze處理器的設備掛載到外設局部總線上[4]。
由于雷達數(shù)采集、處理模塊和顯示控制模塊的內部邏輯都由FPGA硬件邏輯完成,微處理器不需直接對雷達上單元、ADC進行控制,不需進行復雜的雷達數(shù)據(jù)處理,不用對顯存數(shù)據(jù)進行管理,不用控制產(chǎn)生高速的信號驅動顯示器,從而大大減輕了處理器的負擔,加上DMA傳輸?shù)氖褂?,處理器只需要處理DMA傳輸?shù)恼埱蠛蛡鬏斖瓿芍袛?,從而使處理器從繁重的?shù)據(jù)傳輸中解脫了出來。通過以上辦法,處理器的負擔已經(jīng)變得很輕,使得較低的處理器速度即可處理系統(tǒng)的任務。而且顯示控制由FPGA硬件實現(xiàn)還有個優(yōu)點是,使得顯示器分辨率的大小對處理器的負擔影響很小,從而在處理器較低的情況下,同樣可以支持大屏幕的圖像顯示。
3系統(tǒng)硬件設計
SOPC系統(tǒng)的硬件設計包含兩層含義,一個是SOPC所依賴的硬件平臺,另一個是在FPGA內部搭建的SOPC軟件所依賴的硬件環(huán)境。
本設計中,SOPC所依賴的硬件平臺如圖2所示:
FPGA內部搭建的SOPC硬件平臺如圖3所示:
其中,雷達數(shù)據(jù)采集和處理、顯示控制器、DMA模塊是為實現(xiàn)本設計而特別定制的模塊。下面著重介紹以上3個模塊。
3.1 雷達數(shù)據(jù)采集及處理模塊設計
雷達數(shù)據(jù)采集及處理模塊主要由總線接口控制、控制臺、雷達上單元控制、ADC控制、雷達數(shù)據(jù)處理5部分組成,其內部框圖如圖4中虛線部分所示:
總線接口控制模塊負責與處理器總線進行交互,它必須遵循處理器總線通信協(xié)議,包括傳輸請求、應答、數(shù)據(jù)傳輸、中斷請求。這部分協(xié)議由平臺產(chǎn)生,用戶只需進行相關的配置。
控制臺負責ADC控制模塊、雷達上單元控制模塊、雷達數(shù)據(jù)處理模塊的控制。具體包括:將相關用戶控制信息交給ADC控制模塊,對ADC的工作狀態(tài)進行控制;讀取雷達上單元控制模塊的信息,將它交給總線控制接口模塊,并從總線接口控制模塊獲得雷達上單元相關的控制信息,送到雷達上單元控制模塊;將雷達數(shù)據(jù)處理相關的信息交給雷達數(shù)據(jù)處理模塊,作為雷達數(shù)據(jù)處理的參數(shù)。
雷達上單元控制模塊負責對雷達上單元的控制,包括雷達上單元的初始化、自檢,設置雷達脈沖頻率、脈沖寬度、轉速等,并實時地向控制臺提供雷達上單元的工作狀態(tài)信息。
雷達數(shù)據(jù)處理模塊的內部處理流程如圖5所示。雷達數(shù)據(jù)處理模塊從控制臺獲取數(shù)據(jù)處理的相關參數(shù),對雷達上單元的數(shù)據(jù)進行以下處理:對雷達的方位角脈沖信號進行提取,計算出雷達當前的方位角;對采樣后的雷達回波信號進行內插/抽取、濾波、增益控制、極坐標到直角坐標變換處理。
3.2 顯示控制器設計
顯示控制器相當于一塊獨立顯卡,其內部如圖6中所示,主要由5個模塊組成,分別為處理器總線接口控制模塊、指令譯碼模塊、顯示接口控制模塊、數(shù)據(jù)緩存模塊和顯存控制模塊。
指令譯碼模塊主要負責:從總線接口控制模塊獲得處理器指令和數(shù)據(jù),并對指令進行譯碼,將譯碼結果和數(shù)據(jù)送給顯示接口控制模塊和顯存控制模塊;將顯示接口控制模塊和顯存控制模塊的工作狀態(tài)信息送給總線接口控制模塊。
顯示接口控制模塊受指令譯碼及控制模塊控制,與顯存控制模塊進行協(xié)調,從數(shù)據(jù)緩存區(qū)獲取數(shù)據(jù),控制產(chǎn)生顯示器接口時序,驅動顯示器描繪圖像。[!--empirenews.page--]
數(shù)據(jù)緩存模塊實現(xiàn)對顯存數(shù)據(jù)的預取。在每個行同步時隙,顯示接口控制模塊向顯存控制模塊發(fā)出預取顯存數(shù)據(jù)的請求,顯存控制模塊將相應地址上的顯存數(shù)據(jù)讀出,放到數(shù)據(jù)緩存區(qū)。由于顯示接口控制的時鐘和顯存控制的時鐘通常不一樣,設置這個數(shù)據(jù)緩存區(qū),保證顯示接口控制模塊能夠及時獲得顯存的數(shù)據(jù)。
顯存控制模塊負責顯存數(shù)據(jù)的管理,根據(jù)指令譯碼結果,對顯存中的數(shù)據(jù)進行清除、讀寫、更新等操作,并配合接口控制模塊,將顯存數(shù)據(jù)讀出,寫入顯存數(shù)據(jù)緩存區(qū)。
3.3 DMA傳輸設計
一般說來,DMA傳輸相關的寄存器包括傳輸?shù)脑吹刂贰⒛康牡刂?、工作模式、?shù)據(jù)長度、DMA中斷模式。本設計使用Xilinx的中央DMA控制器(XPS Central DMA Controller) [5],它是一個單通道的支持外設到外設、外設到內存、內存到外設、內存到內存的DMA,其內部結構框圖如圖7所示。使用該DMA控制器,需要配置以下寄存器:
軟件復位寄存器(RST):用于對DMA控制進行軟件復位;
DMA控制寄存器(DMACR):設置DMA的工作模式;
源地址(SA):DMA傳輸?shù)脑吹刂?
目的地址(DA):DMA傳輸?shù)哪康牡刂?
長度(LENGTH):DMA傳輸?shù)臄?shù)據(jù)長度;
中斷使能寄存器(IER):設置是否使能DMA傳輸錯誤或傳輸完成時產(chǎn)生中斷。
本設計中,將DMA的工作模式設定為數(shù)據(jù)源地址固定,目的地址遞增,源地址為雷達數(shù)據(jù)采集及處理模塊的數(shù)據(jù)發(fā)送寄存器的地址,目的地址設置為內存的地址,長度設置為坐標變換后一條雷達掃描線上的點數(shù)1024Bytes,DMA傳輸完成中斷使能。
4系統(tǒng)軟件設計
軟件設計主要分為三部分,linux內核的移植,模塊驅動的開發(fā),雷達GUI軟件的開發(fā)和移植。
將linux系統(tǒng)移植到自己定制的SOPC硬件平臺上包括以下幾個步驟[5][6]:
設計SOPC硬件平臺。使用XPS開發(fā)環(huán)境,設計自己的SOPC系統(tǒng)硬件平臺,并導出軟件開發(fā)依賴的硬件平臺信息文件;
生成設備樹內核編譯所需的設備樹信息文件(后綴名為.dts)。使用SDK開發(fā)環(huán)境,結合Xilinx的設備樹(Device-tree)腳本和XPS生成的硬件平臺信息,生成板級支持包和設備樹信息文件;
編譯內核。將設備樹信息文件拷貝到linux內核源代碼/arch/microblaze/boot/dts目錄下,根據(jù)硬件平臺信息配置并編譯內核,生成內核鏡像文件;
運行內核。將內核鏡像文件下載到配置的硬件平臺上,實現(xiàn)linux系統(tǒng)的移植。
內核移植完成之后,進行雷達數(shù)據(jù)采集和處理模塊、顯示控制器模塊驅動的開發(fā)。Linux下設備驅動的開發(fā)包括以下步驟:
(1)設備驅動程序的注冊和注銷;
(2)定義file--operations結構,設計所要實現(xiàn)的文件操作, 實現(xiàn)系統(tǒng)調用和驅動程序的關聯(lián);
(3)實現(xiàn)所需的文件操作調用,如open,read,write等;
(4)如果使用中斷,使用request--irq向內核注冊;
(5)編譯該驅動程序到內核中,或使用insmod命令加載模塊。
最后是進行雷達GUI軟件的開發(fā)和移植。利用QT開發(fā)環(huán)境設計雷達用戶界面,并移植到SOPC系統(tǒng)中l(wèi)inux操作系統(tǒng)下。
5系統(tǒng)調試和測試
本設計中,利用FPGA硬件邏輯模擬產(chǎn)生雷達回波信號和方位角信號,ADC的采樣速率為100MHz,采樣位寬為8bits,microblaze軟核處理器主頻為100MHz。雷達數(shù)據(jù)采集及處理模塊對模擬的雷達信號進行采集和相關處理后,由DMA通道存儲到內存當中,雷達GUI軟件實現(xiàn)雷達圖像的繪制。