用FPGA實(shí)現(xiàn)音頻采樣率的轉(zhuǎn)換
因?yàn)镾ynplify DSP中的折疊功能還支持多速率系統(tǒng),所以與只有一種采樣頻率的系統(tǒng)相比,您可以進(jìn)一步減少所需乘法器的數(shù)量。過采樣使用兩個(gè)FIR濾波器完成。這兩個(gè)濾波器以不同的采樣頻率運(yùn)行。以較高采樣頻率運(yùn)行的濾波器可以用您指定的折疊系數(shù)進(jìn)行折疊。
以較低采樣頻率運(yùn)行的濾波器用相對(duì)較高的系數(shù)折疊。獲得此系數(shù)的方法是用兩個(gè)濾波器的采樣頻率之差乘以折疊系數(shù)。例如,如果一個(gè)濾波器的采樣頻率是另一濾波器的8倍,則較快的濾波器用系數(shù) 8折疊,而較慢的濾波器用系數(shù)6?折疊。
這樣甚至可能生成以通常不能折疊的很高采樣率運(yùn)行的空間優(yōu)化電路。例如,如果系統(tǒng)以 200MHz采樣率運(yùn)行并使用折疊系數(shù)2,那么系統(tǒng)頻率就可以提高到400MHz。
您還可以將折疊系數(shù)定義為1。以最高采樣率運(yùn)行的電路元件不折疊。但是,以較低采樣頻率運(yùn)行的多速率系統(tǒng)的所有電路元件都可從折疊和空間優(yōu)化實(shí)現(xiàn)中受益。您只需將系統(tǒng)作為整體為其定義折疊系數(shù)即可。然后,折疊會(huì)自動(dòng)傳播到所有采樣頻率。
可以把折疊功能與另一優(yōu)化功能-重定時(shí)功能結(jié)合起來使用。如果系統(tǒng)不滿足目標(biāo)頻率要求,可以增加流水線級(jí)數(shù),直到獲得所需速率。這種做法對(duì)于使用高折疊系數(shù)的電路尤為重要,因?yàn)檫@類電路需要以相對(duì)較高的系統(tǒng)速度工作。
您還可以為折疊很少或沒有折疊的電路使用重定時(shí),除非已經(jīng)達(dá)到FPGA的性能極限。可以通過增加流水線級(jí)數(shù)來減少兩個(gè)寄存器之間組合邏輯門的數(shù)量(邏輯級(jí)數(shù)),這樣可以提高系統(tǒng)時(shí)鐘速度。
在生成RTL代碼時(shí),Synplify DSP工具將進(jìn)行時(shí)序分析,它會(huì)考慮所需的采樣頻率、折疊系數(shù)和FPGA的目標(biāo)架構(gòu)。例如,與在較慢的低成本Spartan-3A DSP FPGA中實(shí)現(xiàn)的完全相同的電路相比,可以使用較少的流水線級(jí)數(shù)優(yōu)化映射到快速Virtex-5 FPGA的電路。
可以用 FPGA提供的大量寄存器進(jìn)行這種優(yōu)化。寄存器可以大量使用,不像乘法器或LUT(查找表)那樣很快會(huì)用光,這意味著可以使用寄存器輕而易舉的顯著提高系統(tǒng)時(shí)鐘速度。
當(dāng)然,增加流水線級(jí)數(shù)會(huì)增加系統(tǒng)延遲。例如,如果使用重定時(shí)系數(shù)8,計(jì)算結(jié)果就會(huì)遲8個(gè)系統(tǒng)時(shí)鐘周期(不是采樣頻率周期)出現(xiàn)在FPGA的輸出上。向系統(tǒng)中嵌入電路時(shí)必須考慮到這一點(diǎn)(圖6)。
圖6:可以使用重定時(shí)功能為電路定義允許的最大延遲。然后由Synplify DSP自動(dòng)增加流水線級(jí)數(shù),直到獲得所需頻率。
特別重要的是,務(wù)必確保上述優(yōu)化不會(huì)影響Simulink中描述的原始MATLAB模型。通過驗(yàn)證可以對(duì)算法進(jìn)行鑒定,并且對(duì)量化效應(yīng)的影響予以表述。Synplify DSP軟件模塊集允許使用截?cái)?去除無關(guān)位)、四舍五入(在下溢情況下)或飽和(在上溢情況下)進(jìn)行從浮點(diǎn)到定點(diǎn)的轉(zhuǎn)換。一旦仿真顯示算法工作正常,即可生成RTL代碼。優(yōu)化VHDL或Verilog代碼可能改變延遲,但不會(huì)改變電路的操作。
本文小結(jié)
Synplify DSP工具基于MathWorks公司推出的行業(yè)標(biāo)準(zhǔn)MATLAB/Simulink軟件。模塊集提供的標(biāo)準(zhǔn)元件庫(kù)可用于實(shí)現(xiàn)復(fù)雜算法。除了加法、增益和延遲等基本元件,該庫(kù)還包含F(xiàn)IR或IIR濾波器等許多復(fù)雜功能和CORDIC算法。所有功能(包括高度復(fù)雜的FFT或Viterbi解碼器)均可任意參數(shù)化。還可以創(chuàng)建用戶定義庫(kù),或者將現(xiàn)有的VHDL或Verilog代碼集成到Simulink模型中。
用Synplify DSP可以實(shí)現(xiàn)單速率和多速率系統(tǒng)。使用折疊、多通道化或重定時(shí)功能可以針對(duì)尺寸或速度優(yōu)化代碼。生成的RTL代碼都是未加密的通用代碼,可以使用常用工具進(jìn)行綜合。
為了用FPGA取得最佳結(jié)果,Synplicity推薦使用Synplify Pro綜合工具。目前針對(duì)ASIC的開發(fā)環(huán)境也已經(jīng)推出。
評(píng)論