版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、信息與通信工程學(xué)院綜合實(shí)驗(yàn)(1)設(shè)計(jì)報(bào)告基于FPGA 的FFT 設(shè)計(jì)與實(shí)現(xiàn)學(xué) 號(hào):S309080034專 業(yè): 光學(xué)工程學(xué)生姓名:彭歡任課教師:鐘志 副教授2010年7月基于FPGA 的FFT 的設(shè)計(jì)與實(shí)現(xiàn)彭歡信息與通信工程學(xué)院摘 要:本文主要研究如何利用FPGA 實(shí)現(xiàn)FFT 處理器,包括算法選取、算法驗(yàn)證、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)、各個(gè)模塊設(shè)計(jì)、FPGA 實(shí)現(xiàn)和測(cè)試整個(gè)流程。設(shè)計(jì)采用基-2按時(shí)間抽取算法,以XILINX 公司提供的ISE6.1為軟件平臺(tái),利用V erilog HDL 描述的方式實(shí)現(xiàn)了512點(diǎn)16bist 復(fù)數(shù)塊浮點(diǎn)結(jié)構(gòu)的FFT 系統(tǒng),并以FPGA 芯片場(chǎng)V irte x II XC2V1
2、000為硬件平臺(tái),進(jìn)行了仿真、綜合等工作。仿真結(jié)果表明其計(jì)算結(jié)果達(dá)到了一定的精度,運(yùn)算速度可以滿足一般實(shí)時(shí)信號(hào)處理的要求。關(guān)鍵詞:快速傅立葉變換,現(xiàn)場(chǎng)可編程門陣列,塊浮點(diǎn),V erilog HDL1 引言目前,F(xiàn)FT 己廣泛應(yīng)用在頻譜分析、匹配濾波、數(shù)字通信、圖像處理、語音識(shí)別、雷達(dá)處理、遙感遙測(cè)、地質(zhì)勘探和無線保密通訊等眾多領(lǐng)域。在不同應(yīng)用場(chǎng)合,需要不同性能要求的FFT 處理器。在很多應(yīng)用領(lǐng)域都要求FFT 處理器具有高速度、高精度、大容量和實(shí)時(shí)處理的性能。因此,如何更快速、更靈活地實(shí)現(xiàn)FFT 變得越來越重要。在過去很長一段時(shí)間,DSP 處理器是DSP 應(yīng)用系統(tǒng)核心器件的唯一選擇。盡管DSP
3、處理器具有通過軟件設(shè)計(jì)能適用于實(shí)現(xiàn)不同功能的靈活性,但面對(duì)當(dāng)今速度變化的DSP 應(yīng)用市場(chǎng),特別是面對(duì)現(xiàn)代通信技術(shù)的發(fā)展,DSP 處理器在處理速度上早已力不從心。與DSP 相比,F(xiàn)PGA 實(shí)現(xiàn)FFT 的主要優(yōu)越性有:(1、FPGA 實(shí)現(xiàn)數(shù)字信號(hào)處理最顯著的特點(diǎn)就是高速性能好。FPGA 有內(nèi)置的高速乘法器和加法器,尤其適合于乘法和累加等重復(fù)性的DSP 任務(wù)。(2、FPGA 的存儲(chǔ)量大。DSP 內(nèi)部一般沒有大容量的存儲(chǔ)器,但是FTF 實(shí)時(shí)處理運(yùn)算需要存儲(chǔ)大量的數(shù)據(jù),只能外接存儲(chǔ)器,這樣往往會(huì)使運(yùn)算速度下降,同時(shí)電路也會(huì)更復(fù)雜和不穩(wěn)定。目前,高檔的FPGA 中有巨量的高速存儲(chǔ)器,不用外接存儲(chǔ)器便可實(shí)現(xiàn)
4、FFT 實(shí)時(shí)處理運(yùn)算,其速度更快,電路更簡單,集成度和可靠性也大幅度提高。(3、FPGA 是硬件可編程的,比DSP 更加靈活。DSP 往往需要外部的接口和控制芯片配合工作,F(xiàn)PGA 則不需要,這樣使得硬件更簡單和小型化。(4、在比較FPGA 和DSP 時(shí),一個(gè)極為重要的系統(tǒng)參數(shù)是輸入/輸出(1/0帶寬。除了一些專用引腳外,F(xiàn)PGA 上幾乎所有的引腳均可供用戶使用,這使得FPGA 信號(hào)處理方案具有非常高性能的FO 帶寬。大量的FO 引腳和多塊存儲(chǔ)器可讓系統(tǒng)在設(shè)計(jì)中獲得優(yōu)越的并行處理性能。2 現(xiàn)場(chǎng)可編程門陣列(FPGA 技術(shù)2.1 FPGA 器件簡介FPGA 即現(xiàn)場(chǎng)可編程門陣列,它是作為ASIC
5、領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA 結(jié)合了微電子技術(shù)、電路技術(shù)、EDA 技術(shù),使設(shè)計(jì)者可以集中精力進(jìn)行所需邏輯功能的設(shè)計(jì),縮短設(shè)計(jì)周期,提高設(shè)計(jì)質(zhì)量。FPGA 己經(jīng)在計(jì)算機(jī)硬件、工業(yè)控制、遙感遙測(cè)、雷達(dá)聲納、數(shù)據(jù)處理、智能儀器儀表、廣播電視、醫(yī)療電子和現(xiàn)代通信等多種領(lǐng)域中得到廣泛應(yīng)用,F(xiàn)PAG 開發(fā)技術(shù),己經(jīng)成為數(shù)字系統(tǒng)的教學(xué)實(shí)踐、科研試驗(yàn)、樣機(jī)調(diào)試和中小批量生產(chǎn)的首選方案。FPGA 采用了邏輯單元陣列LCA 這樣一個(gè)新概念,內(nèi)部一般是由可配置邏輯模CLB 、可編程輸入/輸出模塊IOB 和互連資源ICR 及一個(gè)用于存放編程
6、數(shù)據(jù)的靜態(tài)存儲(chǔ)器SRAM 組成,以XILNIX 公司的XC4000,基本結(jié)構(gòu)如圖2.1所示。 圖2.1 XC4000系列FPGA 基本結(jié)構(gòu)FPGA 器件的性能特點(diǎn)主要有:(1、采用FPGA 設(shè)計(jì)ASIC 電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。(2、FPGA 提供豐富的I/O引腳和觸發(fā)器,集成度遠(yuǎn)遠(yuǎn)高于可編程陣列邏輯(PAL器件。(3、FPGA 器件結(jié)構(gòu)靈活,內(nèi)部的CLB 、IOB 和ICR 均可以編程,可以實(shí)現(xiàn)多個(gè)變量的任意邏輯。(4、某些器件提供片內(nèi)高速RAM ,可用于FIFO 等設(shè)計(jì)。(5、基于SRAM 編程技術(shù),具有高密度、高速度、高可靠性和低功耗的特性。(6、FPGA 是ASI
7、C 電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。2.2 基于FPGA 的系統(tǒng)開發(fā)以XILNIX 為例,F(xiàn)PGA 設(shè)計(jì)的一般流程包括設(shè)計(jì)輸入、功能仿真、設(shè)計(jì)實(shí)現(xiàn)、時(shí)序仿真、器件編程與測(cè)試幾個(gè)步驟。設(shè)計(jì)流程圖如圖2.2所示。 規(guī)劃和預(yù)算實(shí)現(xiàn)繪制原理圖HDL RTL仿真功能仿真綜合建立網(wǎng)絡(luò)表實(shí)現(xiàn)時(shí)序逼近時(shí)序仿真建立位流文件圖2.2 FPGA設(shè)計(jì)流程(l、設(shè)計(jì)輸入:主要輸入方法有硬件描述語言和原理圖,結(jié)構(gòu)向?qū)?Architrcture Wizard和核生成器(Core Geneartor可以輔助設(shè)計(jì)輸入。(2、功能仿真:功能仿真沒有器件內(nèi)部邏輯單元和連線的實(shí)際延時(shí)信息,只是初步驗(yàn)證系統(tǒng)的邏輯
8、功能。(3、設(shè)計(jì)實(shí)現(xiàn):實(shí)現(xiàn)包括轉(zhuǎn)換、映射、布局布線、時(shí)間參數(shù)提取,同時(shí)產(chǎn)生各種報(bào)告和文件。(4、時(shí)序仿真:時(shí)序仿真中使用了電路延時(shí)的最壞情況,分析時(shí)序關(guān)系,檢查和消除競(jìng)爭(zhēng)冒險(xiǎn)、并對(duì)器件的實(shí)際工作性能進(jìn)行估計(jì)。(5、器件編程與測(cè)試:設(shè)計(jì)實(shí)現(xiàn)以后,建立FPGA 可識(shí)別文件,將編程數(shù)據(jù)下載到相應(yīng)的FPGA 器件中去。在FPGA 設(shè)計(jì)的各個(gè)環(huán)節(jié)都有不同公司提供的不同的EDA 工具。一般由FPGA 廠商提供集成開發(fā)環(huán)境,如ALTERA 公司的Quartus II 和XILINX 公司的ISE 。為提高設(shè)計(jì)效率,優(yōu)化設(shè)計(jì)結(jié)果,很多廠家提供了各種專業(yè)軟件,用以配合FPGA/CPLD芯片廠家提供的工具進(jìn)行更高
9、效的設(shè)計(jì)。比較常見的使用方式是:集成開發(fā)環(huán)境,專業(yè)邏輯仿真軟件和專業(yè)邏輯綜合軟件一起使用,進(jìn)行多種EDA 工具的協(xié)同設(shè)計(jì)。本設(shè)計(jì)采用ISE6.1+Modelsim5.7g+SynpliyfPor。2.3 硬件描述語言V erilog HDLHDL 是硬件描述語言(Hardware Description Language的縮寫,是一種用形式方法來描述數(shù)字電路和系統(tǒng)的語言。利用這種語言,數(shù)字電路系統(tǒng)的設(shè)計(jì)可以從抽到具體逐層描述自己的設(shè)計(jì)思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字統(tǒng)。隨著EDA 技術(shù)的發(fā)展,使用HDL 設(shè)計(jì)FPGA 已成為一種趨勢(shì)。目前最主要HDL 是VHDL 和V erilo
10、g HDL ,本設(shè)計(jì)采用V erilog HDL。作為硬件描述語言,V erilog HDL具有如下特點(diǎn):(1、能夠在不同的抽象層次上,如系統(tǒng)級(jí)、行為級(jí)、寄存器傳輸級(jí)RTL 、門級(jí)和開關(guān)級(jí),對(duì)設(shè)計(jì)系統(tǒng)進(jìn)行精確而簡練的描述;(2、能夠在每個(gè)抽象層次的描述上對(duì)設(shè)計(jì)進(jìn)行仿真驗(yàn)證,及時(shí)發(fā)現(xiàn)可能存在的設(shè)計(jì)錯(cuò)誤,縮短設(shè)計(jì)周期,并保證整個(gè)設(shè)計(jì)過程的正確性;(3、由于代碼描述與具體工藝實(shí)現(xiàn)無關(guān),因此易于設(shè)計(jì)標(biāo)準(zhǔn)化,提高了設(shè)計(jì)的重用性。如果有C 語言的編程經(jīng)驗(yàn),只需很短的時(shí)間就能掌握V erilog HDL。使用HDL 進(jìn)行設(shè)計(jì)時(shí),需要設(shè)計(jì)者完成的任務(wù)有編寫電路描述和編寫包含激勵(lì)波形描述的測(cè)試平臺(tái)文件,其激勵(lì)用
11、于進(jìn)行電路功能測(cè)試,代測(cè)電路的行為特性由仿真器顯示波形。3 FFT 算法原理及其硬件結(jié)構(gòu)設(shè)計(jì)3.1 FFT 算法基本原理有限長序列x (n 及其頻域表示X (k 可由以下離散傅立葉變換得出:N -1X (k =D FT x (n =x (n Wn =0nk N , (0k N -1 (3.1)x (n =ID FT X (k =2N 1N N -1X (k W k =0-nk N , (0n N -1 (3.2) 其中,W nkN =e -j nk 。式(3.1 稱為離散傅立葉(正 變換,式(3.2 稱為離散傅立葉反變換,x (n 與X (k 構(gòu)成了離散傅立葉變換對(duì)。根據(jù)上述公式,計(jì)算一個(gè)X
12、(k ,需要N 次復(fù)數(shù)乘法和N -1次復(fù)數(shù)加法,而計(jì)算全部 X (k (0k N -1 ,共需要N 2次復(fù)數(shù)乘法和N (N -1 次復(fù)數(shù)加法。實(shí)現(xiàn)一次復(fù)數(shù)乘法需要四次實(shí)數(shù)乘法和兩次實(shí)數(shù)加法,一次復(fù)數(shù)加法需要兩次實(shí)數(shù)加法,因此直接計(jì)算全部X (k 共需要4N 2次實(shí)數(shù)乘法和2N (2N -1 次實(shí)數(shù)加法。當(dāng)N 較大時(shí),對(duì)實(shí)時(shí)信號(hào)處理來說,對(duì)處理器計(jì)算速度有十分苛刻的要求,于是如何減少計(jì)算離散傅里葉變換運(yùn)算量的問題變得至關(guān)重要。為減少運(yùn)算量,提高運(yùn)算速度,就必須改進(jìn)算法。計(jì)算DFT 過程中需要完成的運(yùn)算的系數(shù)里,存在相當(dāng)多的對(duì)稱性。通過研究這種對(duì)稱性,可以簡化計(jì)算過程中的運(yùn)算,從而減少計(jì)算DFT
13、所需的時(shí)間。W N nk 具有周期性、對(duì)稱性和可約性。利用其特性,將x (n 或X (k 序列按一定規(guī)律分解成短序列進(jìn)行運(yùn)算,這樣可以避免大量的重復(fù)運(yùn)算,提高計(jì)算DFT 的運(yùn)算速度。算法形式有很多種,但基本上可以分為兩大類,即按時(shí)間抽取FFT 算法和按頻率抽取FFT 算法。如果序列x (n 的長度N =2M ,其中M 是整數(shù)(如果不滿足此條件,可以人為地增補(bǔ)零值點(diǎn)來達(dá)到 ,在時(shí)域上按奇偶抽取分解成短序列的DFT ,使最小DFT 運(yùn)算單元為2點(diǎn)。通常將FFT 運(yùn)算中最小DFT 運(yùn)算單元稱為基(radix,因而把這種算法稱為基-2時(shí)間抽取FFT(DIT-FFT算法。若X m (p 和X m (q
14、為輸入數(shù)據(jù),X m+1(p 和X m+1(q 為輸出數(shù)據(jù),W N r 為旋轉(zhuǎn)因子,則對(duì)于基-2DIF-FFT 算法,蝶形運(yùn)算的基本公式為:X m +1(p =X m (p +X m (q W N k (3.3) k X m +1(q =X m (p -X m (q W N其圖形表示如圖3.1所示,稱X m (p 為上結(jié)點(diǎn),X m (q 為下結(jié)點(diǎn)。 X m (p m+1(p X m (q m+1(q 圖3.1 時(shí)間抽取蝶形運(yùn)算單元上述的基-2DIT-FFT 算法是按奇偶原則對(duì)輸入序列x (n 進(jìn)行抽取分解,結(jié)果在頻域使X (k 前后分組。如果在時(shí)域把x (n 分解成前后兩組,那么在頻域就會(huì)使X
15、(k 形成奇偶抽取分組,稱為頻率抽取FFT(DIF-FFT算法。若X m (p 和X m (q 為輸入數(shù)據(jù),X m+1(p 和X m+1(q 為輸出數(shù)據(jù),W N r 為旋轉(zhuǎn)因子,則對(duì)于基-2DIF-FFT 算法,蝶形運(yùn)算的基本公式為:X m +1(p =X m (p +X m (q (3.4) k X m +1(q =X m (p -X m (q W N其圖形表示如圖3.2所示,稱X m (p 為上結(jié)點(diǎn),X m (q 為下結(jié)點(diǎn)。 X m (p m+1(p X m (q m+1(q 圖3.2 頻率抽取蝶形運(yùn)算單元DIT-FFT 算法與DIF-FFT 算法均為原位運(yùn)算,而且運(yùn)算量相同,不同之處在于
16、: 數(shù)據(jù)存放的方式不同,DIT 為倒序輸入、正序輸出,而DIF 為正序輸入、倒序輸出,運(yùn)算完畢需進(jìn)行整序操作;蝶形運(yùn)算不同,DIT 的復(fù)數(shù)乘法出現(xiàn)在(加 減法之前,而DIF 的復(fù)數(shù)乘法出現(xiàn)在(加 減法之后。所以DIT-FFT 算法和DIF-FFT 算法是兩種等價(jià)的FFT 運(yùn)算。參照DIT-FFT 的數(shù)據(jù)地址產(chǎn)生規(guī)律,可總結(jié)出DIF-FFT 的數(shù)據(jù)地址產(chǎn)生規(guī)律。 3.2 FFT 的硬件實(shí)現(xiàn)結(jié)構(gòu)選擇合適的系統(tǒng)結(jié)構(gòu),是提高FFT 處理器性能的關(guān)鍵。以基-2DIT-FFT 算法為例,本章將首先討論幾種常用FFT 處理器的實(shí)現(xiàn)形式。(1順序處理順序處理是FFT 專用處理器的基本形式,蝶形運(yùn)算單元在控制器
17、的控制下,根據(jù)標(biāo)準(zhǔn)的FFT 信號(hào)流圖,按時(shí)間順序依次進(jìn)行運(yùn)算。即從第1級(jí)開始,從上至下依次進(jìn)行,第1級(jí)算完后,然后進(jìn)行第2級(jí),第3級(jí),······,直至算完為止。順序處理具有以下特點(diǎn): 只用一個(gè)蝶形運(yùn)算單元;輸入數(shù)據(jù)、中間數(shù)據(jù)和輸出結(jié)果均使用同一組存儲(chǔ)器;順序執(zhí)行N 2log 2N 次蝶形運(yùn)算;N 2log 2N如果一次蝶形運(yùn)算時(shí)間為T ,則總的運(yùn)算時(shí)間為T (2流水線處理流水線處理是把一個(gè)重復(fù)的過程分解為若干個(gè)子過程,每個(gè)子過程可以與其他子過程并行進(jìn)行。對(duì)一個(gè)N 點(diǎn)的FFT 變換,每一級(jí)的N /2次蝶形運(yùn)算安排一個(gè)獨(dú)立的蝶形處理器按
18、順序完成,總共采用log 2N 個(gè)蝶形運(yùn)算單元同時(shí)進(jìn)行工作,這種形式稱為流水線處理或者級(jí)聯(lián)處理。流水線處理具有以下特點(diǎn):使用M =log 2N 個(gè)蝶形運(yùn)算單元;M 個(gè)蝶形運(yùn)算單元在各級(jí)間并行運(yùn)算,即級(jí)與級(jí)之間是并行工作的;每個(gè)蝶形運(yùn)算單元在每一級(jí)中順序執(zhí)行N /2個(gè)蝶形運(yùn)算,即每一級(jí)運(yùn)算的內(nèi)部是串行工作的;如果一次蝶形運(yùn)算時(shí)間為T ,則理論上總的運(yùn)算時(shí)間和每一級(jí)數(shù)據(jù)運(yùn)算時(shí)間一樣(沒考慮級(jí)與級(jí)之間的數(shù)據(jù)緩沖 ,為T N /2。(3并行迭代處理對(duì)于每一級(jí)中的N /2個(gè)蝶形運(yùn)算,采用N /2個(gè)蝶形運(yùn)算單元并行工作,級(jí)與級(jí)之間順序進(jìn)行計(jì)算,這種實(shí)現(xiàn)形式稱為并行迭代處理。并行迭代處理具有以下特點(diǎn):使用N
19、 /2個(gè)蝶形運(yùn)算單元,在每一級(jí)中并行工作; 各級(jí)間順序處理工作;如果一次蝶形運(yùn)算時(shí)間為T ,則總的運(yùn)算時(shí)間為T log 2N 。 (4陣列處理把流水線處理和并行迭代處理結(jié)合起來,采用行工作,稱為陣列處理。陣列處理具有以下特點(diǎn):使用N 2log 2NN 2log 2N個(gè)蝶形運(yùn)算單元實(shí)現(xiàn)全并個(gè)蝶形運(yùn)算單元并行完成全部蝶形運(yùn)算;由于采用流水線工作方式,使單位時(shí)間內(nèi)處理的數(shù)據(jù)增大了log 2N 倍,也就是說數(shù)據(jù)的吞吐量增大了log 2N 倍;總的運(yùn)算時(shí)間理論上等于一次蝶形運(yùn)算時(shí)間T 。從空間復(fù)雜度和設(shè)備使用量上看,順序處理最小,流水線處理次之,并行迭代和陣列處理則設(shè)備量最大,成本最昂貴。從處理速度上看
20、,順序處理最慢,流水線次之,并行迭代和陣列處理速度最快,可應(yīng)用于實(shí)時(shí)性要求很高的場(chǎng)合(如雷達(dá)信號(hào)處理系統(tǒng) 。綜上所述,處理速度的提高是以設(shè)備量和成本的增加為代價(jià)的。因此,在具體設(shè)計(jì)中,必須綜合考慮和適當(dāng)采用上述的各種形式的處理器,根據(jù)實(shí)際需求確定具體的實(shí)現(xiàn)方案,以取得“速度/成本”的最佳值。本設(shè)計(jì)采用最基本的順序處理方案來實(shí)現(xiàn)512點(diǎn)16位復(fù)數(shù)的FFT 運(yùn)算系統(tǒng)。4 FFT 處理器的FPGA 的設(shè)計(jì)及實(shí)現(xiàn)4.1 FFT 處理器總體設(shè)計(jì)基-2FFT 模塊設(shè)計(jì)主要由6部分組成:蝶形運(yùn)算單元,存儲(chǔ)單元,地址產(chǎn)生單元,功能切換單元,浮點(diǎn)單元和時(shí)序控制元,如圖4.1所示。 圖4.1 FFT處理器結(jié)構(gòu)框圖
21、各模塊的功能概述如下: (l、蝶形運(yùn)算單元:采用DIT 方式完成基-2蝶形運(yùn)算,若數(shù)據(jù)從雙口RAM1中讀出,則計(jì)算結(jié)果存入雙口RAMZ 中,反之亦然;(2、存儲(chǔ)單元:主要用來存儲(chǔ)輸入數(shù)據(jù)、中間結(jié)果(RAM,預(yù)置旋轉(zhuǎn)因子(ROM,以及最后的計(jì)算結(jié)果(RAM;(3、地址產(chǎn)生單元:產(chǎn)生RAM 的讀、寫地址和ROM 的讀地址; (4、功能切換單元:完成RAMI 與RAMZ 間數(shù)據(jù)讀寫功能的切換;(5、塊浮點(diǎn)單元:記錄蝶算單元輸出數(shù)據(jù)的位信息,并完成蝶算單元輸入數(shù)據(jù)的 截位;(6、時(shí)序控制單元:產(chǎn)生各模塊的使能、控制信號(hào),使整個(gè)流程正常工作。 4.2 蝶形運(yùn)算單元的設(shè)計(jì)FFT 的核心操作是蝶形運(yùn)算,蝶形
22、運(yùn)算直接影響著FFT 處理器的速度,所以如何加快蝶形運(yùn)算的處理速度是提高FFT 處理器速度的關(guān)鍵問題?;?2時(shí)間抽取FFT 運(yùn)算可分解成:X m +1(p R =X m (p R X m +1(p I =X m (p I X m +1(q R =X m (p R X (q I =X m (p Im +1+(X m (q R W N R -X m (q I W N I +(X m (q I W N I +X m (q I W N I -(X m (q R WrN R r rrrr-X m (q I Wrr N I(4.1)-(X m (q I W N I -X m (q I W N I 其中p
23、,q 表示序列下標(biāo),R ,I 表示實(shí)部和虛部。并行結(jié)構(gòu)如圖4.2所示蝶形運(yùn)算分3個(gè)階段實(shí)現(xiàn)。 4.2 蝶形運(yùn)算并行結(jié)構(gòu)在蝶形單元設(shè)計(jì)中,考慮到Virtex 系列FPGA 豐富的乘法器資源,采用了四個(gè)乘法器并行運(yùn)算,使乘法運(yùn)算在一個(gè)時(shí)鐘周期內(nèi)完成,提高了運(yùn)算速度。在設(shè)計(jì)中為增大數(shù)據(jù)的動(dòng)態(tài)范圍,采用塊浮點(diǎn)結(jié)構(gòu),蝶形運(yùn)算單元輸入數(shù)據(jù)為16位,輸出數(shù)據(jù)為18位。同時(shí),6次加(減 法運(yùn)算分別用6個(gè)加(減 法器來實(shí)現(xiàn)。根據(jù)上述的設(shè)計(jì)原理對(duì)蝶形運(yùn)算單元進(jìn)行硬件實(shí)現(xiàn)。蝶形運(yùn)算模塊示意圖如圖4.3所示,其中,x l ,y 1,x 2,y 2分別表示上、下結(jié)點(diǎn)數(shù)據(jù)的實(shí)部和虛部輸入,其位寬為16bist ;wx ,
24、wy 分別表示旋轉(zhuǎn)因子的實(shí)部和虛部,其位寬為16bits ;mx1,myl ,mx2,my2分別表示蝶形運(yùn)算上、下結(jié)點(diǎn)實(shí)部和虛部輸出,其位寬為18bits ;clk 是時(shí)鐘信號(hào)reset 是復(fù)位信號(hào)。為了保證數(shù)據(jù)的同步性,在蝶形運(yùn)算單元加入了使能信號(hào)start ,使下結(jié)點(diǎn)數(shù)據(jù)和旋轉(zhuǎn)因子同步進(jìn)入乘法器。同時(shí),上結(jié)點(diǎn)數(shù)據(jù)延遲2個(gè)時(shí)鐘周期后與復(fù)乘結(jié)果進(jìn)行加減運(yùn)算。 圖4.3 蝶形運(yùn)算模塊示意圖圖4.4為該蝶形運(yùn)算單元在Modelsim 中的仿真波形圖。 圖4.4 蝶形運(yùn)算單元的Modelsim 功能仿真波形圖由圖4.4所示仿真波形圖可以看出,蝶形運(yùn)算單元在使能信號(hào)start=1后的3個(gè)時(shí)鐘周期內(nèi)完成
25、一次蝶形運(yùn)算,且如果每個(gè)時(shí)鐘來臨輸入新的操作數(shù)據(jù),結(jié)果則連續(xù)輸出,與理論值比較,計(jì)算結(jié)果正確。 4.3 塊浮點(diǎn)單元設(shè)計(jì)在FFT 處理器設(shè)計(jì)中,若采用定點(diǎn)運(yùn)算,插入定衰減系數(shù)的方法防止溢出,結(jié)構(gòu)簡單,但運(yùn)算精度不高; 若采用浮點(diǎn)運(yùn)算,精度高,但運(yùn)算復(fù)雜度增加,且速度降低。因此本設(shè)計(jì)采用介于定點(diǎn)和浮點(diǎn)之間的塊浮點(diǎn)算法。這種算法相比定點(diǎn)運(yùn)算,提高了精度,相比浮點(diǎn)運(yùn)算,提高了速度,保證了FFT 處理器處理器具有高精度、高速度的特點(diǎn)。蝶形運(yùn)算單元和存儲(chǔ)器RAM 兩者之間的數(shù)據(jù)流動(dòng)必須經(jīng)過塊浮點(diǎn)單元。塊浮點(diǎn)單元由溢出檢測(cè)單元status_judge(有限狀態(tài)機(jī) 、指數(shù)累加器accumulator 和數(shù)據(jù)選
26、擇器mux 組成,結(jié)構(gòu)如圖4.5所示,其中L 表示數(shù)據(jù)位長,即在本系統(tǒng)中L=16,L+1:0表示數(shù)據(jù)位寬為L+2位。 圖4.5 塊浮點(diǎn)單元結(jié)構(gòu)圖參加蝶形運(yùn)算的4路18 bits 數(shù)據(jù)從雙口RAM 中讀出后,送入數(shù)據(jù)選擇器,由數(shù)據(jù)選擇器選擇其中的16bits 送入蝶形運(yùn)算單元; 經(jīng)過蝶形運(yùn)算后,將4路18bits 的輸出數(shù)據(jù)送入溢出檢測(cè)單元,首先檢測(cè)出絕對(duì)值最大的那個(gè)數(shù)據(jù)的高三位值,然后判斷出本次蝶形運(yùn)算的狀態(tài)機(jī),并將其寄存; 這樣依次進(jìn)行處理一級(jí)中每個(gè)蝶形運(yùn)算的結(jié)果,直至本級(jí)蝶形運(yùn)算結(jié)束,此時(shí)溢出檢測(cè)單元產(chǎn)生下一級(jí)的溢出控制,由此決定數(shù)據(jù)選擇器在下一級(jí)運(yùn)算中該如何進(jìn)行工作,并將溢出結(jié)果送入指數(shù)
27、累加器,累加溢出位數(shù)。這樣循環(huán)進(jìn)行,直至FFT 運(yùn)算結(jié)束。 4.4 誤差分析根據(jù)本設(shè)計(jì)所采用的FFT 算法以及蝶形運(yùn)算單元的實(shí)現(xiàn)結(jié)構(gòu),其最化誤差分析模型如圖4.6所示,其中,Q 表示量化,>>表示移位。 X m (p m+1(p X m (q N m+1(q 圖4.6 DIT基-2蝶形運(yùn)算誤差分析模型現(xiàn)假設(shè)每級(jí)FFT 蝶形運(yùn)算發(fā)生一次溢出,且溢出由復(fù)加運(yùn)算引入,數(shù)據(jù)格式為(b+1bits的二進(jìn)制補(bǔ)碼,量化方法中引入的誤差為舍入誤差。對(duì)于舍入量化,當(dāng)舍棄位數(shù)等于1bits 時(shí),其均值為Q/4,方差為Q 2/16;當(dāng)舍棄位數(shù)大于1bits 時(shí),其均值為Q ,方差為Q 2/12,Q=2-
28、b 為量化步長。根據(jù)圖4.6所示的誤差分析模型,可得出誤差上限時(shí)最后一級(jí)輸出中平均每個(gè)輸出點(diǎn)的均方誤差MSE 。對(duì)于塊浮點(diǎn)法有:M SE (k =Q26(N -2N log 2N +2Q22(N -N 2k =0,1,., N -1 (4.2)對(duì)于定點(diǎn)算法:M SE (k =Q218(N -6+8N+Q24(N -1k =0,1,., N -1 (4.3)假設(shè)FFT 輸入數(shù)據(jù)x (n 為白色隨機(jī)序列,x (n 對(duì)不同的n 值無關(guān),x (n 的實(shí)部、虛部均勻分布在-1,1上且無關(guān)。根據(jù)式(4.2和(4.3可以得到平均每個(gè)FFT 輸出頻點(diǎn)的噪信比NSR 。對(duì)于塊浮點(diǎn)算法有:N S R (k =Q
29、(N -212log 2N -34k =0,1,., N -1 (4.4)對(duì)于定點(diǎn)算法:N SR (k =1124Q (N -222111N +16 11k =0,1,., N -1 (4.5)(a N =512,NSR 隨數(shù)據(jù)位寬b 的變化曲線 (b b=16,NSR 隨FFT 點(diǎn)數(shù)N 的變化曲線圖4.7 平均每個(gè)FFT 輸出頻點(diǎn)的NSR根據(jù)式(4.4和(4.5可以畫出誤差上限時(shí),每個(gè)FFT 輸出頻點(diǎn)的信噪比NSR 隨數(shù)據(jù)位寬b 的變化曲線,如圖4.7所示。其中,圖(a為N =512,NSR 隨數(shù)據(jù)位寬b 的變化曲線,圖(b為b =16,NSR 隨FFT 點(diǎn)數(shù)N 的變化曲線,其中,“-o-”
30、表示塊浮點(diǎn)的變化曲線,“-+-”表示定點(diǎn)的變化曲線。 4.5 其它單元模塊的設(shè)計(jì)包括地址產(chǎn)生單元,倒序輸出地址單元設(shè)計(jì),ROM 設(shè)計(jì),RAM 設(shè)計(jì),數(shù)據(jù)切換模塊,時(shí)序控制單元模塊,DCM 模塊等。在此不再一一贅述。5 FFT 系統(tǒng)仿真與測(cè)試為了證明系統(tǒng)設(shè)計(jì)的正確性,需要對(duì)系統(tǒng)進(jìn)行測(cè)試試驗(yàn)。將系統(tǒng)仿真結(jié)果在Modelsim 中以數(shù)字和模擬形式顯示,再把經(jīng)過導(dǎo)出的數(shù)據(jù)與MA TLAB 中的價(jià)函數(shù)計(jì)算的理論值進(jìn)行比較,完成對(duì)系統(tǒng)的測(cè)試工作。 5.1 FPGA 的仿真驗(yàn)證從硬件設(shè)計(jì)到芯片流片,整個(gè)過程都離不開仿真驗(yàn)證。仿真驗(yàn)證與設(shè)計(jì)流程相關(guān),一般是通過仿真、時(shí)序分析、下載調(diào)試等來檢驗(yàn)設(shè)計(jì)的正確性。在F
31、PGA 開發(fā)流程中,仿真驗(yàn)證主要包括功能仿真和時(shí)序仿真兩個(gè)部分。功能仿真是為了檢驗(yàn)設(shè)計(jì)功能是否正確。通過功能仿真,及時(shí)發(fā)現(xiàn)設(shè)計(jì)中的錯(cuò)誤,加快設(shè)計(jì)的進(jìn)度,提高設(shè)計(jì)的可靠性。時(shí)序仿真是為了保證設(shè)計(jì)滿足時(shí)序要求,使數(shù)據(jù)能被正確地采樣。準(zhǔn)確高效的仿真驗(yàn)證可以最大限度地避免設(shè)計(jì)失誤所造成的風(fēng)險(xiǎn)。為提高數(shù)字電路設(shè)計(jì)的仿真驗(yàn)證效率,可采取的主要措施一是提高仿真驗(yàn)證工具 的速度和精度,二是改進(jìn)仿真驗(yàn)證的設(shè)計(jì)方法。Modelsim 是業(yè)界公認(rèn)的專用EDA 仿真工具,它可以對(duì)XLINIX 公司的全部FPGA/CPLD產(chǎn)品進(jìn)行高精度的仿真驗(yàn)證。Testbench 是最基本的仿真驗(yàn)證手段,其主要作用是:例化待測(cè)試的設(shè)
32、計(jì);通過測(cè)試向量進(jìn)行仿真;輸出仿真結(jié)果。Testbench 是一個(gè)具有獨(dú)立結(jié)構(gòu)的V erilog 模塊,其結(jié)構(gòu)如圖5.1所示,它包括激勵(lì)生成和監(jiān)視、待測(cè)系統(tǒng)和響應(yīng)顯示器三個(gè)部分。 圖5.1 Testbench 結(jié)構(gòu)ISE 軟件具有輔助設(shè)計(jì)測(cè)試激勵(lì)的功能。根據(jù)設(shè)計(jì)源文件的模塊名稱與輸入輸出端口生成測(cè)試激勵(lì)文件模板,使用板寫測(cè)試激勵(lì),省去了許多格式化部分,如文件頭、測(cè)試激勵(lì)模塊名、測(cè)試激勵(lì)端口信號(hào)、待測(cè)模塊的調(diào)用和部分信號(hào)的初始化等部分。在本文所設(shè)計(jì)的FFT 系統(tǒng)的功能驗(yàn)證中,F(xiàn)FT 處理器的輸入端口高達(dá)34個(gè),且測(cè)試激勵(lì)多次變化,同時(shí)還需要提供時(shí)鐘信號(hào)。在這種情況下,考慮首先在測(cè)試代碼中申明一個(gè)
33、ROM ,將所有測(cè)試激勵(lì)作為一個(gè)二進(jìn)制文件單獨(dú)保存,在功能驗(yàn)證運(yùn)行時(shí),將此文件讀入到此ROM 中,然后由測(cè)試模塊提供正確的時(shí)序信息,將此ROM 的內(nèi)容提供給待測(cè)模塊的接口。這樣將測(cè)試激勵(lì)與時(shí)序明顯分開,便于編寫,也便于修改。 5.2 正弦信號(hào)的仿真測(cè)試系統(tǒng)的輸入函數(shù)為x (t =20000sin(20t ,點(diǎn)數(shù)N =512,采樣頻率為500Hz ,即采樣間隔為0.0025,采樣的時(shí)間長度為0.002×512s 。在MA TLAB 中實(shí)現(xiàn)FFT 處理的程序描述如下:N=512; n=0:511; t=0.002*n; p=n*500/N;x=20000*sin(2*pi*10*t; y
34、=fft(x,N; r=real(y; i=imag(y; subplot(3,1,1;plot(t,x;title('orignal signal' subplot(3,1,2; plot(p,r;title('real' ; subPlot(3,1,3; plot(p,i;title('imag' ; 圖5.2 正弦信號(hào)512點(diǎn)F 盯在MATLAB 中實(shí)部與虛部結(jié)果在ISE 平臺(tái)下編寫Testbench 波形測(cè)試文件,先將輸入的原始數(shù)據(jù)存儲(chǔ)在.bin 文件(數(shù)據(jù)以補(bǔ)碼二進(jìn)制形式存儲(chǔ) 中,作為測(cè)試激勵(lì)文件,在波形仿真時(shí)調(diào)用該文件可完成輸入。512點(diǎn)FFT 的計(jì)算結(jié)果分別以文本文件和模擬波形文件形式輸出。Testbench 部分V erilogHDL 描述如下:reg31:0rom255:0;initial $readmemb("test.bin",rom; initial fida=$fopen("do
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)保公司解除租賃協(xié)議
- 污水處理招投標(biāo)委托書范例
- 農(nóng)業(yè)物流服務(wù)合同管理指南
- 文化產(chǎn)業(yè)嚴(yán)禁參與盜版侵權(quán)承諾書
- 公共廣場(chǎng)地磚鋪設(shè)合同
- 建筑加固改造升級(jí)勞務(wù)協(xié)議
- 上海市工業(yè)園區(qū)基礎(chǔ)設(shè)施施工合同
- 醫(yī)療機(jī)構(gòu)用工規(guī)范承諾書
- 石油開采設(shè)備日常養(yǎng)護(hù)管理辦法
- 漁業(yè)捕撈與加工合同
- 《農(nóng)村勞動(dòng)人員就業(yè)問題分析【論文】》
- 中職《形體與化妝技巧》課程標(biāo)準(zhǔn)
- DB11-T 1832.15-2022建筑工程施工工藝規(guī)程 第15部分:通風(fēng)與空調(diào)安裝工程
- 醫(yī)學(xué)英語教程(4)課件
- 網(wǎng)絡(luò)傳播法導(dǎo)論-第五章課件
- 月報(bào) 施工單位完成工程量統(tǒng)計(jì)表
- 情緒智力量表EIS
- 《 民航服務(wù)心理學(xué)》考試題及參考答案
- 《短歌行》理解性默寫
- 部編版正視發(fā)展挑戰(zhàn)優(yōu)秀公開課課件
- 50篇美文背3500單詞英譯英(全)
評(píng)論
0/150
提交評(píng)論