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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Spartan-3 FPGA的DSP功能實(shí)現(xiàn)方案

          基于Spartan-3 FPGA的DSP功能實(shí)現(xiàn)方案

          作者: 時(shí)間:2010-12-18 來源:網(wǎng)絡(luò) 收藏

          本文闡述了 針對(duì)而優(yōu)化的特性,并通過示例分析了它們?cè)谛阅芎统杀旧系膬?yōu)勢(shì)。

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

            所有低成本的都以頗具吸引力的價(jià)格提供基本的邏輯性能,并能滿足廣泛的多用途設(shè)計(jì)需求。然而,當(dāng)考慮在構(gòu)造中嵌入時(shí),必須選擇高端FPGA以獲得諸如嵌入式乘法器和分布式存儲(chǔ)器等平臺(tái)特性。

             FPGA的面世改變了嵌入式的應(yīng)用前景。雖然系列器件的價(jià)位可能較低,但它們同樣具有DSP設(shè)計(jì)所需的平臺(tái)特性。這些平臺(tái)特性能夠以較高的面積利用率信號(hào)處理,使設(shè)計(jì)達(dá)到更低價(jià)位點(diǎn)。

            Spartan-3器件用作協(xié)處理器或預(yù)/后處理器是非常理想的,它們將運(yùn)算密集型從可編程DSP上卸載下來以增強(qiáng)系統(tǒng)性能。

            1 針對(duì)DSP而優(yōu)化

            賽靈思公司的Spartan-3器件采用90nm工藝技術(shù)以及300mm晶圓,大大降低了FPGA的成本。與此同時(shí),這些器件還包括諸如嵌入式18×18位乘法器、大塊存儲(chǔ)器(18kb)、分布式RAM以及移位寄存器等關(guān)鍵DSP資源。這些高級(jí)特性意味著采用Spartan-3 FPGA,能以比其它競(jìng)爭(zhēng)FPGA低得多的價(jià)位DSP算法。

            

          Spartan-3 FPGA www.elecfans.com


            圖1:增強(qiáng)型架構(gòu)允許用

            單個(gè)LUT代替16個(gè)寄存器。除增加系統(tǒng)的基本性能之外,這些嵌入式特性還能提高器件的利用率。例如,如果在邏輯結(jié)構(gòu)中實(shí)現(xiàn)Spartan-3嵌入式乘法器,需要占用300~400個(gè)邏輯單元(LE)。此外,因?yàn)榍度胧匠朔ㄆ骶o鄰邏輯結(jié)構(gòu),所以拓展其功能(比如創(chuàng)建加法器或者級(jí)聯(lián)多個(gè)乘法器來支持復(fù)雜的算法功能)是非常簡(jiǎn)單的。

            為提高效率,許多DSP功能以時(shí)分復(fù)用的形式在管道中得以很好實(shí)現(xiàn)。這樣做雖然能創(chuàng)建帶寬更高、速度更快的系統(tǒng),但同時(shí)也將面臨更多臨時(shí)存儲(chǔ)單元需求而帶來的成本增加。譬如,時(shí)分復(fù)用濾波器需要將各個(gè)乘法-累加單元的結(jié)果存儲(chǔ)在移位寄存器里。這種設(shè)計(jì)將在用完FPGA的邏輯資源之前就可能耗盡寄存器或存儲(chǔ)器資源。Spartan-3 FPGA系列的獨(dú)特之處在于它們可提供這樣一種模式:一個(gè)查找表(LUT)能夠執(zhí)行邏輯功能或配置成一個(gè)16位移位寄存器。

            如圖1所示,這種增強(qiáng)型的架構(gòu)允許用單個(gè)LUT來代替16個(gè)寄存器,在實(shí)現(xiàn)時(shí)分復(fù)用DSP功能時(shí)能使面積利用率最大化。

            許多DSP功能也需占用大量的存儲(chǔ)器資源,它們需要便箋存儲(chǔ)器來保存系數(shù)、執(zhí)行FIFO以及獲得較大的緩沖區(qū)。與目前使用的其它低成本FPGA相比,Spartan-3器件可提供更多的存儲(chǔ)位數(shù)。對(duì)于許多DSP設(shè)計(jì)而言,最重要的資源是FPGA內(nèi)的嵌入式存儲(chǔ)器,而不是邏輯電路或者乘法器。因?yàn)榇鎯?chǔ)資源不足,采用競(jìng)爭(zhēng)的低成本器件的設(shè)計(jì)工程師不得不選用更大規(guī)模的器件或采用外部存儲(chǔ)器來構(gòu)建系統(tǒng),而這些系統(tǒng)只需一片體積很小的Spartan-3 FPGA就可以得到實(shí)現(xiàn)。

            2 常見的DSP功能實(shí)現(xiàn)

            下面通過分析有限沖擊響應(yīng)(FIR)濾波器的兩個(gè)實(shí)現(xiàn)示例來說明這些特性是如何影響器件的利用率。一個(gè)是乘法累加器(MAC)的實(shí)現(xiàn),另一個(gè)是多通道分布式算法(DA)的實(shí)現(xiàn)。

            FIR濾波器通常應(yīng)用于基站、數(shù)字視頻、無線局域網(wǎng)、xDSL以及有線調(diào)制解調(diào)器。測(cè)試基準(zhǔn)是在Spartan-3 XC3S400 FPGA中實(shí)現(xiàn)頻率為130MHz、數(shù)據(jù)和系數(shù)均為16位的64抽頭MAC FIR濾波器。第一個(gè)實(shí)現(xiàn)僅用了一個(gè)MAC,第二個(gè)實(shí)現(xiàn)則用了四個(gè)MAC。

            從采用單個(gè)MAC的實(shí)現(xiàn)到采用四個(gè)MAC的實(shí)現(xiàn)可顯著增加FIR濾波器的性能,而LUT數(shù)量只增加一倍并仍僅占總可用邏輯資源的4%。四個(gè)MAC的實(shí)現(xiàn)使用了四塊RAM和四個(gè)MAC,以最少的器件邏輯資源高效地實(shí)現(xiàn)了FIR濾波器。

            另一個(gè)有趣的實(shí)現(xiàn)是多通道FIR功能的實(shí)現(xiàn),在這里可以看到從單通道FIR濾波器到8通道FIR濾波器,器件利用率是如何變化的。

            實(shí)現(xiàn)單通道分布式算法FIR濾波器使用了XC3S1000 Spartan-3器件29%的邏輯資源和39%的寄存器資源。當(dāng)實(shí)現(xiàn)同樣的8通道濾波器時(shí),通常將不同通道進(jìn)行時(shí)分復(fù)用來保存邏輯,但這將占用很多寄存器或者大量的片內(nèi)存儲(chǔ)器來存放中間結(jié)果。

            如果使用Spartan-3 FPGA,中間結(jié)果將被存放在由LUT配置成的16位移位寄存器(SRL-16)中。這樣,實(shí)現(xiàn)同樣的8通道濾波器只多使用10%的可用邏輯資源和7%的可用寄存器資源,也就是說,構(gòu)建8個(gè)通道僅多占用25%的器件資源。

            這種顯著的資源節(jié)約與Spartan-3器件中SRL-16的使用有直接關(guān)系,在8通道實(shí)現(xiàn)中還有另外1,343個(gè)LUT被用作SRL-16模式。

            如果在不支持SRL-16性能的FPGA中實(shí)現(xiàn)這種設(shè)計(jì),將需要額外的10,744(1343×8)個(gè)觸發(fā)器用作存儲(chǔ)單元,這就必須選用大規(guī)模器件以提供數(shù)量龐大的寄存器,同時(shí)將也會(huì)消耗相關(guān)的組合邏輯資源。



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