本文主要是介绍基于10G Subsystem FPGA 万兆UDP协议栈实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
**背景**
一般项目和上位机交互一般采用网口或者串口,其中千兆网用的比较多, 随着传输速率需求的加大,千兆网本身的理论速度就无法满足一些大数据量的传输场景。
常见的网络协议就是TCP/IP及UDP,通常情况下TCP/IP协议栈大部分由于比较复杂,一般的方案主要选择DSP之类的MCU自带的协议栈,纯逻辑也可以实现,只是工作量很大,当然HLS也是一个不错的选择,这里介绍一种基于10G Ethernet Subsystem Ip和的UDP协议栈实现。
UDP的数据格式这里就不做过多的解释,有很多相关的文档及博客
实现:
上图是 10G Ethernet Subsystem Ip的配置图,要实现UDP协议主要就是实现ICMP (ping) UDP封包及ARP 3中数据格式包,基于xilinx方案万兆和千兆网的主要区别就是,万兆主要是采用了AXI总线的结构。主要就是根据标准协议对3种包进行封装打包,另外有一个总裁的机制,因为同一个时刻只能发送其中一种包,优先级最高的还是要保证数据传输。
其中10G Ethernet Subsystem Ip主要实现MAC数据打包
最后:
和PC机器交互传输的瓶颈主要在于上位机数据处理,上图可以看到16小时未发生丢包
这篇关于基于10G Subsystem FPGA 万兆UDP协议栈实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!