问题:
1、Linux下axi_ethernet网速测试,iperf显示zynq作server时带宽正常,作client时带宽极低。
2、ping小包可以通,但ping大包丢包率高。
分析:
作server时正常说明接收正常,作client时带宽低说明发送端存在问题。追溯到硬件配置发现是时钟问题。遇到第一例是给zynq的33.333MHz晶振换成了33MHz晶振,导致跑千兆时实际的tx_clk偏离125MHz太多,从而导致了对端接收不稳的情况。第二例是复旦微Zynq配置问题,跑千兆时在Vivado上配置PS给PL的一路输出时钟为125MHz,将该125MHz时钟送入axi_ethernet,但是导入procise后tx_clk频率发生了变化,实际值偏离125MHz比较大,出现了网络发送带宽低的问题。总之,该问题统一起来就是由于发送时钟偏离125MHz太多导致的。
解决:
1、PS端33.333MHz晶振一定要使用正确
2、开发复旦微时,将Vivado工程导入Procise后要检查一遍所生成的时钟,是否跟自己需要的频率相对应,如果偏离太远需要手动调整或者选择其他策略。复旦微Zynq生成100的整数倍频率是比较准的,可以将其引出后再由PL端锁相环变频获得自己所需的频率。