張佳琪 文騰飛 李涼海 張振華
摘要:介紹了基于Matlab的Simulink開發(fā)工具進行FPGA自動代碼生成的過程。在信號處理領(lǐng)域,F(xiàn)PGA的開發(fā)存在開發(fā)周期長、開發(fā)成本大及靈活性差等問題,借助Simulink工具完成FPGA的快速開發(fā),在完成Matlab仿真的基礎(chǔ)上,搭建了合成孔徑雷達后向投影算法模型,得出了模型結(jié)果,并將其與Matlab仿真結(jié)果進行對比,分析了自動生成FPGA代碼的成本,驗證了基于Matlab的FPGA開發(fā)的有效性。
關(guān)鍵詞:信號處理;FPGA代碼自動生成;后向投影算法
中圖分類號:TP391文獻標志碼:A文章編號:1008-1739(2020)11-60-3
0引言
近年來,F(xiàn)PGA已經(jīng)成為高性能數(shù)字信號處理系統(tǒng)的關(guān)鍵元件,具有實現(xiàn)高性能并行算法的能力,是構(gòu)成高性能可定制數(shù)據(jù)通路處理器的理想器件。然而FPGA的開發(fā)受到以下限制[1-3]:①軟件開發(fā)人員不熟悉硬件設(shè)計;②基于并行硬件系統(tǒng)的并行程序設(shè)計與基于Matlab仿真的串行程序設(shè)計有很大的不同。對此,MathWorks公司對Matlab進行高級開發(fā),實現(xiàn)從Matlab到硬件描述語言的直接轉(zhuǎn)換。開發(fā)人員利用Simulink模塊進行算法模型搭建,將模型進行定點化設(shè)計后利用HDL Coder將模型轉(zhuǎn)換為需要的硬件語言。
1傳統(tǒng)FPGA開發(fā)的弊端
傳統(tǒng)的基于硬件描述語言的FPGA硬件設(shè)計開發(fā)過程需要編寫大量代碼,工作量大,且需要系統(tǒng)設(shè)計師、硬件工程師和軟件工程師協(xié)同工作,導(dǎo)致需要的設(shè)計人員多、開發(fā)周期長,且隨著軟件代碼的更改,硬件語言需要重新進行時序調(diào)試與測試,開發(fā)的可靠性差。
近年來Xilinx開發(fā)的System Generator軟件能夠解決上述問題,實現(xiàn)由軟件到硬件描述語言的完美轉(zhuǎn)換,但其開發(fā)的局限性較大,且通過模塊轉(zhuǎn)換成的代碼可讀性較差,對于硬件設(shè)計人員來說可更改性較差,因此本文選用MathWorks公司自行開發(fā)的從Matlab仿真到Simulink建模,再到可自動生成Verilog或者VHDL代碼。
2合成孔徑雷達BP算法原理
文獻[4-5]分析了后向投影(BP)算法的流程,算法主要分2個部分:①原始回波數(shù)據(jù)進行距離脈壓的過程,采用文獻[6]的方式生成;②尋址與投影過程,主要采用狀態(tài)機的方式編寫,2個過程需按照順序執(zhí)行,總體設(shè)計框圖如圖1所示。
圖1中,,分別代表第個方位向網(wǎng)格點數(shù)和第個距離向網(wǎng)格點數(shù),代表第個脈沖回波。本算法的成像網(wǎng)格共有256×70個像素點,因此和的范圍是1~70,的范圍是1~256。輸出RES代表了成像點(,)的成像結(jié)果。根據(jù)BP算法的基本原理和步驟,基于Verilog HDL的總體思路如下:
State 0:初始狀態(tài)下若,均為1,則跳到State 1。
State 1:在State 1中主要進行成像點與各脈沖之間延時的計算,并完成單個成像點在各脈沖的回波散射響應(yīng)相干疊加。,不變,從1加到70,當(dāng)=70時,表示得到了該成像點在所有通道回波中的響應(yīng)幅值,跳到State 2;
State 2:根據(jù)程序網(wǎng)格點與各脈沖之間距離得到散射系數(shù),并將散射回波響應(yīng)與散射系數(shù)進行乘疊加,跳到State 3;
State 3:將成像點在所有通道的響應(yīng)幅值全部疊加完成,將的值賦給,完成對(,)點的成像。此時判斷和的值是否已遍歷整個成像區(qū)域。若=70且=256,說明已經(jīng)對最后一個成像點完成了成像,回到初始狀態(tài);否則,若=70且<256,說明己經(jīng)完成整個成像區(qū)域第行的最后一個成像點,下一個需要成像的是+1行的第一個成像點,故令= +1,=1,跳回State 1對下一個成像點進行成像。否則,若<70,說明還沒有對第行的所有成像點完成成像過程,令= +1并跳回State 1,繼續(xù)對下一個成像點進行成像,循環(huán)可以完成對256×70像素成像區(qū)域的成像。
3利用Matlab完成BPA的FPGA模塊設(shè)計
3.1數(shù)據(jù)源產(chǎn)生模塊
原始回波數(shù)據(jù)使用經(jīng)過下變頻和8 bit量化后的信號完成,該回波數(shù)據(jù)可以從Matlab中得到。原始回波數(shù)據(jù)構(gòu)成了一個256×70的矩陣,共17 920個數(shù)據(jù),這些數(shù)據(jù)需要被調(diào)用進行距離脈壓,由于矩陣是一個256×70的矩陣,在Simulink仿真中需要將它轉(zhuǎn)換為一個1×(256×70)的一維向量,采用Matlab命令為:B=reshape(,1,256×70)。
3.2距離脈壓模塊
SAR發(fā)射信號為線性調(diào)頻信號,基于線性調(diào)頻信號的脈沖壓縮可以通過匹配濾波處理來實現(xiàn),其原理見文獻[4],該文獻指出Xilinx FPGA的FFT的IP核的流水線Streaming I/O結(jié)構(gòu)有很好的數(shù)據(jù)吞吐能力。
comp_mult模塊完成頻域脈壓的復(fù)乘功能,為了提高復(fù)乘精度首先通過提前運算得到參考函數(shù)值;采用將其存入ROM的方式,直接從ROM中提取參考函數(shù)值的方法確保匹配濾波的準確性,輸入的參考函數(shù)為14位有符號小數(shù),分別將實部與虛部相乘得到輸出結(jié)果為32位有符號小數(shù)。
脈壓結(jié)果為res_PC,在尋址模塊會被反復(fù)調(diào)用,將其存儲到一個雙端口RAM中,深度為17920,寫入地址為1~17920。
3.3延時計算與尋址模塊設(shè)計
延時計算與尋址模塊實現(xiàn)的功能是圖1的遍歷與查找脈壓結(jié)果完成乘累加模塊實現(xiàn)算法。
在一步一停假設(shè)下[7],計算網(wǎng)格點(,)到每一個雷達載機的延時,在Matlab中的具體實現(xiàn)方式為=sqrt((R( )).^2+(A( )-tnan( )×V ).^2),跟據(jù)addr =1 024×( -1)+p/Delta_R得到距離脈壓后數(shù)據(jù)的地址,讀取雙端口RAM對應(yīng)地址的脈壓數(shù)據(jù)。該過程的時序為圖2所示的find_addr模塊,通過控制3個HDL counter的計數(shù)完成,,的遍歷過程。
4仿真結(jié)果
為了清晰地看到模型結(jié)果,回波數(shù)據(jù)采用1個點目標回波。首先將結(jié)果顯示在scope中,如圖3所示,然后將其保存到Matlab的workspace中,結(jié)果如圖4所示,Matlab仿真結(jié)果如圖5所示。將Simulink仿真結(jié)果與Matlab結(jié)果相比較得到誤差:實部相對誤差在±4%以內(nèi),虛部相對誤差在±3%以內(nèi)精度相近,且速度滿足要求。存在誤差的原因是進行Simulink仿真時對小數(shù)部分進行了取整,且模型運算過程中為了節(jié)約資源會對一些模塊位數(shù)進行轉(zhuǎn)換,使數(shù)值有所近似。
利用HDL code工具首先進行各個模塊的HDL code檢查,將全部模塊進行HDL Model Checker之后便可以將模型轉(zhuǎn)換為所需要的硬件語言,生成Verilog代碼。
5結(jié)束語
采用MathWorks公司提供的正版Matlab工具自帶的Simulink可以很方便地完成所需的通用數(shù)字信號處理模塊,該方法簡單、有效,而且能夠根據(jù)Matlab代碼的更新靈活地對模型進行更改與測試,避免了傳統(tǒng)FPGA設(shè)計開發(fā)中復(fù)雜的時序測試,降低開發(fā)周期,提高了系統(tǒng)工作的可靠性。這一技術(shù)在算法實現(xiàn)方面無需花費太多時間在硬件語言代碼編寫與調(diào)試,既節(jié)約了開發(fā)成本又能提高開發(fā)效率,具有很好的工程應(yīng)用價值。
參考文獻
[1]江霞.在Matlab中實現(xiàn)FPGA硬件設(shè)計[J].國外電子元器件,2005(4):4-6.
[2]花良發(fā),萬士保,魏祥生.基于Matlab設(shè)計信號處理FPGA模塊[J].信息技術(shù),2010,34(10):41-44.
[3]牛斌凱,雍少為,張建,等.基于System Generator開發(fā)數(shù)字信號處理系統(tǒng)[J].艦船電子工程,2010,30(1):129-132.
[4]張明昊.探地合成孔徑雷達成像算法及實現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2016.
[5]李浩林.機載SAR快速后向投影成像算法研究[D].西安:西安電子科技大學(xué),2015.
[6]李翱,于勇,褚超,等.基于FPGA的高效脈沖壓縮技術(shù)工程應(yīng)用研究[J].遙測遙控,2017,38(2):13-21.
[7]保錚,邢孟道,王彤.雷達成像技術(shù)[M].北京:電子工業(yè)出版社,2005.