首页 > 代码库 > [FPGA] DP83848網路晶片開發心得(1)

[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(5h00),      // register address 9         .iTXData(16ha),    // transmit data10         .iCMD_Trig(rCnt[9]),  // command trigger valid11         .oRXData(GPIO_1[15:0]),    // receive data12         .iRWn(1),13         .oFinish(GPIO_1[16]),    // trigger, when send or receive a rxdata finish14         .oBusy(GPIO_1[17]),      // busy to MD operation15  16     // dp83848 rmii signal17         .oMDC(oMDC),       // management data clock18         .MDIO(MDIO)        // management data I/O19     );

 

 

 

這裡面設計重點在於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

 

[FPGA] DP83848網路晶片開發心得(1)