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

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應用 > Virtex-5FPGA設(shè)計Gbps無線通信基站

          Virtex-5FPGA設(shè)計Gbps無線通信基站

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

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

            3.2.2 多時鐘與亞穩(wěn)態(tài)的解決

            在通常的UART中,由于CPU時鐘與UART的數(shù)據(jù)接收、發(fā)送時鐘是處在不同的時鐘域,時鐘頻率和相位上存在差異,導致時序不能滿足建立時間和保持時間的要求,即數(shù)據(jù)的輸出處于不確定狀態(tài),從而出現(xiàn)時序違反(slack0)和亞穩(wěn)態(tài)。本文通過采用同步電路,有效地解決時序和亞穩(wěn)態(tài)的問題[6][7]。

            3.2.3 UART 核的綜合與優(yōu)化

            通過對RTL級進行優(yōu)化,再仿真驗證正確后,可以對UART核進行綜合優(yōu)化。本文采用SYNOPSYS軟件的design compile進行綜合優(yōu)化,利用tcl(tool command language)語言編寫綜合優(yōu)化的腳本。采用0.35um的工藝,將時鐘周期設(shè)置為5ns,在滿足時序(slack>0)的基礎(chǔ)上經(jīng)過綜合優(yōu)化,生成的時序、功耗、面積等參數(shù)如表1所示,優(yōu)化后的功耗和面積滿足了ASIC/SoC的要求。

          表1 接收/發(fā)送模塊綜合得出的功耗、面積、時序等參數(shù)
          接收/發(fā)送模塊綜合得出的功耗

          4 結(jié)束語

            本文利用SYNOPSYS軟件IP核,更適合用于ASIC/SoC設(shè)計,而采用傳統(tǒng)的EDA軟件實現(xiàn)的則適合用在上,不適合用來做掩膜生成ASIC/SoC。本UART核的邏輯設(shè)計采用VerilogHDL語言,用狀態(tài)機和移位寄存器設(shè)計使整個設(shè)計的時序清晰,同時減少了接收模塊停止位的判斷,通過對RTL級優(yōu)化避免了毛刺、亞穩(wěn)態(tài)、多時鐘等問題,仿真和驗證采用的是SYNOPSYS軟件的VCS,通過對時序、功耗、面積的綜合考慮,最后通過SYNOPSYS軟件的design compile 綜合優(yōu)化完成的IP 核可成功應用到ASIC/SoC 設(shè)計上。

            本文作者創(chuàng)新點是利用SYNOPSYS軟件設(shè)計IP核,適合直接應用到ASIC/SoC設(shè)計中,并對RTL級做了優(yōu)化,消除了在UART設(shè)計中碰到毛刺、亞穩(wěn)態(tài)、多時鐘等問題;通過測試平臺(testbench)來仿真和驗證,RTL 代碼精簡,時序、面積和功耗都做了優(yōu)化,達到了IP核的要求。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 3 下一頁

          評論


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