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