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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 用FPGA實現(xiàn)音頻采樣率的轉(zhuǎn)換

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

          作者: 時間:2010-02-26 來源:網(wǎng)絡(luò) 收藏

          顯然,用實現(xiàn)頻率的器存在以下問題:

          1. 算法問題:

          a. 可能的最高信噪比

          b. 原始信號所載信息的可能最小變化

          c. 算法的有效描述,因為中的資源消耗在很大程度上取決于描述的質(zhì)量

          d. 量化

          2. 實現(xiàn)問題:

          a. 邏輯正確的算法實現(xiàn)

          b. 資源限制

          c. 速度優(yōu)化實現(xiàn)

          d. 延遲

          需要較高的時鐘速度,因為具體實現(xiàn)取決于對信號的足夠過采樣。FPGA系統(tǒng)時鐘頻率與待轉(zhuǎn)換信號的頻率差異必須相應(yīng)較大。

          FDA 工具可幫助生成和驗證各種FIR和IIR濾波器。該工具是Simulink信號處理工具箱的組成部分,Synplify DSP就是使用此工具箱實現(xiàn)濾波器結(jié)構(gòu)

          對于CD質(zhì)量的信號,還要求信噪比不得低于100dB。專業(yè)應(yīng)用甚至需要大于 120dB的信號。就信號質(zhì)量而言,其他低頻信號(如控制電路算法)遠不如音頻信號那樣苛刻。

          算法

          多相FIR濾波器結(jié)構(gòu)需要轉(zhuǎn)換(異步重采樣)。算法包括兩步,第一步是頻率過采樣,第二步是線性插值,這是從給定頻率生成不同頻率時需要的。這兩個頻率相互異步。

          以單步方式進行信號重采樣所需資源較多,因為濾波器會較復(fù)雜。這種實現(xiàn)需要數(shù)百萬次乘法運算。這樣的描述效率很低的,應(yīng)當(dāng)加以避免。如果線性插值在第二步實現(xiàn),那么結(jié)構(gòu)就會簡單得多(圖3)。

          3.jpg
          圖3:分兩步實現(xiàn)轉(zhuǎn)換器(一、過采樣;二、線性插值)以提高效率。

          高效地描述過采樣(第一步)是讓 FPGA實現(xiàn)節(jié)省資源的唯一方法。如果用若干級聯(lián)級而非單一運算步驟來實現(xiàn)這部分電路,所需運算數(shù)量就會大大減少。

          在算法實現(xiàn)時,必須確定執(zhí)行運算的目標架構(gòu)(DSP或FPGA)。與具有固定架構(gòu)的數(shù)字信號處理器不同,F(xiàn)PGA可實現(xiàn)任何架構(gòu)。不過,當(dāng)實現(xiàn)大量單獨的乘法運算時,F(xiàn)PGA最終會受到器件尺寸的限制。

          所需乘法器的數(shù)量將隨著濾波器抽頭的增加而增加。每個抽頭都需要使用一個DSP模塊或乘法器。當(dāng)級聯(lián)重采樣電路時,各濾波器必須執(zhí)行復(fù)雜程度很低的功能。從理論上講,單獨的級越多,濾波器的實現(xiàn)就越好。



          關(guān)鍵詞: FPGA 音頻 采樣率 轉(zhuǎn)換

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();