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

          新聞中心

          最佳FPGA和專用DSP(05-100)

          —— 最佳FPGA和專用DSP
          作者:益林 時(shí)間:2009-02-19 來(lái)源:電子產(chǎn)品世界 收藏

            視頻和靜止圖像的普遍采用,以及可配置系統(tǒng)(如軟件無(wú)線電)日益增長(zhǎng)的需求繼續(xù)驅(qū)動(dòng)應(yīng)用的擴(kuò)展。很多應(yīng)用需要經(jīng)濟(jì)有效的處理。

          本文引用地址:http://www.ex-cimer.com/article/91405.htm

            雖然定制實(shí)現(xiàn)功能,但在很多應(yīng)用中幾種功能,如FIR(有限脈沖響應(yīng))濾波器,IIR(無(wú)限脈沖響應(yīng))濾波器、FFT(快速傅里葉)和混頻器是共同的。所有這些功能都需要與加、減、累加一起的乘法單元組合。

            FIR濾波器(圖1)存儲(chǔ)n數(shù)據(jù)單元系列,每個(gè)數(shù)據(jù)單元延遲一個(gè)附加周期。通常,這些數(shù)據(jù)單元稱之為分支。每個(gè)分支與系數(shù)相乘,其結(jié)果求和產(chǎn)生輸出。某些方法并行執(zhí)行所有的乘法。更一般的方法是分為N級(jí),用累加器從一級(jí)到下一級(jí)傳遞結(jié)果。這些實(shí)現(xiàn)方法用功能資源換取速度,取N個(gè)計(jì)算級(jí)并需要n/N個(gè)乘法器。根據(jù)系數(shù)是靜態(tài)還是動(dòng)態(tài)以及系數(shù)值設(shè)計(jì),有不少其他通用的設(shè)計(jì)最佳化方法。



            圖1 典型FIR濾波器的實(shí)現(xiàn)

           
           圖2 實(shí)現(xiàn)FFT的Radix-2蝶形方法

            實(shí)現(xiàn)方法

            從圖像壓縮到確定數(shù)據(jù)取樣的頻譜成分,在不同的應(yīng)用中都用FFT。實(shí)現(xiàn)FFT有多種方法。最通用的方法是通用Cooley-Tukey時(shí)間抽取,把FFT分解成若干更小的FFT。最簡(jiǎn)單的實(shí)現(xiàn)方法是用Radix-2蝶形單元(圖2),其輸入數(shù)據(jù)必須傳遞倍數(shù)。這種計(jì)算概念上是簡(jiǎn)單的;然而,圖左邊所有的乘和加是用復(fù)數(shù)計(jì)算的,所需要的乘和加的實(shí)數(shù)是更復(fù)雜的問(wèn)題(如圖右邊所示)。

            IIR濾濾器除引入反饋通路外,它類似于FIR濾波器。這些反饋通路使IIR濾波器的設(shè)計(jì)和分析比FIR更復(fù)雜。然而,對(duì)于相同硅面積,IIR方法可提供更強(qiáng)的濾波器。盡管有幾種IIR結(jié)構(gòu),但是,一種通用的結(jié)構(gòu)是用2階四次方結(jié)構(gòu)(圖3)

            很多應(yīng)用是用混頻器來(lái)變換信號(hào)頻率。概念上,可用單個(gè)乘法器,而在數(shù)字應(yīng)用中,用復(fù)數(shù)形式表示不少優(yōu)點(diǎn)。最一般的形式是信號(hào)表示是為I和Q分量。

            DSP選擇

            做為這些通用功能應(yīng)用,大多數(shù)DSP應(yīng)用的核心是乘、加、減或累加。通用DSP芯片與通用微處理器結(jié)合能有效地實(shí)現(xiàn)這些功能。乘法器數(shù)量通常1~4個(gè),而微處理器通過(guò)乘和其他功能定序通過(guò)的數(shù)據(jù),存儲(chǔ)中間結(jié)果在存儲(chǔ)器或累加器。主要靠提高乘法所用的時(shí)鐘速度來(lái)提高性能。典型時(shí)鐘速度為幾十MHz~1GHz。性能用每秒MMAC(百萬(wàn)乘累加)度量,典型值10~4000。

            需要較佳功能必須并聯(lián)組合多個(gè)DSP引擎。這種方法的主要優(yōu)點(diǎn)是直接實(shí)現(xiàn)用高級(jí)編程語(yǔ)言(如C語(yǔ)言)編寫的算法。

            DSP定向的能在一個(gè)芯片上并行實(shí)現(xiàn)很多功能。通用發(fā)送、邏輯和存儲(chǔ)器資源互連功能、執(zhí)行加法功能、定序和存儲(chǔ)數(shù)據(jù)。某些基本器件僅提供乘法支持,需要用戶建造其他邏輯功能。更復(fù)雜的器件提供加、減和累加功能做為DSP構(gòu)建單元的一部分。通常帶有幾十乘法器單元,可工作在幾百M(fèi)Hz的時(shí)鐘頻率。


            圖3 IIR2階四次方濾波器


            圖4 ECP-DSP框圖

            DSP 選擇

            Altera公司的Cyclone FPGA不包含DSP定向的元件,這使得實(shí)現(xiàn)大的DSP功能而不消耗大量的外部資源變得困難。然而,CycloneII包含乘法器功能,Xilinx公司的SpartanIII FPA家族具有基本的乘法器功能。沒(méi)有DSP功能時(shí),必須消耗大量的FPGA資源來(lái)實(shí)現(xiàn)一般設(shè)計(jì)中的加、減、累加和流水線寄存器。

            Lattice公司專為DSP應(yīng)用設(shè)計(jì)了ECP-DSP器件(圖4)。它含有與4和10個(gè)集成sysDSP單元連接的低成本FPEA結(jié)構(gòu)。sysDSP單元以3個(gè)數(shù)據(jù)通路寬度(9,18和36)支持4個(gè)功能單元。用戶為DSP單元選擇一個(gè)功能單元,然后選擇其操作數(shù)的寬度和類型(符號(hào)/無(wú)符號(hào))。sysDSP單元中的操作數(shù)可以帶符號(hào)或無(wú)符號(hào),但在功能單元中不能混合。

            同樣,在一個(gè)單元中操作數(shù)寬度不能混合。每個(gè)sysDSPK中的資源可配置來(lái)支持MULT(乘)、MAC(乘累加)、MULTADD(乘加/減)和MULTADDSUM(乘加/減和)元件。

            每個(gè)單元中可用的元件數(shù)取決于所選擇的數(shù)據(jù)通路寬度。把若干個(gè)元件連接起來(lái)可并聯(lián)實(shí)現(xiàn)DSP功能。

            sysDSP單元在輸入,中間和輸出級(jí)具有內(nèi)置任選流水線寄存器。如需要,輸入也可能并行輸入或跨過(guò)陣列移位。也為帶符號(hào)和不帶符號(hào)運(yùn)算和加減之間動(dòng)態(tài)轉(zhuǎn)換提供選擇。在sysDSP單元中可得到流水線寄存器、和、減和累加。在一般的功能中,一般需要用加、和或累加組合乘法。概念簡(jiǎn)單的流水線寄存器在寬數(shù)據(jù)通路中實(shí)現(xiàn)要消耗大量的資源。用sysDSP單元實(shí)現(xiàn)這些功能可使通用FPGA資源消耗較低、性能較高,允許采用較低速度等級(jí)的更小器件?!?益林)

          濾波器相關(guān)文章:濾波器原理


          fpga相關(guān)文章:fpga是什么


          c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


          濾波器相關(guān)文章:濾波器原理


          混頻器相關(guān)文章:混頻器原理


          關(guān)鍵詞: FPGA DSP

          評(píng)論


          相關(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); })();