本文開(kāi)源一個(gè)FPGA項(xiàng)目:MDIO接口讀寫(xiě)測(cè)試。以太網(wǎng)通信模塊主要由 MAC (Media Access Control)控制器和物理層接口 PHY (Physical Layer)兩部分構(gòu)成。其中,MAC控制器和PHY可以整合到同一芯片內(nèi),也可以分開(kāi),即MAC控制器由FPGA實(shí)現(xiàn),PHY由以太網(wǎng)芯片實(shí)現(xiàn)。PHY芯片內(nèi)部寄存器數(shù)據(jù)讀寫(xiě)是通過(guò)MDIO接口實(shí)現(xiàn)的,可以對(duì)PHY芯片工作模式進(jìn)行配置并獲取PHY芯片工作狀態(tài)。
01PHY芯片
PHY芯片發(fā)送數(shù)據(jù)時(shí),將MAC控制器發(fā)來(lái)的數(shù)據(jù)轉(zhuǎn)化為串行數(shù)據(jù)流,按照物理層編碼規(guī)則把數(shù)字信號(hào)轉(zhuǎn)化為模擬信號(hào)發(fā)出去,接收數(shù)據(jù)反之。
另外,PHY芯片具有自協(xié)商功能。當(dāng)連接好網(wǎng)線(xiàn)時(shí),PHY芯片會(huì)自動(dòng)檢測(cè)對(duì)端設(shè)備,并通過(guò)協(xié)商確定連接速度、雙工模式等。最終確定兩個(gè)設(shè)備同時(shí)支持的最大數(shù)據(jù)傳輸速度和最佳雙工模式。
PHY地址
本文以YT8511 PHY芯片為例。其PHY地址由LED_ACT和RXD[1:0]決定。PHY地址一共有5位,高2位固定為0,LED_ACT和RXD[1:0]表示低3位,可以通過(guò)硬件電路進(jìn)行配置。即地址范圍從00001到00111。
復(fù)位
PHY芯片支持軟硬件復(fù)位,硬件復(fù)位是通過(guò)將ETH_RST_N引腳拉低10ms實(shí)現(xiàn),軟件復(fù)位是通過(guò)向地址0x00寄存器的bit[15]寫(xiě)入1進(jìn)行復(fù)位,復(fù)位完成后,該位會(huì)自動(dòng)清零。
寄存器
YT8511共有22位寄存器,常用的就只有控制寄存器、基本狀態(tài)寄存器、和PHY芯片特定狀態(tài)寄存器:
控制寄存器用于控制芯片復(fù)位、內(nèi)部回環(huán)模式、選擇網(wǎng)速、自協(xié)商等功能;
基本狀態(tài)寄存器用于獲取PHY芯片自協(xié)商狀態(tài)、連接狀態(tài);
PHY芯片特定狀態(tài)寄存器用于獲取PHY芯片連接速度。
02MDIO接口
MAC和PHY芯片之間有一個(gè)配置接口,F(xiàn)PGA通過(guò)MDIO接口對(duì)PHY芯片內(nèi)部寄存器進(jìn)行配置,一般來(lái)講PHY芯片在默認(rèn)寄存器配置下就可以正常工作。
MDIO接口也被成為SMI接口,即串行管理接口。具體包括時(shí)鐘(ETH_MDC)和數(shù)據(jù)輸入輸出(ETH_MDIO)信號(hào)接口。其中,時(shí)鐘信號(hào)頻率應(yīng)低于12.5Mhz。
通信協(xié)議
MDIO接口通信協(xié)議如上圖所示,其中:
Preamble :32位前導(dǎo)碼,用于同步PHY芯片;
ST :2位幀開(kāi)始信號(hào);
OP :2位操作碼,讀10,寫(xiě)01;
PHYAD :5位PHY地址,用于確定與那個(gè)PHY芯片進(jìn)行通信;
REGAD :5位寄存器地址;
TA (Turnaround):2位轉(zhuǎn)向。在讀命令中,MDIO在此時(shí)由MAC驅(qū)動(dòng)改為PHY驅(qū)動(dòng),在第1位,MDIO引腳為高阻狀態(tài),第2位,PHY將MDIO引腳拉低,準(zhǔn)備發(fā)送數(shù)據(jù);在寫(xiě)命令中,不需要MDIO方向發(fā)生變化,MAC固定輸出10,隨后開(kāi)始寫(xiě)入數(shù)據(jù);
DATA :16位數(shù)據(jù);
IDLE :空閑狀態(tài),此時(shí)MDIO為無(wú)源驅(qū)動(dòng),處于高阻狀態(tài),但一般用上拉電阻使其上拉至高電平。
讀時(shí)序
MDIO接口讀時(shí)序如上圖所示,以讀取0x00地址下寄存器數(shù)據(jù)為例。整個(gè)讀操作過(guò)程的MDC時(shí)鐘由MAC驅(qū)動(dòng),同時(shí)MAC驅(qū)動(dòng)MDIO引腳輸出前導(dǎo)碼+幀開(kāi)始+操作碼+PHY地址+寄存器地址,隨后MDIO引腳切換至PHY驅(qū)動(dòng)。在第一個(gè)TA位,MDIO引腳為高阻狀態(tài),第二個(gè)TA位為低電平,表示PHY芯片成功響應(yīng),并且接下來(lái)會(huì)輸出16位寄存器數(shù)據(jù);而如果第二個(gè)TA位處于高電平,則PHY芯片響應(yīng)失敗,有可能PHY地址不正確或者其它時(shí)序的錯(cuò)誤。
需要注意的是,PHY在MDC時(shí)鐘的上升沿采集數(shù)據(jù),為保證數(shù)據(jù)的穩(wěn)定傳輸,MAC在MDC的下降沿更新MDIO引腳的數(shù)據(jù)。當(dāng)MDIO引腳切換至PHY驅(qū)動(dòng)時(shí),MDIO數(shù)據(jù)在MDC時(shí)鐘的下降沿更新,因此MAC在MDC時(shí)鐘的上升沿采集數(shù)據(jù)。在讀操作結(jié)束后,MAC將MDIO引腳輸出高阻,此時(shí)MDIO引腳的外部上拉電阻會(huì)將MDIO引腳拉高,此時(shí)MDIO接口處于空閑狀態(tài)。
寫(xiě)時(shí)序
MDIO接口寫(xiě)時(shí)序如上圖所示,以往0x00地址下寄存器寫(xiě)入0x1340為例。在整個(gè)寫(xiě)操作過(guò)程中,MDC時(shí)鐘和MDIO引腳一直由MAC端驅(qū)動(dòng),按照MDIO接口寫(xiě)通信協(xié)議開(kāi)始傳輸數(shù)據(jù)。需要注意的是,PHY在MDC時(shí)鐘的上升沿采集數(shù)據(jù),為保證數(shù)據(jù)的穩(wěn)定傳輸,MAC在MDC的下降沿將數(shù)據(jù)更新至MDIO引腳。在寫(xiě)操作結(jié)束后,MAC將MDIO引腳輸出高阻,此時(shí)MDIO引腳的外部上拉電阻會(huì)將MDIO引腳拉高,此時(shí)MDIO接口處于空閑狀態(tài)。
03實(shí)現(xiàn)功能
本文開(kāi)源的MDIO讀寫(xiě)模塊實(shí)現(xiàn)的功能主要是:FPGA通過(guò)MDIO接口每隔一定時(shí)間循環(huán)讀取PHY芯片各個(gè)寄存器的值,并通過(guò)MDIO接口對(duì)PHY芯片進(jìn)行軟復(fù)位。其中,mdio_dri實(shí)現(xiàn)了MDIO接口數(shù)據(jù)讀寫(xiě)驅(qū)動(dòng),mdio_ctrl實(shí)現(xiàn)了MDIO讀寫(xiě)控制功能。使用Vivado軟件仿真結(jié)果如下圖所示:
-
FPGA
+關(guān)注
關(guān)注
1650文章
22203瀏覽量
626644 -
接口
+關(guān)注
關(guān)注
33文章
9255瀏覽量
155394 -
Mac
+關(guān)注
關(guān)注
0文章
1124瀏覽量
54375 -
PHY
+關(guān)注
關(guān)注
2文章
330瀏覽量
53477 -
MDIO
+關(guān)注
關(guān)注
0文章
14瀏覽量
11478
發(fā)布評(píng)論請(qǐng)先 登錄
基于DWC_ether_qos的以太網(wǎng)驅(qū)動(dòng)開(kāi)發(fā)-MDIO驅(qū)動(dòng)編寫(xiě)與測(cè)試

可以在任何FLEXCOMM接口上使用MDIO嗎?
飛凌嵌入式ElfBoard ELF 1板卡-uboot移植之網(wǎng)絡(luò)修改-MDIO接口
請(qǐng)問(wèn)C6748芯片中MDIO的讀寫(xiě)速率分別最大是多少?
請(qǐng)教關(guān)于c6748的MDIO接口讀寫(xiě)phy的問(wèn)題
ADSP 21489使用ami接口與fpga連接如何編寫(xiě)測(cè)試程序進(jìn)行讀寫(xiě)驗(yàn)證
【正點(diǎn)原子FPGA連載】 第二十四章MDIO接口讀寫(xiě)測(cè)試實(shí)驗(yàn)-領(lǐng)航者ZYNQ之FPGA開(kāi)發(fā)指南
【正點(diǎn)原子FPGA連載】 第二十四章MDIO接口讀寫(xiě)測(cè)試實(shí)驗(yàn)-領(lǐng)航者ZYNQ之FPGA開(kāi)發(fā)指南
基于FPGA的MDIO接口邏輯設(shè)計(jì)
應(yīng)對(duì)多樣化數(shù)字接口測(cè)試挑戰(zhàn)的解決方案——基于可編程FPGA的測(cè)試
應(yīng)對(duì)多樣化數(shù)字接口測(cè)試挑戰(zhàn)的解決方案——基于可編程FPGA的測(cè)試儀器

多樣化數(shù)字接口測(cè)試挑戰(zhàn)的解決方案——基于可編程FPGA的測(cè)試儀器

MDIO接口的基礎(chǔ)知識(shí)詳解
基于AXI總線(xiàn)的DDR3讀寫(xiě)測(cè)試

基于FPGA的DDR3讀寫(xiě)測(cè)試

評(píng)論