一、網口的基本結構
如圖是網絡接口結構簡圖。網口由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
MAC的功能框圖
如上圖所示,以太網MAC芯片的一端接計算機PCI總線,另外一端就接到PHY芯片上。CPU上有兩組寄存器用與MAC。一組用戶數據的收發,對應上面的DMA;一組用戶MIIM,用戶對PHY進行配置.兩組寄存器由於都在CPU上,配置方式與其他CPU上寄存器一樣,直接讀寫即可。數據的轉發通過DMA完成。
MAC的功能
MAC屬於OSI七層網絡模型中的數據鏈路層。數據鏈路層其實包含MAC(介質訪問控制)子層和LLC(邏輯鏈路控制)子層。
MAC的功能之一:把數據封裝成幀, 包括對幀進行界定, 實現幀同步, 對目的MAC地址和源MAC地址進行處理, 在與PHY發生傳輸錯誤時對幀進行處理。
如上如圖所示,MAC從PCI總線收到IP數據包(或者其他網絡層協議的數據包)後,會將之拆分並重新打包成數據幀。這個數據幀包括了目標MAC地址、源MAC地址和數據包裏面的協議類型以及DWORD(4Byte)的CRC碼。當打包完成後,這些數據幀會通過MII接口傳遞給PHY。
當MAC接收到數據幀的時候,則先是做CRC校驗,如果CRC校驗錯誤,那麼這一幀就會被丟棄;如果CRC校驗沒有錯誤,就把幀頭和幀尾去掉,得到數據包;然後通過標準接口將數據包傳遞到TCP/IP模型的網絡層、傳輸層、應用層逐層處理,最終送到應用軟件。當然,數據也有可能會在某一層當中提前丟失。
MAC的功能之二:對PHY的進行控制
CPU上會有一組MIIM寄存器用於MAC來控制PHY。
三、PHY
PHY的功能框圖
物理層位於OSI最底層,物理層協議定義電氣信號、線的狀態、時鐘要求、數據編碼和數據傳輸用的連接器。 物理層的器件稱爲PHY。
PHY的功能
PHY的功能之一:與MAC通過MII接口進行數據傳遞,對發送的數據進行編碼,對接收的數據進行解碼
上圖裏的方框圖裏的就是PHY芯片內部模塊圖。 MAC器件通過MII接口來與PHY進行數據交換。 從圖中可以看到向外發送數據和從外部接收數據時PHY所要做的一些工作。 可以簡單理解成:
PHY在發送數據的時候,收到MAC過來的數據(對PHY來說,沒有幀的概念,對它來說,都是數據而不管什麼地址,數據還是CRC),每4bit就增加1bit的檢錯碼,然後把並行數據轉化爲串行流數據,再按照物理層的編碼規則(4B/5B編碼)把數據編碼,再變爲模擬信號把數據送出去。
當PHY接收數據時的流程反之。
PHY的功能之二: CSMA/CD的部分功能
PHY還有個重要的功能就是實現CSMA/CD的部分功能。它可以檢測到網絡上是否有數據在傳送,如果有數據在傳送中就等待,一旦檢測到網絡空閒,再等待一個隨機時間後將送數據出去。如果兩塊網卡碰巧同時送出了數據,那樣必將造成衝突,這時候,衝突檢測機構可以檢測到衝突,然後各等待一個隨機的時間重新發送數據。
這個隨機時間很有講究的,並不是一個常數,在不同的時刻計算出來的隨機時間都是不同的,而且有多重算法來應付出現概率很低的同兩臺主機之間的第二次衝突。
四、PHY和MAC的通訊接口
PHY與MAC的通過MII(Media Independ Interface)來通迅, 其工作內容包括:
- 數據接口, 有RX/TX兩條獨立的通道。
- 管理接口, 由時鐘信號和數據信號組成, 可以用來控制和監視PHY的工作。
在MII的基礎上, 後來又有了:
- RMII(Reduced Media Independant Interface), 簡化了MII, 比MII用的信號線更少。
- GMII(Gigabit Media Independent Interface), 即先兆的MII接口
- RGMII (Reduced Gigabit Media Independent Interface)
參考文章: