我正在开发一个逻辑内核,使用我的FPGA板上的LAN8710 PHY,通过以太网在FPGA和PC之间进行数据传输。
我已经实现了将一些UDP数据包从FPGA传输到PC。它是一个符合PHY传输要求的简单核心。它构建UDP包并将其传输到PC。
要检查PC上的接收,我正在使用Wireshark,如上所述,我正确收到数据包。我用自己编写的简单UDP接收器检查了接收。
但是,我注意到,当Wireshark在PC上运行时,我只收到这些数据包。我的意思是,如果Wireshark为ON,我的应用程序也会收到数据包,并且后续图片的接收数据包的计数器会增加。 (这张照片不是我的,只有一张来自互联网)
http://i.stack.imgur.com/wsChT.gif
如果我关闭Wireshark,PC将停止接收数据包,并且收到的数据包计数器将停止。我的申请也停止接收。
虽然是关于网络主题的新手,但我怀疑这个问题与PC端有关。似乎Wireshark正在“打开/关闭”以太网通信渠道,或类似的东西。有谁知道这个问题?
为了构建一个在PC和FPGA之间传输数据的功能核心,我开发了一个用于传输和接收UDP数据包的核心。下一步将是ARP实现(让我的PC识别我的FPGA板,据我所知)。在这2个设备之间执行全双工数据传输需要哪些协议?
非常感谢您提前,
migue。
答案 0 :(得分:0)
检查您是否能够通过FPGA为PC单端的以太网驱动程序级别获取适当的接收中断。如果没有收到接收中断,请检查发送端(FPGA)是否有正在传输的数据包的传输中断。这应该主要帮助你解决问题。
据我所知,wireshark只是一个数据包分析器/嗅探器。但是,如果怀疑有wireshark,一种选择可能是尝试使用备用数据包嗅探器来排除是否发生任何此类情况。
用于确定网络问题以及确定网络统计信息的便捷工具应为netstat。 netstat -sp udp 应仅列出UDP的统计信息。还有许多其他参数可以与netstat一起用于诊断。
答案 1 :(得分:0)
经过几个月的努力,我解决了这个问题,我发帖帮助那些陷入同一点的人。
最后我发现Wireshark使用工具访问计算机的网络链接层。此工具允许Wireshark嗅探指定网络设备上的所有传入和传出数据包。要做到这一点,第一步是打开网络设备,这就是为什么我的程序只有在Wireshark打开时才能工作的原因。
问候。