RMII,Reduced MII。Reduced的意思是「減少 (的)」;換句話說,原本的MII需要16根訊號線,但RMII只需要8根訊號線即可。說明如下:
1, 2. TXD [0:1]:Transmit Data (傳輸資料) * 2。
3, 4. RXD [0:1]:Receive Data (接收資料) * 2。
5. TX_EN:Transmit Enable (傳輸致能)。發送致能訊號,只有在TX_EN有效期間內所傳輸的資料才有效。
6. RX_ER:Receive Error (接收錯誤)。接收資料錯誤的提示訊號,同步於REF_CLK,高準位 (High)時有效─表示RX_ER在高準位時所接收的資料有問題。但在10 Mbps之下,RX_ER不起作用。
以上6根訊號線的設計與MII相同。
7. REF_CLK:Reference Clock (參考時脈)。由外部的時脈來源 (Out Source Clock)提供50 MHz (註1)的參考時脈 (同時給MAC和PHY)做參考,這一部份與MII的TX_CLK和RX_CLK不同,原本是分開的,且均由PHY提供。
以下這一段話是從網路上抄來的….由於PHY的時脈是由外部提供,並非由載波訊號 (註2)提取,所以當PHY從乙太網路接收到資料時,需要設計一個FIFO (First In, First Out,先進先出),用來協調2個不同的時脈,在對乙太網路發送及接收的時後提供一個緩衝;而當PHY對MAC做傳送及接收 (TXD / RXD)的時後就不需要,因為它們共用一個REF_CLK。
8. CRS_DV:Carrier Sense / Data Valid (載波偵測 / 資料有效)。這1根訊號線,是從MII中的RX_DV和CRS這2根訊線合併而來。在RMII中,REF_CLK和CRS_DV以非同步的方式做輸出。
在MII中,當CRS比RX_DV提早結束時─即乙太網路的載波已消失 (CRS為0,低準位),但FIFO佇列中尚有資料 (RX_DV為1,高準位)要傳輸時 (請回頭看MII中CRS和RX_DV的定義),就會出現CRS_DV在半位元組的邊界以25 MHz (或是2.5 MHz)的頻率在0、1之間來切換,因此,MAC就能夠在CRS_DV的訊號線精準地分辨出CRS和RX_DV。
當PHY從乙太網路接收到有效的載波訊號時,CRS_DV即變為有效訊號,若此時FIFO中還沒有資料,PHY會發送全部為0的資料給MAC;當FIFO中有資料時,會發送”10101010….”一系列的Preamble (表頭),直到有”01”這2個bit出現為止 (註3),代表正式的資料傳輸開始,當MAC偵測到此一變化,就會開始接收資料。
註解:
1. 因為原本的MII的傳送和接收 (TXD[0:3] / RXD[0:3])總共4組訊號線,時脈分別為25 MHz (100 Mbps)和2.5 MHz (10 Mbps);但在RMII中,傳送和接收的訊號線只剩下2組 (TXD[0:1] / RXD[0:1]),所以時脈必須分別提升至50 MHz和5 MHz,才能夠維持乙太網路100 Mbps和10 Mbps的傳輸速率。
2. 這裡的載波訊號,指的應為從乙太網路傳來的訊號;而PHY和MAC之間的”載波”,應為TX_CLK和RX_CLK (MII),或是REF_CLK (RMII)。
3. FIFO的Preamble和”01”的這種作法,和SMI (MDC / MDIO)的格式類似:Preamble (32個1),然後才是Start (01)。
相關文章:
1. Media Independent Interface
沒有留言:
張貼留言