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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種基于SoPC的千兆以太網接口卡設計

          一種基于SoPC的千兆以太網接口卡設計

          作者: 時間:2014-07-01 來源:網絡 收藏

          發(fā)送單元負責將待發(fā)送的數據按照一定時序發(fā)送到MAC核,再通過GTX輸出到數據鏈路中??蛻舳税l(fā)送時序如圖4所示。

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

           

           

          客戶端發(fā)送過程如下:

          (1)當客戶端需要發(fā)送數據時,首先將第一個字節(jié)送到數據線(TXD),同時將數據有效信號(TXDVLD)置高;

          (2)當EMAC收到第一個字節(jié)后,返回一個應答信號(TXACK);

          (3)客戶端收到應答信號后,將剩余數據按照字節(jié)發(fā)送,在數據發(fā)送完成之前,TXDLVD信號一直為高。

          接收單元負責根據客戶端接收時序接收來自于MAC的數據。客戶端接收時序如圖5所示。

           

           

          客戶端接收過程如下:

          (1)當EMAC有數據發(fā)送到客戶端時,接收數據信號(RXD)和數據有效信號(RXDVLD)同時有效;

          (2)接收單元根據RXD和RXDVLD接收來自EMAC的數據;

          (3)當數據接收完成后,如果接收數據正確信號(RXGOODFRAME)有效,表示該幀數據正確,則將數據提交。如果數據錯誤信號(RXBADFRA ME)有效,表示該幀數據錯誤,則將數據丟棄。

          2.5 軟件設計

          在設計中,軟件負責完成系統(tǒng)的運行、設備的控制、系統(tǒng)各部分功能實現、以太網的TCP/IP協(xié)議的實現等功能。使用Xilinx提供的EDK下集成的工具SDK,使用C語言進行編程。

          EDK提供第三方支持庫TRECK,它使用一種簡化的TCP/IP協(xié)議,并向用戶提供上層的API函數,實現了一種高效的、便于與實現的TCP /IP協(xié)議。

          3 仿真與驗證

          本論文采用Xilinx Virtex-5 FPGA芯片對接口板進行設計和實現,并采用Modelsim6.5d進行仿真驗證,采用ISE12.1進行綜合、布局布線、生成bit文件。

          將生成的bit文件下載到自主設計的板卡中,并開發(fā)測試用例進行測試、驗證。實際測試結果表明:基于SoPC的接口板系統(tǒng)功能正確,傳輸速率達到了線速。

          4 結束語

          本文研究并設計了一種基于SoPC的,重點對其組成、工作流程、EMAC、時鐘管理、用戶邏輯設計和軟件設計等關鍵技術進行了描述,并開發(fā)測試用例進行測試驗證。經嚴格測試驗證表明,該千兆以太網接口板功能完全符合系統(tǒng)要求。

          本文的研究對基于SoPC實現自主化的千兆以太網產品具有一定的工程參考價值。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(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); })();