一个关于fpga的udp协议以太网传输的问题

2019-07-15 20:35发布

  1. 发送 clk为e_rxc 125M
复制代码
  1. 写入 clk为50M
复制代码
我使用了使用xilinx spartan6 的板子来进行高速数据采集和传输。

问题是:
1.我一开始使用控制信号的方式,实现了“每当完成一次采集(200K),就进行一次ip发送(即对数据进行udp包装,发送到phy端口,并进行网线传输)。”这个实现了,问题是数据达不到200K传输,只有177K。而且,我每发一个数据,在前面添加编号,256一个循环,发现,前面接收的都没问题,后面开始丢包严重,用正弦波测试,前面波形非常平滑,后面就变得不行了,本来一个波形应该有n个点,后面的只有n/2个点。
为什么后面会丢包?即使降到50k,问题一样,只是要晚一些。

2.由于1的问题,认为是时钟问题,于是,按原来教程的方法,用ram每200K(50M时钟——板子)写入,并且每200k(125M的e-rxc)读出,使用chipscope发现输出的帧没问题(txd),但是网络调试助手抓不到包,用wireshark抓包,发现接收的板子mac地址错误,其他的IP地址也错了。,后面又改为100K和50K试了一下,mac依然错,并且抓到的包长度也错了。后面改了一下代码又试了下,发现200K的又可以了,但出现问题1.中的情况。又原封不动的改为50K,抓包又失败,mac地址这些的又错了。改回去,又可以了。然后用chipscope看了下,数据帧在到phy之前都没问题啊。我是真的没办法了。


写入和发送的代码附上,还望各位帮我解个疑。不胜感激。

代码截图 代码截图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。