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