<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于FPGA的可配置FFT IP核實(shí)現研究

基于FPGA的可配置FFT IP核實(shí)現研究

作者: 時(shí)間:2016-10-18 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要 針對FFT算法基于FPGA實(shí)現的IP核。采用基于流水線(xiàn)結構和快速并行算法實(shí)現了蝶形運算和4k點(diǎn)FFT的輸入點(diǎn)數、數據位寬、分解基自由配置。使用Verilog語(yǔ)言編寫(xiě),利用ModelSim仿真,由ISE綜合并下載,在Xilinx公司的Virtex-5 xc5vfx70t器件上以200 MHz的時(shí)鐘實(shí)現驗證,運算結果與其他設計的運算效率對比有一定優(yōu)勢。

本文引用地址:http://dyxdggzs.com/article/201610/308483.htm

在現代聲納、雷達、通信、圖像處理等領(lǐng)域中,數字信號處理系統經(jīng)常要進(jìn)行高速、高精度的FFF運算?,F場(chǎng)可編程邏輯陣列(FPGA)是一種可定制集成電路,具有面向數字信號處理算法的物理結構。用FPGA實(shí)現FFT處理器具有硬件系統簡(jiǎn)單、功耗低的優(yōu)點(diǎn),同時(shí)具有開(kāi)發(fā)時(shí)間較短、成本較低的優(yōu)勢?;贔PGA實(shí)現的數字信號處理系統具有較高的實(shí)時(shí)性和嵌入性,并能方便地實(shí)現系統集成與功能擴展?;贔PGA的硬件實(shí)現FFT通常有兩種方法:(1)并行方法,其采用多個(gè)蝶形處理器并行運算,能對較高的數據采樣率進(jìn)行運算,但其硬件規模較大,當在FPGA上要實(shí)現較大點(diǎn)數的FFT時(shí)較為困難。(2)串行方法,采用一個(gè)蝶形處理器完成運算,使用的邏輯資源較少,但運算速度較慢。本文在串行方法的基礎上實(shí)現了一種在FPGA上實(shí)現的FFT IP核,具有輸入點(diǎn)數(實(shí)現0~4 096點(diǎn)自由配置)、數據位寬可配置、分解基可配置的特性。

1 原理分析

自從基2快速算法出現以來(lái),人們仍在不斷尋求更快的算法?;? FFT算法比最初的基2 FFT算法更快,但從理論上講,用較大的基數還可進(jìn)一步減少運算次數,但要以程序(或硬件)變得更復雜為代價(jià)。提高FFF處理速度的4個(gè)主要技術(shù)途徑是采用流水線(xiàn)結構、并行運算、增加蝶形處理單元數目和高基數結構。

1.1 基2算法基本原理

點(diǎn)數N是2的整數次冪,將x(n)先按n的奇偶分成兩組

基于FPGA的可配置FFT IP核實(shí)現研究

1.2 基4算法基本原理

與基2算法類(lèi)似,對于N點(diǎn)有限長(cháng)序列x(n)的DFT按照時(shí)域分解展開(kāi)有

基于FPGA的可配置FFT IP核實(shí)現研究
基于FPGA的可配置FFT IP核實(shí)現研究

2 可配置FFT IP核硬件結構

現有的FFT IP核在硬件實(shí)現時(shí)不具備并行度可配置能力,只提供全循環(huán)、全流水、循環(huán)展開(kāi)與流水結合等形式下的某種特定實(shí)現,可重用性較差,難以適應不同的計算吞吐量和對計算資源和計算時(shí)間的需求??膳渲肍FT IP核技術(shù)實(shí)現FFT算法流水、循環(huán)等并行化參數的可配置問(wèn)題,兼顧FFT轉換點(diǎn)數、輸入輸出數據位寬、蝶形運算基數、輸入輸出FIFO深度的可配置,滿(mǎn)足不同應用條件下IP復用的需求,適應各種環(huán)境和數據吞吐量的FFT運算??膳渲肍FTIP核功能組成如圖1所示。

基于FPGA的可配置FFT IP核實(shí)現研究

如圖1所示,該IP主要包括RAM、ROM、地址產(chǎn)生模塊、移位模塊、選擇數據排序模塊、可配置蝶形運算單元、精度調整模塊和輸出數據排序模塊,Din_R和Din_I是FFT輸入數據的實(shí)部和虛部,Dout_R和Dout_I是FFT變換結果的實(shí)部和虛部。RAM1和RAM2存儲了FFT迭代過(guò)程中的輸入數據,RAM3和RAM4存儲了FFT迭代過(guò)程中的計算結果,RAM1和RAM2、RAM3和RAM4均為乒乓結構。地址產(chǎn)生模塊主要產(chǎn)生向RAM寫(xiě)入數據和從RAM讀出數據的地址。ROM中存儲了FFT需要的旋轉因子。

2.1 IP核整體方案

設計可配置FFT處理,其整體結構如圖2所示,設計采用基2蝶形和基4蝶形運算兩種配置方式,供用戶(hù)選擇。輸入數據實(shí)部和虛部分開(kāi)存儲,需4個(gè)RAM,為實(shí)現對連續流輸入可連續流輸出,其模塊構成如圖2所示。

基于FPGA的可配置FFT IP核實(shí)現研究

如圖2所示,外部輸入數據的實(shí)數部分Din_R、虛數部分Din_I,以及輸入數據的地址信號ADR,首先進(jìn)入RAM_ADDR單元,選擇合適的時(shí)鐘周期將不同點(diǎn)數的原始數據送入RAM單元,當輸入數據的實(shí)數和虛數以及其地址準備好的時(shí)候,RDY輸出1。BIT_SFT單元完成輸入數據地址的移位變換,實(shí)現奇偶分離。當數據地址準備好時(shí),RDY輸出1,當RAM_ADDR或BIT_SFT這兩個(gè)單元中的一個(gè)單元準備好時(shí),便可觸發(fā)RAM單元,將外部數據寫(xiě)入到RAM的指定地址。RAM中的數據符合可配置點(diǎn)數要求后,進(jìn)入NUM_IN單元,其中輸出的數據DOR/DOI就是符合基2蝶形或基4蝶形運算的數據順序。這些原始數據進(jìn)入蝶形運算單元BUTTERFLY,蝶形單元通過(guò)U_SELECT單元選擇蝶形運算的分解基,實(shí)現基2蝶形運算、基4蝶形運算的可配置功能。其中R4_FFT是基4蝶形運算單元,B2_FFT是基2蝶形運算單元,蝶形運算過(guò)程中所需的旋轉因子存儲在ROM_RAT單元中,根據選擇不同分解基的蝶形運算,BUTIERFLY單元產(chǎn)生相應的地址,選擇其計算過(guò)程中的旋轉因子。當蝶形運算完成后,結果數據進(jìn)入U_CNORM單元,進(jìn)行順序調整和精度處理;其中PR信號是用戶(hù)指定的精度信號,PR[1:0]可提供3種精度,OVF信號是數據溢出信號,若置1表明FFT結果數據超出了表示范圍,則要按照截位處理以保證數據準確。當數據輸入完成后,結果數據進(jìn)入NUM_OUT單元,由于DIT算法輸出結果以倒序形式輸出,所有需要NUM_OUT進(jìn)行地址調整,FFT變換結束后的結果實(shí)數部分Dout_R,虛數部分是Dout_I,地址信號是R_ADDR,以正確的順序和形式輸出。

2.2 可配置蝶形單元模塊

在FFT IP核的蝶形運算單元設計中,蝶形單元的運算過(guò)程:第一個(gè)時(shí)鐘周期是將下結點(diǎn)與旋轉因子復乘的實(shí)數乘法進(jìn)行計算;第二個(gè)時(shí)鐘周期是將復乘中的實(shí)數進(jìn)行加減運算;在第三個(gè)時(shí)鐘周期是計算復乘結果與上結點(diǎn)的加減運算,即將蝶形運算單元的結果輸出??膳渲玫芜\算通過(guò)在基2和基4兩種分解基之間切換來(lái)實(shí)現,其模塊圖如圖3所示。

基于FPGA的可配置FFT IP核實(shí)現研究

如圖3所示,數據輸入時(shí)能信號EN信號置1,則整個(gè)蝶形運算單元的數據輸入模塊NUM_IN、旋轉因子模塊ROM_RAT、分解基選擇模塊U_SELECT進(jìn)入使能狀態(tài);START信號置1,則分解基選擇單元U_SELECT模塊開(kāi)始進(jìn)入狀態(tài)機。根據用戶(hù)設置,如果選擇基2算法蝶形運算單元,則將輸入數據的實(shí)部和虛部送入R2_FFT模塊;如果選擇基4算法蝶形運算單元,則將輸入數據的實(shí)部和虛部送入R4_FFT模塊;如果選擇混合基,則需要在狀態(tài)機中加入判斷條件,準確控制分支。當蝶形運算完成時(shí),FFT運算結果數據的實(shí)數部分Dout_R[nb+2:0],虛數部分Dout_I[nb+2:0]比輸入數據的位數[nb:0]擴展了3位,用于精度調整模塊進(jìn)行精度控制。

蝶形運算的旋轉因子存儲在ROM_RAT中,其中存儲了基4運算和基2運算的旋轉因子,實(shí)部和虛部分開(kāi)存儲,通過(guò)外部信號EN對其使能,為控制ROM存儲空間的占用,不同分解基的旋轉因子可公用,通過(guò)地址信號ADR選取控制。

3 仿真、綜合結果分析與驗證

將設計的IP核進(jìn)行基于ModelSim的仿真,設置時(shí)鐘頻率為200 MHz,數據位寬為36位,在基2和基4兩種分解基下,分析1 024點(diǎn)和4 096點(diǎn)的運算效率,其仿真圖像如下所示。

圖4是1 024,點(diǎn)的基2算法仿真結果,在這種算法下完成數據錄入的時(shí)間點(diǎn)為113.1μs,完成結果輸出的時(shí)間點(diǎn)為123.4μs,運算時(shí)間為10.3μs。圖5是1 024點(diǎn)的基4算法仿真結果,在該種算法下完成數據錄入的時(shí)間點(diǎn)51.3μs,完成結果輸出的時(shí)間點(diǎn)是61.6μs,運算時(shí)間為8.3 μs。

基于FPGA的可配置FFT IP核實(shí)現研究

圖6是4 096點(diǎn)的基2算法仿真結果,在這種算法下完成數據錄入的時(shí)間點(diǎn)533.1μs,完成結果輸出的時(shí)間點(diǎn)是574.1μs,運算時(shí)間為40 μs。圖7是4096點(diǎn)的基4算法仿真結果,在該種算法下完成數據錄入的時(shí)間點(diǎn)為245.7 μs,完成結果輸出的時(shí)間點(diǎn)是286.9μs,運算時(shí)間為41.2μs。

基于FPGA的可配置FFT IP核實(shí)現研究
基于FPGA的可配置FFT IP核實(shí)現研究

板級驗證選用Xilinx公司的Virtex-5 xc5vfx70t器件進(jìn)行綜合、布局布線(xiàn)和時(shí)序分析。將得到的數據與其他設計實(shí)現進(jìn)行比較,其消耗的資源,以及在200 MHz時(shí)鐘情況下不同點(diǎn)數的FFT處理器進(jìn)行一次處理需要的時(shí)間,與文獻換算后得到的數值對比如表1所示。

基于FPGA的可配置FFT IP核實(shí)現研究

4 結束語(yǔ)

本文設計的可配置FFT IP核具有靈活性強、容易擴展和設計可復用的特點(diǎn),實(shí)現分解基可配置、位寬可配置、輸入輸出點(diǎn)數可配置。從驗證結果可以看出,本文數據的可配置IP核具有結構簡(jiǎn)單及占用硬件資源適當的特點(diǎn),在FPGA中以實(shí)現高速數字信號處理,在處理速度和靈活性方面更有優(yōu)勢。隨著(zhù)處理點(diǎn)數的增加,其優(yōu)越性將更加明顯。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>