畢業(yè)設(shè)計報告基于FPGA的FFT設(shè)計與實現(xiàn)_第1頁
畢業(yè)設(shè)計報告基于FPGA的FFT設(shè)計與實現(xiàn)_第2頁
畢業(yè)設(shè)計報告基于FPGA的FFT設(shè)計與實現(xiàn)_第3頁
畢業(yè)設(shè)計報告基于FPGA的FFT設(shè)計與實現(xiàn)_第4頁
畢業(yè)設(shè)計報告基于FPGA的FFT設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、信息與通信工程學(xué)院綜合實驗(1)設(shè)計報告基于fpga的fft設(shè)計與實現(xiàn)學(xué) 號:s309080034專 業(yè): 光學(xué)工程學(xué)生姓名:彭歡任課教師:鐘志 副教授 2010年7月基于fpga的fft的設(shè)計與實現(xiàn)彭歡信息與通信工程學(xué)院摘 要:本文主要研究如何利用fpga實現(xiàn)fft處理器,包括算法選取、算法驗證、系統(tǒng)結(jié)構(gòu)設(shè)計、各個模塊設(shè)計、fpga實現(xiàn)和測試整個流程。設(shè)計采用基-2按時間抽取算法,以xilinx公司提供的ise6.1為軟件平臺,利用verilog hdl描述的方式實現(xiàn)了512點16bist復(fù)數(shù)塊浮點結(jié)構(gòu)的fft系統(tǒng),并以fpga芯片場virtex ii xc2v1000為硬件平臺,進(jìn)行了仿真

2、、綜合等工作。仿真結(jié)果表明其計算結(jié)果達(dá)到了一定的精度,運算速度可以滿足一般實時信號處理的要求。關(guān)鍵詞:快速傅立葉變換,現(xiàn)場可編程門陣列,塊浮點,verilog hdl1 引言目前,fft己廣泛應(yīng)用在頻譜分析、匹配濾波、數(shù)字通信、圖像處理、語音識別、雷達(dá)處理、遙感遙測、地質(zhì)勘探和無線保密通訊等眾多領(lǐng)域。在不同應(yīng)用場合,需要不同性能要求的fft處理器。在很多應(yīng)用領(lǐng)域都要求fft處理器具有高速度、高精度、大容量和實時處理的性能。因此,如何更快速、更靈活地實現(xiàn)fft變得越來越重要。在過去很長一段時間,dsp處理器是dsp應(yīng)用系統(tǒng)核心器件的唯一選擇。盡管dsp處理器具有通過軟件設(shè)計能適用于實現(xiàn)不同功能的

3、靈活性,但面對當(dāng)今速度變化的dsp應(yīng)用市場,特別是面對現(xiàn)代通信技術(shù)的發(fā)展,dsp處理器在處理速度上早已力不從心。與dsp相比,fpga實現(xiàn)fft的主要優(yōu)越性有:(1)、fpga實現(xiàn)數(shù)字信號處理最顯著的特點就是高速性能好。fpga有內(nèi)置的高速乘法器和加法器,尤其適合于乘法和累加等重復(fù)性的dsp任務(wù)。(2)、fpga的存儲量大。dsp內(nèi)部一般沒有大容量的存儲器,但是ftf實時處理運算需要存儲大量的數(shù)據(jù),只能外接存儲器,這樣往往會使運算速度下降,同時電路也會更復(fù)雜和不穩(wěn)定。目前,高檔的fpga中有巨量的高速存儲器,不用外接存儲器便可實現(xiàn)fft實時處理運算,其速度更快,電路更簡單,集成度和可靠性也大幅

4、度提高。(3)、fpga是硬件可編程的,比dsp更加靈活。dsp往往需要外部的接口和控制芯片配合工作,fpga則不需要,這樣使得硬件更簡單和小型化。(4)、在比較fpga和dsp時,一個極為重要的系統(tǒng)參數(shù)是輸入/輸出(1/0)帶寬。除了一些專用引腳外,fpga上幾乎所有的引腳均可供用戶使用,這使得fpga信號處理方案具有非常高性能的fo帶寬。大量的fo引腳和多塊存儲器可讓系統(tǒng)在設(shè)計中獲得優(yōu)越的并行處理性能。2 現(xiàn)場可編程門陣列(fpga)技術(shù)2.1 fpga器件簡介fpga即現(xiàn)場可編程門陣列,它是作為asic領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)

5、有限的缺點。fpga結(jié)合了微電子技術(shù)、電路技術(shù)、eda技術(shù),使設(shè)計者可以集中精力進(jìn)行所需邏輯功能的設(shè)計,縮短設(shè)計周期,提高設(shè)計質(zhì)量。fpga己經(jīng)在計算機(jī)硬件、工業(yè)控制、遙感遙測、雷達(dá)聲納、數(shù)據(jù)處理、智能儀器儀表、廣播電視、醫(yī)療電子和現(xiàn)代通信等多種領(lǐng)域中得到廣泛應(yīng)用,fpag開發(fā)技術(shù),己經(jīng)成為數(shù)字系統(tǒng)的教學(xué)實踐、科研試驗、樣機(jī)調(diào)試和中小批量生產(chǎn)的首選方案。2.1.1 fpga的基本結(jié)構(gòu)fpga采用了邏輯單元陣列l(wèi)ca這樣一個新概念,內(nèi)部一般是由可配置邏輯模clb、可編程輸入/輸出模塊iob和互連資源icr及一個用于存放編程數(shù)據(jù)的靜態(tài)存儲器sram組成,以xilnix公司的xc4000,基本結(jié)構(gòu)如

6、圖2.1所示。圖2.1 xc4000系列fpga基本結(jié)構(gòu)2.1.2 fpga器件的性能特點fpga器件的性能特點主要有:(1)、采用fpga設(shè)計asic電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。(2)、fpga提供豐富的i/o引腳和觸發(fā)器,集成度遠(yuǎn)遠(yuǎn)高于可編程陣列邏輯(pal)器件。(3)、fpga器件結(jié)構(gòu)靈活,內(nèi)部的clb、iob和icr均可以編程,可以實現(xiàn)多個變量的任意邏輯。(4)、某些器件提供片內(nèi)高速ram,可用于fifo等設(shè)計。(5)、基于sram編程技術(shù),具有高密度、高速度、高可靠性和低功耗的特性。(6)、fpga是asic電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。2

7、.2 基于fpga的系統(tǒng)開發(fā)以xilnix為例,fpga設(shè)計的一般流程包括設(shè)計輸入、功能仿真、設(shè)計實現(xiàn)、時序仿真、器件編程與測試幾個步驟。設(shè)計流程圖如圖2.2所示。圖2.2 fpga設(shè)計流程(l)、設(shè)計輸入:主要輸入方法有硬件描述語言和原理圖,結(jié)構(gòu)向?qū)?architrcture wizard)和核生成器(core geneartor)可以輔助設(shè)計輸入。(2)、功能仿真:功能仿真沒有器件內(nèi)部邏輯單元和連線的實際延時信息,只是初步驗證系統(tǒng)的邏輯功能。(3)、設(shè)計實現(xiàn):實現(xiàn)包括轉(zhuǎn)換、映射、布局布線、時間參數(shù)提取,同時產(chǎn)生各種報告和文件。(4)、時序仿真:時序仿真中使用了電路延時的最壞情況,分析時序關(guān)

8、系,檢查和消除競爭冒險、并對器件的實際工作性能進(jìn)行估計。(5)、器件編程與測試:設(shè)計實現(xiàn)以后,建立fpga可識別文件,將編程數(shù)據(jù)下載到相應(yīng)的fpga器件中去。在fpga設(shè)計的各個環(huán)節(jié)都有不同公司提供的不同的eda工具。一般由fpga廠商提供集成開發(fā)環(huán)境,如altera公司的quartus ii和xilinx公司的ise。為提高設(shè)計效率,優(yōu)化設(shè)計結(jié)果,很多廠家提供了各種專業(yè)軟件,用以配合fpga/cpld芯片廠家提供的工具進(jìn)行更高效的設(shè)計。比較常見的使用方式是:集成開發(fā)環(huán)境,專業(yè)邏輯仿真軟件和專業(yè)邏輯綜合軟件一起使用,進(jìn)行多種eda工具的協(xié)同設(shè)計。本設(shè)計采用ise6.1+modelsim5.7g

9、+synpliyfpor。2.3 硬件描述語言verilog hdlhdl是硬件描述語言(hardware description language)的縮寫,是一種用形式方法來描述數(shù)字電路和系統(tǒng)的語言。利用這種語言,數(shù)字電路系統(tǒng)的設(shè)計可以從抽到具體逐層描述自己的設(shè)計思想,用一系列分層次的模塊來表示極其復(fù)雜的數(shù)字統(tǒng)。隨著eda技術(shù)的發(fā)展,使用hdl設(shè)計fpga已成為一種趨勢。目前最主要hdl是vhdl和verilog hdl,本設(shè)計采用verilog hdl。作為硬件描述語言,verilog hdl具有如下特點:(1)、能夠在不同的抽象層次上,如系統(tǒng)級、行為級、寄存器傳輸級rtl、門級和開關(guān)級,

10、對設(shè)計系統(tǒng)進(jìn)行精確而簡練的描述;(2)、能夠在每個抽象層次的描述上對設(shè)計進(jìn)行仿真驗證,及時發(fā)現(xiàn)可能存在的設(shè)計錯誤,縮短設(shè)計周期,并保證整個設(shè)計過程的正確性;(3)、由于代碼描述與具體工藝實現(xiàn)無關(guān),因此易于設(shè)計標(biāo)準(zhǔn)化,提高了設(shè)計的重用性。如果有c語言的編程經(jīng)驗,只需很短的時間就能掌握verilog hdl。使用hdl進(jìn)行設(shè)計時,需要設(shè)計者完成的任務(wù)有編寫電路描述和編寫包含激勵波形描述的測試平臺文件,其激勵用于進(jìn)行電路功能測試,代測電路的行為特性由仿真器顯示波形。3 fft算法原理及其硬件結(jié)構(gòu)設(shè)計3.1 fft算法基本原理有限長序列及其頻域表示可由以下離散傅立葉變換得出: (3.1) (3.2)其

11、中,。式(3.1)稱為離散傅立葉(正)變換,式(3.2)稱為離散傅立葉反變換,x(n)與x(k)構(gòu)成了離散傅立葉變換對。根據(jù)上述公式,計算一個x(k),需要n次復(fù)數(shù)乘法和n-1次復(fù)數(shù)加法,而計算全部x(k) (0kn-1),共需要n2次復(fù)數(shù)乘法和n(n-1)次復(fù)數(shù)加法。實現(xiàn)一次復(fù)數(shù)乘法需要四次實數(shù)乘法和兩次實數(shù)加法,一次復(fù)數(shù)加法需要兩次實數(shù)加法,因此直接計算全部x(k)共需要4n2次實數(shù)乘法和2n(2n-1)次實數(shù)加法。當(dāng)n較大時,對實時信號處理來說,對處理器計算速度有十分苛刻的要求,于是如何減少計算離散傅里葉變換運算量的問題變得至關(guān)重要。為減少運算量,提高運算速度,就必須改進(jìn)算法。計算dft

12、過程中需要完成的運算的系數(shù)里,存在相當(dāng)多的對稱性。通過研究這種對稱性,可以簡化計算過程中的運算,從而減少計算dft所需的時間。具有周期性、對稱性和可約性。利用其特性,將x(n)或x(k)序列按一定規(guī)律分解成短序列進(jìn)行運算,這樣可以避免大量的重復(fù)運算,提高計算dft的運算速度。算法形式有很多種,但基本上可以分為兩大類,即按時間抽取fft算法和按頻率抽取fft算法。3.1.1 基-2時間抽取fft算法如果序列x(n)的長度n=2m,其中m是整數(shù)(如果不滿足此條件,可以人為地增補(bǔ)零值點來達(dá)到),在時域上按奇偶抽取分解成短序列的dft,使最小dft運算單元為2點。通常將fft運算中最小dft運算單元稱

13、為基(radix),因而把這種算法稱為基-2時間抽取fft(dit-fft)算法。若xm(p)和xm(q)為輸入數(shù)據(jù),xm+1(p)和xm+1(q)為輸出數(shù)據(jù),為旋轉(zhuǎn)因子,則對于基-2dif-fft算法,蝶形運算的基本公式為: (3.3)其圖形表示如圖3.1所示,稱xm(p)為上結(jié)點,xm(q)為下結(jié)點。圖3.1 時間抽取蝶形運算單元3.1.2 基-2頻率抽取fft算法上述的基-2dit-fft算法是按奇偶原則對輸入序列x(n)進(jìn)行抽取分解,結(jié)果在頻域使x(k)前后分組。如果在時域把x(n)分解成前后兩組,那么在頻域就會使x(k)形成奇偶抽取分組,稱為頻率抽取fft(dif-fft)算法。若x

14、m(p)和xm(q)為輸入數(shù)據(jù),xm+1(p)和xm+1(q)為輸出數(shù)據(jù),為旋轉(zhuǎn)因子,則對于基-2dif-fft算法,蝶形運算的基本公式為: (3.4)其圖形表示如圖3.2所示,稱xm(p)為上結(jié)點,xm(q)為下結(jié)點。圖3.2 頻率抽取蝶形運算單元dit-fft算法與dif-fft算法均為原位運算,而且運算量相同,不同之處在于:數(shù)據(jù)存放的方式不同,dit為倒序輸入、正序輸出,而dif為正序輸入、倒序輸出,運算完畢需進(jìn)行整序操作;蝶形運算不同,dit的復(fù)數(shù)乘法出現(xiàn)在(加)減法之前,而dif的復(fù)數(shù)乘法出現(xiàn)在(加)減法之后。所以dit-fft算法和dif-fft算法是兩種等價的fft運算。參照di

15、t-fft的數(shù)據(jù)地址產(chǎn)生規(guī)律,可總結(jié)出dif-fft的數(shù)據(jù)地址產(chǎn)生規(guī)律。3.2 fft的硬件實現(xiàn)結(jié)構(gòu)選擇合適的系統(tǒng)結(jié)構(gòu),是提高fft處理器性能的關(guān)鍵。以基-2dit-fft算法為例,本章將首先討論幾種常用fft處理器的實現(xiàn)形式。(1)順序處理順序處理是fft專用處理器的基本形式,蝶形運算單元在控制器的控制下,根據(jù)標(biāo)準(zhǔn)的fft信號流圖,按時間順序依次進(jìn)行運算。即從第1級開始,從上至下依次進(jìn)行,第1級算完后,然后進(jìn)行第2級,第3級,直至算完為止。順序處理具有以下特點:只用一個蝶形運算單元;輸入數(shù)據(jù)、中間數(shù)據(jù)和輸出結(jié)果均使用同一組存儲器;順序執(zhí)行次蝶形運算;如果一次蝶形運算時間為t,則總的運算時間為

16、(2)流水線處理流水線處理是把一個重復(fù)的過程分解為若干個子過程,每個子過程可以與其他子過程并行進(jìn)行。對一個n點的fft變換,每一級的n/2次蝶形運算安排一個獨立的蝶形處理器按順序完成,總共采用個蝶形運算單元同時進(jìn)行工作,這種形式稱為流水線處理或者級聯(lián)處理。流水線處理具有以下特點:使用個蝶形運算單元;m個蝶形運算單元在各級間并行運算,即級與級之間是并行工作的;每個蝶形運算單元在每一級中順序執(zhí)行n/2個蝶形運算,即每一級運算的內(nèi)部是串行工作的;如果一次蝶形運算時間為t,則理論上總的運算時間和每一級數(shù)據(jù)運算時間一樣(沒考慮級與級之間的數(shù)據(jù)緩沖),為。(3)并行迭代處理對于每一級中的n/2個蝶形運算,

17、采用n/2個蝶形運算單元并行工作,級與級之間順序進(jìn)行計算,這種實現(xiàn)形式稱為并行迭代處理。并行迭代處理具有以下特點:使用n/2個蝶形運算單元,在每一級中并行工作;各級間順序處理工作;如果一次蝶形運算時間為t,則總的運算時間為。(4)陣列處理把流水線處理和并行迭代處理結(jié)合起來,采用個蝶形運算單元實現(xiàn)全并行工作,稱為陣列處理。陣列處理具有以下特點:使用個蝶形運算單元并行完成全部蝶形運算;由于采用流水線工作方式,使單位時間內(nèi)處理的數(shù)據(jù)增大了倍,也就是說數(shù)據(jù)的吞吐量增大了倍;總的運算時間理論上等于一次蝶形運算時間t。從空間復(fù)雜度和設(shè)備使用量上看,順序處理最小,流水線處理次之,并行迭代和陣列處理則設(shè)備量最

18、大,成本最昂貴。從處理速度上看,順序處理最慢,流水線次之,并行迭代和陣列處理速度最快,可應(yīng)用于實時性要求很高的場合(如雷達(dá)信號處理系統(tǒng))。綜上所述,處理速度的提高是以設(shè)備量和成本的增加為代價的。因此,在具體設(shè)計中,必須綜合考慮和適當(dāng)采用上述的各種形式的處理器,根據(jù)實際需求確定具體的實現(xiàn)方案,以取得“速度/成本”的最佳值。本設(shè)計采用最基本的順序處理方案來實現(xiàn)512點16位復(fù)數(shù)的fft運算系統(tǒng)。4 fft處理器的fpga的設(shè)計及實現(xiàn)4.1 fft處理器總體設(shè)計基-2fft模塊設(shè)計主要由6部分組成:蝶形運算單元,存儲單元,地址產(chǎn)生單元,功能切換單元,浮點單元和時序控制元,如圖4.1所示。圖4.1 f

19、ft處理器結(jié)構(gòu)框圖各模塊的功能概述如下:(l)、蝶形運算單元:采用dit方式完成基-2蝶形運算,若數(shù)據(jù)從雙口ram1中讀出,則計算結(jié)果存入雙口ramz中,反之亦然;(2)、存儲單元:主要用來存儲輸入數(shù)據(jù)、中間結(jié)果(ram),預(yù)置旋轉(zhuǎn)因子(rom),以及最后的計算結(jié)果(ram);(3)、地址產(chǎn)生單元:產(chǎn)生ram的讀、寫地址和rom的讀地址;(4)、功能切換單元:完成rami與ramz間數(shù)據(jù)讀寫功能的切換;(5)、塊浮點單元:記錄蝶算單元輸出數(shù)據(jù)的位信息,并完成蝶算單元輸入數(shù)據(jù)的截位;(6)、時序控制單元:產(chǎn)生各模塊的使能、控制信號,使整個流程正常工作。4.2 蝶形運算單元的設(shè)計fft的核心操作是

20、蝶形運算,蝶形運算直接影響著fft處理器的速度,所以如何加快蝶形運算的處理速度是提高fft處理器速度的關(guān)鍵問題。基-2時間抽取fft運算可分解成: (4.1)其中p,q表示序列下標(biāo),r,i表示實部和虛部。并行結(jié)構(gòu)如圖4.2所示蝶形運算分3個階段實現(xiàn)。4.2 蝶形運算并行結(jié)構(gòu)在蝶形單元設(shè)計中,考慮到virtex系列fpga豐富的乘法器資源,采用了四個乘法器并行運算,使乘法運算在一個時鐘周期內(nèi)完成,提高了運算速度。在設(shè)計中為增大數(shù)據(jù)的動態(tài)范圍,采用塊浮點結(jié)構(gòu),蝶形運算單元輸入數(shù)據(jù)為16位,輸出數(shù)據(jù)為18位。同時,6次加(減)法運算分別用6個加(減)法器來實現(xiàn)。根據(jù)上述的設(shè)計原理對蝶形運算單元進(jìn)行硬

21、件實現(xiàn)。蝶形運算模塊示意圖如圖4.3所示,其中,xl,y1,x2,y2分別表示上、下結(jié)點數(shù)據(jù)的實部和虛部輸入,其位寬為16bist;wx,wy分別表示旋轉(zhuǎn)因子的實部和虛部,其位寬為16bits;mx1,myl,mx2,my2分別表示蝶形運算上、下結(jié)點實部和虛部輸出,其位寬為18bits;clk是時鐘信號reset是復(fù)位信號。為了保證數(shù)據(jù)的同步性,在蝶形運算單元加入了使能信號start,使下結(jié)點數(shù)據(jù)和旋轉(zhuǎn)因子同步進(jìn)入乘法器。同時,上結(jié)點數(shù)據(jù)延遲2個時鐘周期后與復(fù)乘結(jié)果進(jìn)行加減運算。圖4.3 蝶形運算模塊示意圖圖4.4為該蝶形運算單元在modelsim中的仿真波形圖。圖4.4 蝶形運算單元的mod

22、elsim功能仿真波形圖由圖4.4所示仿真波形圖可以看出,蝶形運算單元在使能信號start=1后的3個時鐘周期內(nèi)完成一次蝶形運算,且如果每個時鐘來臨輸入新的操作數(shù)據(jù),結(jié)果則連續(xù)輸出,與理論值比較,計算結(jié)果正確。4.3 塊浮點單元設(shè)計在fft處理器設(shè)計中,若采用定點運算,插入定衰減系數(shù)的方法防止溢出,結(jié)構(gòu)簡單,但運算精度不高;若采用浮點運算,精度高,但運算復(fù)雜度增加,且速度降低。因此本設(shè)計采用介于定點和浮點之間的塊浮點算法。這種算法相比定點運算,提高了精度,相比浮點運算,提高了速度,保證了fft處理器處理器具有高精度、高速度的特點。蝶形運算單元和存儲器ram兩者之間的數(shù)據(jù)流動必須經(jīng)過塊浮點單元。

23、塊浮點單元由溢出檢測單元status_judge(有限狀態(tài)機(jī))、指數(shù)累加器accumulator和數(shù)據(jù)選擇器mux組成,結(jié)構(gòu)如圖4.5所示,其中l(wèi)表示數(shù)據(jù)位長,即在本系統(tǒng)中l(wèi)=16,l+1:0表示數(shù)據(jù)位寬為l+2位。圖4.5 塊浮點單元結(jié)構(gòu)圖參加蝶形運算的4路18 bits數(shù)據(jù)從雙口ram中讀出后,送入數(shù)據(jù)選擇器,由數(shù)據(jù)選擇器選擇其中的16bits送入蝶形運算單元;經(jīng)過蝶形運算后,將4路18bits的輸出數(shù)據(jù)送入溢出檢測單元,首先檢測出絕對值最大的那個數(shù)據(jù)的高三位值,然后判斷出本次蝶形運算的狀態(tài)機(jī),并將其寄存;這樣依次進(jìn)行處理一級中每個蝶形運算的結(jié)果,直至本級蝶形運算結(jié)束,此時溢出檢測單元產(chǎn)生

24、下一級的溢出控制,由此決定數(shù)據(jù)選擇器在下一級運算中該如何進(jìn)行工作,并將溢出結(jié)果送入指數(shù)累加器,累加溢出位數(shù)。這樣循環(huán)進(jìn)行,直至fft運算結(jié)束。4.4 誤差分析根據(jù)本設(shè)計所采用的fft算法以及蝶形運算單元的實現(xiàn)結(jié)構(gòu),其最化誤差分析模型如圖4.6所示,其中,q表示量化,表示移位。圖4.6 dit基-2蝶形運算誤差分析模型現(xiàn)假設(shè)每級fft蝶形運算發(fā)生一次溢出,且溢出由復(fù)加運算引入,數(shù)據(jù)格式為(b+1)bits的二進(jìn)制補(bǔ)碼,量化方法中引入的誤差為舍入誤差。對于舍入量化,當(dāng)舍棄位數(shù)等于1bits時,其均值為q/4,方差為q2/16;當(dāng)舍棄位數(shù)大于1bits時,其均值為q,方差為q2/12,q=2-b為量

25、化步長。根據(jù)圖4.6所示的誤差分析模型,可得出誤差上限時最后一級輸出中平均每個輸出點的均方誤差mse。對于塊浮點法有: (4.2)對于定點算法: (4.3)假設(shè)fft輸入數(shù)據(jù)x(n)為白色隨機(jī)序列,x(n)對不同的n值無關(guān),x(n)的實部、虛部均勻分布在-1,1)上且無關(guān)。根據(jù)式(4.2)和(4.3)可以得到平均每個fft輸出頻點的噪信比nsr。對于塊浮點算法有: (4.4)對于定點算法: (4.5)(a) n=512,nsr隨數(shù)據(jù)位寬b的變化曲線 (b) b=16,nsr隨fft點數(shù)n的變化曲線圖4.7 平均每個fft輸出頻點的nsr根據(jù)式(4.4)和(4.5)可以畫出誤差上限時,每個fft

26、輸出頻點的信噪比nsr隨數(shù)據(jù)位寬b的變化曲線,如圖4.7所示。其中,圖(a)為n=512,nsr隨數(shù)據(jù)位寬b的變化曲線,圖(b)為b=16,nsr隨fft點數(shù)n的變化曲線,其中,“-o-”表示塊浮點的變化曲線,“-+-”表示定點的變化曲線。4.5 其它單元模塊的設(shè)計包括地址產(chǎn)生單元,倒序輸出地址單元設(shè)計,rom設(shè)計,ram設(shè)計,數(shù)據(jù)切換模塊,時序控制單元模塊,dcm模塊等。在此不再一一贅述。5 fft系統(tǒng)仿真與測試為了證明系統(tǒng)設(shè)計的正確性,需要對系統(tǒng)進(jìn)行測試試驗。將系統(tǒng)仿真結(jié)果在modelsim中以數(shù)字和模擬形式顯示,再把經(jīng)過導(dǎo)出的數(shù)據(jù)與matlab中的價函數(shù)計算的理論值進(jìn)行比較,完成對系統(tǒng)的

27、測試工作。5.1 fpga的仿真驗證從硬件設(shè)計到芯片流片,整個過程都離不開仿真驗證。仿真驗證與設(shè)計流程相關(guān),一般是通過仿真、時序分析、下載調(diào)試等來檢驗設(shè)計的正確性。在fpga開發(fā)流程中,仿真驗證主要包括功能仿真和時序仿真兩個部分。功能仿真是為了檢驗設(shè)計功能是否正確。通過功能仿真,及時發(fā)現(xiàn)設(shè)計中的錯誤,加快設(shè)計的進(jìn)度,提高設(shè)計的可靠性。時序仿真是為了保證設(shè)計滿足時序要求,使數(shù)據(jù)能被正確地采樣。準(zhǔn)確高效的仿真驗證可以最大限度地避免設(shè)計失誤所造成的風(fēng)險。為提高數(shù)字電路設(shè)計的仿真驗證效率,可采取的主要措施一是提高仿真驗證工具的速度和精度,二是改進(jìn)仿真驗證的設(shè)計方法。modelsim是業(yè)界公認(rèn)的專用ed

28、a仿真工具,它可以對xlinix公司的全部fpga/cpld產(chǎn)品進(jìn)行高精度的仿真驗證。testbench是最基本的仿真驗證手段,其主要作用是:例化待測試的設(shè)計;通過測試向量進(jìn)行仿真;輸出仿真結(jié)果。testbench是一個具有獨立結(jié)構(gòu)的verilog模塊,其結(jié)構(gòu)如圖5.1所示,它包括激勵生成和監(jiān)視、待測系統(tǒng)和響應(yīng)顯示器三個部分。圖5.1 testbench 結(jié)構(gòu)ise軟件具有輔助設(shè)計測試激勵的功能。根據(jù)設(shè)計源文件的模塊名稱與輸入輸出端口生成測試激勵文件模板,使用板寫測試激勵,省去了許多格式化部分,如文件頭、測試激勵模塊名、測試激勵端口信號、待測模塊的調(diào)用和部分信號的初始化等部分。在本文所設(shè)計的f

29、ft系統(tǒng)的功能驗證中,fft處理器的輸入端口高達(dá)34個,且測試激勵多次變化,同時還需要提供時鐘信號。在這種情況下,考慮首先在測試代碼中申明一個rom,將所有測試激勵作為一個二進(jìn)制文件單獨保存,在功能驗證運行時,將此文件讀入到此rom中,然后由測試模塊提供正確的時序信息,將此rom的內(nèi)容提供給待測模塊的接口。這樣將測試激勵與時序明顯分開,便于編寫,也便于修改。5.2 正弦信號的仿真測試5.2.1 信號在matlab中的處理系統(tǒng)的輸入函數(shù)為,點數(shù)n=512,采樣頻率為500hz,即采樣間隔為0.0025,采樣的時間長度為0.002512s。在matlab中實現(xiàn)fft處理的程序描述如下:n=512;

30、n=0:511;t=0.002*n;p=n*500/n;x=20000*sin(2*pi*10*t);y=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 正弦信號512點f盯在matlab中實部與虛部結(jié)果5.2.2 信號在modelsim中的處理結(jié)果在ise平臺下編寫testbench波形測試文件,先將輸入的原始數(shù)據(jù)存儲在.bin文件(

31、數(shù)據(jù)以補(bǔ)碼二進(jìn)制形式存儲)中,作為測試激勵文件,在波形仿真時調(diào)用該文件可完成輸入。512點fft的計算結(jié)果分別以文本文件和模擬波形文件形式輸出。testbench部分veriloghdl描述如下:reg31:0rom255:0;initial $readmemb(test.bin,rom);initial fida=$fopen(dout_a,txt);initial fidba=$fopen(dout_b,txt);initial begin#1200 for(m=0;m256;m=m+1)#50 ina=romm31:16; inb=romm15:0;endalways begin#251

32、050 for(i=0;i512;i=i+l)#50 $fwrite(fida,%bn,outa); $fwrite(fida,%bn,outb);end經(jīng)過仿真運行,fft計算結(jié)果的實部和虛部分別存儲到dout_a.txt,dout_b.txt文本文件中。圖5.3所示圖為該正弦信號在modelsim中生成的實部和虛部的模擬形式仿真圖。圖5.3 正弦信號在modelsim中的實部和虛部結(jié)果圖5.4所示圖為該正弦信號輸出結(jié)果的總體仿真圖,可以看出512點fft系統(tǒng)分9級完成,在級數(shù)計數(shù)器cnt=0時,輸出使能信號rd_en=1,輸出最后結(jié)果;溢出指示count有7次為1,說明共有7次1bit溢出

33、,故指數(shù)累加器accumulator最后顯示7,輸出數(shù)據(jù)乘以128便為實際的計算結(jié)果。圖5.4 512點fft在modelsim中的仿真圖5.2.3 上述兩種結(jié)果的比較圖5.5所示圖為該正弦信號通過fft處理器處理后的結(jié)果在matlab中的仿真圖形,其中,上圖表示fft處理后的模值,中圖表示fft處理后的實部值,下圖fft處理后的虛部值。圖5.5 512點fft處理器結(jié)果在matlab中的仿真結(jié)果比較圖5.2和圖5.5的,可以看出fft處理器處理后的結(jié)果和matlab處理的結(jié)果基本一致。圖5.6為fft處理器結(jié)果和matlab理論值之間的相對誤差曲線,其中上圖表示實部誤差,下圖表示虛部誤差。圖

34、5.6 fft處理器結(jié)果和matlab理論值之間相對誤差從圖5.6可以看出,實部和虛部數(shù)據(jù)相對誤差大部分控制在0.5%左右,有幾個數(shù)據(jù)的相對誤差在1.5%左右,稍微大一些,但總體上符合精度要求。這表明采用塊浮點結(jié)構(gòu)可以達(dá)到一定的處理精度。5.3 三角信號的仿真測試5.3.1 信號在matlab中的處理利用matlab產(chǎn)生一個三角信號,將此信號擴(kuò)大100倍后輸入到fft處理器中。n=1:128;x(n)=n-1;x(n+128)=128-n;x(n+256)=n-1;x(n+384)=128-n;y=fft(x);r=real(y);i=imag(y);subplot(3,1,1);plot(x

35、);subplot(3,1,2);plot(r);subplot(3,1,3);plot(i);圖5.7 三角信號512點fft在matlab中的結(jié)果該三角信號通過512點fft的處理后結(jié)果如圖5.7所示,其中,上圖表示原信號,中圖表示序列通過fft處理后的實部值,下圖表示序列通過fft處理后的虛部值。5.3.2 信號在modelsim中處理圖5.8 三角信號512點fft在modelsim中的實部和虛部結(jié)果編寫testbench波形測試文件,將該三角信號的512點fft處理器處理結(jié)果分別以文本文件和模擬波形文件輸出,輸出結(jié)果圖如圖5.8所示。圖5.9為該三角信號輸出結(jié)果總體仿真圖,可以看出指數(shù)累加器accumulator最后顯示為7,輸出結(jié)果乘以128即為最后結(jié)果。圖5.9 三角信號512點fft在modelsim中的仿真圖5.3.3 兩種結(jié)果對比分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論