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

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于Wishbone總線的UART IP核設(shè)計

          基于Wishbone總線的UART IP核設(shè)計

          作者: 時間:2011-03-21 來源:網(wǎng)絡(luò) 收藏

          CHECK狀態(tài):當(dāng)狀態(tài)機處于這個狀態(tài),最后1位數(shù)據(jù)仍然在傳輸。傳輸完成時,狀態(tài)機將判斷校驗位。如果校驗位無誤,則進入下個狀態(tài)。
          TX_STOP狀態(tài):在此狀態(tài)下,根據(jù)發(fā)送模塊的采樣結(jié)果,將設(shè)置相關(guān)中斷和狀態(tài)位。發(fā)送完畢后,狀態(tài)機返回IDLE狀態(tài)。

          3 核的驗證方法
          核的驗證主要是在Modelsim軟件構(gòu)建的虛擬平臺中進行的,通過編寫Testbench(測試代碼)作為激勵信號,將得到的值與期望值進行比較,從而判斷功能是否正確。驗證系統(tǒng)框圖,如圖5所示。

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

          e.jpg


          本次驗證施加的測試激勵包括兩個部分,一部分是模擬發(fā)送數(shù)據(jù)的過程,如對于模塊內(nèi)部寄存器的讀信號,串口輸出信號和設(shè)備的硬件接口信號等,驗證模塊的正常功能是否實現(xiàn);另一部分是模擬接收數(shù)據(jù)的過程,如外部設(shè)備對UART發(fā)送的數(shù)據(jù)接收過程,以及UART 將數(shù)據(jù)轉(zhuǎn)換發(fā)送給微機系統(tǒng)。仿真波形圖,如圖6所示。

          f.jpg


          仿真波形圖模擬的是UART在全雙工的模式下同時接收一個完整的數(shù)據(jù)(51,16進制)和發(fā)送一個完整的數(shù)據(jù)(11,16進制)的過程。以接收過程為例:UART首先輸出發(fā)送UART_INT中斷信號,通知處理器準備接收數(shù)據(jù),處理器響應(yīng)中斷。UART通過采樣脈沖(Baud)將信號寫入RX_UDR接收寄存器中,同時接收計數(shù)器計數(shù),計數(shù)到8時自動清零,中斷信號自動清除,隨后將接收到的8位數(shù)據(jù)通過模塊傳入處理器中。發(fā)送過程為接收的逆過程。

          4 結(jié)束語
          核重用技術(shù)以及接口標準化問題是IC領(lǐng)域中的研究熱點,其應(yīng)用領(lǐng)域正在不斷拓展。本文介紹的的UART IP核的方法,通過驗證表明了各項功能達到預(yù)期要求,為IP核接口的標準化提供了依據(jù)。此外,該IP核代碼全部采用模塊化的Verilog-HDL語言編寫,便于以后不斷完善,具有較強的實際效益。


          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: IP 設(shè)計 UART 總線 Wishbone 基于

          評論


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