基于FPGA的專用信號(hào)處理器設(shè)計(jì)和實(shí)現(xiàn)
出處:hyaline17 發(fā)布于:2007-04-28 11:08:02
關(guān)鍵詞:512點(diǎn)FFT;FPGA;蝶形運(yùn)算
前言
矢量脫靶量測(cè)量系統(tǒng)中,信號(hào)處理電路模塊的主要任務(wù)是完成目標(biāo)檢測(cè)、數(shù)據(jù)存儲(chǔ)以及給其它單元控制信號(hào)。系統(tǒng)所進(jìn)行的目標(biāo)檢測(cè)需要計(jì)算信號(hào)的功率譜,所以先要對(duì)采集到的多通道(8路)數(shù)據(jù)按512點(diǎn)為一幀,作FFT處理,得到其頻譜。為了監(jiān)測(cè)接收機(jī)工作狀態(tài),需要在頻域用恒虛警的方法,判斷各路接收通道是否正常。除此之外,還需要對(duì)數(shù)據(jù)進(jìn)行去直流、加窗的初始化處理,F(xiàn)FT結(jié)果再進(jìn)行求模平方、累加運(yùn)算,結(jié)果以FIFO輸出。
選擇用FPGA完成上述功能有諸多優(yōu)點(diǎn)。首先,F(xiàn)PGA實(shí)現(xiàn)FFT運(yùn)算是硬件處理,采用多個(gè)硬件乘法器、加法器,運(yùn)算周期短,加上內(nèi)部集成的大量塊RAM可高速訪問,所以速度大大提高。其次,F(xiàn)PGA片內(nèi)邏輯資源豐富,可用的寄存器、鎖存器、查找表和多路數(shù)據(jù)選擇器等,能夠?qū)崿F(xiàn)硬件流水結(jié)構(gòu)。這樣多種運(yùn)算可同時(shí)流水進(jìn)行,減少了中間等待時(shí)間,整體速度大幅提高。再次,用硬件處理數(shù)據(jù)時(shí)延固定,可準(zhǔn)確預(yù)測(cè)。
當(dāng)然,F(xiàn)PGA也有不足。在FPGA內(nèi)設(shè)定的數(shù)據(jù)長(zhǎng)度相對(duì)固定,不夠靈活,如果為實(shí)現(xiàn)高而采用浮點(diǎn)運(yùn)算,則設(shè)計(jì)復(fù)雜,速度會(huì)降低,而且硬件開銷大。用“塊浮點(diǎn)”算法,可以很好地兼顧高速和高,并且硬件實(shí)現(xiàn)和控制相對(duì)簡(jiǎn)單,彌補(bǔ)了FPGA這一不足。
各運(yùn)算單元算法和實(shí)現(xiàn)
如圖1所示,信號(hào)處理器共包括4大部分:去直流、加窗的預(yù)處理單元,F(xiàn)FT運(yùn)算單元,模平方累加與檢測(cè)單元,F(xiàn)IFO輸出單元。每個(gè)單元都分配有存儲(chǔ)器來(lái)存儲(chǔ)中間結(jié)果,它們是由FPGA中的塊RAM生成的,不占用邏輯資源,而且訪問快速。
預(yù)處理單元
如圖2所示,預(yù)處理單元首先讀入控制單元,在收到啟動(dòng)信號(hào)后,產(chǎn)生讀信號(hào)和讀地址,讀取外部數(shù)據(jù)到內(nèi)部存儲(chǔ)器R、I,同時(shí)數(shù)據(jù)送入累加單元求和,移位后得到平均值,也就是直流分量。然后,在讀取數(shù)據(jù)完畢時(shí),讀入控制單元啟動(dòng)加窗運(yùn)算控制單元,讀取原始數(shù)據(jù)和窗函數(shù),這時(shí)原始數(shù)據(jù)減掉直流分量后,與窗函數(shù)相乘,就得到去直流和加窗后的結(jié)果,為FFT單元作好準(zhǔn)備。
FFT運(yùn)算單元
如圖3所示,F(xiàn)FT運(yùn)算單元主要包括蝶形運(yùn)算、讀寫控制、塊浮點(diǎn)運(yùn)算、數(shù)據(jù)存儲(chǔ)R、I和旋轉(zhuǎn)因子存儲(chǔ)單元。以下分別介紹。
蝶形運(yùn)算單元
時(shí)域抽樣(DIT)的基-2蝶型運(yùn)算算法可以表示為:
其中復(fù)乘運(yùn)算可表示為:
由蝶形運(yùn)算算法公式可以看出一個(gè)基-2蝶形運(yùn)算要進(jìn)行一個(gè)復(fù)乘、兩個(gè)復(fù)加。由復(fù)乘運(yùn)算公式可知:若在一個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)復(fù)乘,需4個(gè)實(shí)數(shù)乘法器和2個(gè)實(shí)數(shù)加法器。因?yàn)檫@里采用的是Xilinx公司的VirtexII系列FPGA,內(nèi)部有硬件乘法器,不占用邏輯資源,因此為了簡(jiǎn)化結(jié)構(gòu)和提高系統(tǒng)的穩(wěn)定性,采用4乘法器的直接實(shí)現(xiàn)結(jié)構(gòu)(見圖4)。
讀寫控制
FFT讀寫控制單元負(fù)責(zé)產(chǎn)生FFT運(yùn)算過(guò)程、各個(gè)階段RAM的讀寫信號(hào)和地址信號(hào),以保證各級(jí)運(yùn)算數(shù)據(jù)的正確調(diào)用和存儲(chǔ)。此外,還需要協(xié)調(diào)各部分的時(shí)序關(guān)系。因?yàn)榘磿r(shí)間抽取的FFT是混序,在實(shí)際運(yùn)算中,直接將輸入數(shù)據(jù)按原位運(yùn)算要求的“亂序”存放是很不方便的。因此總是按自然順序?qū)⑤斎胄蛄写嫒氪鎯?chǔ)單元,再通過(guò)變址運(yùn)算將自然順序變換成按時(shí)間抽取的FFT算法要求的順序。變址過(guò)程可以用程序安排加以實(shí)現(xiàn)。計(jì)數(shù)器順序計(jì)數(shù)(0~511),將計(jì)數(shù)器的位(第‘0’位)取反后,對(duì)應(yīng)位進(jìn)行交換,就能產(chǎn)生每的數(shù)據(jù)讀取地址。同樣的,旋轉(zhuǎn)因子的地址是由計(jì)數(shù)器地址交換后,特定位置零產(chǎn)生的。由于采用原位運(yùn)算,每級(jí)蝶形運(yùn)算的寫地址和抽取地址完全相同。
塊浮點(diǎn)
塊浮點(diǎn)由“溢出檢測(cè)”和“指數(shù)累加器”組成。如果輸入蝶形單元中的數(shù)據(jù)的實(shí)部和虛部是16比特,那么輸出數(shù)據(jù)實(shí)部和虛部溢出是2比特。所以,每蝶形運(yùn)算中,“溢出檢測(cè)”根據(jù)輸出數(shù)據(jù)的高三位(位是符號(hào)位)就可以判斷溢出情況,由此決定下蝶形運(yùn)算時(shí),如何選擇上18位結(jié)果數(shù)據(jù)中的16位進(jìn)入蝶形單元。溢出的位數(shù)由指數(shù)累加器累加,決定FFT運(yùn)算結(jié)果的指數(shù)位。
數(shù)據(jù)存儲(chǔ)
FFT運(yùn)算單元先讀取預(yù)處理結(jié)果的實(shí)部、虛部,送入蝶形運(yùn)算單元。級(jí)結(jié)果也會(huì)分成實(shí)部、虛部存儲(chǔ)在本單元的數(shù)據(jù)存儲(chǔ)器中。此后每都進(jìn)行原位操作,終的結(jié)果也存于這兩片RAM中。旋轉(zhuǎn)因子事先單獨(dú)存儲(chǔ)在一片512×16bit的RAM中,由控制單元讀取。
模平方累加和檢測(cè)單元
FFT運(yùn)算結(jié)束后,會(huì)啟動(dòng)模平方累加和檢測(cè)單元。這部分主要由模平方累加控制、接收狀態(tài)檢測(cè)、累加單元和存儲(chǔ)器構(gòu)成,如圖5所示。
控制單元負(fù)責(zé)協(xié)調(diào)各部分工作,包括讀取FFT結(jié)果,送給兩個(gè)乘法器和一個(gè)加法器進(jìn)行模平方運(yùn)算,然后把結(jié)果送到累加存儲(chǔ)器;在參考頻點(diǎn)到達(dá)時(shí)刻啟動(dòng)狀態(tài)檢測(cè)單元。在每一路FFT結(jié)果出現(xiàn)時(shí),鎖存當(dāng)前的指數(shù)位和累加單元的指數(shù)位。需要注意的是,F(xiàn)FT的結(jié)果是逆序存儲(chǔ),所以讀取的時(shí)候需要變換地址。
接收狀態(tài)檢測(cè)單元的功能是根據(jù)模平方結(jié)果,在頻域用恒虛警的算法來(lái)判斷各個(gè)通道中相位參考信號(hào)是否正常接收。因?yàn)榻邮盏南辔粎⒖夹盘?hào)是實(shí)正弦,所以每個(gè)通道的512點(diǎn)FFT結(jié)果中信號(hào)頻點(diǎn)是對(duì)稱分布的。因此恒虛警檢測(cè)選擇用對(duì)稱頻點(diǎn)的模平方均值作為信號(hào)功率,信號(hào)頻點(diǎn)前后各64個(gè)噪聲點(diǎn)的模平方均值作為噪聲功率,信噪比(SNR)門限定為18dB(64倍)。即
和 (X(n) +X(512-n))/2比較,其中n=n1,n2,n3,是三個(gè)信號(hào)頻點(diǎn)。如果其中有兩個(gè)都超過(guò)門限,則認(rèn)為接收機(jī)的這一通道正常工作。判斷得到的每一通道的狀態(tài),都鎖存在寄存器中。一方面從I/O輸出,另一方面作為模平方累加的使能信號(hào)。如果通道正常,則累加這一通道的值,否則不累加。因?yàn)橐坏┩ǖ莱霈F(xiàn)問題,接收噪聲會(huì)被大幅放大,這將嚴(yán)重影響模平方累加總的檢測(cè)信噪比性能,會(huì)造成整個(gè)數(shù)據(jù)采集的失敗。
完成上述功能,用到四個(gè)累加器和一個(gè)比較器。累加器分別累加3個(gè)頻點(diǎn)信號(hào)和1個(gè)噪聲信號(hào),使能端由模平方控制單元給出,保證正確頻點(diǎn)的數(shù)據(jù)被累加。比較器同時(shí)比較三個(gè)頻點(diǎn)的信號(hào)和門限,給出終比較結(jié)果。
模平方累加單元是求多通道的模平方和。由于采用了塊浮點(diǎn),每一通道512點(diǎn)FFT的指數(shù)位都可能不相同,所以需要將FFT結(jié)果的指數(shù)位和累加單元的指數(shù)位比較,以大的一個(gè)作為基準(zhǔn),右移另一個(gè),對(duì)齊后相加,并且保存大的指數(shù)位,作為累加結(jié)果的指數(shù)位。
FIFO輸出單元
用異步FIFO作為結(jié)果輸出,使用簡(jiǎn)單,而且可以節(jié)省地址線,減少PCB板的難度。Xilinx的集成工具ISE中的Corgen IP可以把FPGA內(nèi)部的塊RAM生成異步FIFO。這里采用寬度32位,深度1023的FIFO。當(dāng)512點(diǎn)模平方累加結(jié)果存入FIFO時(shí),F(xiàn)IFO產(chǎn)生半滿信號(hào),通知外部讀取。需要注意的是,這里的FIFO是用讀時(shí)鐘和輸出使能控制,如果外接讀信號(hào)和片選,那么在個(gè)讀周期,F(xiàn)IFO輸出的是緩沖區(qū)里的數(shù)據(jù),而不是實(shí)際個(gè)數(shù)據(jù)。之后的一個(gè)周期才會(huì)輸出實(shí)際個(gè)數(shù)據(jù)。
性能測(cè)試
用實(shí)際采集到的8通道數(shù)據(jù)做測(cè)試。所加的窗函數(shù)是漢明窗,“X”號(hào)代表的點(diǎn)是在MATLAB中用雙浮點(diǎn)運(yùn)算得到的結(jié)果,實(shí)線描繪的是用處理器運(yùn)算得到的結(jié)果。由圖6可以看出,采用塊浮點(diǎn)的算法可以保證足夠的運(yùn)算。
用ISE綜合布線后,系統(tǒng)的工作頻率可達(dá)到70MHz,完成8路512點(diǎn)復(fù)數(shù)FFT、模平方累加以及結(jié)果輸入到FIFO的運(yùn)算執(zhí)行總時(shí)間為732ms。達(dá)到了高速處理的要求。
結(jié)語(yǔ)
本文將雷達(dá)信號(hào)處理中常用的多種運(yùn)算,F(xiàn)FT、求模平方累加和恒虛警處理集成在一片F(xiàn)PGA中,是有實(shí)際意義的?!?/P>
參考文獻(xiàn)
1 祝裕斌. 超高速FFT芯片設(shè)計(jì)的理論和實(shí)現(xiàn). 學(xué)位論文. 中國(guó)科學(xué)院聲學(xué)研究所,1994.
2 劉振宇. 基于ASIC的數(shù)字脈壓及HDLC芯片設(shè)計(jì)的研究. 學(xué)位論文. 北京理工大學(xué),2002.
3 Xinlinx Inc. VirtexII Platform FPGA User Guide,2002.
4 侯伯寧,顧新.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì).西安電子科技大學(xué)出版社,1999.
5 PCB datasheet http://m.58mhw.cn/datasheet/PCB_1201640.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52









