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