版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 基于fpga實(shí)現(xiàn)fir濾波器的研究 摘要: 針對在fpga中實(shí)現(xiàn)fir濾波器的關(guān)鍵-乘法運(yùn)算的高效實(shí)現(xiàn)進(jìn)行了研究,給了了將乘法化為查表的da算法,并采用這一算法設(shè)計(jì)了fir濾波器。通過fpga仿零點(diǎn)驗(yàn)證,證明了這一方法是可行和高效的,其實(shí)現(xiàn)的濾波器的性能優(yōu)于用dsp和傳統(tǒng)方法實(shí)現(xiàn)fir濾波器。最后介紹整數(shù)的csd表示和還處于研究階段的根據(jù)fpga實(shí)現(xiàn)的要求改進(jìn)的最優(yōu)表示。 關(guān)鍵詞: fpga da fir濾波器 csd 數(shù)字濾波器是語音與圖像處理、模式識別、雷達(dá)信號處理、頻譜分析等應(yīng)用中的一種基本的處理部件,它能滿足波器對幅度和相位特性的嚴(yán)格要求,避免模擬乙波器所無法克服的電壓漂移、溫度漂移
2、和噪聲等問題。有限沖激響應(yīng)(fir)濾波器能在設(shè)計(jì)任意幅頻特性的同時保證嚴(yán)格的線性相位特性。 目前fir濾波器的實(shí)現(xiàn)方法有三種:利用單片通用數(shù)字濾波器集成電路、dsp器件和可編程邏輯器件實(shí)現(xiàn)。單片通用數(shù)字濾波器使用方便,但由于字長和階數(shù)的規(guī)格較少,不能完全滿足實(shí)際需要。使用dsp器件實(shí)現(xiàn)雖然簡單,但由于程序順序執(zhí)行,執(zhí)行速度必然不快。fpga有著規(guī)整的內(nèi)部邏輯陣列和豐富的連線資源,特別適合于數(shù)字信號處理任務(wù),相對于串行運(yùn)算為主導(dǎo)的通用dsp芯片來說,其并行性和可擴(kuò)展性更好。但長期以來,fpga一直被用于系統(tǒng)邏輯或時序控制上,很少有信號處理方面的應(yīng)用,其原因主要是因?yàn)樵趂pga中缺乏實(shí)現(xiàn)乘法運(yùn)算
3、的有效結(jié)構(gòu)?,F(xiàn)在這個問題得到了解決,使fpga在數(shù)字信號處理方面有了長足的發(fā)展。 1 分布式運(yùn)算原理 分布式算法(da)早在1973年就已經(jīng)被croisier提出來了,但是直到fpga出現(xiàn)以后,才被廣泛地應(yīng)用在fpga中計(jì)算乘積和。 一個線性時不變網(wǎng)絡(luò)的輸出可以用下式表示:=c0x0+c1x1+cn-1xn-1 假設(shè)系數(shù)cn是已知常數(shù),xn是變量,在有符號da系統(tǒng)中假設(shè)變量xn的表達(dá)式如下: 式中,xbn表示z叫的第b位,而xn也就是x的第n次采樣。于是,內(nèi)積y可以表示為: 重新分別求和(也就是分布式算法的由來),其結(jié)果如下: 從(1)式可以發(fā)現(xiàn),分布式算法是一種以實(shí)現(xiàn)乘加運(yùn)算為目的的運(yùn)算方法
4、。它與傳統(tǒng)算法實(shí)現(xiàn)乘加運(yùn)算的不同在于執(zhí)行部分積運(yùn)算的先后順序不同。分布式算法在實(shí)現(xiàn)乘加功能時,是通過將各輸入數(shù)據(jù)的每一對應(yīng)位產(chǎn)生的部分積預(yù)先進(jìn)行相加形成相應(yīng)的部分積,然后再對各個部分積累加形成最終結(jié)果的,而傳統(tǒng)算法是等到所有乘積已經(jīng)產(chǎn)生之后再來相加完成乘加運(yùn)算的。與傳統(tǒng)串行算法相比,分布式算法可極大地減少硬件電路的規(guī)模,提高電路的執(zhí)行速度。它的實(shí)現(xiàn)框圖如圖1(虛線為流水線寄存器)所示。 2 用分布式原理實(shí)現(xiàn)fir濾波器 21 串行方式 當(dāng)系統(tǒng)對速度的要求不高時,可以采用串行的設(shè)計(jì)方法,即采用一個da表、一個并行累加器和少量的寄存器就可以了。 在用lut實(shí)現(xiàn)串行分布式算法的時候,假設(shè)系數(shù)為8位,
5、則da表的規(guī)模為2n×8位??梢钥吹饺绻轭^系數(shù)n過多,則da表的規(guī)模將十分龐大。這是因?yàn)閘ut的規(guī)模隨著地址空間的變化(也就是n的增加)而呈指數(shù)增加。例如epfl0k20包含1152個lc,而一個27×7位的表就需要394個lc。當(dāng)n過大時,一個fpga器件就不夠用了。 為了減小規(guī)模,可以利用部分表計(jì)算,然后將結(jié)果相加。假定長度為ln的內(nèi)積為: 將和分配到l個獨(dú)立的n階并行da的lut之中結(jié)果如下: 如圖2所示,實(shí)現(xiàn)一個4n的da設(shè)計(jì)需要3個次輔助加法器。表格的規(guī)模從一個2 n×b位的lut降到4個2 n×b的位表。 如果再加上流水線寄存器,由于epf
6、l0k20每個lc后面都跟有一個寄存器,所以并沒有增加電路規(guī)模,而速度卻得到了提高。 22 并行方式 采用并行方式的好處是處理速度得到了提高。由于數(shù)據(jù)是并行輸入,所以計(jì)算速度要比串行方式快,但它的代價(jià)是硬件規(guī)模更大了。下面舉出全并行的例子。 設(shè) sum0=c0x0+0+c1x01+cn-1x0n-1 sumb-1=cb-1xb-10+c1xb-11+cn-1+xb-1n-1 可將(1)式改寫成如下形式 y=sum0+sum12 1+sum2 2+sumb-12 b-1 (2) 利用式(2)可得一種直觀的加法器樹,如圖3所示。 雖然硬件規(guī)模加大了,但是如果把系數(shù)的個數(shù)限制在4個或8個,再加上流水
7、線寄存器,這個代價(jià)還是值得的。而且每張表都是相同的,不用為每個采樣都設(shè)計(jì)一張表,減小了設(shè)計(jì)量。 da算法的主要特點(diǎn),是巧妙地利用rom查找表將固定系數(shù)的mac運(yùn)算轉(zhuǎn)化為查表操作,其運(yùn)算速度不隨系數(shù)和輸入數(shù)據(jù)位數(shù)的增加而降低,而且相對直接實(shí)現(xiàn)乘法器而言在硬件規(guī)模上得到了極大的改善。利用altera的flexl0k實(shí)現(xiàn)的16階8位系數(shù)的并行fir濾波器,其時鐘頻率可以達(dá)到101mhz,而實(shí)現(xiàn)的16階8位系數(shù)的串行fir濾波器,其時鐘頻率可以達(dá)到63mhz,每9個時鐘周期可完成一次計(jì)算。但是其系數(shù)是傳統(tǒng)二進(jìn)制的,造成了很大的冗余(對于用逐位相加法實(shí)現(xiàn)的乘法器,當(dāng)系數(shù)有一位為零時不用相加,零位越多,冗
8、余越大),而且查找表的大小隨著濾波器階數(shù)的增加成指數(shù)增加,雖然可以采用將大查找表分解為小查找表,但是無法從根本上解決這一問題,這些都是da方法的缺點(diǎn)。后面將對fir濾波器實(shí)現(xiàn)給出新的設(shè)計(jì)方法,進(jìn)一步降低邏輯資源的消耗。 3 csd碼及最優(yōu)化方法 一個整數(shù)x與另一整數(shù)y的乘積的二進(jìn)制表示可以寫成: 對于標(biāo)準(zhǔn)二進(jìn)制,由于sn=0時的對應(yīng)項(xiàng)y2n并不參與累加運(yùn)算,所以可以用另一種表示方法使非零元素的數(shù)量降低,從而使加法器的數(shù)目減少,降低硬件規(guī)模。有符號數(shù)字量(sd)有三重值0,-1,+1,如果任意兩個非零位均不相鄰,即為標(biāo)準(zhǔn)有符號數(shù)字量(csd)。 可以證明csd表示對給定數(shù)是唯一的并且是最少非零位
9、的。csd表示相對于標(biāo)準(zhǔn)二進(jìn)制表示的改進(jìn)在于引入了負(fù)的符號位,從而降低了非零位個數(shù),大大降低了邏輯資源的占用(大約平均降低33的邏輯資源)。 當(dāng)用硬件實(shí)現(xiàn)時,常常限制系數(shù)位數(shù),即每個系數(shù)與n個正(負(fù))2的冪次之和近似。標(biāo)準(zhǔn)二進(jìn)制數(shù)在整數(shù)軸上是緊密和均勻分布的,而csd碼是非均勻分布的,其對實(shí)系數(shù)的量化誤差比標(biāo)準(zhǔn)二進(jìn)制大,雖然增加n可以減小量化誤差,但是會增大邏輯資源的消耗;而且csd表示無法應(yīng)用流水線結(jié)構(gòu),從而降低處理速度。 還可采用優(yōu)化的方法將系數(shù)先拆分成幾個因子,再實(shí)現(xiàn)具體因子。這就是最優(yōu)化的代碼。例如對系數(shù)93,93=10111012=1100101csd。用最優(yōu)化法,系數(shù)93可以表示成
10、93=3·31,每個因子需要一個加法器,如圖4所示。 從圖中可以看出,csd碼需要三個加法器,而最優(yōu)法只需要兩個加法器;csd碼的重要缺陷在于每一級加法都需要初節(jié)點(diǎn)參與,而最優(yōu)表示僅依賴上一級加法的結(jié)果,因此也就更適合流水線處理。dempster等人提出了需要1到4個加法器的所有可能配置表。利用這張表,就可以合成成本在0與4個加法器之間的所有8位二進(jìn)制整數(shù)。 本文首先給出了一種巧妙利用fpga的查找表,將乘法轉(zhuǎn)化為查找表運(yùn)算的da算法,并用altera的flexlok器件分別實(shí)現(xiàn)了一個8位16階的串行與并行fir濾波器,系統(tǒng)頻率分別達(dá)到63mhz與101mhz,采樣速度分別達(dá)到7ms
11、ps與101msps。而dsp實(shí)現(xiàn)的fir濾波器只能達(dá)到5msps,明顯低于fpga。用傳統(tǒng)的位串行方法實(shí)現(xiàn)的一個8階8位fir濾波器,也只能達(dá)到5msps,明顯低于串行式da方法;接著,針對系數(shù)的二進(jìn)制表示非零位不是最少(即實(shí)現(xiàn)系數(shù)乘法的加法器不是最少)的問題,介紹了整數(shù)的csd表示以及最優(yōu)表示,它們可以用較小的代價(jià)和與加法器級數(shù)無關(guān)的處理速度實(shí)現(xiàn)整數(shù)乘法運(yùn)算,能比da方法用更少的邏輯資源實(shí)現(xiàn)fir濾波器。這些算法都不同于傳統(tǒng)的設(shè)計(jì)觀念,為基于fpga的dsp設(shè)計(jì)提出了新的思路,必將在高速fir濾波器設(shè)計(jì)、高速fft設(shè)計(jì)中得到廣泛的應(yīng)用。隨著fpca集成規(guī)模的不斷提高,許多復(fù)雜的數(shù)學(xué)運(yùn)算已經(jīng)
12、可以用fpca來實(shí)現(xiàn),利用單片fpga實(shí)現(xiàn)系統(tǒng)的設(shè)想即將變?yōu)楝F(xiàn)實(shí)基于fdatool及fpga的fir濾波器設(shè)計(jì)首先fdatool是matlab自帶的一個數(shù)字濾波器的設(shè)計(jì)分析軟件,里面提供了豐富的參數(shù)供調(diào)整(具體的參閱matlab的教材),大大降低了數(shù)字濾波器的設(shè)計(jì)難度,同時又可以設(shè)計(jì)出高質(zhì)量的濾波器。fdatool雖然不是最好的濾波器設(shè)計(jì)軟件,但是在matlab響亮的名號下,得到了廣泛的使用。fir megacore是altera針對其主流fpga推出的一款商業(yè)化的數(shù)字濾波器設(shè)計(jì)軟件,可以直接生成hdl代碼(可綜合的,但是加密了),同時其結(jié)構(gòu)針對altera自己的fpga做了各種各樣的優(yōu)化。盡
13、管fdatool也可以生成可綜合的hdl代碼,但是沒有針對fpga的m4k、dsp block做出相應(yīng)的優(yōu)化,所以性能和fir megacore生成的fir濾波器有相當(dāng)?shù)牟罹唷H欢?,fir megacore的濾波器設(shè)計(jì)工具相當(dāng)?shù)暮唵危惶峁┝舜昂瘮?shù)法,用戶只能定義有限的幾個參數(shù)。而其他的設(shè)計(jì)方法,比如矩形系數(shù)更好的等紋波法則只能在fdatool里面找到。 所幸的是,fir megacore提供了濾波器的coefficients導(dǎo)入的選項(xiàng),可以使用第三方工具生成的coefficients。這使得我們能夠用fir megacore來實(shí)現(xiàn)fdatool生成的濾波器。簡要流程如下:step-1:在ma
14、tlab的命令行上輸入:fdatool,啟動filter design & analyze tool;step-2:filter design & analyze tool(fdatool)的主界面;step-3:基于等紋波法設(shè)計(jì)一個fir濾波器; step-4:這個濾波器的幅頻特性;step-5:在fdatool主界面的file菜單中選取export. 可以對系數(shù)先進(jìn)行參數(shù)化,點(diǎn)擊右下方的set quantization parameter按鈕,設(shè)置參數(shù)化位數(shù)(可以通過analysis->filter coefficient查看系數(shù),此時系數(shù)仍為小數(shù)),小數(shù)需要?dú)w一化為整數(shù),可以再輸入xilinx和altera的ip中,歸一化即將生成的小數(shù)系數(shù)乘以28(歸一化為8位系數(shù),第九位可以是符號位)。step-6:在export的對話框中,export to選擇coefficient file(ascii),format選擇decimal;step-7:修改導(dǎo)出的fcf文件,把那些廢話刪掉(非常重要); step-8:調(diào)用altera fir megacore的
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《小烏龜看爺爺》課件
- 《電氣安全操作技術(shù)》課件
- 三年級數(shù)學(xué)認(rèn)識分?jǐn)?shù)課件
- 《神經(jīng)系統(tǒng)的療養(yǎng)》課件
- 單位管理制度集合大合集人員管理篇十篇
- 單位管理制度匯編大合集人力資源管理十篇
- 中心對稱課件
- 單位管理制度分享大全職工管理篇
- 《證據(jù)法的基礎(chǔ)知識》課件
- 《診斷學(xué)》課程標(biāo)準(zhǔn)
- 人防工程質(zhì)量監(jiān)督(共38)
- 《認(rèn)識長方形》數(shù)學(xué)
- 七年級生物上冊期末測試卷(各版本)
- 關(guān)注體重 控制血壓課件
- 統(tǒng)編版六年級語文上冊廣東省廣州市花都區(qū)期末檢測試卷附答案
- 2022更新國家開放大學(xué)電大《生產(chǎn)與運(yùn)作管理》2025-2026期末試題及答案(試卷代號:2617)
- (完整版)保溫工藝課件
- 設(shè)計(jì)驗(yàn)證和生產(chǎn)確認(rèn)[福特FORD]
- 汽車4S店八大運(yùn)營業(yè)績指標(biāo)管控培訓(xùn)_89頁
- 工作場所空氣中有害物質(zhì)監(jiān)測的采樣規(guī)范課件159-2004
- 合同范本之采購合同誰保管
評論
0/150
提交評論