zoukankan      html  css  js  c++  java
  • [FPGA] DP83848網路晶片開發心得(1)

    最近想要用FPGA來存取網路,於是想到之前買的一個DP88848晶片的網路版子,剛好拿出來研究研究。

    查了一下規格它是使用RMII的傳輸介面可以達到10M/100M的速度,應該很夠用了吧。

    那第一步就是先研究一下這電路要怎麼接?剛好有在網路找到其電路圖?

     買了 一個洞洞板,接到DE0-Nano的GPIO_0,腳位如下:

    pin discrption
    GPIO_0[10]: MDC    GPIO_0[11]: MDIO
    GPIO_0[12]: CRS     GPIO_0[13]: OSCIN
    GPIO_0[14]: RX1     GPIO_0[15]: RX0
    GPIO_0[16]: TX0     GPIO_0[17]: TX_EN
    GPIO_0[18]: NC      GPIO_0[19]: TX1

     腳位連接焊完後,外部電路就差不多就大功告成。

    =============================================

    接下來就要開始寫verilog程式了,要先從哪裡開始呢?

     

    我想還是要加一顆Nio處理器來處理封包,訊號傳輸還是用verilog來控制會比較快,那就先從MAC(Media Access Controller)開始吧。

    由下面的系統圖可以得知要控制這顆dp83848網路晶片,需先設定MII register。

    要設定MII register必須要先寫一個串列傳輸程式來讀寫MDIO及MDC,其中MDIO是雙向資料線,而MDC是時脈訊號,最大時脈可以到25Mhz。

    查了一下MDC與MDIO的傳輸協定,如下圖所示,此時就開始來寫一個傳輸程式來控制。

     以下這是我的程式IO介面。

     1 // SMI Test
     2 SMI_top  SMI_top(
     3     // clock reset interface 
     4         .iClk_50M(CLOCK_50), // 50Mhz clock
     5         .iRst_n(1),         // reset negativite
     6     
     7     // SDI interface
     8         .iReg_Addr(5'h00),      // register address
     9         .iTXData(16'ha),    // transmit data
    10         .iCMD_Trig(rCnt[9]),  // command trigger valid
    11         .oRXData(GPIO_1[15:0]),    // receive data
    12         .iRWn(1),
    13         .oFinish(GPIO_1[16]),    // trigger, when send or receive a rxdata finish
    14         .oBusy(GPIO_1[17]),      // busy to MD operation
    15  
    16     // dp83848 rmii signal
    17         .oMDC(oMDC),       // management data clock
    18         .MDIO(MDIO)        // management data I/O
    19     );

    這裡面設計重點在於PHY_ADDRESS,一開始照著spec波形圖設計PHY_ADDRESS設0x0C,送訊號結果MAC連動都不動。

    後來查了一下規格書說可以用外部電路來設定PHY_ADDRESS的位址,就看了一下電路發現PHY_ADDRESS要設成0x07才會動。

    終於可以讓程式順利動起來了,可以讀到暫存器0的資料了。

    今天就先寫到這邊吧。下篇再繼續介紹如何擷取RXD資料。

    檔案下載

    ======================================================================================

    reference

    1. DP83848-Ethernet-Board-Schematic.pdf

    2. DP83848C PHYTER® - Commercial Temperature Single Port 10/100 Mb/s Ethernet Physical Layer Transceiver

  • 相关阅读:
    BW中变量增强学习
    视频压制参数设置详细说明(转)
    swf文件格式解析(二)
    关于FP10.2的自定义鼠标功能
    swf文件格式解析(一)
    如何判断winform程序已安装过
    flashbuilder4.5 作为eclipse插件
    安装程序无法创建新的系统分区,也无法定位现有系统分区 (转载于百度文库)
    【转】VS2008建造打包法度将安装路径写入注册表
    【高清视频压制教程】使用MeGUI压制视频教程(以PSP视频为例)(转载)
  • 原文地址:https://www.cnblogs.com/lishyhan/p/5958677.html
Copyright © 2011-2022 走看看