用FPGA實(shí)現(xiàn)音頻采樣率的轉(zhuǎn)換
減少運(yùn)算次數(shù)之方法的數(shù)學(xué)推導(dǎo)在技術(shù)文獻(xiàn)中已有廣泛論述。實(shí)踐結(jié)果表明,盡管有必要級(jí)聯(lián)濾波器電路,但必須對(duì)級(jí)聯(lián)的數(shù)數(shù)加以限制。如果使用級(jí)聯(lián)級(jí)數(shù)過多,就可能超過實(shí)現(xiàn)設(shè)計(jì)的可用資源。如果用FPGA作為目標(biāo)架構(gòu),實(shí)踐證明兩級(jí)電路最好。
整個(gè)電路由用于過采樣的兩個(gè)相對(duì)簡單的濾波器和一個(gè)簡單的線性插值器組成。這種結(jié)構(gòu)可以有效地映射到FPGA。
設(shè)計(jì)實(shí)現(xiàn)
可以在Simulink中用Synplify DSP模塊集和Simulink的濾波器設(shè)計(jì)與分析(FDA)工具實(shí)現(xiàn)該電路。FDA工具可幫助生成和驗(yàn)證各種FIR和IIR濾波器。該工具是Simulink信號(hào)處理工具箱的組成部分,Synplify DSP就是使用此工具箱實(shí)現(xiàn)濾波器結(jié)構(gòu)。
Synplify DSP模塊集或FDA工具提供的所有電路元件在PortIN和PortOUT描述之間都有定義,它們能夠生成VHDL或Verilog代碼。 Simulink模塊集中的FFT和SCOPE元件對(duì)動(dòng)態(tài)響應(yīng)進(jìn)行頻譜分析和驗(yàn)證。這些模塊專門用于功能驗(yàn)證,包括浮點(diǎn)到定點(diǎn)轉(zhuǎn)換功能(量化)。這些模塊都不用硬件實(shí)現(xiàn)。
算法實(shí)現(xiàn)的第一部分包括兩個(gè)FIR濾波器:第一個(gè)濾波器有512個(gè)抽頭,第二個(gè)濾波器有6?個(gè)抽頭。因此,由過采樣生成的RTL代碼共含有576個(gè)乘法運(yùn)算,這正是使用FPGA顯得并不具有商業(yè)可行性的原因。這么大的FPGA會(huì)受到成本制約,因?yàn)樾枰玫接?6?0個(gè)DSP48模塊的特大型Xilinx Virtex-5 XC5VSX95T器件。
未映射到專用硬件結(jié)構(gòu)(DSP模塊)的所有乘法運(yùn)算都必須用通用邏輯資源(LUT或寄存器)構(gòu)建。這樣會(huì)導(dǎo)致資源要求上升而最高時(shí)鐘速度下降。與通用邏輯單元相比,專用的DSP48模塊作為乘法器會(huì)有效得多(圖4)。
圖4:用Simulink的濾波器設(shè)計(jì)與分析(FDA)工具實(shí)現(xiàn)濾波器。
設(shè)計(jì)優(yōu)化
Synplify DSP的折疊選項(xiàng)可用來盡量減少所用乘法器的數(shù)量。在低采樣頻率下工作的電路尤其可從這一優(yōu)化中受益。
其原理很簡單。通常,每個(gè)乘法運(yùn)算使用一個(gè)硬件乘法器,即使對(duì)于千赫級(jí)采樣頻率也是如此。然而,F(xiàn)PGA能以數(shù)百兆赫級(jí)的時(shí)鐘速度工作。如果硬件乘法器在FPGA的系統(tǒng)頻率下工作,就可以用時(shí)間多路復(fù)用過程按時(shí)序處理乘法運(yùn)算。
假設(shè)電路的采樣頻率是3MHz,而FPGA最高可以在120MHz頻率下運(yùn)行。如果以系統(tǒng)頻率運(yùn)行乘法器,則每個(gè)硬件乘法器可以執(zhí)行40次運(yùn)算。此時(shí)所需硬件可以減少40倍。也就是說可以將上述采樣率轉(zhuǎn)換器(或使用低采樣頻率的任何其他電路)“折疊”到僅需要很少硬件乘法器的程度。所以,也可以在現(xiàn)有最小的低成本FPGA中實(shí)現(xiàn)這種轉(zhuǎn)換器,從而真正取代DSP。
當(dāng)然,還可能將計(jì)算量特別大的算法從DSP卸載到FPGA,從而減輕處理器的負(fù)荷。如果您的DSP應(yīng)用已經(jīng)超過性能極限,而且您已經(jīng)為針對(duì)特定DSP架構(gòu)的應(yīng)用源代碼作出大量投入,那么這種方法尤其有用(圖5)。
圖5:可以用折疊功能顯著減少所需的FPGA資源。
評(píng)論