微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于千兆以太网,UDP传输漏包的问题

关于千兆以太网,UDP传输漏包的问题

时间:10-02 整理:3721RD 点击:
FPGA千兆以太网发送数据,数据来自AD采集(有60MHz),经FIFO缓存。采用的UDP协议,一帧一帧传输数据,最后通信成功,但是漏包严重,后来发现是因为:AD不停地采集数据,但每一帧UDP数据包还需要传输包头、地址、端口号等,这段时间里采集的数据就丢失了。请问大家有没有什么解决办法呢?
补充内容 (2017-5-24 14:46):
我后来降低了采样频率,signal tapii里看到是没漏包的,但LabVIEW里看到是漏包了;
还有一个大问题,错包也很严重,一帧一帧的错误的数据,后来又取消了FIFO,错包要好些;
后来观察到数据在AD采集时,已经出错了(一段一段的),所以跟错包比起,漏包也可以容忍了,毕竟是有规律的漏包。

比如说  我采一个点用了100us,那么100us怎么分配的,前50us采,后50us打包发送,加头加尾的时间就是在后50us里面,在后50us的时间里采集的数据不变,还是保存在reg里面么;就是预留时间发送,再把总时间算成他的采样率

那你用FIFO缓存的意义呢?

FIFO主要是一个先进先出,它并不会说,若数据还没读取的话,接着往后存,它会溢出,关于这点我也很困惑

好好、、、、、

用两个fifo切换呢?要么多缓存ad的采样数据使得匹配发送数据的频率,要么提高时钟频率来跟得上ad的速度,不过会受到PHY的时钟频率限制。

会有溢出信号呀

你有这样的板卡 和资料不

买的黑金AX515开发板

用winshark抓包可以不丢包,不过我当时是50M*16bit,60M清楚会不会,

我需要在LabVIEW上显示波形,就是看到LabVIEW上波形不对

巧了,我最近也做的ip-udp传输,但是我没用fifo,采集一个点发一个点

我最后也把FIFO去掉了,主要是错的包也很多
我的要求实时,连续采集,漏包是必然的

为什么我没咋漏包

你的采集频率是多大的?是不停的采吗?

en 不停的采集 采样率10K

降低采集频率应该会好点

你的意思是采集频率快,而传输速率低吗?是不是labview读取数据太慢呢?

你的意思是采集频率快,而传输速率低吗?是不是labview读取数据太慢呢?

直接把采集到的数据存在fifo里,然后控制好时钟,是不会漏包的。


那你是怎么控制的呢?是没有用Verilog直接编写的吗?

传输快些,采集减慢了,LabVIEW直接读取,不知道速度是怎样的

没有啊,我上微机用的是C,我就是用verilog写的,之前我用labview来看,结果wireshark数据抓的对的,结果labview都不出来,后来我就用C了

那在传UDP的包头和其他地址、校验码信息时,没法传采集的数据啊,为什么你的数据没有丢?

啊,我不太明白你说的没法传采集数据是什么意思,FPGA以太网上传数据打包先是以太网帧头 ip帧头 udp帧 +数据+CRC校验,什么没法传数据啊

你既然一直在采,就需要一直传啊,可每一帧数据都需要加头加尾,头尾的传输也需要时间啊,那这个时间段你采的数据放哪呢?

哦,我懂了,你这样采样频率会降低很多,我的不适用,我的50M已经够低了。非常感谢你的回答!

巧了,我最近也做的ip-udp传输,但是我没用fifo,采集一个点发一个点

可以留个联系方式吗?我有些问题也想请教你啊,我微信502137807

谢谢分享,看看!

我也没弄出来啊

48k*20路*32bit,ddr3,还好

上位机的问题。FPGA发送速度110M/S,在Windows系统下不管是用调试助手还是自己用QT写的接收测试程序,都会出现严重的丢包。在Linux系统下用QT写了测试程序,收到的数不作任何处理,只测速,测得的接收速度能达到110M/S,兄台有没有好的解决方法?

更不用说LabView的实时性本身就差

更不用说LabView的实时性本身就差

暑假了,想学习FPGA的同学们,可以利用暑假期间好好学习下FPGA,我们现在有款初学者的FPGA开发板利器,现在购买还有配套书籍赠送哦:
入门FPGA开发板:
https://item.taobao.com/item.htm ... &id=35911884243
赠送完全配套书籍:
https://item.taobao.com/item.htm ... amp;id=540865636294
有一定基础的同学,可以看下高端的开发板:
https://item.taobao.com/item.htm ... amp;id=520588767908
如果以上两款依然满足不了您的需求,更可以看下更高端的开发板:
https://item.taobao.com/item.htm ... &id=39939126777
有任何问题,欢迎旺旺 QQ来咨询哦!

先保存到flash中,再从flash中通过UDP传送

我最近也在做类似的项目,
我的流程是这样的。
读取ADC数据-----FPGA的寄存器r_data-----写入FIFO
读取FIFO的的数据-----FAGA的寄存器USB_data----输出到USB芯片。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top