用FPGA實(shí)現(xiàn)FIR濾波器
基礎(chǔ)和主要參數(shù)
也許你在聽(tīng)FIR濾波器課時(shí)不夠?qū)W?。這里做一個(gè)快速的復(fù)習(xí),最簡(jiǎn)單的形式是, FIR 濾波器的輸出 y(n)是求采樣數(shù)據(jù)x(n) 的N個(gè)輸入的平均值。 存儲(chǔ)的每個(gè)采樣稱(chēng)為抽頭。 當(dāng)然大多數(shù)設(shè)計(jì)都比這個(gè)復(fù)雜, 要提供優(yōu)化的濾波器 特性,要用系數(shù)乘 每個(gè)抽頭, 或者對(duì) h(i) 進(jìn)行加權(quán)。
本文引用地址:http://2s4d.com/article/201706/349407.htm
圖1 典型的FIR濾波器結(jié)構(gòu)(完全并行)
用于FIR濾波器的主要參數(shù)是通帶、阻帶、阻帶衰減和通帶波紋。對(duì)于某些應(yīng)用,阻帶波紋也許是重要的和規(guī)定的。然而對(duì)大多數(shù)應(yīng)用,阻帶衰減是適當(dāng)?shù)?。還有輸入采樣率,以及與輸入數(shù)據(jù)分辨率一起的所要求的輸出采樣率。
圖2 低通濾波器規(guī)范
你也許只是接受任務(wù),而由你自己選擇設(shè)計(jì)規(guī)范。當(dāng)然應(yīng)用項(xiàng)目定義了許多規(guī)范。這里有一些指導(dǎo)意見(jiàn),幫助你縮小各種可能性,評(píng)估權(quán)衡設(shè)計(jì)。
通常通帶越接近阻帶,設(shè)計(jì)就越具挑戰(zhàn)性。同樣,指定通帶很低的波紋,或者很高的阻帶衰減增加了設(shè)計(jì)的復(fù)雜性。必須牢記,指定波紋和衰減為數(shù)據(jù)的分辨率,你必須滿足設(shè)計(jì)要求。指定衰減的要點(diǎn)是小于輸入數(shù)據(jù)的最低位。同樣在滿標(biāo)度中指定小于1位的通帶波紋是不必要的。如同其它的濾波器,F(xiàn)IR濾波器可構(gòu)成低通、高通和帶通濾波器。
表1 數(shù)據(jù)寬度相對(duì)于阻帶衰減和通帶波紋
輸入至輸出的采樣率也會(huì)影響你的設(shè)計(jì)。在簡(jiǎn)單的設(shè)計(jì)中,輸入速率和輸出速率是相等的。然而,在許多低通濾波器設(shè)計(jì)中,輸出以輸入的速率運(yùn)行是不經(jīng)濟(jì)的,因?yàn)閭鬏斝畔⒉灰蟾叩妮敵雎?。取十分之一速率的FIR是合適的。其它要求較高輸出率的設(shè)計(jì),則采樣內(nèi)插FIR。
進(jìn)行設(shè)計(jì)
選擇FIR濾波器的系數(shù)有兩種方法。Parks-McClellan方法(執(zhí)行Remez算法)和進(jìn)行沖擊響應(yīng)的窗口操作。窗口方法依賴(lài)于一個(gè)事實(shí),要求頻率響應(yīng)的離散Fourier反變換代表FIR濾波器的系數(shù)。理想的頻率響應(yīng)用作起始點(diǎn),于是應(yīng)用窗功能減少系數(shù)的數(shù)目,成形頻率響應(yīng)。通用的窗功能包括矩形、三角、Hanning、Hamming、Kaiser 和Blackman。
沒(méi)有必要對(duì)數(shù)學(xué)進(jìn)行深究,有許多免費(fèi)的低成本工具幫助你進(jìn)行設(shè)計(jì)。如果使用MATLAB,MathWorks有各種工具可用于FIR設(shè)計(jì)。如果你不用這些包,用Internet搜索“FIR濾波器設(shè)計(jì)工具”將展現(xiàn)一些免費(fèi)的低成本工具。
首先應(yīng)做出采用哪種設(shè)計(jì)方法的決策。大多數(shù)設(shè)計(jì)者采用Park-McClellan 方法,因?yàn)樵O(shè)計(jì)輸入是濾波器的要求,這個(gè)方法通常滿足具有最少抽頭的濾波器要求。假設(shè)采用這個(gè)方法,你可以簡(jiǎn)便地把要求輸入至所選的工具中。大多數(shù)設(shè)計(jì)工具會(huì)給出頻率響應(yīng)、沖擊響應(yīng)和濾波器系數(shù)。如果選擇窗口方法,只要做些實(shí)驗(yàn)。要輸入截止頻率、窗口方法和抽頭數(shù)目至設(shè)計(jì)工具。于是設(shè)計(jì)工具會(huì)給出頻率響應(yīng)。如果頻率響應(yīng)不是你所要的,你可以改變輸入?yún)?shù)和迭代過(guò)程。
因此,你已經(jīng)用設(shè)計(jì)工具產(chǎn)生了系數(shù),檢驗(yàn)了頻率響應(yīng)。那么現(xiàn)在是否可以移開(kāi)這個(gè)工具,而在FPGA中實(shí)現(xiàn)這個(gè)設(shè)計(jì)呢?并非如此,還要考慮一些事情。首先要確定頻率響應(yīng),數(shù)據(jù)不是無(wú)限精確的。大多數(shù)設(shè)計(jì)工具讓你定義一個(gè)量化級(jí)別并觀察結(jié)果。倘若級(jí)別的精度是合理的,那就不需要做改動(dòng)。然而,最好是現(xiàn)在發(fā)現(xiàn)這些問(wèn)題而不是在實(shí)驗(yàn)室。下一步是研究其它的濾波器設(shè)計(jì),諸如Lth帶(或者Nyquist)濾波器,這些濾波器大約有一半的系數(shù)設(shè)置為0,因此減少了數(shù)學(xué)上的復(fù)雜性。
在FPGA中實(shí)現(xiàn)設(shè)計(jì)
你設(shè)置了系數(shù)之后,現(xiàn)在打算在FPGA中實(shí)現(xiàn)這個(gè)設(shè)計(jì)。再次要做出若干決定。首先是選擇實(shí)現(xiàn)乘法器單元的方法,決定它們能運(yùn)行多快。通常有兩個(gè)選擇:用在FPGA內(nèi)實(shí)現(xiàn)邏輯的查找表(LUT)來(lái)實(shí)現(xiàn)乘法器,或者用FPGA內(nèi)的專(zhuān)用的DSP單元。為了說(shuō)明這些選擇,考慮LatticeECP2 FPGA系列,在這個(gè)FPGA內(nèi)用sysDSP塊實(shí)現(xiàn)一個(gè)18x18乘法器不占用LUT,運(yùn)行速度高于400MHz。用LUT完成相同的功能其性能大約是100MHz,并要占用許多LUT。專(zhuān)門(mén)的DSP塊擁有高速并使用少的LUT,通常選擇這個(gè)方法,除非你保留DSP塊準(zhǔn)備留作它用。
圖4 LatticeECP2 sysDSP塊
接下來(lái)要做的事是決定使用多少個(gè)乘法器。對(duì)于最快的速度,乘法器的數(shù)目等于FIR濾波器中抽頭的數(shù)目。這種類(lèi)型的濾波器完全用并行形式來(lái)實(shí)現(xiàn)。然而在許多情況下,并不需要性能的級(jí)別,允許乘法器時(shí)間共享。一種快速計(jì)算揭示了使用的乘法器的數(shù)目。首先做一個(gè)簡(jiǎn)化,以采樣率除速度,你認(rèn)為適中的復(fù)雜設(shè)計(jì)可以運(yùn)行于所選的FPGA,然后對(duì)這個(gè)數(shù)進(jìn)行四舍五入至最接近的整數(shù)。通過(guò)這個(gè)計(jì)算因子,可以減少乘法器的數(shù)目。作為一個(gè)例子,假設(shè)要在LatticeECP2 FPGA中實(shí)現(xiàn)12個(gè)抽頭,75MSPS,12位的濾波器。用這個(gè)器件,300MHz的濾波器比較容易實(shí)現(xiàn),減少因子為4,需要3個(gè)乘法器。
在做出最后決定之前,要考慮最終的實(shí)現(xiàn)。例如,使用Lattice提供的FIR產(chǎn)生器,這個(gè)工具用sysDSP塊內(nèi)的加法樹(shù)實(shí)現(xiàn)FIR濾波器。因?yàn)檫@個(gè)加法樹(shù)的范圍是4個(gè)乘法器,沒(méi)有有效的資源與指定的3個(gè)乘法器聯(lián)系在一起。此外,如果指定了4個(gè)乘法器,設(shè)計(jì)要求的工作速度會(huì)略有降低。
表2 最大采樣率對(duì)比用于12個(gè)抽頭濾波器的乘法器
現(xiàn)在有了系數(shù),乘法器實(shí)現(xiàn)的方法,以及知道需要多少個(gè)乘法器。許多供應(yīng)商,包括Lattice提供自動(dòng)產(chǎn)生FIR的工具。最后一步是把系數(shù)輸入工具,指定乘法器的數(shù)目。產(chǎn)生濾波器之后要進(jìn)行時(shí)序分析,確定是否假設(shè)的速度是正確的。在使用的例子中,工具報(bào)告了350MHz的最大速度,高于假設(shè)的300MHz。如果速度非常接近,你應(yīng)該進(jìn)行調(diào)整并再試。
評(píng)論