幾種FPGA的FIR濾波器方案詳析_第1頁
幾種FPGA的FIR濾波器方案詳析_第2頁
幾種FPGA的FIR濾波器方案詳析_第3頁
幾種FPGA的FIR濾波器方案詳析_第4頁
幾種FPGA的FIR濾波器方案詳析_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、FIR 濾波器設計方案DesigneryaoguaiwsFIR濾波器的基本結(jié)構(gòu)橫截型(卷積型、直接型)FIR濾波器的差分方程表達式為:很明顯,這就是線形時不變系統(tǒng)的卷積和公式,也就是xn的延時級聯(lián)的橫向結(jié)構(gòu),如下圖所示:由于線形相位FIR濾波器的系數(shù)是鏡像對稱的,所以N階濾波器系數(shù)只需要個儲存單元即可。而輸入xn的值需要N個儲存單元,這樣總共就需要個儲存單元。級聯(lián)型將H(z)分解成實系數(shù)二階因子的乘積形式:圖中畫出了一個FIR濾波器的級聯(lián)結(jié)構(gòu),其中每一個二階因子用一個橫截型來表示:這種結(jié)構(gòu)的每一節(jié)控制一對零點,因而在需要控制傳輸零點時可以采用它。但是這種結(jié)構(gòu)所需要的系數(shù)比卷積型的系數(shù)hn要多,

2、因而需要更多的儲存單元。理論上需要個單元儲存系數(shù),再加上各單元儲存中間結(jié)果,結(jié)果一共需要個儲存單元。頻率抽樣型把一個N店有限長序列的z變換H(z)在單位圓上作N等分抽樣,就得到,其主值序列就等于h(n)的離散傅里葉變換。即H(z)的內(nèi)插公式為:這個公式就為FIR濾波器提供了另外一種結(jié)構(gòu),這種結(jié)構(gòu)由兩部分組成。其中的第一部分為(這是一個FIR子系統(tǒng),是由N節(jié)延時單元構(gòu)成的梳狀濾波器):級聯(lián)的第二部分為(這是一個由N個一節(jié)網(wǎng)絡并聯(lián)而成的IIR子系統(tǒng)):頻率抽樣型的結(jié)構(gòu)如圖所示:該系統(tǒng)需要2N個儲存單元用來緩存輸入的數(shù)據(jù),N個儲存單元用來儲存系數(shù),一共需要花費3N個儲存單元。量化誤差分析理論設計的F

3、IR濾波器系數(shù)都是無限精度的,當他們有硬件實現(xiàn)時,必須要量化,這必然引起量化誤差。這也就使得理論濾波器和實際濾波器存在一些性能上的差別系數(shù)的量化誤差對系統(tǒng)的影響,不僅僅和量化字長有關(guān),更是和濾波器的結(jié)構(gòu)密切相關(guān)的!分析:假設為理論系數(shù),為量化系數(shù),為量化誤差,則有:可以得到由于各的偏差引起的第i個零點位置變化量為(推導過程見:數(shù)字信號處理教程.程佩青.清華大學出版社):上式分母中的每一個因子是由一個零點指向的矢量,而整個分母正是所有其它零點指向該零點的矢量積。當系統(tǒng)的零點非常密集時,他們互相的矢量長度就很短,矢量積就更小,就較大。高階直接型濾波器的零點數(shù)目多而密集,而低階直接型濾波器的零點數(shù)目

4、少而稀疏,因而前者對系數(shù)的量化誤差要敏感得多。實現(xiàn)方案比較Direct-type使用儲存單元最少,但是由于階數(shù)很高,所以零點非常密集,系數(shù)的量化誤差對零點的影響較大,必須要通過增加系數(shù)的量化字長來確保系統(tǒng)的正確。Cascade-type使用的儲存單元較多,但是由于每一個子系統(tǒng)都是二階系統(tǒng),故量化誤差對整個系統(tǒng)的影響較小,可以使用較短的系數(shù)量化字長。Decimation-type使用的儲存單元較多,由于每一個并聯(lián)的二階字系統(tǒng)的誤差值對自身影響,故該結(jié)構(gòu)的整個系統(tǒng)誤差最小。但是由于引入了IIR系統(tǒng),故在系數(shù)量化的時候,必須是極點量化在單位圓之內(nèi),否則將使系統(tǒng)不穩(wěn)定。指標:采樣頻率 系數(shù)量化字長 通

5、帶截止頻率 阻帶截止頻率 通帶紋波系數(shù) 阻帶衰減 在右上角的幅頻特性曲線圖(經(jīng)放大)中,我們可以看到,系數(shù)經(jīng)過量化后,會對幅頻特性產(chǎn)生一定的影響。但是由于量化比特數(shù)非常的高,所以影響不是太大,能符合我們的設計指標。右下角展示了量化過后的系數(shù)對零極點的影響。設計方案由于要求是硬件最少,并且最優(yōu),我們采取第一種方案,即:系數(shù)高bit量化的直接型結(jié)構(gòu)。由于FIR濾波器的系數(shù)鏡像對稱,故將線形相位FIR濾波器的流圖改造成如下格式:在上結(jié)構(gòu)中,每一個乘加單元都是將鏡像對稱的兩個值進行MAC運算。所以我們在實現(xiàn)輸入值xn的緩沖時,將緩沖設置成兩個鏡像對稱的緩沖器。這樣在實現(xiàn)累加時兩個buffer可以共用一

6、個指針減計數(shù)器(采用減計數(shù)器,而不采用加計數(shù)器的原因?qū)诤罄m(xù)的時序關(guān)系中得到解釋),而不必要使用一個指針加計數(shù)器和一個指針減計數(shù)器,或者讓系數(shù)ROM的指針變量產(chǎn)生復雜的運動,這能簡化時序設計的復雜性,同時也就節(jié)約了硬件;并且采用用鏡像對稱buffer,再不額外增加硬件的同時,可以降低時鐘一半的頻率,這是非常重要的。雖然增加了一個(24+1)-bit加法器,但是同時也減少了ROM中的計數(shù)器(資源共享原理將在ROM模塊介紹),并且換來上述的優(yōu)化設計。在上述的原理框圖中我們可以看到,所有的MAC都是規(guī)則分布的,這種幾何上的“美”,正好是時分復用的最好例證。假設xn的輸入時鐘clk的速率為,MAC單

7、元的處理速率為,若存在,則可以實現(xiàn)MAC單元的復用,這樣就將個MAC單元降低為1個,大大的節(jié)約了硬件。FIR濾波器的實現(xiàn)框圖如下:ROM-cell實現(xiàn):方案一(直接法)由于該FIR濾波器的性能要求極高,所以在實現(xiàn)時,F(xiàn)IR濾波器的系數(shù)非常的多。且由以上的“零極點圖”可以看出,零點非常的密集,這就修要使用高bit來量化FIR濾波器的系數(shù)。當采用27-bit量化時才能取得較好的結(jié)果。這樣,理論上需要。由于系數(shù)眾多,所以需要大量的存儲單元。方案二(縮放法【ScalingTech】)可以證明,一個十進制數(shù)要被二進制數(shù)表示時,該十進制數(shù)越接近于,產(chǎn)生相同精度時,用于表示該數(shù)的二進制位數(shù)越少。若,其中c為

8、濾波器系數(shù),為量化間距,N為量化比特數(shù)。假設為相對量化誤差,則有:顯然,當相對量化誤差一定時,系數(shù)c越大,所采用的量化比特數(shù)N就越少。在下圖中可以很明顯地看出量化間距對相對量化誤差的影響。很明顯,當系數(shù)c太小時,很容易被量化間距所造成的量化噪聲所淹沒,而完全不能恢復。所以我們可以先把所有的系數(shù)(左圖)放大后再進行量化,將放大后的數(shù)(右圖)進行量化并進行乘法運算,最后將乘法的結(jié)果減小倍(這對于硬件實現(xiàn)非常容易,只需要講結(jié)果右移N位即可)。但是我們從系數(shù)上來觀察,發(fā)現(xiàn)采用“直接型”FIR濾波器所產(chǎn)生的系數(shù)相差非常的大,其動態(tài)范圍高達,不宜采用單因子縮放。這里引入一個叫做縮放矩陣和趨一矩陣的概念:記

9、為縮放矩陣為,趨一矩陣為。將所有的系數(shù)絕對值被1除,將得到的商項下取整得,由于,所以必有,再計算和,這時將滿足。分別將P和用二進制量化為t比特、c比特,于是有:由于,所以只需要用較少的比特來量化他就可以滿足精度的要求,試驗證明:當c=14時,較精確的滿足了要求。再算得t=5,所以一共只需要采用19比特就可以了。這樣每個系數(shù)就節(jié)約了8比特。理論上一共節(jié)約了。誤差分析:當采用直接法量化時,N=27,算得:而采用收縮法量化時,N=14,算得:可以看出,當采用【ScalingTech】技術(shù)以后,不僅能將量化比特數(shù)幾乎降為原來的一半,而且最大相對量化誤差降為原來的。當采用【ScalingTech】算法時

10、,乘法器所需要的最高速度變?yōu)椋翰捎弥苯臃〞r,MAC單元可以直接采用Booth乘法器,而采用縮放法時需要對Booth乘法器添加移位運算器(shifter)。當采用收縮法時,由于最后要將乘法結(jié)果進行右移以后才能將結(jié)果進行累加,所以會損失一定的精度。移位得越多,精度損失得越多。直接法收縮法ROMMACROMMAC資源耗費ROMs(641)2714LUTs10811479237MAC-cell實現(xiàn):MAC-cell是由一個乘法器和一個累加器組成,累加器設計較為簡單,也不會占用太多的資源,關(guān)鍵在于乘法器的設計。在該FIR濾波器中,乘法器要實現(xiàn)的乘法運算,不合理的結(jié)構(gòu)對資源的占用是巨大的,極有可能使資源崩

11、潰!乘法器的實現(xiàn)大致分為3種串行乘法器:資源最節(jié)約,但是由較多的延時,適合于大規(guī)模;并形乘法器:資源消耗很大,但是速度較快,適合于中規(guī)模;查表乘法器:資源耗費巨大,速度最快,只適合于小規(guī)模。在該設計中,由于乘法運算的位數(shù)很高,所以必須采用“串行乘法器”來實現(xiàn)其功能。“串行乘法器”在算法上是由一個移位寄存器和一個累加器構(gòu)成,SR負責進行乘數(shù)的移位,而ACC負責將移位的二進制數(shù)相加,并把結(jié)果保留在寄存器中,以供下次使用。方案一(校正算法)由于在該MAC運算單元中,涉及到的是兩個有符號數(shù)的乘法,所以還必須先對有符號數(shù)進行編碼,然后才能進行運算。我們這里采用二進制補碼的編碼方案,該方案是目前在DSP領(lǐng)

12、域類最為流行的有符號數(shù)字表示法。考慮到,兩個符號相依的數(shù)不能直接采用無符號乘法器,所以我們必須先對編碼做一定轉(zhuǎn)換后送入無符號乘法器,然后將結(jié)果通過另一個與之相反的網(wǎng)絡,使結(jié)果正確。算法框圖如下圖所示:要對有符號數(shù)進行乘法運算,必須要將它們進行編碼。在編碼方案中,二進制補碼表示法是目前DSP領(lǐng)域最為流行的有符號數(shù)字表示法,在該編碼方案中,若最高位為0,則表示該數(shù)為正數(shù),反之則表示為負數(shù)。首先將乘數(shù)和被乘數(shù)的首位進行比較,若它們相同,則直接送到無符號乘法器中進行乘法運算我們可以證明兩個負數(shù)相乘和兩個正數(shù)相乘都可以采用無符號乘法器得到結(jié)果。若首位不相同,則將其中的負數(shù)通過“負正變換網(wǎng)絡”后再將兩數(shù)送

13、入無符號乘法器,最后將結(jié)果在通過“正負變換網(wǎng)絡”,進行校正。此時得到的結(jié)果就是正確的。方案二(Booth算法)該算法不僅能處理負數(shù)相乘的情況,而且速度較快。下圖給出了Booth算法的流程:乘數(shù)與被乘數(shù)分別載入Q和M寄存器內(nèi),同時還有一個1比特寄存器,位于Q寄存器最低位的右邊,稱為Q。乘法的結(jié)果出現(xiàn)在A和Q寄存器中。A和Q的初始值為0??刂七壿嬕彩敲看螔呙璩藬?shù)的一位(掃描的次數(shù)位Q長度-1),但同時也要檢查右邊的一位。若兩位相同,則A、Q和Q的所有位右移一位。若兩位不同,則根據(jù)是1-0還是0-1決定A+M還是A-M;加減之后再右移一位。也就是說,右移運算總是要進行的。智利的右移是算術(shù)移位,即如果

14、移到后,原來得值仍然保留在中。Booth Arithmetic 校正算法Booth算法資源消耗(LUTs)339107最大時鐘頻率(MHz)105.7144.0可以明顯地看出,采用Booth算法后,不但能大大的節(jié)約資源(339107),而且可以大幅的提高最大頻率(105.7144.0),故在有符號乘法器中都采用Booth乘法器。輸入緩沖FIFO的讀寫時鐘的時序關(guān)系圖:在in_clk的上升沿,緩沖FIFO寫入一個外界數(shù)據(jù)xn,在該個in_clk的上升沿余下一個in_clk的上升沿之間,F(xiàn)IFO中的數(shù)據(jù)經(jīng)過out_clk時鐘將FIFO中的N個數(shù)據(jù)讀出倒下一個模塊進行運算。由以上關(guān)系可以得出,out

15、_clk的頻率必須是in_clk頻率的N倍。當Reset信號有效時,F(xiàn)IFO被清零,并且讀寫指針都指向首地址。coe-ROM讀時鐘與FIFO讀時鐘的時序關(guān)系圖:由于從緩沖FIFO中取出的數(shù)需要和FIR濾波器的系數(shù)相乘,所以ROM時鐘必須要和FIFO讀時鐘同步,才能在下一個模塊中進行MAC運算。當Reset系號有效時,ROM指針指向首地址。MAC單元系統(tǒng)運算時鐘與移位時鐘的時序關(guān)系圖:在MAC單元的設計中,采用的是串行乘法器,由于系數(shù)被量化成27-bit,所以移位寄存器的時鐘頻率必須是累加器頻率的27倍,才能夠完成一次MAC運算。累計器中存儲的數(shù)據(jù)不僅要在reset 信號的作用下被清零,而且要在

16、下一個數(shù)據(jù)xn輸入FIFO進行下一個yn的數(shù)出之前必須被清零。由于三個運算單元存在事實上的前后關(guān)系,所以這些關(guān)系必須要從時序上體現(xiàn)出來,這和采樣時間密切相關(guān)。系統(tǒng)在實際運行的過程中,先將外界的一個信號xn采樣進來,然后將數(shù)據(jù)FIFO的鏡像相加,最后將和數(shù)與系數(shù)ROM一起送到MAC單元移位相乘。由此也就決定了,采樣時間最優(yōu)先,緊接著是FIFO的“鏡像相加”,然后緊接著是MAC單元的移位相乘。在以上的時序關(guān)系圖中正好體現(xiàn)了這個特點:當reset 信號變?yōu)闊o效以后的緊接著的上升沿中(圖中前面3個采樣點),將數(shù)據(jù)采樣并壓入FIFO中,并且執(zhí)行FIFO的鏡像相加。由于相加時鐘和采樣時鐘同步,若使用加計數(shù)

17、器(用來作為FIFO讀指針),第一次是讀首單元。由于使用非阻塞賦值(=),所以并沒有把這次的xn讀出來,而讀出的是上一次存在FIFO中的xn!所以應該采用減計數(shù)器,“鏡像相加”操作從xn-(N/2-1) + xn-N/2開始,這就是為什么要采用減計數(shù)器的原因。當每一次“鏡像相加”操作完成后,就應該是MAC單元的移位相乘,它必須緊接著“鏡像相加”操作,它并不能在西一個上升沿采樣,這樣會讓最后的一個bit無法進行移位操作,所以移位相乘的采樣時間被安排到,緊接著的下一個上升沿。在shift_clk的上升沿采樣,并且僅當acc_clear信號有效時,MAC中的累加器執(zhí)行一次清零操作,表示本次的整個yn

18、以運算完畢。ModelSim 仿真ctrl_cell模塊仿真:當reset信號有效時(reset=0),將所有的時鐘信號清零(mac_clk=0 / in_clk=0);當reset信號有效時,使得所有的時鐘信號開始工作。此時當mac_clk的上升沿出現(xiàn)時,開始進行FIFO和ROM的數(shù)據(jù)讀出,并送入MAC單元進行下一步的處理。在MAC中,由于乘法器是采用的移位累加器來實現(xiàn)的,所以必須先要將外面的數(shù)據(jù)寫入以后才能開始進行移位累加運算。由于MAC-cell中的Booth-Multiplier是下降沿時鐘有效,但是我們看到,由于reset信號的失效時刻到再次有效與系數(shù)采樣時鐘 (mac_clk) 之

19、間有一個base_clk空操作信號,所以這會產(chǎn)生錯位移位運算!這里采用“動態(tài)鎖死”技術(shù)【DynamicCapture】來防止信號出現(xiàn)上面的錯位移位運算。當時使用該技術(shù)后,產(chǎn)生一個新的全局清零信號:reset_d。有上圖可以看出,如果用reset_d作為時鐘清零信號,第一個有效base_clk信號都將會緊接著出現(xiàn)在第一個有效mac_clk信號之后,這樣就防止了信號的錯位運算。該圖為上述時鐘模塊的全局仿真圖,clear信號為MAC中累加器的清零信號(并非毛刺!這可以在第一幅圖中很清楚地看到)。coe_cell模塊仿真:“index”為外界地址指針輸入,它為ROM提供地址單元信號??梢钥闯鲈凇眎nd

20、ex”信號的作用下,F(xiàn)IR濾波器的悉數(shù)被一個一個地“讀”出來(圖中的coe_out信號)。fifo_data 模塊仿真該仿真中可以看到,外界向FIFO中寫數(shù)據(jù)xn,并且讀指針”index”才開始工作對FIFO進行一次循環(huán)取數(shù),即當”index”每一次不同的取值,都要從FIFO中讀一次數(shù)據(jù)”data_out”。由于在”in_clk”第一次寫入的數(shù)據(jù)為”000000”由于第一次寫入的數(shù)據(jù)為”000000”,所以第一次讀出的數(shù)據(jù)為”000000+000000=000000”。第二次寫入的數(shù)據(jù)為”00198e”。 由于第二次寫入的數(shù)據(jù)為”00198e”,所以第二次讀出的數(shù)據(jù)為”00198e+000000=00198e”。第三次寫入的數(shù)據(jù)為”0032db”。然后緊接著讀出:”000000+000000=000000”。第三次讀出的數(shù)據(jù)為”0032db+000000=0032db”和”00198e+000000=00198e”。第四次寫入的數(shù)據(jù)為”004b

溫馨提示

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

評論

0/150

提交評論