在使用AXI 1G/2.5G Ethernet Subsystem若要使用rmii接口的phy则需要使用xilinx mii to rmii的ip核,如下图:
需要说明:
rmii接口的时钟系统和mii接口并不一样,rmii接口是系统同步,收发端使用同一个时钟源(ip核从ref_clk输入);而mii是源同步系统,收发端都有对应的clk信号。
1、这个核并不是自适应的10M/100M,它的速度是固定的(默认我们需要选择:Speed 100M/实际工作环境不太可能遇到10M的情况):
一开始没有勾选导致数据发送失败,我用板卡和PC通信,PC端无法抓取到子卡的网络报文,使用ila监测时序发现发送周期不正确,正常31个时钟周期的网络报文前导码(7个0x55,一个0xd5)竟然用了331个周期:(起始点为4096)
手册给出来的时序:
备注:添加ila找不到时钟源时记得可以选择时钟域类型:
2、需要对rmii引脚添加iob xdc约束,因为ip核并没有对引脚做约束,手册上已说明:
3、需要禁用Ethernet Subsystem ip核的管脚xdc约束:
手册上没有给出具体的做法:我是直接disable掉了ip核生成的一个xdc(因为它是只读属性我无法更改),更改后成功生成了bit,测试也没有问题。
参考:
pg146-mii-to-rmii.pdf