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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機與以太網控制器RTL8029接口的VHDL設計

          單片機與以太網控制器RTL8029接口的VHDL設計

          作者: 時間:2012-02-29 來源:網絡 收藏

          1

          臺灣Realtek公司的是一種符合IEEE802.3以太網標準的控制器,有RTL8019、RTL8029和RTL8139等系列。其中RTL8019是ISA總線的,較易與8位MCU實現接口。RTL8029和RTL8139是PCI總線的,不能直接與8位的MCU接口,需要一個PCI接口進行轉接。考慮到目前RTL8029在市場上較容易購買,故采用RTL8029作為網絡接口。

          RTL8029內部已經包含有整個網絡接口層的協(xié)議 (PHY層和MAC層協(xié)議),因此應用起來較簡單。用戶不必考慮鏈路控制問題,而只需考慮如何從RTL8029中去讀TCP/IP協(xié)議的數據即可。

          PCI總線信號有3.3V標準和5V標準,信號線眾多,但是并不是所有的PCI設備都使用全部的PCI接口信號,實際上只使用它們需要的即可。RTL8029AS以太網控制器遵循5V標準,并且只使用了PCI總線信號中的以下部分:

          AD[31:0]——數據信號復用總線。
          FRAME——幀周期信號,由當前主設備驅動,表示一次訪問的開始和持續(xù)時間。
          IRDY——主設備準備好信號。
          TRDY——從設備準備好信號。
          C/BE——總線命令和字節(jié)使能復用信號。地址期是總線命令,數據期是字節(jié)使能。
          IDSEL——初始化設備選擇信號。在參數配置讀寫傳輸期間,用作片選。對于只有一個PCI設備的情況,它可以總接高電平。
          RST——復位信號。
          CLK——系統(tǒng)時鐘信號,頻率范圍DC~33MHz。以上信號都在CLK的上升沿有效。
          INTA——中斷請求信號,RTL8029數據準備好后可以用來向主控制器發(fā)出中斷。
          DEVSEL——設備選擇信號,表明驅動它的設備已成當前訪問的設備,由于在系統(tǒng)中,RTL8029是單一的PCI設備,因此該信號可以不用。

          2 PCI接口設計

          在以太網控制器的接口信號中,除地址數據總線是雙向的外,TRDY信號由以太網控制器產生,方向為從以太網控制器至PCI接口;其余信號都由接口部分產生,方向是從PCI接口至以太網控制器。

          接口設計的思路是:可將PCI接口當作的外部存儲器看待,單片機以讀寫外部存儲器的時序對PCI接口進行讀寫,再由PCI接口將這種讀寫操作時序轉換成PCI時序對以太網控制器進行操作。

          單片機在進行外部存儲器操作時用到的信號有PO口、P2口、ALE以及RD和WR信號。其中,P0口為地址(低8位)/數據復用,P2口為高8位地址信號;ALE為地址鎖存信號,為高電平時將P0口的值鎖存到低8位數據線上;RD和WR為讀寫有效信號,低電平有效。因此,PCI接口實際上是起到一個從8位單片機讀寫時序到32位PCI讀寫時序轉換的作用,原理框圖如圖1所示,訪目時序如圖2所示。

          上一頁 1 2 3 下一頁

          評論


          相關推薦

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