版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)士論文基于FPGA的FIR數(shù)字濾波器設(shè)計摘要隨著公元的第二十一個世紀(jì)的到來,今天我們進(jìn)入了一個科技日新月異的時代。在現(xiàn)代電子數(shù)字系統(tǒng)中,濾波器都以一個不可缺少的身份出現(xiàn)。其中,F(xiàn)IR數(shù)字濾波器又以其良好的線性特性被廣泛和有針對性的大量使用。眾所周知,靈活性和實時性是工程實踐中對數(shù)字信號處理的根本要求。在以往使用的各種濾波器技術(shù)中,不難發(fā)現(xiàn)有許許多多的問題。但是,隨著現(xiàn)代計算機(jī)技術(shù)在濾波問題上的飛躍,派生出一個全新的分支——數(shù)字濾波器。利用可編程邏輯器件和EDA技術(shù),使用FPGA來實現(xiàn)FIR濾波器,可以同時兼顧實時性和靈活性?;贔PGA的FIR數(shù)字濾波器的研究勢在必行。本論文討論基于FPGA的FIR數(shù)字濾波器設(shè)計,針對該畢業(yè)設(shè)計要做的根本工作有如下幾點:〔一〕掌握有限沖擊響應(yīng)FIR〔FiniteImpulseResponse,F(xiàn)IR〕的根本結(jié)構(gòu),研究現(xiàn)有的實現(xiàn)方法。對各種方案和步驟進(jìn)行比擬和論證分析,然后針對目前FIR數(shù)字濾波器需要的特點,速度快和硬件規(guī)模小,作為指導(dǎo)思想進(jìn)行設(shè)計計算?!捕郴谟布﨔PGA的特點,利用Matlab軟件以及窗函數(shù)法設(shè)計濾波器。對整個FPGA元件,方案采用模塊化、層次化設(shè)計思想,從而對各個局部功能進(jìn)行更為詳細(xì)的理解和分工設(shè)計。最終FIR數(shù)字濾波器的設(shè)計語言選擇VHDL硬件編程語言?!踩吃O(shè)計中的軟件仿真使用Altera公司的綜合性PLD開發(fā)軟件QuartusII,并且利用Matlab工具進(jìn)行比照仿真,在仿真的過程中,比照證明,本論文設(shè)計的濾波器的技術(shù)指標(biāo)已經(jīng)全部達(dá)標(biāo)。關(guān)鍵詞:數(shù)字濾波器Matlab可編程邏輯元件模塊化算法BasedOnFPGADesignOfFIRDigitalFiltersMajor:ElectronicAndInformationEngineeringDepartment〔InformationEngineering〕AbstractAswehaveenteredthetwentyfirstcentury,ourtechnologyischangingcontinuouslywiththetimes.Inthemodernelectronicdigitalsystems,filtersareindispensable.Amongthem,theFIRdigitalfiltersarewidelyusedwiththeexcellentlinearcharacteristic.Asiswell-knowntousall,flexibilityandreal-timequalityarethebasicrequirementsindigitalsignalprocessingofengineeringpractice.Sincewehaveusedavarietyoffiltertechnologyinthepast,itisnotdifficultforustofindmanyproblemsinit.Moreover,withthedevelopmentofmoderncomputertechnologyinfilter,anewbranch-digitalfilterhasderived.WemakeuseoftheprogrammablelogicdevicesandEDAtechnology,togetherwiththeFPGAtodesigntheFIRfilter,whichisreal-timeandflexible.Inanutshell,itisimperativetodotheresearchintheFIRdigitalfiltersbasedonthetechnologyofFPGA.
ThisthesisisfocusedonthedesignoftheFIRdigitalfiltersbasedonthetechnologyofFPGA.Severalpointsareworthmentioninghere:(1)TounderstandandmasterthebasicstructureofthelimitedshockResponseFIR(FiniteImpulseResponse,F(xiàn)IR),researchexistingrealizationmethod,tousevarioussolutionstocompareandanalyzethestepsanddemonstrations;then,todotheselfdesignandcorrectionconcerningthecharacteristicsofthepresentFIRdigitalfilters,thatis,fastinspeedandsmallscaleinhardware.
(2)TodesignFIRfilterbasedonthecharacteristicsofFPGAhardware.Inthedesignprocess,readytouseofMatlabsoftwareandwindowfunctionmethoddesignfilter.AsfarasthewholeFPGAcomponentsareconcerned,weplantocarryonthemodularizedandhierarchicdesign,inordertohaveamoredetailedunderstandingofthefunctionofeachpartandmakeadivisionofdesign.Eventually,F(xiàn)IRdigitalfilterswilladopttheVHDLhardwareprogramminglanguage.(3)ToadoptthecomprehensivePLDdevelopmentsoftwareQuartusIIoftheAlteracompanyinthedesignofthesoftwaresimulation.AndwewilluseoftheMatlabtoolsforthesimulation。Inthesimulationprocess,contrastourfiltertechnologyindexwhetheryouhaveallthestandards,andfilteringwhethertheresultisideal.Keywords:digitalfilter,Matlab,programmablelogicdevices,ModularAlgorithm目錄1緒論11.1本課題研究意義11.2國內(nèi)外研究現(xiàn)狀分析11.3研究思路11.4相關(guān)概念說明12FIR數(shù)字濾波器的設(shè)計方法42.1理論局部4引言42.1.2FIR數(shù)字濾波器的根底4數(shù)字濾波器的設(shè)計原理62.1.4FIR數(shù)字濾波器的理論計算方式與參數(shù)轉(zhuǎn)換思想:72.1.5Matlab直接FDAtool設(shè)計方式解析132.1.6FDAtool設(shè)計模板及設(shè)計結(jié)果圖162.2程序分析局部16FPGA可編程邏輯元件介紹162.2.2QuartusⅡ及VerilogHDL介紹18實際濾波器程序設(shè)計〔11階FIR數(shù)字濾波器〕19的實現(xiàn)203濾波器仿真濾波283.1設(shè)置混合信號283.2設(shè)置仿真參數(shù)313.3仿真總結(jié)334總結(jié)與展望334.1設(shè)計成果總結(jié)334.2設(shè)計心得33參考文獻(xiàn)35致謝361緒論1.1本課題研究意義在現(xiàn)代通信信號處理領(lǐng)域中,隨著各種精密計算和快速計算的開展對信號處理的實時性、快速性的要求越來越高。以往的模擬濾波器無法克服電壓漂移、溫度漂移和噪聲等問題,從而帶來了許多誤差和不穩(wěn)定因素。而數(shù)字濾波器具有穩(wěn)定性高、精度高、設(shè)計靈活、實現(xiàn)方便等突出優(yōu)點。FPGA元器件在高速并行處理和數(shù)據(jù)傳輸中有獨特優(yōu)勢,F(xiàn)PGA正在前端信號處理中越來越多地代替ASIC和DSP。我們需要的就是這種設(shè)計周期短,功能密度高,重組時間短的元器件。本文在FPGA元器件的根底上,實現(xiàn)現(xiàn)代FIR數(shù)字濾波器功能。并且研究多種快速的FIR數(shù)字濾波器的理論設(shè)計思想和程序設(shè)計方法。1.2國內(nèi)外研究現(xiàn)狀分析1985年XilinX公司生產(chǎn)出了第一塊FPGA元器件,由于它有著集成度高、方便易用、開發(fā)和上市周期短的絕對優(yōu)勢,使得FPGA器件在數(shù)字設(shè)計和電子生產(chǎn)中得到迅速普及和應(yīng)用,開展?jié)摿κ志薮蟆,F(xiàn)在FPGA已經(jīng)開展到可以利用硬件乘加器、片內(nèi)儲存器、邏輯單元、流水處理技術(shù)等特有的硬件結(jié)構(gòu),高速完成FFT、FIR、復(fù)數(shù)乘加、卷積、三角函數(shù)以及矩陣運算等數(shù)字信號處理。這樣可以完成信號處理的主要技術(shù),如中頻采樣、參數(shù)估計、自適應(yīng)濾波、脈沖壓縮、自適應(yīng)波束形成和旁瓣對消等。1.3研究思路通過對目前數(shù)字濾波器的幾種實現(xiàn)方法的簡單分析,本文認(rèn)為基于FPGA的數(shù)字濾波器具有許多優(yōu)點,本文考慮到信息技術(shù)的開展對于數(shù)字濾波器的要求越來越高,而目前FIR數(shù)字濾波器的性能還不完善,于是選擇了基于FPGA的數(shù)字濾波器作為主要研究內(nèi)容,通常濾波器在進(jìn)行數(shù)據(jù)處理時用到了卷積運算,在設(shè)計中的解決這些乘法運算的思路是將它們轉(zhuǎn)換成加減法,這是目前解決乘法運算的主流思想。設(shè)計初期在Matlab下對濾波器原理進(jìn)行證明包括〔零極點圖、時域和頻域分析圖等〕,分析FIR數(shù)字濾波器的多種理論設(shè)計思想和窗函數(shù)選擇方法,在設(shè)計后期對FIR數(shù)字濾波器的小數(shù)乘法問題進(jìn)行單獨論證。然后對分析出來的問題進(jìn)行論證和解決,最后在QUARTUSⅡ中進(jìn)行仿真驗證。1.4相關(guān)概念說明數(shù)字濾波器〔Digitalfilter)是由數(shù)字乘法器、加法器和延時單元組成的一種裝置。其功能是對輸入離散信號的數(shù)字代碼進(jìn)行運算處理,以到達(dá)改變信號頻譜的目的。可認(rèn)為是一個離散時間系統(tǒng)按預(yù)定的算法,將輸入離散時間信號轉(zhuǎn)換為所要求的輸出離散時間信號的特定功能裝置FIR〔FiniteImpulseResponse〕由線性系統(tǒng)理論可知,在某種適度條件下,輸入到線性系統(tǒng)的一個沖擊完全可以表征系統(tǒng)。當(dāng)我們處理有限的離散數(shù)據(jù)時,線形系統(tǒng)的響應(yīng)〔包括對沖擊的響應(yīng)〕也是有限的。假設(shè)線性系統(tǒng)僅是一個空間濾波器,那么通過簡單地觀察它對沖擊的響應(yīng),我們就可以完全確定該濾波器。通過這種方式確定的濾波器稱為有限沖擊響應(yīng)〔FIR)濾波器。圖1-1總體設(shè)計流程圖2FIR數(shù)字濾波器的設(shè)計方法2.1理論局部2.1.1引言數(shù)字濾波器的功能一般是用來變換時域或者頻域中某些要求信號的屬性,濾除信號中某一局部頻率分量。經(jīng)過數(shù)字濾波器的信號是讓其頻譜與數(shù)字濾波器的頻率響應(yīng)相乘從而得出新的結(jié)果。經(jīng)過一個線性卷積過程,從時域上輸入信號與濾波器的單位沖擊響應(yīng)作一個卷積和。下面是卷積定義式:〔1〕LTI數(shù)字濾波器在一般情況下分為有限脈沖響應(yīng)〔Finiteimpulseresponse〕和無限脈沖響應(yīng)(Infiniteimpulseresponse),F(xiàn)IR數(shù)字濾波器的設(shè)計方法和IIR濾波器的設(shè)計方法有很大的差異。因為其設(shè)計方向是選擇有限長度的h(n),使頻率響應(yīng)函數(shù)H(e)滿足指標(biāo)。數(shù)字濾波器正在用直接的電子計算機(jī)標(biāo)準(zhǔn)和算法進(jìn)行分析的方式來逐漸代替?zhèn)鹘y(tǒng)的模擬濾波器的RLC元器件和放大電路。2.1.2FIR數(shù)字濾波器的根底首先介紹FIR數(shù)字濾波器根本原理,在如下表格中對FIR和IIR數(shù)字濾波器進(jìn)行了全面的比擬:表2-1兩種濾波器特點比擬分析FIR數(shù)字濾波器IIR數(shù)字濾波器設(shè)計方法在一般的情況下,F(xiàn)IR數(shù)字濾波器沒有設(shè)計公式。它的設(shè)計需要借助計算機(jī)程序完成可以利用AF的設(shè)計成果,可簡單、有效地完成設(shè)計階數(shù)高低穩(wěn)定性在穩(wěn)定性方面〔穩(wěn)定〕,極點全部在原點存在一定的穩(wěn)定性問題,需要注意結(jié)構(gòu)非遞歸系統(tǒng)遞歸系統(tǒng)運算誤差一般情況下不存在反響,運算的誤差比擬小存在反響,由于運算中的特殊運算方法會產(chǎn)生極限環(huán)通常情況下一般數(shù)字濾波器的N階FIR數(shù)字濾波器基于輸入信號x(n)的表達(dá)式為:〔2〕這個公式給我們了一個非常明了的直接型網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)表現(xiàn)出N個乘法器,每次采樣y(n)的內(nèi)容是n次乘法和n-1次加法,然后做乘累加之和。如圖2-1所示:圖2-1FIR濾波器直接型網(wǎng)絡(luò)結(jié)構(gòu)從DSP的介紹中,第一類線性相位對h(n)的約束條件:〔3〕(4)由公式〔3〕,〔4〕我們可以推出:〔5〕移相并利用三角公式化簡得到:(6)從數(shù)字信號處理學(xué)科中知道函數(shù)關(guān)于求和區(qū)間的中心〔N-1〕/2奇對稱,于是我們要求和h(n)滿足如下條件:其中對應(yīng)的有〔7〕圖2-2線性相位FIR濾波器結(jié)構(gòu)假設(shè)h(n)呈現(xiàn)對稱特性,即此具有線性相位的濾波器是FIR數(shù)字濾波器。濾波器的根底網(wǎng)絡(luò)結(jié)構(gòu)可以相互進(jìn)行轉(zhuǎn)換。在前面本文已經(jīng)討論過,F(xiàn)PGA的實現(xiàn)中將對各種方法進(jìn)行比擬,找出最優(yōu)設(shè)計方式。從而到達(dá)減少資源占有和提高系統(tǒng)作業(yè)速度的目的,更好的表達(dá)實時性的數(shù)字濾波器優(yōu)勢。2.1.3數(shù)字濾波器的設(shè)計原理在數(shù)字信號處理技術(shù)的研究中,一般是使用的三種設(shè)計方法:窗函數(shù)法,F(xiàn)DATool直接設(shè)計法,程序編譯法。本文首先使用窗函數(shù)和Matlab軟件共同進(jìn)行設(shè)計。隨著軟件技術(shù)的不斷開展,Matlab軟件能給設(shè)計者帶來的數(shù)字信號處理工作已經(jīng)非常的完善和多樣了,設(shè)計者可以利用Matlab軟件進(jìn)行數(shù)字濾波器的設(shè)計和仿真,而且還可以用這款軟件進(jìn)行設(shè)計的優(yōu)化。數(shù)字濾波器的一般設(shè)計步驟如下:1.指標(biāo)確實定做任何工程或者設(shè)計,設(shè)計者都必須要有一個期望的指標(biāo)用來限制設(shè)計范圍。在很多的實際應(yīng)用中,設(shè)計者常常都是使用數(shù)字濾波器做選頻的工作。因此,指標(biāo)的形式一半在頻域中給出相位響應(yīng)和幅度。相位響應(yīng)的指標(biāo)形式,一半是指系統(tǒng)在通頻帶中藥有線性相位。幅度指標(biāo):絕對指標(biāo),它給出對幅度響應(yīng)函數(shù)的要求,一般用于FIR濾波器的設(shè)計。相對指標(biāo),以分貝值的形式給出具體限制。2.逼近目標(biāo)設(shè)計者做高頻的時候大概都有一個模式,就是首先得到技術(shù)指標(biāo),然后利用我們的技術(shù)和工具讓我們的產(chǎn)品去逼近這個指標(biāo)。同理我們首先建立以個目標(biāo)的數(shù)字濾波器模型。一般情況下都是采用理想的數(shù)字濾波器模型,然后去逼近我們想要的目標(biāo)數(shù)字濾波器參數(shù)。3.計算機(jī)仿真和性能優(yōu)化分析在工作中我們發(fā)現(xiàn)通過〔1〕、〔2〕之后本文會得到以差分、系統(tǒng)函數(shù)或者沖擊響應(yīng)這三種方式描述的濾波器。這個時候設(shè)計者可以利用計算進(jìn)行仿真,在系統(tǒng)中分析技術(shù)指標(biāo)和濾波結(jié)果是否是希望得到的結(jié)果。圖2-3各種理想數(shù)字濾波器的幅度頻率響應(yīng)2.1.4FIR數(shù)字濾波器的理論計算方式與參數(shù)轉(zhuǎn)換思想在理論上掌握了FIR數(shù)字濾波器的根本原理之后,本文需要對設(shè)計思想進(jìn)行一個多方位的論證和嘗試。首先設(shè)計者設(shè)計濾波器要有一個硬性的指標(biāo),這個指標(biāo)可以是直接給出最根本的數(shù)據(jù),也有多重表現(xiàn)形式。于是我例舉兩種特殊的指標(biāo)形式然后加以解決設(shè)計。然后我們分別用2種方式來設(shè)計不同指標(biāo)的濾波器。接下來我首先用程序的方式來實現(xiàn)濾波器:1.逼近法轉(zhuǎn)換與思想使用remez函數(shù)設(shè)計FIR低通濾波器設(shè)計濾波器,使逼近低通濾波特性||。||=要求通帶波紋,阻帶衰減,并用最小階數(shù)實現(xiàn)。繪出設(shè)計的FIR數(shù)字濾波幅頻特性曲線,檢驗設(shè)計指標(biāo)。這個指標(biāo)我們可以以如下計算方法來得出詳細(xì)指標(biāo):從給出的低通濾波特性||。我們可以看出設(shè)計參數(shù)f=[1/4,5/16],m=[1,0];dev的計算根據(jù)公式:Rp=-20>0于是有Rp=20,所以dev(1),dev(2)可以被表示出來。2.逼近法程序描述與思想有了這幾個參數(shù)我們現(xiàn)在就可以根據(jù)已經(jīng)設(shè)定好的格式來調(diào)用函數(shù)remezord和remez函數(shù)了,于是可得如下程序。clear;closeallfc=1/4;fs=5/16;%輸入給定指標(biāo)Rp=3;As=60;Fs=2;f=[fc,fs];m=[1,0];%計算remezord函數(shù)所需參數(shù)f,m,devdev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)];[N,fo,mo,W]=remezord(f,m,dev,F(xiàn)s);%確定remez函數(shù)所需參數(shù)hn=remez(N,fo,mo,W);%調(diào)用remez函數(shù)進(jìn)行設(shè)計hw=fft(hn,512);%求設(shè)計出的濾波器頻率特性w=[0:511]*2/512;plot(w,20*log10(abs(hw)));grid;%畫對數(shù)幅頻特性圖axis([0,max(w)/2,-90,5]);xlabel('w/pi');ylabel('Magnitude(dB)')line([0,0.4],[-3,-3]);%畫線檢驗設(shè)計結(jié)果line([1/4,1/4],[-90,5]);line([5/16,5/16],[-90,5]);程序結(jié)束。3.仿真圖像與結(jié)果用以上的程序我們可以得到在Matlab中的許多參數(shù)和圖像,從而進(jìn)一步分析我們的設(shè)計。首先引入程序輸出的幅頻特性圖:〔如圖2-4〕圖2-4在Matlab中的程序圖2-5程序輸出的幅頻特性圖2-6ImpulseResponse圖2-7MagnitudeandPhaseResponses圖2-8PhaseDelay圖2-9Pole,Zeroplot結(jié)論:從上面程序運行情況分析,觀察程序輸出的幅頻特性圖中橫線為-3dB,兩條豎線分別位于頻率π/4和5π/16。顯然,通帶指標(biāo)有富裕,零極點圖反響出大局部零極點在圓內(nèi),過渡帶寬度和阻帶最小衰減剛好滿足指標(biāo)要求。4.窗函數(shù)選擇法與規(guī)劃思想表2-2窗函數(shù)選擇指標(biāo)名稱近似過渡帶寬最小阻帶衰減精確過渡帶寬矩形4π/M21dB1.8π/M巴特利特8π/M25dB6.1π/M漢寧8π/M44dB6.2π/M哈明8π/M51dB6.6π/M布萊克曼12π/M74dB11π/M取Kaiser窗時用MATLAB中的kaiserord函數(shù)來得到長度M在設(shè)計指標(biāo)中沒有直接給出窗函數(shù)的,可以利用下面這個表格進(jìn)行篩選,具體方法如下:這個表格給出了近似過渡帶寬、精確過渡帶寬和最小阻帶衰減,我們可以根據(jù)自己濾波器的參數(shù)來選擇我們的窗函數(shù),因為選擇不同的窗函數(shù)設(shè)計出來的濾波器生成的過渡帶寬度和阻帶最小衰減是不同的。在這里我以一個例子來說明函數(shù)的選擇方式:用窗函數(shù)法設(shè)計FIR帶通濾波器。指標(biāo)如下:高端通帶截止頻率高端阻帶截止頻率低端阻帶截止頻率低端通帶截止頻率通帶最大衰減Rp=1dB阻帶最小衰減Rs=60dB在這樣一個例子中,可以看到它明確的給出了Rs=60dB來設(shè)置窗函數(shù)類型和階次。表格中給出的blackman窗其濾波器阻帶最小衰減是74dB,再利用給出的其他參數(shù)計算濾波器階數(shù)。表中顯示窗口長度M由過渡帶寬度B=0.8π-0.65π=0.15π決定,而Blackman窗設(shè)計的濾波器過渡帶寬度為12π/M,那么M=12/0.15=80。又因M=N+1,所以濾波器階數(shù)N=79。在了解了怎么選擇窗函數(shù)和計算濾波器階數(shù)之后,本論文將針對實際FIR數(shù)字濾波器進(jìn)行研究。已經(jīng)給出了設(shè)計參數(shù),下面開始利用MATLAB程序來設(shè)計這個濾波器。5.窗函數(shù)法程序描述與思想程序和對應(yīng)的解釋:%用窗函數(shù)法設(shè)計FIR帶通濾波器clear;closeall;wls=0.2*pi;wlp=0.35*pi;whp=0.65*pi;B=wlp-wls;%這里是在計算過渡帶寬N=ceil(12/0.15);%計算窗口長度wc=[wlp/pi-6/N,whp/pi+6/N];%設(shè)置理想帶通截止頻率hn=fir1(N-1,wc,Blackman(N));%設(shè)計濾波器參數(shù)6.理論計算方法總結(jié)仿真完成之后,掌握如何去利用已有的指標(biāo)去設(shè)計一個濾波器,總的來說就是四項:通過傅里葉逆變換獲得理想濾波器的單位脈沖響應(yīng)hd(n)。分析給定參數(shù),計算出濾波器的階數(shù),頻率等等相關(guān)指標(biāo)。把已經(jīng)有的參數(shù)用程序函數(shù)表達(dá)出來,利用已經(jīng)有的各種內(nèi)置函數(shù)架設(shè)起濾波器。參看Matlab的輸出圖形和參數(shù)是否滿足要求。2.1.5Matlab直接FDAtool設(shè)計方式解析FDATool(FilterDesign&AnalysisTool)是MATLAB信號處理工具箱里專用的濾波器設(shè)計分析工具,MATLAB6.0以上的版本還專門增加了濾波器設(shè)計工具箱(FilterDesignToolbox)。FDATool可以設(shè)計幾乎所有的根本的常規(guī)濾波器,包括FIR和IIR的各種設(shè)計方法。它操作簡單,方便靈活。FDATool界面總共分兩大局部,一局部是DesignFilter,在界面的下半部,用來設(shè)置濾波器的設(shè)計參數(shù),另一局部那么是特性區(qū),在界面的上半局部,用來顯示濾波器的各種特性。DesignFilter局部主要分為:FilterType(濾波器類型)選項,包括Lowpass(低通)、Highpass(高通)、Bandpass(帶通)、Bandstop(帶阻)和特殊的FIR濾波器。DesignMethod(設(shè)計方法)選項,包括IIR濾波器的Butterworth(巴特沃思)法、ChebyshevTypeI(切比雪夫I型)法、ChebyshevTypeII(切比雪夫II型)法、Elliptic(橢圓濾波器)法和FIR濾波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函數(shù))法。FilterOrder(濾波器階數(shù))選項,定義濾波器的階數(shù),包括SpecifyOrder(指定階數(shù))和MinimumOrder(最小階數(shù))。在SpecifyOrder中填入所要設(shè)計的濾波器的階數(shù)(N階濾波器,SpecifyOrder=N-1),如果選擇MinimumOrder那么MATLAB根據(jù)所選擇的濾波器類型自動使用最小階數(shù)。FrenquencySpecifications選項,可以詳細(xì)定義頻帶的各參數(shù),包括采樣頻率Fs和頻帶的截止頻率。它的具體選項由FilterType選項和DesignMethod選項決定,例如Bandpass(帶通)濾波器需要定義Fstop1(下阻帶截止頻率)、Fpass1(通帶下限截止頻率)、Fpass2(通帶上限截止頻率)、Fstop2(上阻帶截止頻率),而Lowpass(低通)濾波器只需要定義Fstop1、Fpass1。采用窗函數(shù)設(shè)計濾波器時,由于過渡帶是由窗函數(shù)的類型和階數(shù)所決定的,所以只需要定義通帶截止頻率,而不必定義阻帶參數(shù)。MagnitudeSpecifications選項,可以定義幅值衰減的情況。例如設(shè)計帶通濾波器時,可以定義Wstop1(頻率Fstop1處的幅值衰減)、Wpass(通帶范圍內(nèi)的幅值衰減)、Wstop2(頻率Fstop2處的幅值衰減)。當(dāng)采用窗函數(shù)設(shè)計時,通帶截止頻率處的幅值衰減固定為6db,所以不必定義。參數(shù)要求:采樣頻率fs=100Hz,通帶下限截止頻率fc1=10Hz,通帶上限截止頻率fc2=20Hz,過渡帶寬6Hz,通阻帶波動0.01,采用凱塞窗設(shè)計。針對一個含有5Hz、15Hz和30Hz的混和正弦波信號濾波器的階數(shù)n=38,beta=3.4。本例中,首先在FilterType中選擇Bandpass;在DesignMethod選項中選擇FIRWindow,接著在Window選項中選取Kaiser,Beta值為3.4;指定FilterOrder項中的Specifyorder為38;采樣頻率Fs=100Hz,截止頻率Fc1=10Hz,F(xiàn)c2=20Hz。設(shè)置完以后點擊窗口下方的DesignFilter,在窗口上方就會看到所設(shè)計濾波器的幅頻響應(yīng),通過菜單項選擇項Analysis還可以看到濾波器的相頻響應(yīng)、組延遲、脈沖響應(yīng)、階躍響應(yīng)、零極點配置等。設(shè)計完成后將結(jié)果保存為kaiser15.fda文件。我們可以根據(jù)FDAtool工具得到我們的濾波器相關(guān)增益。系數(shù)轉(zhuǎn)換成二進(jìn)制碼:假設(shè)采用乘法器,用1位整數(shù)位,1位符號位,共22位定點二進(jìn)制數(shù)進(jìn)行運算,負(fù)數(shù)用補(bǔ)碼表示,由此將減法運算變成累加求和運算。各系數(shù)可用matlab編程轉(zhuǎn)成二進(jìn)制補(bǔ)碼:/**FilterCoefficients(CSource)generatedbytheFilterDesignandAnalysisTool**GeneratedbyMATLAB(R)7.0andthe**Generatedon:22-Mar-201120:09:12**//**Discrete-TimeFIRFilter(real)**FilterStructure:Direct-FormFIR*FilterOrder:38*Stable:Yes*LinearPhase:Yes(Type1)*//*GeneraltypeconversionforMATLABgeneratedC-code*/#include"tmwtypes.h"/**Expectedpathtotmwtypes.h*D:\MATLAB7\extern\include\tmwtypes.h*/constintBL=39;constreal64_TB[39]={};這是一個非常典型的例子,可以清晰的看到利用Matlab提供的FDAtool設(shè)計濾波器的方便與快捷。比擬以上幾種類型的濾波器參數(shù),在給定的參數(shù)要求下,采用橢圓濾波器可以獲得最正確的幅頻響應(yīng)特性,具有階數(shù)低,過渡帶窄等優(yōu)點。雖然橢圓濾波器在通帶也會產(chǎn)生波動,但考慮到波動處在可接受的范圍內(nèi),仍然符合設(shè)計要求。但由直接型傳輸函數(shù)表達(dá)式來實現(xiàn)并不實用。因此如前所說,將其分解為多個二階傳輸函數(shù)的級聯(lián)形式。借助Matlab信號處理工具箱中函tf2sos(Transferfunctiontosecond-order-section)將傳遞函數(shù)轉(zhuǎn)換為二階級聯(lián)形式。對于是數(shù)字信號,需要對先前分析計算中分解獲得的二階子系統(tǒng)的濾波器系數(shù)進(jìn)行量化,即用一個固定的字長加以表示。量化過程中由于存在不同程度的量化誤差,由此會導(dǎo)致濾波器的頻率響應(yīng)出現(xiàn)偏差,嚴(yán)重時會使濾波器的極點移到單位圓之外,使系統(tǒng)不穩(wěn)定。為了獲得最優(yōu)的濾波器系數(shù),量化的精度也相當(dāng)重要。2.1.6FDAtool設(shè)計模板及設(shè)計結(jié)果圖這里把上面的濾波器設(shè)計參數(shù)的總體圖給出,如圖2-10圖2-10FIR帶通濾波器總體設(shè)計參數(shù)2.2程序分析局部根據(jù)上述FIR低通數(shù)字濾波器的原理與濾波特性,我們在上面的軟件實踐中已經(jīng)掌握了設(shè)計數(shù)字濾波器的方法并且成功的使用Matlab/Simulink進(jìn)行了設(shè)計和仿真。通過以上的過程我們可以導(dǎo)出一定性能的FIR濾波器頻率響應(yīng)與抽頭系數(shù),然后用VerilogHDL語言設(shè)計和QUARTUSⅡ仿真FIR低通數(shù)字濾波器,實現(xiàn)用軟件描述硬件的動作及功能,應(yīng)用軟件來實現(xiàn)數(shù)字濾波器的功能和時序仿真。FPGA可編程邏輯元件介紹EDA是ElectronicDesignAutomation的縮寫,意為電子設(shè)計自動化,即利用計算機(jī)自動完成電子系統(tǒng)的設(shè)計。EDA技術(shù)是以計算機(jī)和微電子技術(shù)為先導(dǎo),聚集了計算機(jī)圖形學(xué)、拓?fù)?、邏輯學(xué)、微電子工藝與結(jié)構(gòu)學(xué)和計算數(shù)學(xué)等多種計算機(jī)應(yīng)用學(xué)科最新成果的先進(jìn)技術(shù)。它與電子技術(shù)、微電子技術(shù)的開展密切相關(guān),吸收了計算機(jī)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計算機(jī)作為工作工具,在EDA軟件平臺土,根據(jù)硬件描述語言HDL完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布線、仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作??删幊踢壿嬈鱌LD(ProgrammableLogicDevices)是ASIC(ApplicationSpecificIntegratedCircuits的一個重要分支。ASIC按制造方法又可分為全定制(FullCustom)產(chǎn)品、半定制(semi-custom)產(chǎn)品和可編程邏輯器件(PLD)。前兩種ASIC的設(shè)計和制造都離不開器件生產(chǎn)廠家,用戶主動性較差。隨著微電子技術(shù)的開展,設(shè)計師們更愿意自己設(shè)計專用集成電路芯片,并盡可能縮短設(shè)計周期,最好是在實驗室里就能設(shè)計出適宜的ASIC芯片,并且立即投入實際應(yīng)用之中,在使用中也能比擬方便的對設(shè)計進(jìn)行修改。可編程邏輯器件就是為滿足用戶的這一需求應(yīng)運而生的。使用FPGA器件設(shè)計數(shù)字電路,不僅可以簡化設(shè)計過程,而且可以降低整個系統(tǒng)的體積和本錢,增加系統(tǒng)的可靠性。它們無需花費傳統(tǒng)意義下制造集成電路所需大量時間和精力,防止了投資風(fēng)險,成為電子器件行業(yè)中開展最快的一族。使用FPGA器件設(shè)計數(shù)字系統(tǒng)電路的主要優(yōu)點如下:1.設(shè)計靈活使用FPGA器件,可不受標(biāo)準(zhǔn)系列器件在邏輯功能上的限制。而且修改邏輯可在系統(tǒng)設(shè)計和使用過程的任一階段中進(jìn)行,并且只須通過對所用的FPGA器件進(jìn)行重新編程即可完成,給系統(tǒng)設(shè)計提供了很大的靈活性。2.增大功能密集度功能密集度是指在給定的空間能集成的邏輯功能數(shù)量。可編程邏輯芯片內(nèi)的組件門數(shù)高,一片F(xiàn)PGA可代替幾片、幾十片乃至幾百片中小規(guī)模的數(shù)字集成電路芯片。用FPGA器件實現(xiàn)數(shù)字系統(tǒng)時用的芯片數(shù)量少,從而減少芯片的使用數(shù)目,減少印刷線路板面積和印刷線路板數(shù)目,最終導(dǎo)致系統(tǒng)規(guī)模的全面縮減。3.提高可靠性減少芯片和印刷板數(shù)目,不僅能縮小系統(tǒng)規(guī)模,而且它還極大的提高了系統(tǒng)的可靠性。具有較高集成度的系統(tǒng)比用許多低集成度的標(biāo)準(zhǔn)組件設(shè)計的相同系統(tǒng)具有高得多的可靠性。使用FPGA器件減少了實現(xiàn)系統(tǒng)所需要的芯片數(shù)目,在印刷線路板上的引線以及焊點數(shù)量也隨之減少,所以系統(tǒng)的可靠性得以提高。4.縮短設(shè)計周期基于FPGA器件的可編程性和靈活性,用它來設(shè)計一個系統(tǒng)所需時間比傳統(tǒng)方法大為縮短。FPGA器件集成度高,使用時印刷線路板電路布局布線簡單。同時,在樣機(jī)設(shè)計成功后,由于開發(fā)工具先進(jìn),自動化程度高,對其進(jìn)行邏輯修改也十分簡便迅速。因此,使用FPGA器件可大大縮短系統(tǒng)的設(shè)計周期,加快產(chǎn)品投放市場的速度,提高產(chǎn)品的競爭能力。5.工作速度快FPGA/CPLD器件的工作速度快,一般可以到達(dá)幾百兆赫茲,遠(yuǎn)遠(yuǎn)大于DPS器件。同時,使用FPGA器件后實現(xiàn)系統(tǒng)所需要的電路級數(shù)又少,因而整個系統(tǒng)的工作速度會得到提高。6.增加系統(tǒng)的保密性能很多FPGA器件都具有加密功能,在系統(tǒng)中廣泛的使用FPGA器件可以有效防止產(chǎn)品被他人非法仿制。7.降低本錢使用FPGA器件實現(xiàn)數(shù)字系統(tǒng)設(shè)計時,如果僅從器件本身的價格考慮,有時還看不出來它的優(yōu)勢,但是影響系統(tǒng)本錢的因素是多方面的,綜合考慮,使用FPGA的本錢優(yōu)越性是很明顯的。首先,使用FPGA器件修改設(shè)計方便,設(shè)計周期縮短,使系統(tǒng)的研制開發(fā)費用降低;其次,F(xiàn)PGA器件可使印刷線路板面積和需要的插件減少,從而使系統(tǒng)的制造費用降低;再次,使用FPGA器件能使系統(tǒng)的可靠性提高,維修工作量減少,進(jìn)而使系統(tǒng)的維修效勞費用降低??傊?,使用FPGA器件進(jìn)行系統(tǒng)設(shè)計能節(jié)約本錢。2.2.2QuartusⅡ及VerilogHDL介紹QuartusII屬于Altera公司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL〔AlteraHardwareDescriptionLanguage〕等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè)計速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計流程的各個階段使用熟悉的第三方EDA工具。此外,QuartusII通過和DSPBuilder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)〔SOPC〕開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、可編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。MaxplusII作為Altera的上一代PLD設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前Altera已經(jīng)停止了對MaxplusII的更新支持,QuartusII與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在QuartusII中包含了許多諸如SignalTapII、ChipEditor和RTLViewer的設(shè)計輔助工具,集成了SOPC和HardCopy設(shè)計流程,并且繼承了MaxplusII友好的圖形界面及簡便的使用方法。AlteraQuartusII作為一種可編程邏輯的設(shè)計環(huán)境,由于其強(qiáng)大的設(shè)計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡送。VerilogHDL是目前應(yīng)用最為廣泛的硬件描述語言。VerilogHDL可以用來進(jìn)行各種層次的邏輯設(shè)計,也可以進(jìn)行數(shù)字系統(tǒng)的邏輯綜合,仿真驗證和時序分析等。該語言適合算法級,存放器級,邏輯級,門級和幅員級等各個層次的設(shè)計和描述。VerilogHDL進(jìn)行設(shè)計最大的優(yōu)點是其工藝無關(guān)性。這使得我們在功能設(shè)計,邏輯驗證階段可以不必過多考慮門級及工藝實現(xiàn)的具體細(xì)節(jié),只需根據(jù)系統(tǒng)設(shè)計的要求施加不同的約束條件,即可設(shè)計出實際電路。VerilogHDL是一種硬件描述語言(hardwaredescriptionlanguage),為了制作數(shù)字電路而用來描述ASIC和FPGA的設(shè)計之用。VerilogHDL的設(shè)計者想要以C編程語言為根底設(shè)計一種語言,可以使工程師比擬容易學(xué)習(xí)。2.2.3實際濾波器程序設(shè)計〔11階FIR數(shù)字濾波器〕FPGA實現(xiàn)FIR濾波器,首先進(jìn)行指標(biāo)選定和Matlab軟件參數(shù)仿真,然后執(zhí)行基于Verilog方法的硬件實現(xiàn)中用移位方法代替了乘法運算。表2-3設(shè)計指標(biāo)要求設(shè)計指標(biāo)上下通截止頻率階數(shù)據(jù)寬度低通0.85(1對應(yīng)Fs/2)118bits根據(jù)以上指標(biāo),利用MATLAB中的FIR濾波器系數(shù)設(shè)計命令fir1(10,0.85)所設(shè)計濾波器的系數(shù)。表2-4Matlab中導(dǎo)出的濾波器系數(shù)MATLAB軟件仿真的濾波器的抽頭系數(shù)及其幅度頻響特性如下列圖2-11所示。圖2-1111階FIR濾波器的抽頭系數(shù)和幅頻特性曲線可見抽頭系數(shù)是奇對稱的,即:,。FIR濾波器采用對稱結(jié)構(gòu),每個抽頭的輸出分別乘以相應(yīng)加權(quán)的二進(jìn)制值,再將結(jié)果相加。同時,利用濾波器系數(shù)的及對稱的特性,對輸入信號進(jìn)行如下等效:,。2.2.4.VerilogHDL的實現(xiàn)這個方法的實現(xiàn)中,使用了移位代替乘法運算來實現(xiàn)濾波器乘加的方法。由于濾波器系數(shù)都是小數(shù),所以我們先左移7位〔即放大128倍〕,再用相應(yīng)的移位來近似這些系數(shù),最后經(jīng)過乘加運算得到結(jié)果,對這個結(jié)果再右移7位〔即縮小128倍〕即可得出正確的結(jié)果。各個系數(shù)的移位情況如下:其中2表示左移1位,1表示不移位,0.5表示右移1位,其他依次類推:128×h(1)=128×0.0127=1.6256=1+0.5+0.125128×h(2)=128×0.0417=5.3376=4+1+0.25+0.625+0.03125128×h(3)=128×0.0878=11.2384=8+4-1+0.25128×h(4)=128×0.1318=16.8704=16+1-0.125128×h(5)=128×0.8500=108.800=128-16-4+0.25+0.0625這樣,我們就可以把這個11階FIR數(shù)字濾波器的輸出用一下的算式得到表2-5Verilog方法設(shè)計FIR的實驗數(shù)據(jù)圖2-12系數(shù)放大后求SUM計算得到結(jié)果后再將sum右移7位,即可得到正確結(jié)果。程序的功能仿真結(jié)果如下列圖2-12所示。圖2-13功能仿真由上圖2-12可以看出,tap0到tap10是輸入x的依次延時1個時鐘周期,結(jié)果sum輸出相對于輸入x延遲了2個時鐘周期,y輸出相對于sum輸出延遲了1個時鐘周期,這和程序設(shè)計相符合。同時,比照程序運行結(jié)果和MATLAB的計算結(jié)果〔如章節(jié)開頭表格所示〕,可知,二者結(jié)果是一致的,其中個別數(shù)據(jù)的小誤差是由于移位取代小數(shù)乘法運算帶來的誤差。因此,程序設(shè)計是正確的。于是,根據(jù)以上所有思想我們可以得出以下11階FIR數(shù)字濾波器的Verilog程序如下://///////////////////////////////////////////////////////////////////////////////Company://Engineer://CreateDate:17:01:3811/03/06//DesignName://ModuleName:ycj//ProjectName://TargetDevice://Toolversions://Description:用Verilog編寫的fir濾波器程序//Dependencies://Revision://Revision0.01-FileCreated//AdditionalComments:////////////////////////////////////////////////////////////////modulefirv2(clk,x,y);inputclk;input[7:0]x;output[25:0]y;reg[26:0]y;reg[7:0]x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16;wire[21:0]acc1,acc2,acc3,acc4,acc5,acc6,acc7,acc8,acc9,acc10,acc11,acc12,acc13,acc14,acc15,acc16,acc17;reg[8:0]sxin[0:32];reg[5:0]i,k;reg[8:0]xx[16:0];parameterc0=-21,c1=-8,c2=22,c3=34,c4=6,c5=-34,c6=-31,c7=32,c8=87,c9=32,c10=-154,c11=-321,c12=-217,c13=321,c14=1185,c15=1996,c16=2328;always@(posedgeclk)beginxx[16]<=sxin[16];for(i=0;i<16;i=i+1)xx[i]<=sxin[i]+sxin[32-i];for(k=32;k>0;k=k-1)sxin[k]<=sxin[k-1];sxin[0]<={x[7],x};endmult13_8uut0(clk,c0,xx[0],acc1);mult13_8uut1(clk,c1,xx[1],acc2);mult13_8uut2(clk,c2,xx[2],acc3);mult13_8uut3(clk,c3,xx[3],acc4);mult13_8uut4(clk,c4,xx[4],acc5);mult13_8uut5(clk,c5,xx[5],acc6);mult13_8uut6(clk,c6,xx[6],acc7);mult13_8uut7(clk,c7,xx[7],acc8);mult13_8uut8(clk,c8,xx[8],acc9);mult13_8uut9(clk,c9,xx[9],acc10);mult13_8uut10(clk,c10,xx[10],acc11);mult13_8uut11(clk,c11,xx[11],acc12);mult13_8uut12(clk,c12,xx[12],acc13);mult13_8uut13(clk,c13,xx[13],acc14);mult13_8uut14(clk,c14,xx[14],acc15);mult13_8uut15(clk,c15,xx[15],acc16);mult13_8uut16(clk,c16,xx[16],acc17);always@(posedgeclk)beginy<={acc16[1],acc16[1],acc16[1],acc16[1],acc16[1],acc16}+{acc17[1],acc17[1],acc17[1],acc17[1],acc17[1],acc17}+{acc15[1],acc15[1],acc15[1],acc15[1],acc15[1],acc15}+{acc14[1],acc14[1],acc14[1],acc14[1],acc14[1],acc14}+{acc13[1],acc13[1],acc13[1],acc13[1],acc13[1],acc13}+{acc12[1],acc12[1],acc12[1],acc12[1],acc12[1],acc12}+{acc11[1],acc11[1],acc11[1],acc11[1],acc11[1],acc11}+{acc10[1],acc10[1],acc10[1],acc10[1],acc10[1],acc10}+{acc9[1],acc9[1],acc9[1],acc9[1],acc9[1],acc9}+{acc8[1],acc8[1],acc8[1],acc8[1],acc8[1],acc8}+{acc7[1],acc7[1],acc7[1],acc7[1],acc7[1],acc7}+{acc6[1],acc6[1],acc6[1],acc6[1],acc6[1],acc6}+{acc5[1],acc5[1],acc5[1],acc5[1],acc5[1],acc5}+{acc4[1],acc4[1],acc4[1],acc4[1],acc4[1],acc4}+{acc3[1],acc3[1],acc3[1],acc3[1],acc3[1],acc3}+{acc2[1],acc2[1],acc2[1],acc2[1],acc2[1],acc2}+{acc1[1],acc1[1],acc1[1],acc1[1],acc1[1],acc1};endendmodule1.分析程序設(shè)計使用MAC單元完成乘加運算〔包括單MAC和多MAC的情況〕這個方法可以利用FPGA中已有的MAC單元〔像XilinxSpartan3E-100中有四個乘加單元〕,只要設(shè)計好數(shù)據(jù)運算流程,就能方便高效地實現(xiàn)FIR運算。使用MAC單元還有一個優(yōu)點是系數(shù)可以存成系數(shù)表,可以方便地修改,這是移位方法代替乘法運算所不及的。使用移位代替乘法運算這個方法的優(yōu)點是速度快,例如11階的濾波器,完成一次運算需要11次乘法,如果使用單MAC的話,需要11個時鐘周期來完成,而使用移位方法可以在一個時鐘周期完成11個乘法運算;缺點是需要另外去完成濾波系數(shù)到移位位數(shù)的換算,如果修改濾波系數(shù)的話,程序修改將會比擬麻煩,同時硬件資源也要使用多一些。t*0.125={t[7],t[7],t[7],t[7:3]}
t*0.125
=
t/8
=
t>>3;
t為有符號數(shù),所以是帶符號右移,于是t>>3
={t[7],t[7],t[7],t[7:3]}
之所以這么些就是為了節(jié)省資源,提高頻率以
-4*0.5
為例
-4的原碼:1000
0100B
補(bǔ)碼:1111
1100B
-4>>1=0111
1110
而符號位不能變應(yīng)用原來的位代替
1111
1110B
的原碼
1000
0010B
=-22.對程序設(shè)計中的問題分析與總結(jié)在最開始的設(shè)計中,本文初始方案使用乘法單元。但是在程序設(shè)計的過程中我們遇見了實數(shù)乘法的問題,程序的運行遇到了困難,在與指導(dǎo)老師的研究中我們發(fā)現(xiàn)問題出在實數(shù)乘法的問題上。在Verilog的運算中實數(shù)乘法需要特殊的小數(shù)乘法器來單元來實現(xiàn)。在原來的38階濾波器的設(shè)計中出現(xiàn)了這樣子的問題。我們使用過這樣的程序:reg[63:0]filter_in_force[0:3344];reg[63:0]filter_out_expected[0:3344];//Functiondefinitionsfunctionrealabs_real;inputrealarg;beginabs_real=arg>0?arg:-arg;endendfunction//functionabs_real//ComponentInstancesfilteru_filter(.clk(clk),.clk_enable(clk_enable),.reset(reset),.filter_in(filter_in),.filter_out(filter_out));initialbegin//Constantsfilter_in_force[0]<=$realtobits(1.0000000000000000E+000);filter_in_force[1]<=$realtobits(0.0000000000000000E+000);filter_in_force[2]<=$realtobits(0.0000000000000000E+000);filter_in_force[3]<=$realtobits(0.0000000000000000E+000);…系統(tǒng)無法實現(xiàn)real值得計算,于是這里需要我們用小數(shù)乘法器進(jìn)行特殊單元的方案解決。于是我們要進(jìn)行小數(shù)乘法器的設(shè)計。3.小數(shù)乘法器介紹及在設(shè)計中的作用隨著FPGA的開展以及相應(yīng)EDA軟件工具的成熟,F(xiàn)PGA在高速數(shù)字信號處理領(lǐng)域得到了越來越廣泛的應(yīng)用。而乘法,尤其是浮點乘法運算是數(shù)值計算和數(shù)據(jù)分析中最常用的運算之一。目前,多數(shù)FPGA上可以實現(xiàn)整數(shù)和標(biāo)準(zhǔn)邏輯矢量的乘法,但不支持浮點乘法運算,因此使得FPGA在數(shù)值計算、數(shù)據(jù)分析和信號處理等方面受到了限制。本文采用適合于FPGA實現(xiàn)的自定義26位浮點數(shù)據(jù)格式,利用改良的基4Booth編碼運算方式,以及CSA和4-2壓縮器綜合的Wallace樹形結(jié)構(gòu),減少了局部積,使系統(tǒng)具有高速度,低功耗的特點,并且結(jié)構(gòu)規(guī)那么。在尾數(shù)的舍入中采用了基于預(yù)測和選擇的舍入方法,進(jìn)一步提高了運算的速度,優(yōu)化了乘法器的性能。4.小數(shù)乘法器程序設(shè)計與仿真modulefix_mult(clk,rst_n,in_a,in_b,x1,x2,x3,x4,x5,x6,x7,y_out);inputclk,rst_n;//時鐘和復(fù)位信號input[31:0]in_a,in_b;//輸入的被乘數(shù)和乘數(shù)output[31:0]y_out;//輸出的乘積/*存放器類型變量為了能更清楚的了解全處理過程,特地設(shè)計為輸出的,不然仿真可能會被綜合掉*/output[15:0]x1,x2,x3,x4;output[0:0]x5;output[29:0]x6;output[31:0]x7;/////////////////////////////////////////////////////reg[31:0]y_out;reg[15:0]x1,x2,x3,x4;reg[0:0]x5;reg[29:0]x6;reg[31:0]x7;always@(posedgeclk)beginif(!rst_n)//復(fù)位時,全部存放器變量清零beginx1<=16'b0;x2<=16'b0;x3<=16'b0;x4<=16'b0;x5<=1'b0;x6<=30'b0;x7<=32'b0;y_out<=32'b0;endelse/beginx1<=in_a[31:16];//截取16位被乘數(shù),x2<=in_b[31:16];//截取16位乘數(shù)x3<=(x1[15]==0)?x1:{x1[15],~x1[14:0]+1'b1};//據(jù)最高位判斷是否為負(fù)數(shù),//假設(shè)負(fù)數(shù)那么把補(bǔ)碼轉(zhuǎn)成原碼x4<=(x2[15]==0)?x2:{x2[15],~x2[14:0]+1'b1};x5<=x3[15]^x4[15];//兩數(shù)符號位相異或,得到乘積的符號位x6<=x3[14:0]*x4[14:0];//兩數(shù)的數(shù)據(jù)位相乘x7<={x5,x6,1'b0};//乘積由1位符號位和30位數(shù)據(jù)位及1位無關(guān)組成;//因為是小數(shù),往低位生長,所以無關(guān)位放置最低位y_out<=(x7[31]==0)?x7:{x7[31],~x7[30:0]+1'b1};endendendmodule小數(shù)乘法器的仿真結(jié)果如下列圖2-14所示:圖2-14小數(shù)乘法器仿真結(jié)果全過程可以看成:把32位的小數(shù)截取高16位左移16位,變?yōu)?6位整數(shù)相乘得到32位整數(shù)乘積后,右移32位調(diào)整無關(guān)位的位置得到32位小數(shù),這樣就可以完成早期程序中的小數(shù)乘法功能,然后來進(jìn)行設(shè)計中的FPGA數(shù)字濾波器設(shè)計的優(yōu)化。在先前的設(shè)計中我們使用Matlab進(jìn)行綜合仿真設(shè)計,并且借助FDAtool設(shè)計出濾波器。在Quartus2的仿真中我們發(fā)現(xiàn)程序無法正常的完成運行,究其原因在于小數(shù)乘法器的問題。在原來的濾波器中需要對每一個參數(shù)進(jìn)行單獨設(shè)置,這樣會使得程序占有巨量的篇幅大大的增加了工作量和容錯度。于是,我們需求另外一種方法來解決這個問題,后來我們研究了移位算法。利用移位來把小數(shù)運算轉(zhuǎn)換成整數(shù)運算,這樣我們的11階濾波器程序大大減少篇幅同時也增加了程序的可讀程度和穩(wěn)定程度。3濾波器仿真濾波3.1設(shè)置混合信號在Matlab中進(jìn)行我們設(shè)計過的FIR數(shù)字濾
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)買賣合同
- 車輛駕駛承包合同范本
- 外貿(mào)代理合同仲裁條款
- 正規(guī)個人借款合同范本
- 無償借用車間合同范本
- 綠化綠植買賣合同范本
- 2025合法的工程合同樣式
- 專利申請委托合同書樣本
- 項目咨詢服務(wù)合同范本
- 貨物運輸公司的勞務(wù)合同
- 保安服務(wù)項目信息反饋溝通機(jī)制
- 全國各省(直轄市、自治區(qū))市(自治州、地區(qū))縣(縣級市)區(qū)名稱一覽表
- 《團(tuán)隊介紹模板》課件
- 常用中醫(yī)適宜技術(shù)目錄
- 沖壓模具價格估算方法
- 碳納米管應(yīng)用研究
- 運動技能學(xué)習(xí)與控制課件第十一章運動技能的練習(xí)
- 蟲洞書簡全套8本
- 2023年《反電信網(wǎng)絡(luò)詐騙法》專題普法宣傳
- 小學(xué)數(shù)學(xué)五年級上、下冊口算題大全
- 和平精英電競賽事
評論
0/150
提交評論