zynq PL通过EMIO实现网络通信,LWIP无法ping通

ZYNQ一般是用两路网口,大部分硬件设计会选择直接用PS端的MIO,这样可以省去PL端的管教消耗。最近手里有个板子刚好是连接了EMIO,只能通过EMIO实现网络通信了。
zynq PL通过EMIO实现网络通信,LWIP无法ping通_第1张图片
PS的对应的配置为:
zynq PL通过EMIO实现网络通信,LWIP无法ping通_第2张图片
设置完我们会发现,选择EMIO之后,接口只能是GMII接口类型,但是恰巧硬件电路有时RGMII的接口

zynq PL通过EMIO实现网络通信,LWIP无法ping通_第3张图片
我选择的方案是通过GMII转RGMII的IP,设置如下:
zynq PL通过EMIO实现网络通信,LWIP无法ping通_第4张图片
zynq PL通过EMIO实现网络通信,LWIP无法ping通_第5张图片
注意datasheet有说这个8不能和实际物理硬件设计的PHY地址一样。
最终的BD文件为:
zynq PL通过EMIO实现网络通信,LWIP无法ping通_第6张图片
CLKIN为200M,这里通过DCM实现
之后就是正常编译,创建LWIP工程了,最终串口打印出
zynq PL通过EMIO实现网络通信,LWIP无法ping通_第7张图片
zynq PL通过EMIO实现网络通信,LWIP无法ping通_第8张图片

讲一下实现过程中遇到的问题,看网上也有些人遇到一样的问题 但是都没有人解答,
1.开始没有将复位信号拉高,导致PHY芯片一直处于复位状态,无法协商网络
2.最初我是采用了网口0来实现,但是发现无法ping 通网络,自然也无法和网络调试助手连接上实现同通信,折腾了一晚上都没搞定,最终快放弃准备测硬件的时候,转念想采用网口1时,意外好使了,遇到同样问题的朋友可以参考下试试。
3.另外对网络接口进行时序约束

你可能感兴趣的:(ZYNQ)