问题情景:为了得到连续时间内adc采集的数据,并在pc上对数据进行分析,需要搭建链路实现fpga到pc的数据传输。考虑到adc采样频率较高(10m-100mb/s),串口通信的速率远远达不到要求,考虑使用以太网来实现信息传输。
物理链路:14位adc;开发板使用xilinx spartan-6 黑金开发板ax545;超五类或六类网线;由于程序只支持千兆以太网传输,并且考虑到部分笔记本不携带网口,因此使用了usb3.0-千兆网口的网卡;装有wireshark的电脑。
fpga部分:采用存储转发的思想,即先对adc采集的数据进行缓存,等到采集的数据满足一帧的数据长度,再对数据包封装成帧发送,采用udp格式进行发送。考虑到adc时钟与udp时钟不同步,因此先对adc采集的数据进行一级缓存;由于以太网每次只能发送8位数据,而adc采集的数据为14位,因此还需要对adc缓存数据进行转换,转换得到的数据进行二级缓存;等到二级缓存达到发送数据的长度,使能udp传输,加入帧头后发送。
pc端接收:pc端数据接收采用wireshark实现,使用wireshark捕获udp包。由于传输速率过快,连续时间接收的udp包过多,因此完成采集后先对采集的数据进行存储,存为pcap格式为后续处理做准备。存储的文件较大,达到百兆到g级别。
数据恢复(未找到很好的实现方法):数据保存在udp包的数据帧部分,格式为十六进制或二进制,需要将数据部分和其他帧结构分离。方法一:利用网络调试助手(上位机),在wireshark接收udp包的同时打开上位机,就可以得到不含帧头部的数据流,而且可以进行保存(此处使用的netassist),一个致命的问题是,当数据传输速率过快时,利用上位机保存下来的帧并不是连续的,会导致恢复的波形不连续。方法二:wireshark提供追踪udp流的功能,可以将所有帧中的数据流进行打印,但问题是得到的pcap文件中帧数据量过大,处理非常慢(严重影响使用)。方法三(考虑但未实现):利用matlab直接读取pcap文件,下载pcap2matlab开源文件,利用这一文件解析pcap文件;利用python dpkt包解析pcap文件。如果有合适的解决方法,欢迎交流!
原文标题:fpga-pc以太网通信
文章出处:【微信公众号:fpga之家】欢迎添加关注!文章转载请注明出处。
国内车规级IGBT厂商比亚迪半导体上市进程加快
云化科技与华为将在人工智能领域展开紧密合作
一文读懂RIL - OpenHarmony 3GPP 协议开发解读
PCB走线镀锡:用这种方法,既简单又漂亮!
MIPS落幕,转身加入RISC-V阵营
搭建链路实现FPGA到PC的数据传输使用以太网实现信息传输
智慧用电物联网系统解决方案
变压器节能降耗的关键技术详解及措施分析
功率半导体的创新驱动下一代能源网络建设,构建可持续发展的未来
散步般的拖地体验,电动拖把有用吗?
华勤技术蝉联五年全球智能手机和平板ODM行业第一
2017年中国物联网行业细分市场总结报告,看好学好把握未来趋势
中国联通在第一视角直播领域展开探索
无线医疗设备-超低功耗射频技术详解
电线电缆拉力测试全解析:如何使用电子拉力试验机进行测试?原理流程解密!
苹果专利:探索力感知织物手套,支持手势控制输入
半导体光放大器SOA的电光转化效率
如何使用cpp编写用于小型系统的app
8051单片机进行8路LED模拟分支控制
电动机轴承损坏的因素有哪些