《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的音頻處理芯片的設計
基于FPGA的音頻處理芯片的設計
摘要: 本文提出了一種基于FPGA的音頻處理芯片的硬件電路實現方案。由于對FIR濾波器的算法進行了改良,所以很大程度上減小了芯片的體積和降低了芯片的功耗。
關鍵詞: FPGA 音頻處理 EEPROM
Abstract:
Key words :

  1 引言

  隨著數字技術日益廣泛的應用,以現場可編程門陣列FPGA(Field Programmable Gate Array)[1]為代表的ASIC[2]器件得到了迅速的普及和發展,器件的集成度和速度都在高速增長。FPGA既具有門陣列的高邏輯密度和高可靠性,又具有可編程邏輯器件的用戶可編程性,可以減少系統的設計和維護的風險,降低產品成本,縮短設計周期。

  目前,信號處理技術、通信技術和多媒體技術的迅猛發展都得益于DSP[3]技術的廣泛應用。但是對于便攜式和家用的語音系統而言,基于一般的DSP芯片的設計方案并不理想。首先DSP的芯片成本以及開發成本在現階段仍然是比較高的,尤其是芯片成本,遠遠不及大批量ASIC芯片成本之低。其次便攜式的設備對體積要求十分苛刻,限制了一部分DSP芯片的使用,而體積正是ASIC芯片的優點之一。

  本文提出了一種基于FPGA的音頻處理芯片的硬件電路實現方案。由于對FIR濾波器的算法進行了改良,所以很大程度上減小了芯片的體積和降低了芯片的功耗。

  2 算法研究與改良

  2.1 普通FIR濾波算法

  N階FIR濾波器可以用下面的線性卷積表示:[4]
普通FIR濾波算法

  x(n)是輸入的音頻序列,而y(n)是經過濾波后輸出的音頻序列,h(k)是N階濾波器的系數。

  簡單的實現這個算法,需要N+1次的乘法和N次的加法。所以至少需要一個硬件乘法器和一個定點或者浮點加法器來實現這個功能。由于音頻處理芯片只需要做線性卷積,所以我們不需要采用乘法器的結構。一般來說,由于乘法器龐大的結構,占用了芯片上的大部分面積,消耗用了大部分功率。而不使用乘法器的結構將會節約可觀的芯片面積和功耗。為了實現這種結構,我們需要改良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)合并起來。

  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

  由前面的系數,可以得到:

  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的值,然后將結果右移一位,再將結果與U2的值相加,依此類推,即可得到y(n)。我們使用若干次加法和16次移位操作即可完成FIR濾波,算法的復雜度和功耗都大大地降低。

 

  3 音頻處理芯片的設計

  3.1 結構概述

  在整個音頻處理芯片的結構中,我們沒有采用任何乘法器,取而代之的是一個加法器和移位器。加法器的結果輸出到移位器,移位器的輸出再反饋到加法器的輸入端,循環運算實現濾波器的功能。

  考慮7階的FIR濾波器,需要對x進行8次采樣,所以輸入的數據都應該保存在一個8*16的DataRAM之中(16bit的采樣精度)。系數RAM(ProgramRAM)的大小取決于操作的個數,在上面提到的算法中,一共有28個操作,所以ProgramRAM的大小不能小于28,在這里我們使用了一個32*6的ProgramRAM,以滿足算法需要。

  考慮到音頻處理芯片的可擴展性,我們在音頻處理芯片外設置一個EEPROM用來存放系數,當芯片啟動的時候,從EEPROM中將數據轉存到ProgramRAM中,以適應不同FIR濾波器的系數,極大地增強了音頻處理芯片的可編程性。

  音頻處理芯片的模塊主要包括EEPROM, ProgramRAM, DataRAM,串并轉換模塊,并串轉換模塊,地址生成模塊,主控制器模塊。

  3.2 尋址方式描述

  在系統啟動時,附加的EEPROM儲存的系統參數值,包括輸入信號在DataRAM中的地址值和相應的標志位(32*6bit) ,依次讀入ProgramRAM中去。

  其中,Zero,Sign,Shift分別為操作控制

  Zero表示不加任何操作數

  Sign表示加上負的操作數

  Shift表示移位操作

  而Virtual Address表示操作數的虛擬地址。

尋址方式描述

  Base Address總是指向DataRAM中最早寫入的值所在的地址,也就是x(n-7)的地址,而Virtual Address其他值相對于x(n-7)的地址,所以可以得出操作數在DataRAM中實際的地址:

  Physical Address="BaseAddress"+VirtualAddress

  以y(n)=2-1(...2-1(2-1(2-1u1+u2)+u3)+...)+u16)中的u1為例

  U1 = x(n-6) - x(n-7);

  參數設置:C1= x(n-6)=000001

  C2=-x(n-7)=011000

  ※最低的三位表示存儲地址

  ※第4位表示移位標志,C2(4)為1表示計算出U1以后要右移得到2-1* U1

  ※第5位表示符號位,控制加減運算。C1(5)為0表示加, C2(5)為1表示減

  ※最高位,也就是第6位在Un=0時為1,這里只有C19(6)為1

  3.3 端口描述

 

端口描述

  3.4 模塊設計

  3.4.1 EEPROM [5]

  ·EEPROM用來存儲系統參數

  ·EEPROM是32*6bit的存儲陣列

  ·EEPROM的輸入是Enable,Address(4 downto 0)

  ·EEPROM的輸出是CoeffData(5 downto 0)

  ·EEPROM的首單元存放了操作的個數;例如,首單元存放"011100"表示一共有28個操作。

  3.4.2 ProgramRAM [6]

  ·ProgramRAM接收EEPROM中的系統參數

  ·ProgramRAM是32*6bit的存儲陣列

  ·ProgramRAM的輸入是Write,Read,DataIn(5 downto 0),Address(4 downto 0)

  ·ProgramRAM的輸出是Zero,Sign,Shift,DataAddr(2 downto 0)

  3.4.3串并轉換模塊[7] (Serial2Parallel)

  ·Serial2Parallel接收來自ADC的串行數據、數據時鐘和幀同步信號

  ·Serial2Parallel將串行輸入信號轉化為16bit的并行信號

  ·Serial2Parallel的輸入是DataClk,DataIn,FrameSync

  ·Serial2Parallel的輸出是DataOut(15 downto 0),DataOutSync

  3.4.4并串轉換輸出模塊[7] (Parallel2Serial)

  •Parallel2Serial將并行信號轉化為串行信號

  •Parallel2Serial的輸入是DataIn(15 downto 0),DataClk,FrameSync

  •Parallel2Serial的輸出是DataOut

  3.4.5主控制器模塊(Main Controller)

  ·主控制器模塊是整個設計的核心,它協調控制著其他各個模塊的工作

 

  ·主控制器模塊是根據操作流程圖設計的一個狀態機

  3.4.6 地址生成模塊(AddressGen)

  ·PhysicalAddress實際上是一個加法器,將VirtualAddress與BaseAddress相加產生讀地址

  ·BaseAddress實際上是一個計數器,IncreaseBase信號控制加1,產生寫地址

  ·MUX選擇讀地址或者是寫地址到DataRAM

  4 音頻處理芯片的仿真

  4.1 仿真波形

  4.2 仿真結果

  通過程序,對一組輸入序列進行了仿真結果比較,所獲得的結果如表1所示。

  表1:仿真結果比較

仿真結果比較

  通過表1可以看出音頻處理芯片達到了預期的設計目標,效果良好。

  可以看到,期望值和仿真結果在最后一位會有±1的誤差,這是由于我們采用的移位算法將最后一位移出時不進行四舍五入造成的。經過計算,這種誤差不會影響FIR的精度。

  5 結束語

  本文設計的音頻處理芯片主要實現FIR濾波器功能,可以滿足較為簡單的語音信號處理的需要。用POT系數表示方法來表示系統參數,用一個加法器和一個移位寄存器實現乘法器的功能,這樣在面積功耗上就有相當大的優勢。設計過程是采用自頂向下的設計方法。最終的仿真結果符合預期的要求。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲电影欧美电影有声小说| 亚洲一区二区视频在线观看| 亚洲婷婷在线| 亚洲国产成人av好男人在线观看| 国产亚洲欧美日韩一区二区| 国产精品网站在线观看| 欧美视频精品在线| 欧美激情一区二区三区在线视频| 欧美jizz19hd性欧美| 另类图片综合电影| 美女精品在线| 免费欧美在线视频| 蜜桃久久精品乱码一区二区| 久久一本综合频道| 久久免费一区| 久久一区精品| 免费成人黄色| 欧美经典一区二区三区| 欧美黑人在线观看| 欧美久久99| 欧美日韩在线一区二区| 国产精品v日韩精品| 国产精品久久久久久亚洲毛片| 国产精品久久一卡二卡| 国产精品夜夜夜| 国产亚洲精品高潮| 好吊色欧美一区二区三区四区 | 亚洲成色777777女色窝| 亚洲激情二区| 日韩一级精品| 亚洲综合精品四区| 久久岛国电影| 女人香蕉久久**毛片精品| 欧美精品久久久久a| 欧美日在线观看| 国产精品一区视频网站| 国外视频精品毛片| 亚洲欧洲一区二区天堂久久| 99这里只有精品| 午夜精品一区二区在线观看| 亚洲国内精品在线| 夜夜嗨一区二区三区| 亚洲免费在线电影| 久久精品日产第一区二区| 欧美成人在线免费观看| 欧美日韩欧美一区二区| 国产人成精品一区二区三| 在线观看视频一区二区| 夜夜爽99久久国产综合精品女不卡| 亚洲欧美国产不卡| 91久久久久久国产精品| 亚洲一级在线观看| 久久蜜桃香蕉精品一区二区三区| 欧美高清在线一区二区| 国产精品国产自产拍高清av王其| 国产一区白浆| 日韩一级欧洲| 欧美专区福利在线| 99热免费精品| 久久九九99| 欧美视频一区二区| 黄色成人在线免费| 一区二区三区精品久久久| 久久成人在线| 亚洲一区二区三区色| 久久中文久久字幕| 国产精品久久久亚洲一区| 伊人成人网在线看| 亚洲视频免费看| 亚洲福利专区| 午夜精品久久久久久久99热浪潮| 欧美大片一区二区三区| 国产精品综合| 亚洲日产国产精品| 久久超碰97人人做人人爱| 亚洲午夜激情网站| 欧美a级一区| 国产亚洲欧美一区| 中文av一区特黄| 日韩视频精品| 久久久久久综合| 国产精品高清一区二区三区| 亚洲第一视频| 欧美一区二区三区在线观看视频| 亚洲午夜一区二区三区| 蜜桃av一区二区| 国产日韩综合一区二区性色av| 亚洲精品视频免费| 亚洲黄色天堂| 久久精品欧美| 国产精品一区久久久久| 日韩一区二区电影网| 亚洲欧洲日夜超级视频| 久久精品视频一| 国产精品日韩欧美综合| 99re热精品| 日韩视频免费观看高清在线视频 | 欧美日韩三级一区二区| 在线日韩一区二区| 久久精品国产91精品亚洲| 欧美一级视频| 欧美视频一区二区三区在线观看| 亚洲国产欧美不卡在线观看| 亚洲国产精品v| 久久久夜精品| 国产在线精品成人一区二区三区 | 亚洲视频1区| 欧美片在线观看| 在线精品视频免费观看| 欧美在线视频一区二区| 午夜在线精品| 国产精品久久午夜| 中文在线资源观看网站视频免费不卡 | 亚洲看片网站| 亚洲欧洲一二三| 美女脱光内衣内裤视频久久网站| 国产欧美69| 亚洲欧美www| 午夜精品久久久久久久久久久久 | 亚洲电影激情视频网站| 久久成人这里只有精品| 久久亚洲国产成人| 国际精品欧美精品| 久久国产主播精品| 久久综合狠狠综合久久综青草| 国产在线麻豆精品观看| 欧美影院久久久| 久久午夜电影网| 激情综合网激情| 亚洲片在线资源| 欧美日本成人| 亚洲九九爱视频| 亚洲在线观看视频网站| 国产精品久久久亚洲一区| 亚洲一区二区久久| 欧美中文字幕视频| 国产一区导航| 91久久久久久久久久久久久| 欧美福利网址| 99在线精品观看| 欧美一区午夜精品| 国产一区二区三区在线观看网站| 亚洲第一福利视频| 欧美韩日精品| 一区二区三区蜜桃网| 欧美在线视频一区| 18成人免费观看视频| 99综合电影在线视频| 国产精品久久一级| 欧美专区在线| 欧美精品久久99| 国产精品99久久久久久宅男| 欧美一区日韩一区| 精品福利av| 一区二区不卡在线视频 午夜欧美不卡在| 欧美午夜国产| 亚洲欧美成人在线| 老鸭窝亚洲一区二区三区| 亚洲激情啪啪| 亚洲欧美日韩视频一区| 国产在线拍偷自揄拍精品| 亚洲肉体裸体xxxx137| 欧美视频免费| 久久丁香综合五月国产三级网站| 欧美激情在线狂野欧美精品| 亚洲午夜一区二区| 久久综合五月| 在线视频免费在线观看一区二区| 久久久精品一区二区三区| 亚洲欧洲日本专区| 欧美中文字幕| 91久久精品国产91久久性色tv| 亚洲欧美久久久久一区二区三区| 精品成人乱色一区二区| 亚洲天堂偷拍| 伊人狠狠色丁香综合尤物| 亚洲一区二区三区精品在线观看| 国内久久精品| 亚洲欧美高清| 亚洲激情第一区| 久久精品女人的天堂av| 日韩一区二区免费高清| 久久五月天婷婷| 亚洲一区在线播放| 欧美日本乱大交xxxxx| 欧美永久精品| 欧美午夜激情小视频| 亚洲第一区在线| 国产精品美女久久久久aⅴ国产馆| 91久久综合亚洲鲁鲁五月天| 国产精品永久| 亚洲视频精品| 在线观看国产欧美| 久久激情综合网| 中文日韩电影网站| 欧美另类99xxxxx| 亚洲国产成人在线视频| 国产麻豆成人精品| 亚洲在线网站| 99re8这里有精品热视频免费|