引言
DP83848C是美國國家半導體公司生產的一款魯棒性好、功能全、功耗低的10/100 Mbps單路物理層(PHY)器件。它支持MII(介質無關接口)和RMII(精簡的介質無關接口),使設計更簡單靈活;同時,支持10BASE~T和100BASE-TX以太網外設,對其他標準以太網解決方案有良好的兼容性和通用性。
MII(Medium Independent Interface)是IEEE802.3u規定的一種介質無關接口,主要作用是連接介質訪問控制層(MAC)子層與物理層(PH-Y)之間的標準以太網接口,負責MAC和PHY之間的通信。由于MII需要多達16根信號線,由此產生的I/O口需求及功耗較大,有必要對MII引腳數進行簡化,因此提出了RMII(Reduced Medium Independent Interface,精簡的介質無關接口),即簡化了的MII。
1 硬件設計
1.1 電路設計
DP83848C的收發線路各是一對差分線,經過變比為1:1的以太網變壓器后與網線相連。以太網變壓器的主要作用是阻抗匹配、信號整形、網絡隔離,以及濾除網絡和設備雙方面的噪音。典型應用如圖1所示。
圖2是DP83848C與MAC的連接電路。其中,Xl為50 MHz的有源振蕩器。
1.2 PCB布局布線
布局方面,精度為1%的49.9 Ω電阻和100 nF的去耦電容應靠近PHY器件放置,并通過最短的路徑到電源。如圖3所示,兩對差分信號(TD和RD)應平行走線,避免短截,且盡量保證長度匹配,這樣可以避免共模噪聲和EMI輻射。理想情況下,信號線上不應有交叉或者通孔,通孔會造成阻抗的非連續性,所以應將其數目降到最低;同時,差分線應盡可能走在一面,且不應將信號線跨越分割的平面,如圖4所示。信號跨越一個分割的平面會造成無法預測的回路電流,極可能導致信號質量惡化并產生EMI問題。注意,圖3和圖4中,陰影部分為錯誤方法。
2 RMll模式描述
RMII模式在保持物理層器件現有特性的前提下減少了PHY的連接引腳。
RMII由參考時鐘REF_CLK、發送使能TX_EN、發送數據TXD[1:0]、接收數據RXD[1:0]、載波偵聽/接收數據有效CRS_DV和接收錯誤RX_ER(可選信號)組成。在此基礎上,DP83848C還增加了RX_DV接收數據有效信號。
2. 1 REF_CLK——參考時鐘
REF_CLK是一個連續時鐘,可以為CRS_DV、RXD[1:O]、TX_EN、TXD[1:O]、RX_DV和RX_ER提供時序參考。REF_CLK由MAC層或外部時鐘源源提供。REF_CLK頻率應為50 MHz±50×10-6,占空比介于35%和65%之間。在RMII模式下,數據以50 MHz的時鐘頻率一次傳送2位。因此,RMII模式需要一個50 MHz有源振蕩器(而不是晶振)連接到器件的X1腳。
2.2 TX_EN——發送使能
TX_EN表示MAC層正在將要傳輸的雙位數據放到TXD[1:O]上。TX_EN應被前導符的首個半字節同步確認,且在所有待傳雙位信號載入過程中都保持確認。跟隨一幀數據的末2位之后的首個REF_CLK上升沿之前,MAC需對TX_EN取反。TX_EN的變化相對于REF_CLK是同步的。
2.3 TXD[1:0]——發送數據
TXD[1:O]的變換相對于REF_CLK是同步的。TX_EN有效后,PHY以TXD[1:0]作為發送端。
在10 Mbps模式下,由于REF_CLK的頻率是在10Mbps模式中數據速率的10倍。因此TXD[1:0]上的值必須在10個脈沖期間保持穩定,確保DP83848C能夠每隔10個周期進行采樣。發送時序如圖5所示,發送延時情況如表l所列。其中,PMD為物理介質關聯層(physical media depen-dent)接口。
2.4 RXD[1:0]——接收數據
RXD[1:0]轉換是與REF_CLK同步的。在CRS_DV有效后的每個時鐘周期里,RXD[1:O]接收DP83848C的兩位恢復數據。在某些情況下(如數據恢復前或發生錯誤),則接收到的是RXD[1:O]的預確定值而不是恢復數據。CRS_DV解除確認后,RXD[1:O]為“00”,表示進入空閑狀態。CRS_DV確認后,在產生正確的接收解碼之前,DP83848C將保證RXD[1:0]=“00”。
DP83848C提供的恢復數據總是半字節或成對雙位信號的形式,這對于由前導符開始的所有數據值都成立。因為CRS_DV是異步確認的,不能假設先于前導符的“00”數據會是雙位信號形式。
100 Mbps模式下,在CRS_DV確認之后的正常接收過程中,RXD[1:O]將會保持“00”,直到接收器檢測到正確的起始串分界符(STart St-ream Delimiter,SSD)。一旦檢測到SSD,DP83848C將會驅動前導符(“01”),后面緊跟著起始幀分界符(Start of Frame. Delimiter,SFD)(“01”“01”“01”“11”)。MAC應該開始SFD之后的數據。如果檢測到接收錯誤,在載波活動結束前,RXD[1:0]將會替換為接收字符串“01”。而由于幀中剩余數據被替換,MAC的奇偶校驗將會拒絕錯誤的信息包。如果檢測到錯誤的載波(壞的SSD),RXD[1:O]將會替換為“10”,直到接收事件結束。這種情況下,RXD[1:O]將會從“00”變為“10”,而無需標明前導符(“01”)。
10 Mbps模式下,CRS_DV確認后,RXD[1:O]將會一直保持“00”,直到DP83848C有恢復脈沖并能對接收數據進行解碼為止。當存在有效接收數據時,RXD[1:O]以“01”為前導符接收恢復的數據值。因為REF_CLK頻率是10 Mbps模式下數據速率的10倍,MAC對RXD[1:0]上的值每隔10個周期采樣一次。接收時序如圖6所示,接收延時情況如表2所列。
2.5 RX_DV——接收數據有效
盡管RMII并不要求,DP83848C還是提供了一個RX_DV信號。RX-DV是沒有結合CRS的接收數據有效信號(Receive Data Valid)。第一個正確的恢復數據(前導符)或偽載波檢測到來時,RX_DV被確認,在恢復數據的末兩位傳送之后解除確認。通過使用該信號,全雙工MAC不必再從CRS _DV信號中恢復RX_DV信號。
2.6 CRS_DV——載波偵聽/接收數據有效
當接收介質處于非空閑狀態時,由PHY來確認CRS_DV。在載波檢測中,CRS_DV依據與工作模式相關的標準異步確認。10BASE_T模式下,靜噪通過時發生該事件。在100BASE-TX模式,當10位中檢測到2個非相鄰的零值時,發生該事件。
在RMII規范(1.2版)中提到,載波丟失將導致與REF_CLK周期同步的CRS_DV解除確認,這在RXD[1:O]半字節的首兩位出現(即CRS_DV僅在半字節邊界解除確認)。在CRS_DV首次解除確認后,如果DP83848C還有數據位要加在RXD[1:O]上,則在REF_CLK周期中,DP83848C應在每半個字節的第2個雙位上確認CRS_DV,并在一個半字節的第1個雙位解除確認。這樣,從半字節邊界開始,到CRS(載波偵聽/接收信號)在RX_DV前結束時,CRS_DV以25 MHz(100 Mbps模式)或2.5MHz(10 Mbps模式)的頻率翻轉(假設當載波事件結束時DP83848C還有待傳送的數據位)。
通過編程DP83848C能夠與RMII規范(1.0版)很好地兼容。在該模式下,CRS_DV將會異步地與CRS進行確認,但是要等傳送完最后的數據時才會解除確認,CRS_DV在數據包的末端不會被翻轉。該模式雖然不能對來自CRS_DV的CRS信號進行精確的恢復,但是卻可以使MAC層的設計更簡單。
在出錯的載波活動時間中,CRS_DV保持確認。一旦確認CRS_DV,則可以認為在RXD[1:O]上的數據是有效的。然而,由于CRS_DV的確認相對于REF_CLK是異步的,因而在正確解碼接收信號之前,RXD[1:0]上的數據應為“00”。
2.7 RX_ER——接收錯誤
遵照IEEE802.3標準的規定,DP83848C提供一個RX_ER輸出端。RX_ER可以維持一個或更多的REFCLK周期,來標識一個在當前PHY到幀的傳輸過程中曾出現的錯誤(MAC子層不一定能檢測到,但PHY可以檢測到的編碼錯誤或其他錯誤)。RX_ER的變化相對于REF_CLK是同步的。
由于DP83848C是通過以固定數據代替原來數據的方式干擾到RXD[1:O],所以MAC不需要RX_ER,而只需CRC校驗(即奇偶校驗)就可以檢測到錯誤。
2.8 沖突檢測
RMII不向MAC提供沖突標志。對于半雙工操作,MAC必須從CRS_DV和TX_EN信號中產生它自己的沖突檢測。為了實現這一點MAC必須從CRS-DV信號中恢復CRS信號,并和TX_EN進行邏輯與。注意,不能直接使用CRS_DV,因為CRS_DV可能在幀的末端觸發以標志CRS解除確認。
3 RMII模式配置
DP83848C的RMII模式配置包括硬件和軟件兩個方面。
3.1 硬件配置
如圖2所示,DP83848C的X1(34)腳上提供50 MHzCMOS電平的振蕩信號。在上電和復位時,強制DP83848C進入RMII模式。方法是通過在RX_DV/MII_MODE(39腳)接入一個上拉電阻。
3.2 軟件配置
PHY的軟件初始化流程如圖7所示。
結語
DP83848C配合RMII標準接口提供了一種連接方案,可以減少MAC至PHY接口所需要的引腳數目。該方案使得設計工程師在保持IEEE802.3規范中所有特性的同時,降低系統設計成本。正因為如此,DP83848C能夠更好地適應工業控制和工廠自動化,以及通用嵌入式系統等應用場合。