利用可編程邏輯器件設(shè)計(jì)有限沖激響應(yīng)濾波器
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 引 言
一個(gè)模擬集成運(yùn)算放大器可實(shí)現(xiàn)一個(gè)二階濾波器,高階濾波器可由二階濾波器串聯(lián)而成。然而,無源元器件實(shí)現(xiàn)濾波器的誤差值為1.5%或更高,這需要提高元器件的性能。濾波器的典型的調(diào)試方法是不斷的更換元器件值。而且,運(yùn)算放大器要獲得高的增益帶寬,需要相位漂移保持最小或要保持閉環(huán)系統(tǒng)的穩(wěn)定,這必然增加工程中實(shí)現(xiàn)濾波器的難度。
隨著數(shù)字信號(hào)處理的發(fā)展,數(shù)字濾波器比傳統(tǒng)的模擬濾波器在設(shè)計(jì)的選擇中更有吸引力。因?yàn)閿?shù)字系統(tǒng)的信號(hào)是數(shù)字量,他相對(duì)于模擬濾波器更容易進(jìn)行濾波代數(shù)運(yùn)算。而且,數(shù)字濾波器沒有模擬濾波器隨時(shí)間、溫度、電壓漂移的優(yōu)點(diǎn)。他能很容易地實(shí)現(xiàn)過濾低頻信號(hào)的設(shè)計(jì)目的。還有,數(shù)字濾波器能實(shí)現(xiàn)近似的理想響應(yīng)和線性的相位。
2 幾種數(shù)字濾波器算法
有許多好的方法確定濾波器的算法。首先,設(shè)計(jì)人員估計(jì)要設(shè)計(jì)的濾波器的性能,由傳遞函數(shù)實(shí)現(xiàn)。連續(xù)時(shí)間域的傳遞函數(shù)變換成離散時(shí)間域的線性差分方程,這個(gè)差分方程在Z域的通式如下:
這是沖激傳遞函數(shù)方程。他實(shí)際是連續(xù)時(shí)間域的濾波器的單位沖激響應(yīng)在Z域的變換式。相反,濾波器的沖激響應(yīng)是Z域的單位沖激函數(shù)的反變換。系數(shù)an和bn決定數(shù)字濾波器的響應(yīng)。改變系數(shù)就能改變?yōu)V波器的響應(yīng)。Z一n和Z一m項(xiàng)表示分支的延遲或鎖存。G(Z)方程表示對(duì)輸入信號(hào)進(jìn)行代數(shù)運(yùn)算。輸入信號(hào)與do相乘加上采樣值與dl的乘積再加上采樣值與d:的乘積,如此類推。當(dāng)所有N項(xiàng)完成乘積與累加運(yùn)算,則就計(jì)算出了輸出值。同時(shí),輸出值被鎖存,分別與b0,b1,b2,…,bm系數(shù)相乘,然后把乘積累加起來,再與原輸出的累加值相加得出最終的輸出值。這個(gè)過程稱作回旋。一個(gè)輸出值由每個(gè)輸入值計(jì)算而得。
設(shè)定濾波器的系數(shù)是設(shè)計(jì)濾波器的關(guān)鍵,因?yàn)樗茉O(shè)計(jì)出預(yù)計(jì)的頻率響應(yīng)。遞歸數(shù)字濾波器或無限沖激響應(yīng)濾波器(Infinite Impactive Reaction,IIR)是設(shè)計(jì)研究方法和模擬濾波器最相近似的典型數(shù)字濾波器。
一種確定系數(shù)的方法是先確定一個(gè)能在連續(xù)時(shí)間域?qū)崿F(xiàn)Chebyshev,Butterworth或等紋波的濾波器,然后用Z變換把連續(xù)時(shí)間域的傳遞函數(shù)轉(zhuǎn)化為離散時(shí)間域的傳遞函數(shù),這樣濾波器系數(shù)就可確定。
第二個(gè)常用方法是使用雙邊變換。這個(gè)方法的步驟是工程師先設(shè)計(jì)一個(gè)模擬濾波器,這是為了將來轉(zhuǎn)變數(shù)字濾波器;設(shè)計(jì)的模擬濾波器滿足要求的數(shù)字濾波器的性能指標(biāo);這個(gè)模擬濾波器經(jīng)過5變量的拉普拉斯變換再經(jīng)Z變量的Z變換就轉(zhuǎn)換成了數(shù)字濾波器。
第三種方法稱為Parks-McCcllean法。在這個(gè)方法中,帶通濾波器和帶阻濾波器的邊緣和階數(shù)是確定的。沖激響應(yīng)系數(shù)被系統(tǒng)修改以便在每個(gè)近似的帶通中獲得一個(gè)等紋波性能。使用這種方法,濾波器在階數(shù)方面不是很先進(jìn)。因而需有一個(gè)捷徑來確定濾波器的階數(shù),且這個(gè)捷徑能減少通過使用方程來確定一個(gè)滿足性能指標(biāo)的階數(shù)。 有限沖激響應(yīng)濾波器和無限沖激響應(yīng)濾波器都有各自的優(yōu)點(diǎn)和缺點(diǎn)。有限沖激響應(yīng)濾波器的性能穩(wěn)定,因?yàn)樗麤]有輸出反饋量且沖激響應(yīng)是有限的;他的幅度和相位是任意設(shè)定的。另一方面,有限沖激響應(yīng)濾波器通常需要數(shù)量較多的分支抽頭。因而,輸出值需經(jīng)大量的代數(shù)運(yùn)算。他的設(shè)計(jì)方法與模擬濾波器的設(shè)計(jì)方法不相近似。無限沖激響應(yīng)濾波器需要很少的系數(shù),但要輸出反饋使得電路變得復(fù)雜。如果由于數(shù)字運(yùn)算誤差不能選擇適當(dāng)?shù)南禂?shù),穩(wěn)定的無限沖激響應(yīng)濾波器變得不穩(wěn)定。 在設(shè)計(jì)數(shù)字濾波器中產(chǎn)生的4種主要誤差,他們都是量化誤差:
?、佥斎胄盘?hào)的模數(shù)轉(zhuǎn)換量化誤差;
?、谙禂?shù)的量化誤差;
?、塾捎跀?shù)字運(yùn)算,包括溢出產(chǎn)生的量化誤差;
?、苡邢扪h(huán)量化誤差。
有各種各樣的計(jì)算機(jī)軟件幫助工程師設(shè)計(jì)濾波器,如美國亞特蘭大信號(hào)處理公司的設(shè)計(jì)軟件DFDP。
3 利用可編程邏輯器件設(shè)計(jì)有限沖激響應(yīng)濾波器
圖1為利用可編程邏輯器件設(shè)計(jì)有限沖激響應(yīng)濾波器的功能模塊圖。
為了有高的性能和較強(qiáng)的靈活性,在濾波器的設(shè)計(jì)中使用可編程邏輯器件。有限的參數(shù)將進(jìn)行乘法/累加的運(yùn)算,分支抽頭將占用硬件大量的物理空間。電路設(shè)計(jì)使用一個(gè)工作速度為85ns的單口16b乘法/累加器,這個(gè)器件可工作在雙數(shù)運(yùn)算狀態(tài)和飽和輸出能力。由于器件的微碼基礎(chǔ)使得他很容易被可編程邏輯器件控制。
首先,系統(tǒng)必須把N(N=64)個(gè)采樣值裝入隊(duì)列FIFO(在反饋發(fā)生之前),否則隊(duì)列就裝不滿。計(jì)數(shù)器在20RAl0中正常工作。一個(gè)6b異步計(jì)數(shù)器使用4b。SMP-DN隨時(shí)鐘工作(模數(shù)轉(zhuǎn)換器完成采樣值轉(zhuǎn)換),最高的2b作為紋波計(jì)數(shù)器。SMP_DN信號(hào)由20RAl0產(chǎn)生,但由模數(shù)轉(zhuǎn)換器觸發(fā)。
當(dāng)計(jì)數(shù)器的計(jì)數(shù)值為63時(shí),樣本值已被保存在移位/保持寄存器中;GO信號(hào)變?yōu)檎妫到y(tǒng)開始濾波算法運(yùn)算。系統(tǒng)與2個(gè)異步的子系統(tǒng)相聯(lián)(模數(shù)轉(zhuǎn)換器、乘法/累加器),兩者之間必有一個(gè)異步接口。20RAl0用于產(chǎn)生接口信號(hào)SMP/CON(采樣模式和轉(zhuǎn)換模式)。這個(gè)引腳為高電平,系統(tǒng)為采樣模式(SMP/CON=1)。當(dāng)GO為真且模數(shù)轉(zhuǎn)換器的時(shí)鐘為下降沿時(shí),則SMP/CON為低電平(與MCLK異步,與SCLK同步)。因?yàn)镾MP/CON信號(hào)作為狀態(tài)機(jī)的輸入,器件可能遇到抖動(dòng)輸入。Lattice公司的可編程邏輯器件有很高的工作速度,他的去抖動(dòng)輸入能力較強(qiáng)。由于去抖動(dòng)技術(shù)的應(yīng)用,使得數(shù)據(jù)丟失的狀態(tài)的概率變得很小。因而狀態(tài)機(jī)不得不等待,至多等一個(gè)MCLK周期再開始變換。當(dāng)變換開始,把采樣值裝入乘法/累加器;然后,把系數(shù)裝入乘法/累加器進(jìn)行乘法累加運(yùn)算,直到N個(gè)采樣值都完成運(yùn)算。這時(shí)輸出有效,循環(huán)可重新開始。這個(gè)過程可用有8個(gè)狀態(tài)的狀態(tài)機(jī)來表示。
狀態(tài)機(jī)根據(jù)代碼狀態(tài)的正確與否來控制乘法/累加器的狀態(tài)變化。2個(gè)輸出使能信號(hào)XOE和YOE-MCDN控制是否把數(shù)據(jù)裝入乘法/累加器。CON_DN信號(hào)表示N個(gè)采樣值已轉(zhuǎn)換完成。為了使?fàn)顟B(tài)位(XOE,YOE_MCDN,CON_DN)產(chǎn)生輸出,使用了狀態(tài)變量(SEBIT)。如果狀態(tài)變量為被使用,那是不允許有2個(gè)狀態(tài)位被強(qiáng)行置為相同的狀態(tài)。在設(shè)計(jì)中利用Lattice公司的可編程邏輯器件上電復(fù)位功能,在高電平后寄存器被置為0,精心設(shè)計(jì)的狀態(tài)機(jī)處于開始狀態(tài)。
除了重新開始置數(shù)階段,每時(shí)每刻都產(chǎn)生SMP_DN信號(hào)(采樣值進(jìn)行模數(shù)轉(zhuǎn)換)。當(dāng)SHIT_IN信號(hào)置位時(shí)采樣值從移位/保持寄存器移入隊(duì)列。每當(dāng)XOE置位時(shí)一個(gè)系數(shù)裝入乘法/累加器。開始轉(zhuǎn)換的第一個(gè)XOE信號(hào)在開始置數(shù)或采樣模位式移人隊(duì)列階段一直保持到新的數(shù)據(jù)裝入移位/保持寄存器。跟下來的XOE信號(hào)是YOE_MCDN信號(hào)(Y輸出使能信號(hào)和乘法/累加器使能信號(hào))。YOE_MCDN控制隊(duì)列數(shù)據(jù)輸出和數(shù)據(jù)裝入移位/寄存器的并行操作。接著一個(gè)采樣信號(hào)從隊(duì)列中移出。這時(shí)下一個(gè)數(shù)據(jù)移人移位/保持寄存器的XOE已準(zhǔn)備好了,系統(tǒng)如此循環(huán)。直到SMP/CON信號(hào)變?yōu)椴蓸幽J剑碌牟蓸又当灰迫艘莆唬3旨拇嫫鳎h(huán)又重新開始。SMP/CON信號(hào)輸入到狀態(tài)機(jī),允許系統(tǒng)重新開始循環(huán)。這個(gè)控制信號(hào)由模式控制器產(chǎn)生。當(dāng)轉(zhuǎn)換結(jié)束時(shí)用TC來指示(終點(diǎn)計(jì)數(shù)值)。TC信號(hào)由6b系數(shù)計(jì)數(shù)器產(chǎn)生,當(dāng)計(jì)數(shù)值為63時(shí)TC信號(hào)有效,他說明所有的64個(gè)采樣值已完成運(yùn)算。ORDY信號(hào)由隊(duì)列產(chǎn)生。他告訴狀態(tài)機(jī)隊(duì)列中的采樣值是有效的。狀態(tài)機(jī)不斷地把系數(shù)送入乘法/累加器直到ORDY信號(hào)為真。這時(shí)狀態(tài)機(jī)將會(huì)轉(zhuǎn)向下一個(gè)狀態(tài)。如果乘法/累加器的循環(huán)時(shí)間不超過隊(duì)列的使用時(shí)間,狀態(tài)機(jī)認(rèn)為這是輸入狀態(tài)ORDY信號(hào)將會(huì)一直為真。
改變乘法/累加器的指令只須簡單地改變輸出不同值的變量的代碼。如果使用了E2CMOS器件,可方便地再編程和放回電路中。由Lattice公司出品的E2CMOS的22V10就是用于這種用途的可重復(fù)編程的器件。
雙64BX8b的隊(duì)列器件用于濾波器的分支抽頭。隊(duì)列裝入N個(gè)采樣值。這個(gè)采樣值被移出隊(duì)列移進(jìn)乘法/累加器進(jìn)行處理,同時(shí)這個(gè)采樣值也保存在移位/保持寄存器中然后移回到隊(duì)列中下一個(gè)被移人乘法/累加器進(jìn)行處理的采樣值的前面。在所有的N個(gè)采樣值都被處理完,舊的采樣值被移出隊(duì)列,新的經(jīng)模數(shù)轉(zhuǎn)換的采樣值被裝入隊(duì)列。這時(shí)乘法/累加器輸出一個(gè)濾波器結(jié)果。可編程邏輯器件可作為數(shù)字濾波器與模數(shù)轉(zhuǎn)換器的接口;數(shù)字濾波器的臨時(shí)貯儲(chǔ)器和隊(duì)列的控制器。
移位/保持寄存器可由20V8實(shí)現(xiàn)。在采樣模式(SMP/CON=1),器件的功能為移位寄存器。20V8在模數(shù)轉(zhuǎn)換器的控制下串行輸入數(shù)據(jù),這時(shí)20V8處于保持模式,數(shù)據(jù)不會(huì)丟失。當(dāng)系統(tǒng)進(jìn)人轉(zhuǎn)換模式(SMP/CON=0),數(shù)據(jù)立刻被并行置入移位/保持寄存器。 系數(shù)被保存在用可編程邏輯器件仿制成的ROM中。如果使用E2CMOS器件,濾波器的系數(shù)可很容易的改變只需重編可編程器件。地址計(jì)數(shù)器用于獲得系數(shù)的正確次序。因?yàn)?4抽頭需要64個(gè)系數(shù),64個(gè)系數(shù)只需6b地址。6b系數(shù)地址計(jì)數(shù)器可在22V10中完成。6b系數(shù)地址計(jì)數(shù)器是由計(jì)數(shù)使能信號(hào)控制的同步計(jì)數(shù)器。他的時(shí)鐘與乘法/累加器的時(shí)鐘信號(hào)同步。計(jì)數(shù)器的使能端與乘法/累加器的XOE相聯(lián)。因而計(jì)數(shù)器只有在一個(gè)系數(shù)移入乘法/累加器時(shí)才計(jì)一次數(shù)。當(dāng)計(jì)數(shù)值達(dá)到63時(shí)TC信號(hào)變?yōu)檎?,說明64個(gè)系數(shù)已運(yùn)算完。復(fù)位端變?yōu)楦唠娖?,?jì)數(shù)器又處于已知的開始狀態(tài)。
剩下的4個(gè)邏輯微單元用于產(chǎn)生隊(duì)列的控制信號(hào),這些信號(hào)是異步的。信號(hào)由系統(tǒng)是否處于開始置數(shù)、采樣、轉(zhuǎn)換--包括移入、移出和移位/保持寄存器的時(shí)鐘信號(hào)的產(chǎn)生的狀態(tài)決定。當(dāng)轉(zhuǎn)換開始,狀態(tài)機(jī)設(shè)置CONV_DN和MCLK信號(hào),SMP/CON被MCLK信號(hào)同步置位。這些信號(hào)使得移位/保持寄存器的時(shí)鐘信號(hào)CLKIN產(chǎn)生變化,寄存器在模數(shù)轉(zhuǎn)換器的控制下移入有效的采樣值。
4 一個(gè)具體的有限沖激響應(yīng)濾波器
系統(tǒng)需要133個(gè)MCLK完成一次循環(huán)轉(zhuǎn)換。使用11.7MHz的時(shí)鐘,這個(gè)過程需要花費(fèi)約11.4μs。系統(tǒng)的模數(shù)轉(zhuǎn)換器通過一個(gè)串行口輸人數(shù)據(jù)到移位/保持寄存器需花費(fèi)3.3μs。系統(tǒng)采樣輸入信號(hào)的周期為11.4+3.3=14.7μs或頻率68kHz。奈奎斯特(Nyquist)定理說一個(gè)信號(hào)要高于他的2倍采樣信號(hào)采樣才能保持信號(hào)信息的完整性。因而一個(gè)信號(hào)被濾波則系統(tǒng)器件的工作頻率為34 kHz。使用ASPI公司的軟件,運(yùn)用Parks-McCcllean方法設(shè)計(jì)濾波器。他的中心頻率為20kHz,帶寬為5 kHz,傳輸區(qū)域從2kHz開始,如圖2所示。
由于使用了可編程邏輯器件,使得上述系統(tǒng)有限沖激響應(yīng)濾波器很容易改為無限沖激響應(yīng)濾波器。在新的采樣值輸入進(jìn)隊(duì)列之前,最終的輸出值被送會(huì)隊(duì)列。如果提高系統(tǒng)的性能,要使用存儲(chǔ)容量更大的隊(duì)列器件和速度更快的乘法/累加器。因?yàn)槭褂昧怂俣葹?5ns的可編程邏輯器件,所以這些器件不再是限制因素。如果使用并行模數(shù)轉(zhuǎn)換器,64BX8b隊(duì)列器件和45ns的乘法/保持累加器;系統(tǒng)不經(jīng)很大改動(dòng)就可達(dá)到167kHz的工作頻率。