<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 用FPGA實現(xiàn)音頻采樣率的轉換

          用FPGA實現(xiàn)音頻采樣率的轉換

          作者: 時間:2010-02-26 來源:網絡 收藏

          減少運算次數之方法的數學推導在技術文獻中已有廣泛論述。實踐結果表明,盡管有必要級聯(lián)濾波器電路,但必須對級聯(lián)的數數加以限制。如果使用級聯(lián)級數過多,就可能超過實現(xiàn)設計的可用資源。如果用作為目標架構,實踐證明兩級電路最好。

          整個電路由用于過采樣的兩個相對簡單的濾波器和一個簡單的線性插值器組成。這種結構可以有效地映射到

          設計實現(xiàn)

          可以在Simulink中用Synplify DSP模塊集和Simulink的濾波器設計與分析(FDA)工具實現(xiàn)該電路。FDA工具可幫助生成和驗證各種FIR和IIR濾波器。該工具是Simulink信號處理工具箱的組成部分,Synplify DSP就是使用此工具箱實現(xiàn)濾波器結構。

          Synplify DSP模塊集或FDA工具提供的所有電路元件在PortIN和PortOUT描述之間都有定義,它們能夠生成VHDL或Verilog代碼。 Simulink模塊集中的FFT和SCOPE元件對動態(tài)響應進行頻譜分析和驗證。這些模塊專門用于功能驗證,包括浮點到定點功能(量化)。這些模塊都不用硬件實現(xiàn)。

          算法實現(xiàn)的第一部分包括兩個FIR濾波器:第一個濾波器有512個抽頭,第二個濾波器有6?個抽頭。因此,由過采樣生成的RTL代碼共含有576個乘法運算,這正是使用顯得并不具有商業(yè)可行性的原因。這么大的FPGA會受到成本制約,因為需要用到有 6?0個DSP48模塊的特大型Xilinx Virtex-5 XC5VSX95T器件。

          未映射到專用硬件結構(DSP模塊)的所有乘法運算都必須用通用邏輯資源(LUT或寄存器)構建。這樣會導致資源要求上升而最高時鐘速度下降。與通用邏輯單元相比,專用的DSP48模塊作為乘法器會有效得多(圖4)。

          4.jpg
          圖4:用Simulink的濾波器設計與分析(FDA)工具實現(xiàn)濾波器。

          設計優(yōu)化

          Synplify DSP的折疊選項可用來盡量減少所用乘法器的數量。在低采樣頻率下工作的電路尤其可從這一優(yōu)化中受益。

          其原理很簡單。通常,每個乘法運算使用一個硬件乘法器,即使對于千赫級采樣頻率也是如此。然而,F(xiàn)PGA能以數百兆赫級的時鐘速度工作。如果硬件乘法器在FPGA的系統(tǒng)頻率下工作,就可以用時間多路復用過程按時序處理乘法運算。

          假設電路的采樣頻率是3MHz,而FPGA最高可以在120MHz頻率下運行。如果以系統(tǒng)頻率運行乘法器,則每個硬件乘法器可以執(zhí)行40次運算。此時所需硬件可以減少40倍。也就是說可以將上述器(或使用低采樣頻率的任何其他電路)“折疊”到僅需要很少硬件乘法器的程度。所以,也可以在現(xiàn)有最小的低成本FPGA中實現(xiàn)這種器,從而真正取代DSP。

          當然,還可能將計算量特別大的算法從DSP卸載到FPGA,從而減輕處理器的負荷。如果您的DSP應用已經超過性能極限,而且您已經為針對特定DSP架構的應用源代碼作出大量投入,那么這種方法尤其有用(圖5)。

          5.jpg
          圖5:可以用折疊功能顯著減少所需的FPGA資源。



          關鍵詞: FPGA 音頻 采樣率 轉換

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();