国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的apFFT算法實現(xiàn)*

2010-05-18 07:28:06黃曉紅蔡江利
關(guān)鍵詞:二進制存儲器小數(shù)

孫 林,黃曉紅,蔡江利

(河北理工大學(xué),河北 唐山063000)

全相位頻譜分析apFFT(all phase FFT)是近幾年提出的頻譜分析方法,該方法具有比傳統(tǒng)FFT更優(yōu)良的頻譜抑制性能;具有“相位不變性”,該性質(zhì)意味著即使是在“不同步采樣的情況”,無需借助任何附加的校正措施即可精確提取出信號相位信息,因而在相位計的設(shè)計、激光測距、雷達等多個應(yīng)用領(lǐng)域具有較高的實用價值。對于apFFT的理論研究已有一些論文,但是硬件實現(xiàn)此算法的研究還很少見。本文對此新型頻譜分析算法用FPGA來實現(xiàn),并進行了仿真和分析。

目前,通常采用兩種途徑通過硬件方式實現(xiàn)FFT算法:(1)使用 DSP器件實現(xiàn);(2)通過 FPGA器件實現(xiàn)。一般來說,DSP器件多用于數(shù)字信號處理領(lǐng)域,而且開發(fā)過程相對簡單,易于實現(xiàn),但速度較慢,無法完成對速度要求較高的算法。而FPGA器件由于內(nèi)部嵌入了硬件乘法器、可編程寄存器和M4K內(nèi)存塊,在速度上具有明顯的優(yōu)勢??紤]到apFFT對速度要求較高,故選用FPGA器件作為硬件開發(fā)平臺。

1 全相位頻譜分析

apFFT理論推導(dǎo)詳見參考文獻[1,2],本文以FFT點數(shù)N=3點為例簡化此頻譜分析圖如圖1。其中的卷積窗wc=[wc(-N+1),…,wc(-1),wc(0),wc(1),…,wc(N-1)]由兩個長度為N的對稱窗卷積而來,用這個長為(2N-1)的卷積窗wc對輸入樣本加窗后,再將間隔為N的兩數(shù)據(jù)平移相加生成N個數(shù)據(jù)y(n)(n=0,1,…,N-1),最后對y(n)進行FFT即得譜分析結(jié)果。

圖1 全相位頻譜分析框圖

2 軟硬件簡介

在FPGA開發(fā)過程中,常用的是VHDL和Verilog HDL語言。VHDL語言比較適合做大型的系統(tǒng)級設(shè)計,而Verilog HDL則適合邏輯級、門級設(shè)計。所以,考慮到兩種語言各自特點,本文選用VHDL語言完成設(shè)計。

采用FPGA實現(xiàn)apFFT算法,對硬件資源要求較高,故開發(fā)芯片選擇Altera公司的EP2C35F672C8。該芯片內(nèi)部包含有33 216個邏輯單元,105個M4K RAM模塊,以及 18 bit×18 bit嵌入式乘法器。

軟件選用Altera公司開發(fā)的QuartusII平臺。該軟件提供了豐富的開發(fā)工具供用戶使用,可以完成代碼輸入、編譯、仿真以及下載到芯片的全部功能。

3 apFFT模塊設(shè)計

本文所設(shè)計的apFFT模塊由三部分構(gòu)成,分別為:地址發(fā)生模塊、數(shù)據(jù)存儲模塊和FFT運算模塊。各個模塊間的關(guān)系如圖2所示。

圖2 apFFT硬件模塊圖

3.1 地址發(fā)生模塊

為了保證測試數(shù)據(jù)能夠完整無誤地輸入到EP2C35F672C8,需要選擇合適的存儲地址來保存數(shù)據(jù)。本文以做8點FFT為例,所涉及的所有數(shù)據(jù)總線寬度均為 8 bit,序列長度取 15 bit。為了保證15 bit的存儲數(shù)據(jù)都能夠及時存儲到寄存器中,需要至少4 bit的地址總線才能滿足設(shè)計需求。

地址發(fā)生模塊的結(jié)構(gòu)體部分程序如圖3所示。

編譯通過之后,得到的Symbol文件如圖4所示。

3.2 存儲器設(shè)計

3.2.1 數(shù)據(jù)存儲器

由于輸入數(shù)據(jù)由總線寬度為8 bit的實部和虛部兩部分構(gòu)成,所以需要雙口RAM對數(shù)據(jù)進行存儲。這樣設(shè)計的優(yōu)勢在于能夠很好地將輸入數(shù)據(jù)按其順序輸入到FFT核當中,而且方便對不同地址的數(shù)據(jù)進行實時調(diào)用。

在對模塊設(shè)計過程中,可以直接調(diào)用QuratusII里的MegaWizard Plus-In Manager工具定制RAM。定制過程中,需要對RAM的控制線、地址線和數(shù)據(jù)線進行選擇,這里選擇地址線寬度為 4 bit,輸入、輸出數(shù)據(jù)線寬度為8 bit,讀取時鐘信號rdclock同時控制讀地址和RAM的輸出。

在該存儲器中,時鐘信號wrclock和rdclock分別控制隨機存儲器的寫、讀狀態(tài),均為高電平有效。同時,wrclock和rdclock作為寫、讀數(shù)據(jù)的地址發(fā)生器工作。即對wrclock和rdclock的上升沿進行計數(shù),并根據(jù)計數(shù)結(jié)果產(chǎn)生相應(yīng)的地址位。生成的數(shù)據(jù)存儲器如圖5所示。

需要注意的是,由于EP2C35F672C8屬于CycloneII器件,在調(diào)用RAM模塊時,必須做如下設(shè)置:選擇Assignments→Setting命令,在彈出的對話框中選擇Analysis&Synthesis Settings下的Default Parameters選項,并在該選項的Name文本框中輸入CYCLONEII_SAFE_WRITE;在Default Setting文本框中輸入 VERIFIED_SAFE,并分別點擊Add和OK按鈕關(guān)閉Settings窗口。這樣才能在最后綜合以及仿真時,得到正確的結(jié)果。

3.2.2 窗函數(shù)存儲器

apFFT相比傳統(tǒng)FFT,最大的區(qū)別在于其FFT運算模塊輸入數(shù)據(jù)是經(jīng)過預(yù)處理的數(shù)據(jù),而非采集電路直接采集到的數(shù)據(jù)。在進行數(shù)據(jù)預(yù)處理的過程中,非常重要的部分就是窗系數(shù)的選擇。以N=8點FFT為例,全相位輸入數(shù)據(jù)是2N-1=15個,采集余弦函數(shù)的15個數(shù)據(jù)為:-0.17365,-0.99027,-0.43837,0.71934,0.882 95,-0.173 65,-0.990 27,-0.43837,0.719 34,0.88295,-0.17365,-0.990 27,-0.438 37,0.719 34,0.882 95。

按照參考文獻[1,2]選擇的窗函數(shù)為:0.013 684,0.096665,0.346 18,0.846 66, 1.590 8,2.431 7, 3.111 8,3.375,3.111 8,2.431 7,1.590 8,0.846 66,0.346 18,0.096 665,0.013 684。將窗函數(shù)轉(zhuǎn)換為8 bit二進制的形式,并存儲到只讀存儲器當中以方便運算。如圖6所示。

將輸入數(shù)據(jù)經(jīng)加窗處理并疊加后,在matlab中得到的結(jié)果為:-1.4795,2.2361,2.051 3,-0.428 0,-0.229 4,1.252 9,-0.352 7,-3.069 4。此時,在 QuartusII中得到的結(jié)果為-1.236 8, 2.339 7, 2.004 9, -0.4029,-0.1803,1.118 6,-0.348 5,-2.985 6。可以看出兩者有一定的誤差,其原因是在QuartusII中得到的結(jié)果是以二進制形式表示,在轉(zhuǎn)換過程中存在一定的量化誤差。

3.2.3 量化誤差

在FPGA中實現(xiàn)算法,一般要對十進制的小數(shù)進行量化,即將十進制的小數(shù)轉(zhuǎn)換為二進制數(shù),并運用二進制補碼表示,兼顧舍入誤差,由于將十進制小數(shù)轉(zhuǎn)換為二進制比較繁瑣,現(xiàn)編寫matlab程序進行轉(zhuǎn)換:下面是將整數(shù)部分不為零的十進制的小數(shù)轉(zhuǎn)換為二進制小數(shù)的部分程序:

在FPGA中只能進行定點運算,根據(jù)對系數(shù)的量化誤差及有效字長效應(yīng),對加卷積窗的系數(shù)進行量化,所有的系數(shù)均采用二進制補碼的形式表示,也就是采用有符號的八位二進制補碼表示,在量化過程中,由于計算相對復(fù)雜,工作量比較大,如果采用手工計算來進行量化顯然是不可取的,而且也容易出現(xiàn)錯誤,為此利用前面為量化誤差編寫的程序進行量化,這樣大大減少了工作量,提高了工作效率。而且在設(shè)計中系數(shù)還具有線性相位的特性,利用這一特性更加減少計算的工作量。

對系數(shù)進行量化的數(shù)值如表1所示。

表1 系數(shù)轉(zhuǎn)換

3.3 FFT運算模塊

這里的FFT模塊,可以通過兩種方式得到。

第一種是自己編寫一個FFT算法的子程序,編譯通過后將該子程序打包成一個Symbol文件,并在最后的頂層文件中進行調(diào)用。這種方法的好處在于對FFT的算法能夠很好表達,并根據(jù)需要進行靈活修改,缺點是開發(fā)周期較長,硬件資源利用率不是太高。

第二種設(shè)計方法是安裝Altera公司提供的IP核,并對其進行相應(yīng)的參數(shù)設(shè)定。這種開發(fā)方法的好處在于簡單易用,并且能夠很好利用硬件資源。缺點是由于該核包含知識產(chǎn)權(quán),商用時需繳納一定版權(quán)費用??紤]到本設(shè)計尚處于研究階段,故選擇后一種開發(fā)方式,也便于減少硬件資源的消耗。在使用IP核的過程中需要對FFT核的參數(shù)進行設(shè)置,過程分為三步:參數(shù)設(shè)定(Parameterize),仿真設(shè)定(Set Up simulation)以及產(chǎn)生 FFT核(Generate)。

4 編譯及仿真

對最終的頂層文件進行編譯,并對其進行時序仿真。其仿真結(jié)果如圖7所示。

在圖7中,可看到最終仿真之后得到的波形情況,圖中所有值均以二進制形式顯示。

本設(shè)計所得到的硬件仿真結(jié)果與Matlab軟件仿真得到的結(jié)果基本一致,說明apFFT的FPGA的可行性。下一步將對此設(shè)計進行改進,可以根據(jù)FFT點數(shù)實時地對apFFT模塊進行參數(shù)化設(shè)置。

最終設(shè)計的FFT模塊使用了2 755個邏輯單元,僅占硬件資源的8%??梢娫撛O(shè)計的資源耗用與直接對數(shù)據(jù)進行FFT運算的資源耗用大體相當,apFFT和FFT計算效率分別是NlogN+2N和NlogN+N。因為apFFT相對于傳統(tǒng)的FFT,雖然采樣點數(shù)多了 N-1,但最終都用一個N階FFT實現(xiàn),而計算量主要體現(xiàn)在FFT中。在不增加FFT點數(shù)情況下,硬件資源耗用沒有明顯增加,但相對于傳統(tǒng)的FFT可以降低頻譜泄露,并且用apFFT測相位不用任何校正,所以在后續(xù)開發(fā)做頻譜分析或者相位計時計算量會很小,有利于實時實現(xiàn)。

[1]王兆華,侯正信,蘇飛.全相位FFT頻譜分析[J].通信學(xué)報,2003,24(11A):16-19.

[2]黃曉紅,王兆華.一種減少泄漏的新型譜估計方法[J].信號處理,2007,23(1):144-147.

[3]胡廣書.數(shù)字信號處理理論、算法與實現(xiàn).第2版[M].北京:清華大學(xué)出版社,2003.

[4]UWE M B.Digital signal processing with field programmable gate arrays[M].New York:Springer-Veriag Berlin Heidelberg,2003.

[5](美)阿森頓 (Ashenden P J.).VHDL 設(shè)計指南.第二版[M].葛紅,譯.北京:機械工業(yè)出版社,2005.

[6]曾繁泰,陳美金.VHDL程序設(shè)計[M].北京:清華大學(xué)出版社,2007:5-22.

猜你喜歡
二進制存儲器小數(shù)
小數(shù)加減“四不忘”
用二進制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
靜態(tài)隨機存儲器在軌自檢算法
我國古代的小數(shù)
小數(shù)的認識
小數(shù)的認識
有趣的進度
二進制在競賽題中的應(yīng)用
存儲器——安格爾(墨西哥)▲
基于Nand Flash的高速存儲器結(jié)構(gòu)設(shè)計
福鼎市| 新竹县| 来宾市| 苏尼特左旗| 芷江| 东乌珠穆沁旗| 嘉兴市| 长白| 环江| 宜黄县| 织金县| 太原市| 甘肃省| 吉林省| 肥城市| 宝鸡市| 林芝县| 临沭县| 夏津县| 文成县| 宁城县| 双江| 广南县| 东安县| 阜宁县| 星座| 渭源县| 永仁县| 资溪县| 故城县| 临邑县| 贡觉县| 阳城县| 秭归县| 沈阳市| 高唐县| 麻栗坡县| 东城区| 汶川县| 岳池县| 来凤县|