基于FPGA的音頻處理芯片的設計
1 引言
隨著數字技術日益廣泛的應用,以現場可編程門陣列FPGA(Field Programmable Gate Array)[1]為代表的ASIC[2]器件得到了迅速的普及和發(fā)展,器件的集成度和速度都在高速增長。FPGA既具有門陣列的高邏輯密度和高可靠性,又具有可編程邏輯器件的用戶可編程性,可以減少系統(tǒng)的設計和維護的風險,降低產品成本,縮短設計周期。
目前,信號處理技術、通信技術和多媒體技術的迅猛發(fā)展都得益于DSP[3]技術的廣泛應用。但是對于便攜式和家用的語音系統(tǒng)而言,基于一般的DSP芯片的設計方案并不理想。首先DSP的芯片成本以及開發(fā)成本在現階段仍然是比較高的,尤其是芯片成本,遠遠不及大批量ASIC芯片成本之低。其次便攜式的設備對體積要求十分苛刻,限制了一部分DSP芯片的使用,而體積正是ASIC芯片的優(yōu)點之一。
本文提出了一種基于FPGA的音頻處理芯片的硬件電路實現方案。由于對FIR濾波器的算法進行了改良,所以很大程度上減小了芯片的體積和降低了芯片的功耗。
2 算法研究與改良
2.1 普通FIR濾波算法
N階FIR濾波器可以用下面的線性卷積表示:[4]
x(n)是輸入的音頻序列,而y(n)是經過濾波后輸出的音頻序列,h(k)是N階濾波器的系數。
簡單的實現這個算法,需要N+1次的乘法和N次的加法。所以至少需要一個硬件乘法器和一個定點或者浮點加法器來實現這個功能。由于音頻處理芯片只需要做線性卷積,所以我們不需要采用乘法器的結構。一般來說,由于乘法器龐大的結構,占用了芯片上的大部分面積,消耗用了大部分功率。而不使用乘法器的結構將會節(jié)約可觀的芯片面積和功耗。為了實現這種結構,我們需要改良FIR濾波算法。
2.2 改良濾波算法
首先,將濾波的系數h(k)用二進制表示法(POT,Power of Two)表示:
例如:h(k)=0.1172=2-3-2-7-2-16
我們給出7階濾波器的一組系數,使用POT表示(精度小于10-4):
h(0) = 0.3761 = 2-1-2-3+2-10+2-13-2-15
h(1) = 0.3083 = 2-2+2-4-2-8-2-12
h(2) = -0.9424*10-1 = -2-3+2-5-2-11
h(3) = 0.6439*10-1 = 2-4+2-9-2-14
h(4) = -0.3308*10-1 = -2-5-2-9+2-13
h(5) = 0.1663*10-1 = 2-6+2-10+2-15
h(6) = -0.4135*10-2 = -2-8-2-12+2-16
h(7) = 0.1877*10-2 = 2-9-2-14-2-16
n=7時濾波器的輸出值y如下:
y = (2-1-2-3+2-10+2-13-2-15) * x(7)
+(2-2+2-4-2-8-2-12) * x(6)
+(-2-3+2-5-2-11) * x(5)
+(2-4+2-9-2-14) * x(4)
+(-2-5-2-9+2-13) * x(3)
+(2-6+2-10+2-15) * x(2)
+(-2-8-2-12+2-16) * x(1)
+(2-9-2-14-2-16) * x(0)
很明顯,x(n)的系數全部都是2的負k次冪,所以我們可以把具有相同系數的x(n)合并起來。
評論