mac与phy如何实现网络自适应
生活随笔
收集整理的這篇文章主要介紹了
mac与phy如何实现网络自适应
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這兩天修改網(wǎng)卡驅(qū)動以實現(xiàn)10/100/1000M自適應(yīng),因此研究了下phy芯片和emac驅(qū)動如何兼容10/100/1000M網(wǎng)絡(luò)環(huán)境,記錄在此。
網(wǎng)絡(luò)中設(shè)備端數(shù)據(jù)鏈路層由mac芯片和phy芯片組成,phy芯片根據(jù)外部網(wǎng)絡(luò)環(huán)境完成自動協(xié)商以及配置,驅(qū)動中根據(jù)phy狀態(tài)來配置mac,以達到phy與mac的相互配合工作。
現(xiàn)在主流的網(wǎng)卡phy芯片為100M和1000M,都是向下兼容。100M phy支持10/100M環(huán)境,1000M phy支持10/100/1000M環(huán)境。
http://blog.csdn.net/skyflying2012/article/details/8252843
以GMII/MII為例來研究,GMII是有8根rx/tx線,MII有4根rx/tx線。
首先以外接100Mphy芯片來研究。phy與外界網(wǎng)絡(luò)環(huán)境完成自動協(xié)商來確定其本身的速度。100M phy都支持MII接口,因此mac端就需要以MII接口定義與phy相連。
數(shù)據(jù)收發(fā)最重要的是提供正確的數(shù)據(jù)時鐘,來保證數(shù)據(jù)正確的采樣與發(fā)送。
對于100M phy,這個問題好解決,因為MII接口支持10/100M,4根數(shù)據(jù)線,只需要mac給phy提供2.5/25MHZ數(shù)據(jù)時鐘即可。
最值得研究的是外接1000M phy時如何適應(yīng)10/100/1000M網(wǎng)絡(luò)環(huán)境。
首先說,這是一個倒推的過程,首先來看phy是如何處理10/100M和1000M環(huán)境的。mac的接口模式以及時鐘再根據(jù)phy的配置進行配置。
隨便找了一個1000M phy芯片的datasheet,RTL88E1111,對于GMII/MII接口的描述如下:
可以看出對于1000M phy,GTX_CLK TX_CLK都需要與mac相連,在10/100/1000M環(huán)境下我分別用示波器測量clk的確如上所說。
當(dāng)然phy在自動協(xié)商完成后是其硬件邏輯會完成模式GMII/MII的轉(zhuǎn)換,而對于mac,則要由驅(qū)動根據(jù)phy的工作狀態(tài)來確定mac的接口模式以及需要提供的clk。
這也是我們軟件開發(fā)人員最需要關(guān)注的地方,根據(jù)phy的狀態(tài),如何配置mac(接口模式 數(shù)據(jù)時鐘)來保證與phy一致。
網(wǎng)絡(luò)中設(shè)備端數(shù)據(jù)鏈路層由mac芯片和phy芯片組成,phy芯片根據(jù)外部網(wǎng)絡(luò)環(huán)境完成自動協(xié)商以及配置,驅(qū)動中根據(jù)phy狀態(tài)來配置mac,以達到phy與mac的相互配合工作。
現(xiàn)在主流的網(wǎng)卡phy芯片為100M和1000M,都是向下兼容。100M phy支持10/100M環(huán)境,1000M phy支持10/100/1000M環(huán)境。
首先說10/100/1000M都是指的數(shù)據(jù)收發(fā)速率,單位是bps。所以這里要從mac以及phy的數(shù)據(jù)收發(fā)接口下手。
mac與phy主流數(shù)據(jù)接口有GMII MII RMII等。接口規(guī)范中定義了數(shù)據(jù)收發(fā)信號線個數(shù)。接口定義可以看這篇文章:http://blog.csdn.net/skyflying2012/article/details/8252843
以GMII/MII為例來研究,GMII是有8根rx/tx線,MII有4根rx/tx線。
首先以外接100Mphy芯片來研究。phy與外界網(wǎng)絡(luò)環(huán)境完成自動協(xié)商來確定其本身的速度。100M phy都支持MII接口,因此mac端就需要以MII接口定義與phy相連。
數(shù)據(jù)收發(fā)最重要的是提供正確的數(shù)據(jù)時鐘,來保證數(shù)據(jù)正確的采樣與發(fā)送。
對于100M phy,這個問題好解決,因為MII接口支持10/100M,4根數(shù)據(jù)線,只需要mac給phy提供2.5/25MHZ數(shù)據(jù)時鐘即可。
最值得研究的是外接1000M phy時如何適應(yīng)10/100/1000M網(wǎng)絡(luò)環(huán)境。
首先說,這是一個倒推的過程,首先來看phy是如何處理10/100M和1000M環(huán)境的。mac的接口模式以及時鐘再根據(jù)phy的配置進行配置。
隨便找了一個1000M phy芯片的datasheet,RTL88E1111,對于GMII/MII接口的描述如下:
根據(jù)這段描述看出,GMII接口模式支持1000M環(huán)境,但是在10/100M環(huán)境下phy完成自動協(xié)商確定為10/100BASE-TX后就切換為MII模式,GMII引腳都是與MII兼容的(MII下8根數(shù)據(jù)線有4根不用),GMII接口定義中有2個clk線,GTX_CLK TX_CLK(GMII/MII下rx clk由phy提供),GTX_CLK在GMII模式下提供125MHZ,TX_CLK在MII模式下提供2.5/25MHZ。下面給出一個mac與1000M phy硬件電路連接圖。
可以看出對于1000M phy,GTX_CLK TX_CLK都需要與mac相連,在10/100/1000M環(huán)境下我分別用示波器測量clk的確如上所說。
綜上,
對于100M phy,外部網(wǎng)絡(luò)10/100M切換,僅需要改變mac提供的數(shù)據(jù)時鐘即可,mac接口模式不變,因為MII兼容10/100M。
對于1000M phy,外部網(wǎng)絡(luò)10/100/1000M切換,首先需要改變mac的接口模式(使用的數(shù)據(jù)線個數(shù)不同了),因為10/100M下phy會切換為MII模式,根據(jù)接口模式在改變其數(shù)據(jù)時鐘。當(dāng)然phy在自動協(xié)商完成后是其硬件邏輯會完成模式GMII/MII的轉(zhuǎn)換,而對于mac,則要由驅(qū)動根據(jù)phy的工作狀態(tài)來確定mac的接口模式以及需要提供的clk。
這也是我們軟件開發(fā)人員最需要關(guān)注的地方,根據(jù)phy的狀態(tài),如何配置mac(接口模式 數(shù)據(jù)時鐘)來保證與phy一致。
總結(jié)
以上是生活随笔為你收集整理的mac与phy如何实现网络自适应的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring depends-on 不
- 下一篇: SeaTunnel