1. 程式人生 > >網口掃盲二:Mac與Phy組成原理的簡單分析(轉)

網口掃盲二:Mac與Phy組成原理的簡單分析(轉)

 

1. general

下圖是網口結構簡圖.網口由CPU、MAC和PHY三部分組成.DMA控制器通常屬於CPU的一部分,用虛線放在這裡是為了表示DMA控制器可能會參與到網口資料傳輸中.

                                                                                           

對於上述的三部分,並不一定都是獨立的晶片,根據組合形式,可分為下列三種方案:

  1. CPU整合MAC與PHY;
  2. CPU整合MAC,PHY採用獨立晶片;
  3. CPU不整合MAC與PHY,MAC與PHY採用整合晶片;

本例中選用方案二做進一步說明,因為CPU匯流排介面很常見,通常都會做成可以像訪問記憶體一樣去訪問,沒必要拿出來說,而MAC與PHY之間的MII介面則需要多做些說明.

下圖是採用方案二的網口結構圖.虛框表示CPU,MAC整合在CPU中.PHY晶片通過MII介面與CPU上的MAC連線.

                                                       

在軟體上對網口的操作通常分為下面幾步:

  1. 為資料收發分配記憶體;
  2. 初始化MAC暫存器;
  3. 初始化PHY暫存器(通過MIIM);
  4. 啟動收發; 

2. MII

MII介面是MAC與PHY連線的標準介面.因為各廠家採用了同樣的介面,使用者可以根據所需的效能、價格,採用不同型號,甚至不同公司的phy晶片.

需要傳送的資料通過MII(Media-Independent Interface)介面中的收發兩組匯流排實現.而對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

1. general

下圖是網口結構簡圖.網口由CPU、MAC和PHY三部分組成.DMA控制器通常屬於CPU的一部分,用虛線放在這裡是為了表示DMA控制器可能會參與到網口資料傳輸中.

                                                                                           

對於上述的三部分,並不一定都是獨立的晶片,根據組合形式,可分為下列三種方案:

  1. CPU整合MAC與PHY;
  2. CPU整合MAC,PHY採用獨立晶片;
  3. CPU不整合MAC與PHY,MAC與PHY採用整合晶片;

本例中選用方案二做進一步說明,因為CPU匯流排介面很常見,通常都會做成可以像訪問記憶體一樣去訪問,沒必要拿出來說,而MAC與PHY之間的MII介面則需要多做些說明.

下圖是採用方案二的網口結構圖.虛框表示CPU,MAC整合在CPU中.PHY晶片通過MII介面與CPU上的MAC連線.

                                                       

在軟體上對網口的操作通常分為下面幾步:

  1. 為資料收發分配記憶體;
  2. 初始化MAC暫存器;
  3. 初始化PHY暫存器(通過MIIM);
  4. 啟動收發; 

2. MII

MII介面是MAC與PHY連線的標準介面.因為各廠家採用了同樣的介面,使用者可以根據所需的效能、價格,採用不同型號,甚至不同公司的phy晶片.

需要傳送的資料通過MII(Media-Independent Interface)介面中的收發兩組匯流排實現.而對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