MAC/PHY與MII(GMII/SGMII/RGMII) (二)-MAC是什麼

 

MAC(Media Access Control)即媒體訪問控制子層協議。

該部分有兩個概念:MAC可以是一個硬件控制器 及 MAC通信以協議。該協議位於OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。

MAC硬件大約就是下面的樣子:

在發送數據的時候,MAC協議可以事先判斷是否可以發送數據,如果可以發送將給數據加上一些控制信息,最終將數據以及控制信息以規定的格式發送到物理層;在接收數據的時候,MAC協議首先判斷輸入的信息並是否發生傳輸錯誤,如果沒有錯誤,則去掉控制信息發送至LLC(邏輯鏈路控制)層。該層協議是以太網MAC由IEEE-802. 3以太網標準定義。

以太網數據鏈路層其實包含MAC(介質訪問控制)子層LLC(邏輯鏈路控制)子層。一塊以太網卡MAC芯片的作用不但要實現MAC子層和LLC子層的功能,還要提供符合規範的PCI界面以實現和主機的數據交換。

MAC從PCI總線收到IP數據包(或者其他網絡層協議的數據包)後,將之拆分並重新打包成最大1518Byte、最小64Byte的幀。這個幀裏面包括了目標MAC地址、自己的源MAC地址和數據包裏面的協議類型(比如IP數據包的類型用80表示,最後還有一個DWORD(4Byte)的CRC碼。

可是目標的MAC地址是哪裏來的呢?這牽扯到一個ARP協議(介乎於網絡層和數據鏈路層的一個協議)。第一次傳送某個目的IP地址的數據的時候,先會發出一個ARP包,其MAC的目標地址是廣播地址,裏面說到:“誰是xxx.xxx.xxx.xxx這個IP地址的主人?”因爲是廣播包,所有這個局域網的主機都收到了這個ARP請求。收到請求的主機將這個IP地址和自己的相比較,如果不相同就不予理會,如果相同就發出ARP響應包。這個IP地址的主機收到這個ARP請求包後回覆的ARP響應裏說到:“我是這個IP地址的主人”。這個包裏面就包括了他的MAC地址。以後的給這個IP地址的幀的目標MAC地址就被確定了。(其它的協議如IPX/SPX也有相應的協議完成這些操作)。

IP地址和MAC地址之間的關聯關係保存在主機系統裏面,叫做ARP表。由驅動程序和操作系統完成。在Microsoft的系統裏面可以用arp-a 的命令查看ARP表。收到數據幀的時候也是一樣,做完CRC校驗以後,如果沒有CRC效驗錯誤,就把幀頭去掉,把數據包拿出來通過標準的接口傳遞給驅動和上層的協議棧。最終正確的達到我們的應用程序。

還有一些控制幀,例如流控幀也需要MAC直接識別並執行相應的行爲。

以太網MAC芯片的一端接計算機PCI總線,另外一端就接到PHY芯片上,它們之間是通過MII接口鏈接的。

一個MAC的結構圖如下圖所示:

第二部分、什麼是MII

MII(Media Independent Interface)即媒體獨立接口,MII接口是MAC與PHY連接的標準接口。它是IEEE-802.3定義的以太網行業標準。MII接口提供了MAC與PHY之間、PHY與STA(Station Management)之間的互聯技術,該接口支持10Mb/s與100Mb/s的數據傳輸速率,數據傳輸的位寬爲4位。"媒體獨立"表明在不對MAC硬件重新設計或替換的情況下,任何類型的PHY設備都可以正常工作。802.3協議最多支持32個PHY,但有一定的限制:要符合協議要求的connector特性。MII接口如下圖所示:

後來還有GMII(1Gbps)、10GMII、25GMII、200GMII和500GMII等。

提到MII,就有可能涉及到RS,PLS,STA等名詞術語,下面講一下他們之間對應的關係。

所謂RS即Reconciliation sublayer,它的主要功能主要是提供一種MII和MAC/PLS之間的信號映射機制。它們(RS與MII)之間的關係如下圖:

MII的Management Interface是與STA(Station Management)相連的。

注:關於本節,具體可參考IEEE以太網標準802.3的22.3 Signal timing characteristics節,其中包含時鐘信號等更詳細內容。

MII接口主要包括四個部分:

一是從MAC層到PHY層的發送數據接口;

二是從PHY層到MAC層的接收數據接口;

三是從PHY層到MAC層的狀態指示信號;

四是MAC層和PHY層之間傳送控制和狀態信息的MDIO接口。

MII包括一個數據接口,以及一個MAC和PHY之間的管理接口:

  • ※數據接口: 包括分別用於發送器和接收器的兩條獨立信道。每條信道都有自己的數據、時鐘和控制信號。MII數據接口總共需要16個信號,包括

  • ※TX_ER(transmit coding error): TX_ER同步於TX_CLK,在數據傳輸過程中,如果TX_ER有效超過一個時鐘週期,並且此時TX_EN是有效的,則數據通道中傳輸的數據是無效的,沒用的。注:當TX_ER有效並不影響工作在10Mb/s的PHY或者TX_EN無效時的數據傳輸。在MII接口的連線中,如果TX_ER信號線沒有用到,必須將它下拉接地。

  • ※TXD<3:0>(transmit data): TXD由RS驅動,同步於TX_CLK,在TX_CLK的時鐘週期內,並且TX_EN有效,TXD上的數據被PHY接收,否則TXD的數據對PHY沒有任何影響。

  • ※TX_EN: 發送使能。TX_EN由Reconciliation子層根據TX_CLK上升沿同步進行轉換。

  • ※TX_CLK(transmit clock): TX_CLK (Transmit Clock)是一個連續的時鐘信號(即系統啓動,該信號就一直存在),它是TX_EN,  TXD,  and  TX_ER(信號方向爲從RS到PHY)的參考時鐘,TX_CLK由PHY驅動TX_CLK的時鐘頻率是數據傳輸速率的25%,偏差±100ppm。例如,100Mb/s模式下,TX_CLK時鐘頻率爲25MHz,佔空比在35%至65%之間。

  • ※COL(collision detected): COL不需要同步於參考時鐘。The behavior of the COL signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自動協商禁止,人工設爲全雙工模式), or when the Auto-Negotiation process selects a full duplex mode of operation。即半雙工模式信號有效,全雙工模式信號無效。

  • ※RXD<3:0>(receive data): RXD由RS驅動,同步於RX_CLK,在RX_CLK的時鐘週期內,並且RX_DV有效,RXD上的數據被RS接收,否則RXD的數據對RS沒有任何影響。While  RX_DV  is  de-asserted,  the  PHY  may  provide  a  False  Carrier  indication  by  asserting the RX_ER signal while driving the value <1110> onto RXD<3:0>。

  • ※RX_ER(receive  error): RX_ER同步於RX_CLK,其在RX通道中的作用類似於TX_ER對於TX通道數據傳輸的影響。

  • ※RX_CLK: 它與TX_CLK具有相同的要求,所不同的是它是RX_DV, RXD, and RX_ER(信號方向是從PHY到RS)的參考時鐘。RX_CLK同樣是由PHY驅動,PHY可能從接收到的數據中提取時鐘RX_CLK,也有可能從一個名義上的參考時鐘(e.g., the TX_CLK reference)來驅動RX_CLK。

  • ※CRS(carrier sense): CRS不需要同步於參考時鐘,只要通道存在發送或者接收過程,CRS就需要有效。The behavior of the CRS signal is unspecified when the duplex mode bit0.8 inthe control register is set to a logic one(自動協商禁止,人工設爲全雙工模式), or when the Auto-Negotiation process selects a full duplex mode of operation,即半雙工模式信號有效,全雙工模式信號無效。

  • ※RX_DV(Receive Data Valid): RXD_DV同步於RX_CLK,被PHY驅動,它的作用如同於發送通道中的TX_EN,不同的是在時序上稍有一點差別:爲了讓數據能夠成功被RS接收,要求RXD_DV有效的時間必須覆蓋整個FRAME的過程,即starting no later than the Start Frame Delimiter (SFD) and excluding any End-of-Frame delimiter。

  • ※MII以4位半字節方式傳送數據雙向傳輸,時鐘速率25MHz。其工作速率可達100Mb/s。

  • ※MII管理接口: 是個雙信號接口,通過管理接口,MAC就能監視和控制PHY。其管理是使用SMI(Serial Management Interface) 總線通過讀寫PHY的寄存器來完成的。一個是時鐘信號(***MDC (management data clock)***)。另一個是數據信號(***MDIO (management data input/output)***)。

  • ※MDC: 由站管理實體向PHY提供,作爲在MDIO信號上傳送信息的定時參考。 MDC是一種非週期性的信號,沒有最高或最低時間。 無論TX_CLK和RX_CLK的標稱週期如何,MDC的最小高低時間應爲160 ns,MDC的最小週期爲400 ns。

  • ※MDIO: 是PHY和STA之間的雙向信號。 它用於在PHY和STA之間傳輸控制信息和狀態。 控制信息由STA同步地針對MDC驅動並且由PHY同步地採樣。 狀態信息由PHY針對MDC同步驅動並由STA同步採樣。

PHY 裏面的部分寄存器是IEEE定義的,這樣PHY把自己的目前的狀態反映到寄存器裏面,MAC 通過SMI 總線不斷讀取PHY 的狀態寄存器以得知目前PHY 的狀態。例如連接速度、雙工的能力等。當然也可以通過SMI設置PHY的寄存器達到控制的目的。例如流控的打開關閉、自協商模式還是強制模式等。不論是物理連接的MII總線和SMI總線還是PHY的狀態寄存器和控制寄存器都是由IEEE的規範的。因此不同公司的MAC和PHY一樣可以協調工作。當然爲了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。

MII支持10Mbps和100Mbps的操作,一個接口由14根線組成,它的支持還是比較靈活的。但是有一個缺點是因爲它一個端口用的信號線太多,如果一個8端口的交換機要用到112根線,16端口就要用到224根線,到32端口的話就要用到448根線。一般按照這個接口做交換機是不太現實的。所以現代的交換機的製作都會用到其它的一些從MII簡化出來的標準,比如RMII、SMII、GMII等。

RMII(Reduced Media Independant Interface,簡化媒體獨立接口)是標準的以太網接口之一,比MII有更少的I/O傳輸。RMII口是用兩根線來傳輸數據的,MII口是用4根線來傳輸數據的,GMII是用8根線來傳輸數據的。MII/RMII只是一種接口,對於10Mbps線速,MII的時鐘速率是2.5MHz就可以了,RMII則需要5MHz;對於100Mbps線速,MII需要的時鐘速率是25MHz,RMII則是50MHz。

MII/RMII用於傳輸以太網包,在MII/RMII接口是4/2bit的,在以太網的PHY裏需要做串並轉換,編解碼等才能在雙絞線和光纖上進行傳輸,其幀格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。

以太網幀的格式爲:前導符+開始位+目的mac地址+源mac地址+類型/長度+數據+padding(optional)+32bitCRC

如果有vlan,則要在類型/長度後面加上2個字節的vlan tag,其中12bit來表示vlan id,另外4bit表示數據的優先級。

GMII是千兆網的MII接口,這個也有相應的RGMII接口,表示簡化了的GMII接口。

GMII採用8位接口數據,工作時鐘125MHz,因此傳輸速率可達1000Mbps。同時兼容MII所規定的10/100 Mbps工作方式。GMII接口數據結構符合IEEE以太網標準,該接口定義見IEEE 802.3。

  • 發送器:

  • 在千兆速率下,向PHY提供GTXCLK信號、TXD、TXEN、TXER信號與此時鐘信號同步。否則在10/100Mbps速率下,PHY提供TXCLK時鐘信號,其它信號與此信號同步。其工作頻率爲25MHz(100M網絡)或2.5MHz(10M網絡)。

  • ※GTXCLK——吉比特TX…信號的時鐘信號(125MHz)

  • ※TXCLK——10/100Mbps信號時鐘

  • ※TXD[7…0]——被髮送數據

  • ※TXEN——發送器使能信號

  • ※TXER——發送器錯誤(用於破壞一個數據包)

  • 接收器:

  • ※RXCLK——接收時鐘信號(從收到的數據中提取,因此與GTXCLK無關聯)

  • ※RXD[7…0]——接收數據

  • ※RXDV——接收數據有效指示

  • ※RXER——接收數據出錯指示

  • ※COL——衝突檢測(僅用於半雙工狀態)

  • 管理配置: 管理配置接口控制PHY的特性。該接口有32個寄存器地址,每個地址16位。其中前16個已經在“IEEE 802.3,2000-22.2.4 Management Functions”中規定了用途,其餘的則由各器件自己指定。

  • ※MDC——配置接口時鐘

  • ※MDIO——配置接口I/O

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章