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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 通用異步串行接口的VHDL實用化設(shè)計

          通用異步串行接口的VHDL實用化設(shè)計

          作者: 時間:2012-10-10 來源:網(wǎng)絡(luò) 收藏

          3.5 同步FIFO的設(shè)計

          設(shè)計中根據(jù)收發(fā)模塊對狀態(tài)標志要求的不同,分別進行同步FIFO的設(shè)計以節(jié)約邏輯資源。其中,發(fā)送模塊的FIFO只需要全空/全滿標志,采用地址相等不相等的比較邏輯和地址繞回指示位來產(chǎn)生。具體過程為:地址隨著相應(yīng)的操作遞增,寫指針由內(nèi)存的最后位置返回到初始位置時將地址繞回指示位置1,讀指針返回時則置0。因此,當讀寫指針地址相同時,若地址繞回指示位為0,則讀寫指針經(jīng)歷了相同次數(shù)的循環(huán)移動, FIFO處于空狀態(tài)(圖4a);若地址繞回指示位為1,則寫指針比讀指針多循環(huán)一次,F(xiàn)IFO處于滿狀態(tài)。

          接收模塊需要在FIFO中數(shù)據(jù)量達到一個設(shè)定的數(shù)值時產(chǎn)生一個中斷,由于設(shè)定的數(shù)值是任意的,這樣空/滿標記的產(chǎn)生必須使用減法器,消耗的邏輯資源稍大。綜合后的邏輯資源使用情況也說明了這點。

          3.6 鎖存器的使用

          使電路復(fù)雜化的常見原因之一是設(shè)計中存在許多不必要的鎖存器,使得電路復(fù)雜,工作速度降低,系統(tǒng)可靠性變差。綜合時應(yīng)該仔細檢查是否合理使用了鎖存器。由于UART的功能特點,設(shè)計中共使用了4個鎖存器,用來鎖存A(2:0)和CSn信號。當UART和CPU總線處在同一個芯片中時,這些鎖存器可以用寄存器取代。

          4 綜合結(jié)果

          整個設(shè)計以語言來實現(xiàn)。在SYNOPSYS Design Compiler中使用LSI_10K庫,設(shè)定系統(tǒng)工作頻率為25MHz,其他使用預(yù)定的選項,綜合后最大路徑延時為10.66ns,預(yù)期工作頻率大于90MHz。資源使用情況如表1所示。

          在XC2V1000-6芯片中,以Synplify為綜合工具,則使用了188個寄存器,占用了1%的邏輯資源。最大路徑延遲預(yù)期9.043ns,預(yù)期工作頻率110MHz。

          5 仿真與驗證

          設(shè)計中對UART各模塊分別撰寫了相應(yīng)的測試程序,驗證了各模塊的正確性。然后把這些模塊裝配在一起,在系統(tǒng)級上再進行了接收、發(fā)送和中斷功能的門級驗證。這種模塊化分層次的驗證過程在調(diào)試中有效地縮小了查找錯誤的范圍,提高了調(diào)試效率并保證了代碼的健壯性。

          6 結(jié)束語

          穩(wěn)定性和低功耗是嵌入式通信系統(tǒng)的重要設(shè)計目標。實現(xiàn)需要的功能有時并不困難,難的是提高系統(tǒng)穩(wěn)定性和有效降低功耗。時鐘的規(guī)劃和亞穩(wěn)態(tài)的處理與這兩個目標有著非常密切的關(guān)系,是實用化設(shè)計關(guān)注的重點之一。通過穩(wěn)定性、功耗與資源等方面的綜合考慮,該設(shè)計在所實現(xiàn)的軟件無線電硬件平臺上得到了成功應(yīng)用,達到了實用化設(shè)計的目標。


          上一頁 1 2 下一頁

          關(guān)鍵詞: VHDL 異步串行 接口

          評論


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