|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
大家好,我在用FPGA实现以太网通信的过程中,FPGA端利用UDP协议往电脑传送数据,UDP包为1K字节,全双工千兆网模式传输,电脑端没有使能PAUSE,利用wireshark抓包。当UDP包发送间隔较大时,wireshark就可以全部抓到上传的UDP包,不会有丢失,虽然不丢包,但是上传速度只有30M左右。所以为了提高速度减少UDP包发送间隔时间,此时wireshark就会出现丢包现象,中间断续着丢失许多包。我想着可能是由于下位机上传的速度太快,电脑缓存溢出又没有使能PAUSE帧,所以导致丢包现象。所以我使能了PAUSE帧,正常上传数据时,我用chipscope抓取电脑下发的数据,的确抓到pause帧下发,PAUSE帧携带的延时值为1FFF,但是就在接收到PAUSE帧的时候,正在上传的这一个UDP包,wireshark就没有抓取到,丢失了,一个比较奇怪的现象是,PAUSE好像是成对下发的,没等PAUSE帧的延时结束,电脑接着又下发一个PAUSE帧,但是携带的延时值为0000,这样就直接终止了暂停,FPGA又开始发送数据了,接着发送的是下一个UDP包,刚才丢失的那个包也就丢失了,也就是说每次接收到一个PAUSE帧,就会丢失一个UDP包,我试验了好多次,PAUSE帧都是成对出现的,而且每次第一个PAUSE帧携带的值都是1FFF。请问为什么PAUSE会成对出现呢,这是电脑的机制吗? |
|