- 调试条件:ila/signal tap ,逻辑分析仪,示波器
- 各种gmac ip在fpga上调试的时候会遇到各种奇怪的问题,一般不要急,通常ip上都会提供loopback 功能(mac层),首先保证loopback能在fpga上调试通过
- [2.1 ] 如果loopback不通过,或者初始化有问题,要检查reset,clock时候正确配置(loopback模式下时钟是否严格符合要求不一定太重要,但是必须要有),寄存器配置要正确,loopback模式可能调佣了dma,要保证dma能正确搬运数据,总线不会卡死,dma的源地址和目标地址可用(比如ddr被正确初始化)
- [2.2 ] 如果loopback测试正确,可以在rgmii口上检测是否有输出。通常各种ip都不会屏蔽loopback的数据到rgmii口上,可以用逻辑分析仪或者示波器抓取数据。此时能看到前导码等数据,以预期是否一致。
- 在loopback正确后,再调试gmac,大多数情况下已经可以用了,如果还不行,首先要检测fpga环境
- [ 3.1] 时钟要正确,rgmii通过gmac与phy的严格的时钟频率保持数据通讯,时钟偏差会导致数据传输失败(如果偏差不大可能会有偶有错包)
- [3.2 ] io mux要正确,这条没啥说的,检查就是了
- [3.3 ] 电平标准,phy的原因,电平标准好多,fpga和phy的电平要一致。
- mdio系列保证连接和上拉电阻
- phyrst要注意
- 通常到这一步,大多数的问题已经解决了,ila/signal tap,或者示波器,逻辑分析仪已经能抓到正确的数据。在这里还要注意时钟与信号的相位,有时fpga的约束做的不好,会导致通讯错误或者错包。