Zynq&ZU+ Mpsoc的以太网使用普遍,从功能大致分为2类应用:调试管理、数据传输。本文主要集中在PS端的Ethernet RGMII外接phy设计和调试,该部分客户用的最多也最容易出问题,希望通过本文对基于RGMII+phy的典型应用快速入门,解决问题。1. 以太网接口介绍
以太网接口包含管理、数据通信接口,管理接口也就是我们常说的MDC/MDIO,用来访问phy寄存器,配置工作模式、检测工作状态。数据接口:常见的有MII, GMII, RGMII,SGMII, QSGMII等,我们本次专注在RGMII。TX/RX data between MAC & PHY
2. MDC/MDIO接口
MDC clock频率: 不超过2.5 MHz (defined by the IEEE802.3);
| Preamble (32bits) | Start (2bits) | OP Code (2bits) | PHYAD (5bits) | REGAD (5bits) | Turn Around (2bits) | Data (16bits) | Idle |
Read | 1.......1 | 01 | 10 | A4A3A2A1A0 | R4R3R2R1R0 | Z0 | D15.......D0 | Z* |
Write | 1.......1 | 01 | 01 | A4A3A2A1A0 | R4R3R2R1R0 | 10 | D15.......D0 | Z* |
硬件设计Tips:MDIO为OD门,需1.5K电阻上拉。
3. RGMII接口
RGMII规范中约定data和clock之间需要有2ns延迟,实现方式:A. PCB板上绕线实现 (不推荐);
B. PCB(data/clock等长处理)+PHY芯片上分别设置TX/RX delay(现在phy基本上均支持,使用前请查看phy手册确认);
带有internal delay的phy/mac:
4. 软件开发Tips
Linux如何配置phy地址&phy delay,以ZCU102为例,GEM3 phy address=0xC,采用phy internal tx/rx delay,在设备树system-usr.dsti中添加phy地址和delay(有的phy硬件配置好,无需额外添加)。
5. 调试Tips
在uboot下通过mii命令查看phy的link/AN/Speed状态,或者配置loopback测试。常用命令有mii info、mii dump、miiwrite等等。
通过mii info可以查看MDC/MDIO总线下挂载了哪些phy address。PHY0x07: OUI = 0x5043, Model = 0x21, Rev = 0x00, 1000baseX, FDXPHY0x0C: OUI = 0x5043, Model = 0x21, Rev = 0x00, 1000baseX, FDX通过mii dump可以查看phy的状态,可读性好。0. (1140) -- PHY control register -- (8000:0000) 0.15 = 0 reset
(4000:0000) 0.14 = 0 loopback (2040:0040) 0. 6,13 = b10 speed selection = 1000 Mbps (1000:1000) 0.12 = 1 A/N enable (0800:0000) 0.11 = 0 power-down(0400:0000) 0.10 = 0 isolate(0200:0000) 0. 9 = 0 restart A/N(0100:0100) 0. 8 = 1 duplex = full(0080:0000) 0. 7 = 0 collision test enable(003f:0000) 0. 5- 0 = 0 (reserved)6. 常见问题及解决方法
A1:查看原理图MDIO是否有上拉、phy address是否正确、降低MDC clock测试。A2:PC防火墙是否关闭,包含windows自带的防火墙?设备ip和pcip地址是否配置正确?如果以上均已操作正确,重点检查RGMII PHY的TX/RX delay配置。如果您在ZYNQ/ZU+MPSOC以太网方面有问题,欢迎联系: