【摘要】隨著現(xiàn)代工業(yè)的發(fā)展,人們對(duì)數(shù)字信號(hào)的處理要求越來越高,特別是對(duì)數(shù)字信號(hào)的實(shí)時(shí)性要求提出很高的要求,但是當(dāng)現(xiàn)有的信號(hào)處理器都無法達(dá)到所需要的速度時(shí),首先想到的解決辦法是增加處理器的數(shù)目,或者是采取門陣列的方式。另一方面,隨著可編程邏輯器件技術(shù)的發(fā)展,擁有特殊并行處理能力的現(xiàn)場可編程門陣列在不管是體積、性能還是成本等方面都顯示出了無與倫比的優(yōu)勢(shì)。本文就基于FPGA的數(shù)字信號(hào)處理算法研究與高效實(shí)現(xiàn)問題,進(jìn)行了淺要探討。
【關(guān)鍵詞】FPGA的數(shù)字信號(hào)處理算法研究高效實(shí)現(xiàn)
FPGA即現(xiàn)場可編程門陣列,它和數(shù)字信號(hào)處理領(lǐng)域的霸主地位的DSP相比,F(xiàn)PGA由于能耗、成本、性能的限制,一直沒有受到重視,只是在一些外圍部分中使用。進(jìn)入到21世紀(jì),隨著新型的納米技術(shù)的使用,F(xiàn)PGA在功耗、性能、成本等方面有了顯著的改善,具備在核心中使用的條件;在另一方面來看,3G和互聯(lián)網(wǎng)時(shí)代的到來,要求處理的數(shù)字信號(hào)量越來越大,并且數(shù)字信號(hào)的復(fù)雜性也將大大增加,要求大量的并行處理。而DSP在做并行處理時(shí)并不如FPGA要強(qiáng),所以,這就為能夠處理大量的并行處理的FPGA帶來了非常好的發(fā)展機(jī)遇。
本文在此基礎(chǔ)之上,研究了基于FPGA的快速傅里葉變換、數(shù)字濾波、相關(guān)運(yùn)算等數(shù)字信號(hào)的高效處理。首先對(duì)體系架構(gòu)發(fā)展現(xiàn)狀進(jìn)行了闡述;然后,研究了兩種具有相同結(jié)構(gòu)的數(shù)字濾波和相關(guān)運(yùn)算的特征,采取了有無乘法器的兩種結(jié)構(gòu)實(shí)現(xiàn)乘累加運(yùn)算。無乘法器結(jié)構(gòu)采用分布算法,將復(fù)雜的乘法運(yùn)算轉(zhuǎn)化為易于實(shí)現(xiàn)的FPGA的查表和位移累加操作,明顯的提高了運(yùn)算效率;最后,完成了相控陣?yán)走_(dá)系統(tǒng)的FFT FPGA算法實(shí)現(xiàn),實(shí)驗(yàn)結(jié)果表明,本次試驗(yàn)均達(dá)到了設(shè)計(jì)要求。
一、體系架構(gòu)發(fā)展現(xiàn)狀
對(duì)于體系架構(gòu)標(biāo)準(zhǔn)而言,是指對(duì)設(shè)備機(jī)械尺寸、電氣標(biāo)準(zhǔn)、互聯(lián)結(jié)構(gòu)等一系列的規(guī)范。而對(duì)于現(xiàn)階段所用到的雷達(dá)信號(hào)處理機(jī)而言,主要采用主要采用采用CPCI與VME兩種架構(gòu)方式,它們所采用的規(guī)范分別為PICMIG與VITA組織的規(guī)范。
但是隨著處理數(shù)據(jù)量的不斷增加增加,CPCI與VME這兩種架構(gòu)的總線帶寬已不能滿足現(xiàn)階段實(shí)際應(yīng)用需求。為此,PICMIG和VITA組織各自推出了CPCI Express和VPX總線標(biāo)準(zhǔn),在一定程度上打破了體系結(jié)構(gòu)與帶寬的限制。對(duì)于CPCI Express架構(gòu)而言,支持通用操作系統(tǒng)與熱插拔技術(shù),具有良好的軟件適應(yīng)性特點(diǎn);對(duì)于VPX架構(gòu)而言,擁有堅(jiān)固的機(jī)械結(jié)構(gòu)與良好的冷卻能力,在現(xiàn)階段對(duì)高速傳輸要求要求不斷提升的形勢(shì)下有著良好的應(yīng)用前景。
二、FPGA的設(shè)計(jì)基礎(chǔ)
2.1FPGA的基本構(gòu)成
現(xiàn)在主要的生產(chǎn)FPGA的公司有四家,他們分別是Xilinx、Altera、Lattice、以及Actel。但是這四家生產(chǎn)的FPGA各有特點(diǎn)。主要工藝有SRAM和FLASH這兩種。
(1)可編程輸入輸出單元:輸入輸出單元簡稱I/O單元,I/O單元特供了連接外接器件的引腳和內(nèi)部邏輯陣列之間的連接。I/O單元主要由輸入觸發(fā)器、輸入緩沖器、輸出觸發(fā)和輸出緩沖器組成。(2)基本可編程邏輯單元:可編程邏輯單元是FPGA的主要結(jié)構(gòu),是實(shí)現(xiàn)邏輯功能的結(jié)構(gòu),可編程邏輯單元主要由觸發(fā)器和查找表組成。(3)嵌入式塊RAM:RAM可用作單端口和雙端口,這極大地?cái)U(kuò)展了FPGA的應(yīng)用范圍和靈活性。(4)布線資源:各種長度的連線和一些可編程連接開關(guān),他們將各個(gè)基本可編程和輸入與輸出連接在一起,構(gòu)成了各種各樣的復(fù)雜結(jié)構(gòu)。
2.2關(guān)于FPGA的設(shè)計(jì)流程
FPGA的設(shè)計(jì)流程主要由以下幾部分組成:設(shè)計(jì)輸入、綜合設(shè)計(jì)、適配、仿真、編程下載。
(1)設(shè)計(jì)輸入:以一定的方式將電路系統(tǒng)輸入給EDA工具,現(xiàn)在最為常用的兩種輸入方式為圖形法和文本輸入法。(2)綜合設(shè)計(jì):總額輸入是指把HDL語言、原理圖等設(shè)計(jì)輸入翻譯成由與、或、非、觸發(fā)器、RAM等元器件的連接,并且根據(jù)最終的目標(biāo)要求將生成的連接進(jìn)行優(yōu)化,輸出能夠使FPGA實(shí)現(xiàn)的標(biāo)準(zhǔn)的網(wǎng)表文件。(3)適配:配置的用途是將生成好的網(wǎng)表文件配置到指定的目標(biāo)期間之中,使之產(chǎn)生最終的的下載文件。(4)仿真:將完成布局線后的時(shí)延信息反標(biāo)到網(wǎng)表中所進(jìn)行的仿真,也叫做時(shí)序仿真,簡稱后仿真。(5)編程下載:到了設(shè)計(jì)的最后階段便要進(jìn)行在線調(diào)試或者是將生成的文件寫入芯片中進(jìn)行測試。
三、高效FFT處理器的FPGA設(shè)計(jì)
3.1FFT實(shí)現(xiàn)的硬件結(jié)構(gòu)
(1)遞歸結(jié)構(gòu)。遞歸結(jié)構(gòu)簡單講就是順序結(jié)構(gòu),采用遞歸結(jié)構(gòu)的優(yōu)點(diǎn)是系統(tǒng)占用的資源比較少,簡單控制方便;其缺點(diǎn)是運(yùn)行速度比較慢,很難滿足實(shí)時(shí)信號(hào)的處理要求。
(2)級(jí)聯(lián)結(jié)構(gòu)。簡單的遞歸結(jié)構(gòu)使用一次蝶形運(yùn)算單元,占用的資源比較少,但是處理速度慢。級(jí)聯(lián)結(jié)構(gòu)根據(jù)不同的級(jí)劃分出不同的蝶形運(yùn)算單元,這樣每一級(jí)就占用一次蝶形單元,沒以及完成固定的數(shù)據(jù)處理操作,然后傳遞給下一級(jí)的蝶形運(yùn)算單元,以流水線的方式進(jìn)行處理。這樣的結(jié)構(gòu)對(duì)于連續(xù)的實(shí)時(shí)信后處理的速度大大提升。
(3)陣列結(jié)構(gòu)。陣列結(jié)構(gòu)采用的是多個(gè)蝶形單元的并列放置來提高FFT的點(diǎn)數(shù),但是由于這種方法會(huì)成倍的增加蝶形單元的數(shù)量,無形中也就增加了資源的消耗。
3.2存儲(chǔ)單元結(jié)構(gòu)
為了達(dá)到連續(xù)數(shù)據(jù)流的目的,在各級(jí)蝶形運(yùn)算單元中采用了雙口RAM對(duì)計(jì)算的中間結(jié)果設(shè)計(jì),實(shí)補(bǔ)和虛部的容量一共是單個(gè)蝶形運(yùn)算原件的兩倍,存儲(chǔ)單元還包括旋轉(zhuǎn)因子的存儲(chǔ),每一級(jí)蝶形運(yùn)算單元包括兩塊ROM旋轉(zhuǎn)因子的實(shí)部和虛部。
3.3地址產(chǎn)生單元
FFT在運(yùn)算過程中需要用到大量的RAM和ROM,如何能夠正確的取出數(shù)據(jù)及存儲(chǔ)數(shù)據(jù)是一個(gè)非常重要的問題。當(dāng)FFT運(yùn)算時(shí)會(huì)產(chǎn)生3組地址,蝶形運(yùn)算輸入數(shù)據(jù)的地址、蝶形運(yùn)算結(jié)果輸入下一級(jí)的地址、以及運(yùn)算結(jié)束后最終的輸出地址。由于采用的是同位運(yùn)算,所以讀地址也就是寫地址,延遲時(shí)間即為一次蝶形運(yùn)算的時(shí)間。
3.4FFT處理器的性能分析
提高FFT處理器的性能主要的方法就是采用并行處理和流水線技術(shù)。在采用流水線技術(shù)時(shí),根據(jù)FFT的級(jí)聯(lián)結(jié)構(gòu)的特點(diǎn)采用了多級(jí)流水線這一解決方案,使得整個(gè)信號(hào)序列的運(yùn)算時(shí)間僅為一級(jí)蝶形單元的運(yùn)算時(shí)間。在提高并行度方面,并行遞歸結(jié)構(gòu)設(shè)計(jì)了能夠同時(shí)產(chǎn)生四個(gè)RAM地址和3個(gè)ROM地址的地址發(fā)生器,提高了處理器的運(yùn)算效率。
四、FPGA對(duì)于濾波及相關(guān)運(yùn)算的實(shí)現(xiàn)
4.1基于MAC的濾波器設(shè)計(jì)
采用MAC方法就是直接調(diào)用乘累加單元進(jìn)行計(jì)算,而FPGA內(nèi)置乘法器,所以FPGA對(duì)于此非常適合該功能。基于采樣率和階數(shù)的要求,可以采用一個(gè)或多個(gè)乘法器。采用多個(gè)乘法器可以提高運(yùn)算效率降低運(yùn)算成本,但需要消耗較多的資源。
N階濾波器需要用到前(N-1)個(gè)數(shù)據(jù),每當(dāng)采集一個(gè)新數(shù)據(jù),將需要所有的數(shù)據(jù)都往前移一位,把老數(shù)據(jù)用新數(shù)據(jù)代替,在FPGA中可以使用有多個(gè)D觸發(fā)器組成的位移器來寄存。該方法的優(yōu)點(diǎn)是靈活,缺點(diǎn)是占用大量的資源。
4.2用FPGA來實(shí)現(xiàn)相關(guān)的運(yùn)算
(1)在時(shí)域內(nèi)的相關(guān)運(yùn)算。相關(guān)運(yùn)算是數(shù)字信號(hào)處理的基本處理方法,實(shí)現(xiàn)相關(guān)運(yùn)算的方法有時(shí)域與頻域兩種。時(shí)域內(nèi)的相關(guān)處理相對(duì)來說比較簡單,但對(duì)于系統(tǒng)的性能要求比較高,相關(guān)運(yùn)算和數(shù)字濾波都是基于成累加,所以設(shè)計(jì)濾波的兩種方法都是用于相關(guān)運(yùn)算的設(shè)計(jì)。一種是用查表的形式實(shí)現(xiàn)運(yùn)算,該方法實(shí)現(xiàn)相關(guān)運(yùn)算時(shí)與點(diǎn)數(shù)沒有關(guān)系,缺點(diǎn)是占用大量的資源。另一種是采用成累加的方法,在用這種方法時(shí)可以考慮采用FPGA并行運(yùn)算的特點(diǎn),用多個(gè)乘累加單元進(jìn)行并行運(yùn)算,這樣FPGA可以工作在一個(gè)時(shí)鐘頻率較低的環(huán)境中。
(2)在頻域內(nèi)的相關(guān)運(yùn)算。時(shí)域內(nèi)的相關(guān)運(yùn)算的特點(diǎn)是實(shí)現(xiàn)簡單,實(shí)時(shí)性強(qiáng)。但當(dāng)先關(guān)運(yùn)算的點(diǎn)數(shù)較大時(shí),時(shí)域內(nèi)的相關(guān)運(yùn)算量會(huì)十分龐大,很難滿足實(shí)時(shí)性的要求。頻域內(nèi)的相關(guān)運(yùn)算采用了FFT的相關(guān)方法,可以大大的減少運(yùn)算量。所采用的方法是時(shí)域相關(guān)法。根據(jù)傅里葉變化規(guī)律、時(shí)卷積定理,可以采用快速傅里葉變換和反變換在頻域內(nèi)實(shí)現(xiàn),稱為快速頻域卷積法。
五、基于FPGA的相控陣?yán)走_(dá)系統(tǒng)
各種各樣的應(yīng)用背景要求現(xiàn)代的雷達(dá)不僅局限于對(duì)目標(biāo)的探測,更要給出被探測物的方位、速度、形狀等參數(shù),這就對(duì)現(xiàn)代雷達(dá)的性能提出了很高的要求。
為了提高雷達(dá)系統(tǒng)的性能,可以采取多種高速串行結(jié)合的傳輸方式來提高雷達(dá)的性能,F(xiàn)PGA技術(shù)和PowerPC技術(shù)相結(jié)合的處理結(jié)構(gòu)單元,利用高速差分連接器技術(shù)實(shí)現(xiàn)苛刻環(huán)境下的超大功率、超大帶寬傳輸。
在雷達(dá)信號(hào)處理領(lǐng)域,目前主要處理單元有FPGA和CPU,隨著半導(dǎo)體的迅猛發(fā)展,F(xiàn)PGA憑借其天然的可編性,大數(shù)據(jù)處理量,大有取代DSP硬核和高速串行傳輸技術(shù)的勢(shì)頭,同時(shí)FPGA支持多種通信協(xié)議和電平標(biāo)準(zhǔn),在未來的雷達(dá)信號(hào)處理系統(tǒng)中可以扮演轉(zhuǎn)換橋的角色,采用CPU與FPGA結(jié)合的處理結(jié)構(gòu)單元使雷達(dá)系統(tǒng)后的更靈活的處理能力。
六、結(jié)語
本文以FPGA在數(shù)字信號(hào)處理的背景下,討論了高效FFT的實(shí)現(xiàn)、相關(guān)運(yùn)算與濾波器的實(shí)現(xiàn)、圖像聲吶的實(shí)現(xiàn)等FPGA實(shí)現(xiàn)方法的具體事項(xiàng)。綜合驗(yàn)證了FPGA在這些領(lǐng)域的應(yīng)用,結(jié)果都較為理想,為以后FPGA的更廣泛的發(fā)展提供一點(diǎn)粗略的經(jīng)驗(yàn)。
參考文獻(xiàn)
[1]行韶胥讠,段衍東,韓濤.基于FPGA的簡易數(shù)字信號(hào)傳輸性能分析系統(tǒng)[J].氣象水文海洋儀器,2012,29(3):41-46.
[2]彭宇,姜紅蘭,楊智明等.基于DSP和FPGA的通用數(shù)字信號(hào)處理系統(tǒng)設(shè)計(jì)[J].國外電子測量技術(shù),2013,(1):17-21.
[3]廖聰裕,魯錦濤,蘇建如.基于FPGA的數(shù)字信號(hào)傳輸性能分析儀[J].河北農(nóng)機(jī),2012,(2):59-60.
[4]霍志,謝啟友,郭靖等.一種基于FPGA的雷達(dá)數(shù)字信號(hào)處理機(jī)設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2012,35(1):13-16.