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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 利用FPGA協(xié)處理提升無線子系統(tǒng)的性能

          利用FPGA協(xié)處理提升無線子系統(tǒng)的性能

          作者: 時間:2008-02-28 來源: 收藏

            您可以顯著提高無線系統(tǒng)中信號處理功能的性能。怎樣提高呢?有效方法是利用結構的靈活性和目前受益于并行處理的架構中的嵌入式DSP模塊。

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

            常見于無線應用中這類處理包括有限沖激響應(FIR)濾波、快速傅里葉變換(FFT)、數(shù)字上下變頻和前向誤差校正(FEC)。Xilinx? Virtex-4和Virtex-5架構提供多達512個并行嵌入式DSP乘法器,這些乘法器的工作頻率高于500MHz,最高可提供256 GMAC的DSP性能。

            將需要高速并行處理的工作卸載給,而將需要高速串行處理的工作留給處理器,這樣即可在降低系統(tǒng)要求的同時優(yōu)化整體系統(tǒng)的性價比。

            子系統(tǒng)劃分選擇方案

            FPGA可與DSP處理器一起使用,作為獨立的預處理器(有時是后處理器)器件,或者作為協(xié)處理器。在預處理架構中,F(xiàn)PGA直接位于數(shù)據(jù)通路中負責信號預處理,預處理后的信號可以高效又經(jīng)濟地移交給DSP處理器進行速率較低的后續(xù)處理。

            在協(xié)處理架構中,F(xiàn)PGA與DSP并列而置,后者將特定算法函數(shù)卸載給FPGA,以便實現(xiàn)比單獨采用DSP處理器能達到的速度更高的處理速度。FPGA的處理結果傳回DSP,或者送至其他器件進一步進行處理、傳輸或存儲(圖1)。

            選擇預處理、后處理還是協(xié)處理,常常取決于在處理器和FPGA之間移動數(shù)據(jù)所需的時序余量及其對整體延遲的影響。雖然協(xié)處理解決方案是設計人員最??紤]的拓撲結構(主要是因為DSP可以更直接地控制數(shù)據(jù)移交過程),但這并不一定總是最佳的總體策略。

            例如,最新的3G LTE規(guī)范將傳輸時間間隔(TTI)從HSDPA的2ms和WCDMA的10ms縮短到了1ms。這實質上是要求從接收器一直到MAC層輸出之間的數(shù)據(jù)處理時間短于1,000?sec。

            

          FPGA 用作預處理器和協(xié)處理器的解決方案

           

            圖1:FPGA 用作預處理器和協(xié)處理器的解決方案

            如圖2所示,在運行速度為3.125Gbps的DSP上使用SRIO端口(使用8b/10b編碼,Turbo解碼功能需要200比特的額外開銷)會造成230?sec的DSP到FPGA傳輸延遲(也就是說TTI時段中有將近四分之一僅用來傳輸數(shù)據(jù))。加之其他可預見的延遲,為滿足這些系統(tǒng)時序,當用戶為50個時,所需的Turbo編解碼器性能就是高達75.8Mbps。

            

          協(xié)處理數(shù)據(jù)傳輸延遲問題的 LTE 示例

           

            圖2:協(xié)處理數(shù)據(jù)傳輸延遲問題的 LTE 示例

            使用FPGA將Turbo編解碼器作為基本上獨立的后處理器來處理,不僅可消除DSP延遲,還能節(jié)省時間,因為不需要以高帶寬在DSP和FPGA之間傳輸數(shù)據(jù)。這樣做可將Turbo解碼器的吞吐量降至47Mbps,因而可選用更多比較經(jīng)濟的器件,并且可以減少系統(tǒng)功耗。

            另一項考慮是在XilinxFPGA上是否使用軟嵌入式或硬嵌入式處理器IP來卸載某些系統(tǒng)處理任務,進而可能進一步減少成本、功耗和占用空間。有了如此大量的信號處理資源,就可以在DSP處理器、FPGA可配置邏輯塊(CLB)、嵌入式FPGA DSP模塊和FPGA嵌入式處理器之間更好地分配各種復雜功能(如基帶處理中的復雜功能)。Xilinx提供了兩種類型的嵌入式處理器:MicroBlaze軟核處理器(常用于系統(tǒng)控制)和性能更高的PowerPC硬核嵌入式處理器(用于更復雜的任務)。

            FPGA嵌入式處理器提供的有利條件允許將所有非關鍵性操作都合并到在嵌入式處理器上運行的軟件中,從而盡量減少整體系統(tǒng)所需的硬件資源總量。

            軟件和IP的重要性

            關鍵問題是如何將這種潛在能力全部釋放出來。必須考慮需要用哪些軟件對問題的復雜性進行抽象以及可以使用哪些IP,應該考慮利用FPGA為關鍵部分提供最佳解決方案。

            Xilinx致力于開發(fā)行業(yè)領先的工具和體系,能夠在比HDL工具(如MATLAB模型和C代碼)所能提供的更高的抽象層上實現(xiàn)高效的FPGA解決方案。利用Xilinx專門用于DSP的系統(tǒng)生成開發(fā)工具和AccelDSP綜合工具,可以盡可能無縫實現(xiàn)從算法到硅片的鏈接。

            目前有一個日益重要的工具提供商團隊,其產(chǎn)品通過C/C++到邏輯門的設計流程把開發(fā)提升到電子系統(tǒng)級(ESL)。ESL設計工具的目的是提供一種完備的系統(tǒng)級方法,以便生成和集成硬件加速功能以及控制這些功能的處理器的控制代碼。

            沒有哪一種高級語言或軟件工具能適合當今復雜系統(tǒng)中所見的所有不同單元。語言和設計流程的選擇取決于客戶,有時取決于具體的工程師。因此,Xilinx開發(fā)了一套齊全的集成功能,以滿足客戶需求并提供最佳設計環(huán)境(見圖3)。

            

          系統(tǒng)級到 FPGA 設計流程

           

            圖3:系統(tǒng)級到 FPGA 設計流程

            本文小結

            另外,Xilinx正在斥巨資提供一套功能廣泛的高價值IP、電路板和參考設計,以涵蓋射頻卡和基帶應用中的許多關鍵部分,其中包括FFT/iFFT、調(diào)制、數(shù)字上下變頻和波峰系數(shù)的降低電路等。

            這一重點舉措的一個例子是開發(fā)針對特定無線標準和FPGA架構優(yōu)化的行業(yè)領先的高性能FEC功能,如Turbo編碼器和解碼器。正如我們在分析3GLTE延遲和Turbo解碼器流量要求時所示,F(xiàn)EC功能的硬件加速及其對系統(tǒng)架構的作用在現(xiàn)代無線設備設計中是日漸緊要的當務之需。

            雖然一些專家級DSP處理器陸續(xù)以嵌入式模塊的形式集成這類功能,但是,從制訂出符合新無線標準的FEC功能參數(shù)到形成嵌入式加速模塊出現(xiàn)在硅片中,通常需要好幾個月。一旦實現(xiàn)了嵌入,也還會有遺留的難題,偶爾還會有嵌入式模塊中的功能并非都能按要求工作的局面出現(xiàn)。同時,標準演化迅速,現(xiàn)標準中不時納入一些固定嵌入式模塊不能支持的新要求。

            鑒于這些情況,設計人員需要靈活性。他們希望有能力迅捷地開發(fā)和部署FEC之類復雜基帶功能,然后根據(jù)現(xiàn)場試驗的反饋和標準化工作的進展去修改這些功能?;蛟S他們希望加入自己的專有IP,以便在市場上顯示其解決方案別具一格。正因為是在這種情況下,設計人員不應只考慮某提供商眼下提供的解決方案組合,還應了解這些解決方案是否容易修改以及該提供商能夠提供哪種水平的支持和工具。



          關鍵詞: 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); })();