基于FPGA的音頻處理芯片的設(shè)計
y(n)=2-1(...2-1(2-1(2-1u1+u2)+u3)+...)+u16)
uj=xj(1)+ xj(2)+……+ xj(rj)
其中1≤j≤16, xj(i)∈{x(n-k)}, 1≤i≤rj
由前面的系數(shù),可以得到:
U1 = x(n-6)-x(n-7); U2 = -x(n)+x(n-5);
U3 = -x(n-3)-x(n-7); U4 = x(n)+x(n-4);
U5 = -x(n-1)-x(n-6); U6 = -x(n-2);
U7 = x(n)+x(n-5); U8 = x(n-3)-x(n-4)+x(n-7);
U5 = -x(n-1)-x(n-6); U10 = 0;
U11 = x(n-5); U12 = x(n-2)-x(n-4);
U13 = x(n-1)+x(n-3); U14 = -x(n)-x(n-2);
U15 = x(n-1); U16 = x(n);
按照這個算法,先求U1的值,然后將結(jié)果右移一位,再將結(jié)果與U2的值相加,依此類推,即可得到y(tǒng)(n)。我們使用若干次加法和16次移位操作即可完成FIR濾波,算法的復雜度和功耗都大大地降低。
3 音頻處理芯片的設(shè)計
3.1 結(jié)構(gòu)概述
在整個音頻處理芯片的結(jié)構(gòu)中,我們沒有采用任何乘法器,取而代之的是一個加法器和移位器。加法器的結(jié)果輸出到移位器,移位器的輸出再反饋到加法器的輸入端,循環(huán)運算實現(xiàn)濾波器的功能。
考慮7階的FIR濾波器,需要對x進行8次采樣,所以輸入的數(shù)據(jù)都應該保存在一個8*16的DataRAM之中(16bit的采樣精度)。系數(shù)RAM(ProgramRAM)的大小取決于操作的個數(shù),在上面提到的算法中,一共有28個操作,所以ProgramRAM的大小不能小于28,在這里我們使用了一個32*6的ProgramRAM,以滿足算法需要。
考慮到音頻處理芯片的可擴展性,我們在音頻處理芯片外設(shè)置一個EEPROM用來存放系數(shù),當芯片啟動的時候,從EEPROM中將數(shù)據(jù)轉(zhuǎn)存到ProgramRAM中,以適應不同F(xiàn)IR濾波器的系數(shù),極大地增強了音頻處理芯片的可編程性。
音頻處理芯片的模塊主要包括EEPROM, ProgramRAM, DataRAM,串并轉(zhuǎn)換模塊,并串轉(zhuǎn)換模塊,地址生成模塊,主控制器模塊。
3.2 尋址方式描述
在系統(tǒng)啟動時,附加的EEPROM儲存的系統(tǒng)參數(shù)值,包括輸入信號在DataRAM中的地址值和相應的標志位(32*6bit) ,依次讀入ProgramRAM中去。
評論