1. general
下圖是網口結構簡圖.網口由CPU、MAC和PHY三部分組成.DMA控制器通常屬於CPU的一部分,用虛線放在這里是為了表示DMA控制器可能會參與到網口數據傳輸中.
對於上述的三部分,並不一定都是獨立的芯片,根據組合形式,可分為下列幾種類型:
- CPU集成MAC與PHY;
- CPU集成MAC,PHY采用獨立芯片;
- CPU不集成MAC與PHY,MAC與PHY采用集成芯片;
本例中選用方案二做進一步說明,因為CPU總線接口很常見,通常都會做成可以像訪問內存一樣去訪問,沒必要拿出來說,而Mac與PHY之間的MII接口則需要多做些說明.
下圖是采用方案二的網口結構圖.虛框表示CPU,MAC集成在CPU中.PHY芯片通過MII接口與CPU上的Mac連接.
在軟件上對網口的操作通常分為下面幾步:
- 為數據收發分配內存;
- 初始化MAC寄存器;
- 初始化PHY寄存器(通過MIIM);
- 啟動收發;
2. MII
MII接口是MAC與PHY連接的標准接口.因為各廠家采用了同樣的接口,用戶可以根據所需的性能、價格,采用不同型號,甚至不同公司的phy芯片.
需要發送的數據通過MII接口中的收發兩組總線實現.而對PHY芯片寄存器的配置信息,則通過MII總的一組串口總線實現,即MIIM(MII Management).
下表列出了MII總線中主要的一些引腳
PIN Name |
Direction |
Description |
TXD[0:3] |
Mac to Phy |
Transmit Data |
TXEN |
Mac to Phy |
Transmit Enable |
TXCLK |
Mac to Phy |
Transmit Clock |
RXD[0:3] |
Phy to Mac |
Receive Data |
RXEN |
Phy to Mac |
Receive Enable |
RXCLK |
Phy to Mac |
Receive Clock |
MDC |
Mac to Phy |
Management Data Clock |
MDIO |
Bidirection |
Management Data I/O |
MIIM只有兩個線, 時鍾信號MDC與數據線MDIO.讀寫命令均由Mac發起, PHY不能通過MIIM主動向Mac發送信息.由於MIIM只能有Mac發起, 我們可以操作的也就只有MAC上的寄存器.
3. DMA
收發數據總是間費時費力的事,尤其對於網絡設備來說更是如此.CPU做這些事情顯然不合適.既然是數據搬移, 最簡單的辦法當然是讓DMA來做.畢竟專業的才是最好的.
這樣CPU要做的事情就簡單了.只需要告訴DMA起始地址與長度, 剩下的事情就會自動完成.
通常在MAC中會有一組寄存器專門用戶記錄數據地址, tbase與rbase, cpu按MAC要的格式把數據放好后, 啟動MAC的數據發送就可以了.啟動過程常會用到寄存器tstate.
4. MAC
CPU上有兩組寄存器用與MAC.一組用戶數據的收發,對應上面的DMA;一組用戶MIIM,用戶對PHY進行配置.兩組寄存器由於都在CPU上,配置方式與其他CPU上寄存器一樣,直接讀寫即可.數據的轉發通過DMA完成.
5. PHY
該芯片是一個10M/100M Ethernet網口芯片
PHY芯片有一組寄存器用戶保存配置,並更新狀態.CPU不能直接訪問這組寄存器,只能通過MAC上的MIIM寄存器組實現間接訪問.同時PHY芯片負責完成MII總線的數據與Media Interface上數據的轉發.該轉發根據寄存器配置自動完成,不需要外接干預.
本文轉自:http://www.360doc.com/content/13/0717/16/2768962_300623597.shtml