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

 

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

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

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

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

以太網數據鏈路層其實包含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也有相應的協議完成這些操做)。3d

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

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

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

一個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

相關文章
相關標籤/搜索