在占用極低資源的情況下輕松創(chuàng)建適合在DSP48E1Slice或邏輯中實現(xiàn)的高階多相IIR濾波器。
設(shè)計人員常常為自己的應(yīng)用選擇有限脈沖響應(yīng)(FIR)濾波器,因為此類濾波器易于理解掌握且得到出色的設(shè)計與IP實現(xiàn)工具的支持。賽靈思FIR編譯器是一種用于將MATLAB?生成的系數(shù)映射到DSP和FPGA邏輯資源中的理想工具。不過在大幅降低FPGA資源占用的情況下設(shè)計出能夠滿足特定濾波規(guī)范要求的無限脈沖響應(yīng)(IIR)濾波器是可行的。選用IIR濾波器的主要弊端就是使用設(shè)計工具時需要掌握一些專業(yè)知識,通常后續(xù)還需要手動編寫RTL代碼。不過只要您完成濾波器的架構(gòu)設(shè)計并以定點方式表達出來,利用像賽靈思System Generator這樣的新型工具就能自動為您生成HDL。賽靈思的一篇相關(guān)白皮書中全面介紹了各種傳統(tǒng)IIR濾波器[1]。
現(xiàn)在我們來了解一下如何在占用極低FPGA資源的情況下實現(xiàn)高性能多相IIR濾波器。這些濾波器結(jié)構(gòu)特點在于NK+1階的濾波器僅用K次相乘就能實現(xiàn)。此類濾波器對系數(shù)量化敏感度低,故可有效地以定點方式實現(xiàn)。此外濾波器級上任何節(jié)點的最大增益都是有界的,即中間計算只需要1位余量。這里我們提供的是一種通用架構(gòu),適合于實現(xiàn)流水線化并映射到賽靈思7系列器件中的DSP48E1Slice中。該架構(gòu)包括一定數(shù)量的無乘法器五階橢圓濾波器設(shè)計,適合在少量FPGA邏輯片中高效完成多相插值和抽取處理。
MATLAB能夠?qū)IR濾波器設(shè)計分解成較低階級聯(lián)。這種較低階級聯(lián)與直接實現(xiàn)高階差分方程的做法相比,擁有更加理想的數(shù)值特性。一般來說低階濾波器選用的是二階雙象限段(SOS),其采用的是直接型1結(jié)構(gòu)。每個SOS需要完成四次相乘、三次相加和部分舍入,以減少進入級聯(lián)中用于下一個濾波器的位寬。對于定點實現(xiàn)一般還需要增加一個乘法器來實現(xiàn)段間縮放。
不過級聯(lián)分解法對插值器或者抽取器來說并非是一種有效的架構(gòu),因為它沒有發(fā)揮多相分解的作用。例如在插值過程中,在將輸入數(shù)據(jù)應(yīng)用到濾波器之前,需要先在樣本之間插入N-1個零,實現(xiàn)輸入數(shù)據(jù)上采樣并將輸入采樣率提高到與輸出采樣率相等。但級聯(lián)IIR濾波器由于每個SOS內(nèi)存在的反饋路徑,就無法通過插入零來降低計算量。
用于多相分解的IIR濾波器
本文介紹的濾波器采用圖1中所示的并聯(lián)濾波器分解架構(gòu)。在并聯(lián)方式下,每個分支上的濾波器依次比上一分支多延遲1。此外每個分支中的濾波器限制為N帶。每個分支的延遲數(shù)由輸入/輸出采樣率決定,但每個An(zN)濾波器的項只涉及z-N冪數(shù),就是說差分方程式只對每第N個輸入/輸出樣本進行計算,而對之間的全部樣本忽略不計。
傳輸函數(shù)為被延遲的N帶全通濾波器An(zN)之和。即:
此外還可以把每一個全通濾波器表達為基本全通段的級聯(lián),如圖1所示。設(shè)全通段的總段數(shù)為K,則H(z)的階數(shù)為NK+1。即有:
圖1:上面是IIR濾波器的并聯(lián)形式;下面是由級聯(lián)的基本濾波器組成的每個分支。
圖2是在直接型1中實現(xiàn)的基本全通段。它由兩個N-樣本延遲元和一個單系數(shù)乘法器組成。除了便于使用標(biāo)準(zhǔn)的乘法器,使用直接型1還有其他優(yōu)勢。它能夠高效地映射到DSPSlice中并在級聯(lián)條件下共享延遲資源。
圖2:基本全通段
插值和抽取
這種濾波器架構(gòu)可以自然地映射為圖3所示的抽取和插值結(jié)構(gòu)中。這里用換向開關(guān)在更高采樣率下切換到每個樣本,取代了圖1中所采用的延遲元。
對隔N插值和抽取的操作,我們既可以圍繞圖3提供的理想結(jié)構(gòu)開展設(shè)計,也可以設(shè)計由質(zhì)因數(shù)采樣率轉(zhuǎn)換組成的級聯(lián)。分解為質(zhì)因數(shù)[2]可以簡化系數(shù)優(yōu)化問題,因為自由變量的數(shù)量較少,且得到的濾波器級聯(lián)十分接近理想狀態(tài)。在許多應(yīng)用中,需要的采樣率轉(zhuǎn)換為2的冪,可通過反復(fù)隔2插值或抽取來實現(xiàn)。為不失普遍性,我們先來驗證N=2時的特例。
根據(jù)圖3所示,N=2時低通濾波器總階數(shù)為5,雖然它由兩個二階全通段和一個延遲元組成。現(xiàn)在應(yīng)該明確的是,與使用SOS實現(xiàn)該五階IIR濾波器所需的十個乘法器和八個加法器相比,在理想情況下本例只需要兩個乘法器和五個加法器。如果考慮到是隔2抽取,即對每個輸入樣本只有一個分支處于活躍狀態(tài),那么還可以有更大程度的節(jié)省。這相當(dāng)于把輸入序列分為兩個半采樣率序列,分別為奇次樣本和偶次樣本。然后將這些樣本應(yīng)用到全通分支并加總。此外每個基本段內(nèi)的延遲元可以在較低速率下運行 ,從而讓存儲需求減半。這個設(shè)計可以高效地實現(xiàn)流水線化并映射到一個DSPSlice,因為兩個分支的輸出濾波器可使用外部加法器進行累加。所以實現(xiàn)一個如圖4所示的五階隔2抽取IIR濾波器,只需要一個DSP48E1Slice。插值也存在類似的情況,由每個分支濾波器依次提供一個交織器的的樣本。另外,支持隔2插值也只需要一個DSPSlice。
A、B、C、D和P端口依據(jù)賽靈思7系列命名法[3]。您可以級聯(lián)DSPSlice來實現(xiàn)更高階的濾波器,而且由于采用雙分支結(jié)構(gòu),每個分支的流水線延遲相等。需要注意的是因為反饋路徑只能延遲2,需要使用三個內(nèi)部寄存器的DSPSlice無法完全實現(xiàn)流水線化且。與在輸入端寄存相比,使用M寄存器可以在更高頻率下運行且功耗更小。當(dāng)N=3或者更大的數(shù)時,既可以采用讓DSPSlice在最大頻率下運行的做法,也可以采用讓DSPSlice最大限度地實現(xiàn)流水線化的做法。后者可以通過讓濾波器在雙通道TDM模式下工作來實現(xiàn),此時延遲元數(shù)量翻倍,A輸入反饋路徑使用Slice中的寄存器A1和A2,這樣C輸入之前的延遲就從3增加到5。
圖3:抽?。ㄗ髨D)與插值(右圖)
圖4:隔2抽取,映射到賽靈思DSP48E1
量化和裕量
此類N帶結(jié)構(gòu)已被命名為波數(shù)字濾波器(WDF),因為它們可以模擬經(jīng)典模擬濾波器中的雙端無損梯形網(wǎng)絡(luò)。文獻中對此類含有橢圓響應(yīng)的濾波器設(shè)計有全面的介紹。這種設(shè)計與用于模擬、數(shù)字域間轉(zhuǎn)換的雙線性變換相結(jié)合,為設(shè)計數(shù)字橢圓濾波器和巴特沃斯濾波器提供了有力的方法。使用梯形濾波器的另一個優(yōu)勢在于此類結(jié)構(gòu)沿襲了對系數(shù)量化低敏感度的特性。這意味著要在不含劣化等紋波特性的情況下實現(xiàn)能滿足100dB阻帶需求的濾波器,系數(shù)使用18位的字長度綽綽有余。對基本段[4]穩(wěn)態(tài)增益特性的分析,發(fā)現(xiàn)增益最低的算術(shù)節(jié)點的最大增益為2.0,且發(fā)生在預(yù)加法器的輸出處。這對定點設(shè)計而言有著顯著的意義,因為它意味著我們只需要在預(yù)加法器輸出增加1位即可。在賽靈思DSP48E1Slice內(nèi)的預(yù)加法器輸出沒有飽和邏輯存在,故將A和D的輸出限制為24位可以防止濾波器的運行發(fā)生數(shù)字溢出,以及更為重要的是,讓運行達到DSPSlice的最大內(nèi)部精度。雖然穩(wěn)態(tài)增益被限制在2.0,階梯響應(yīng)下的瞬態(tài)會超過2.0,因此建議只使用23位,為安全運行留出裕量。對某些數(shù)據(jù)源,比如說24位音樂而言,您可利用預(yù)先知曉的信號特性,應(yīng)用完全的動態(tài)范圍。
如果輸入數(shù)據(jù)不足24位,應(yīng)在字中左對齊,因此會產(chǎn)生部分分數(shù)位。例如,對于16位輸入數(shù)據(jù)而言,理想的選擇是留出1位保護位、16位數(shù)據(jù)位和7位分數(shù)位。與浮點相比,一般只需要3到4位分數(shù)位就足以實現(xiàn)理想的精度。
圖5:滿足相同阻帶(左圖)和通帶(右圖)規(guī)范的21階FIR濾波器和五階WDF
生成濾波器系數(shù)
R.A. Valenzuela和A.G. Constantinides[5]的專著中已充分介紹了采用雙分支結(jié)構(gòu)實現(xiàn)為任何階數(shù)橢圓濾波器生成系數(shù)的方法。圖5所示的是一種標(biāo)準(zhǔn)化通帶為0.125的五階(兩個系數(shù)a0=0.1380,a1=0.5847)WDF濾波器,與使用帕克斯-麥克萊倫算法設(shè)計的22抽頭FIR濾波器相比,它能夠滿足相同的通帶紋波和阻帶衰減指標(biāo)。結(jié)果表明濾波器階數(shù)通常下降到原來的1/4,且與FIR所用的11個乘法器相比(考慮對稱因素),WDF只需要兩個乘法器。
在半帶WDF中,阻帶和通帶紋波并非互不相干。不過通過合理設(shè)置阻帶衰減就能得到可忽略不計的通帶紋波。例如圖5中的濾波器的通帶紋波為10-6dB。FIR的優(yōu)勢在于能夠單獨設(shè)定這兩個設(shè)計參數(shù),這樣在給定階數(shù)的情況下,可以設(shè)定較高的通帶紋波來幫助滿足阻帶需求。
接下來我們來驗證一下如果不使用DSP48E1,而是通過高度量化系數(shù)在部分LE中實現(xiàn)濾波器情況會得到什么?;仡櫼幌?,由于WDF濾波器以模擬梯形濾波器原型為基礎(chǔ),那么針對特定的通帶我們應(yīng)該能夠找到低位密度的系數(shù)。比特 應(yīng)盡量以標(biāo)準(zhǔn)分解方法寫入,從而最大程度地減少加法器的數(shù)量,如表1所示。
表1 - 三種樣本通帶的量化系數(shù)
雖然0.19通帶的五階濾波器的阻帶衰減已經(jīng)不錯了,但是將兩個這樣的濾波器簡單級聯(lián)就可以得到阻帶為-78dB的10階濾波器。例如表1中的第一個抽取器可以用圖6中給出的少許幾行Verilog代碼來實現(xiàn)。
圖6:實現(xiàn)表1中第一個抽取濾波器的Verilog代碼
有效資源
我們已經(jīng)展示了自然而然映射到插值和抽取中的IIR濾波器構(gòu)建。該結(jié)構(gòu)比IIR二階段甚至FIR都擁有更多有效資源。它能充分映射到DSP48E1Slice的預(yù)加法器/乘法器/后加法器中,且對于18位系數(shù)的定點量化效應(yīng)十分穩(wěn)健,從而給出可控制的100dB阻帶。一些無乘法器五階設(shè)計可允許用于特定通帶寬,可將其映射到一些邏輯寄存器和加法器中以降低DSP資源占用。
參考文獻:
1. 賽靈思白皮書WP330,《賽靈思FPGA中的無限脈沖響應(yīng)濾波器結(jié)構(gòu)》,2009年8月;
2. 作者:P.P. Vaidyanathan,《多速率系統(tǒng)和濾波器組》,Prentice-Hall出版社,紐約州Englewood Cliffs,1993年;
3. 《賽靈思7系列DSP48E1 Slice用戶指南》,1.5版本,2013年4月3日;
4. 作者:Artur Krukowski,Richard Morling,Izzet Kale,《多相位N路徑IIR結(jié)構(gòu)量化效應(yīng)》,IEEE儀器測量匯刊,第51卷第6號,2002年12月;
5. 作者:R.A. Valenzuela和A.G. Constantinides,《高效率插值抽取數(shù)字信號處理方案》,電子電路和系統(tǒng),IEEE會議記錄第G部分第130卷第6號,1983年。
評論