引言
本文介紹在ADSP-TS20x TigerSHARC®處理器上執(zhí)行一個2階16-bit IIR濾波,利用了直接型II。
濾波器結構
2階濾波器的結構見圖1。可以通過若干個2階濾波器的級聯(lián)或并聯(lián)達到高于2階的濾波。這樣的濾波器的階數(shù)是2的倍數(shù)。做一個奇數(shù)階數(shù)的濾波器需要一個1階濾波器和一個或幾個2階濾波器。 列表3中的示例代碼沒有包括這一點。
圖1 2階直接型II
下面的方程式1描述了這種類型的濾波器結構。
方程式1 描述2階直接型II IIR第一個分子系數(shù)( b0)總設為1,這樣需要將輸 入x[i]除以b0,b1和b2再除以b0。示例中即如是做法,見下面的列表1。
執(zhí)行
以流水線方式執(zhí)行一個小的遞歸運算是個困難的問題。這個濾波器中W[i]的值取決于W[i-1]。這種前后依賴限制了流水線操作的程度。在這個程序中,所有用來產(chǎn)生w[i] 和 y[i]的乘法運算都在單個周期中計算。然而,把部分結果再送入輸入,累加得到最終的結果需要5個周期。這期間乘法器處于空閑狀態(tài),結果造成程序只利用了一個計算單元。由于用于管理延遲線(還有內(nèi)存裝。┑牟僮饔ALU完成,因此要在每個指令行中插入多個指令槽也是個問題。上面提到,可以通過并連2階濾波器得到高階濾波器。這樣就可以同時在兩個計算區(qū)塊計算兩個濾波輸出,最后累加得到這些結果的和。這2個要素的狀態(tài)存儲在寄存器yR5中,在每次遞歸運算中,每個新得到的w[i]先被插入狀態(tài)寄存器,再進行左移位操作。由于延遲線是重疊的,因而可以執(zhí)行一個如圖2所示的上的4個乘法運算。
圖2 延遲線和系數(shù)的乘法部分結果由Sideways Summation指令得到。如果系數(shù)既有分數(shù)又有整數(shù),那么這4-way乘法必須分成兩個獨立的乘法分別運算,同時會降低效率。因為使用了SDAB(短型字數(shù)據(jù)隊列緩存),每次調(diào)用就要載入8個16-bit字,而僅需使用第一個字。因為內(nèi)存帶寬不是瓶頸,所以這種對載入字的看似浪費的處理方法卻是合適的。
接口
本例中講述的C類型的濾波器原型見下面的列
附錄
附錄為示例文件的匯編源代碼。
完整文檔請百度云盤下載:鏈接:http://pan.baidu.com/s/1geiopX5 密碼:zmla
ADI DSP任何問題,可聯(lián)系OP的QQ:5516164,郵箱:sale@openadsp.com
|