UDP协议其实比较简单,网上也很多现成的资源,难的可能是不知如何利用和入手,先抛砖引玉提供自己的思路,若有更好的学习方法也欢迎分享~
根据个人经历,建议可以从以下几个路径开展(学习其他新的通信协议或算法也可以参考):
1. 准备工作:
1.1 在github或内网里找2~3个(多了看不过来。。)比较完善的UDP协议栈verilog实现代码。
1.2 CSDN上找2篇讲解UDP协议组成的文章,或找官方文档查阅一下即可。
2. 初步了解:
结合文章尝试理解代码的组成,细节不一定能完全看懂但要熟悉源代码的路径和结构,并且理解大致代码框架、并对数据流向可以有个概念。
(推荐先把源码都一股脑弄到一个vivado工程里,他自动就能梳理出模块间的例化关系了,但数据流向还要简单看看才能理解)
3. 学习方法:
3.1 路线A:如果这时感觉有信心可以搭建工程或者仿真直接看看效果的可以试试;有助于加深对各模块之间信号流理解;毕竟光看代码也怪枯燥。。
3.2 路线B:没有搭建工程的能力或没有现成的仿真;就硬肝。。。
硬肝的方法也比较简单,抓住一两个核心的参数或数据流(如stream接口的tlast、vld、rdy信号),把这几个信号流过的所有模块里外大致看一遍,最好能借着这个数据流把各核心模块的功能全都捋顺。这样为后续进一步理解和搭建工程/仿真提供条件。
当然,最终路线B还是要以搭建工程和仿真作为目的,来进一步将设计呈现出结果。
在这集中po一下准备工作中收集到的各个资源,供大家随取随用:
4. github源码链接及相关介绍链接
(可以先看verilog-eth,因为corundum里有很多别的内容,如pcie啥的,容易眼花缭乱,影响注意力):
GitHub - alexforencich/verilog-ethernet: Verilog Ethernet components for FPGA implementation
GitHub - corundum/corundum: Open source FPGA-based NIC and platform for in-network compute
优秀的 Verilog/FPGA开源项目介绍(四)- Ethernet - 知乎 (zhihu.com)
业界第一个真正意义上开源100 Gbps NIC Corundum介绍_csdn xdpeter-CSDN博客
5. UDP协议文章
(这个能找到很多,然后还建议看看黑金、米联客、正点原子的教程,都解释得比较详细和全面):UDP协议的详细解析-CSDN博客
如果想把ARP也弄了也可以搜搜文章看看,源码反正上面的链接里都有:
以太网协议介绍(ARP、UDP、ICMP、IP)_以太网协议类型有哪些-CSDN博客
6. 后续文章链接
6.1 大致是打算先梳理下协议,借鉴几个图来说下我的理解;
UDP协议及verilog实现——(二)协议解读-CSDN博客
6.2 再说说github的代码咋看;
UDP协议及verilog实现——(三)github项目阅读-CSDN博客
6.3 再介绍下搭建仿真流程;
6.4 再介绍下工程搭建流程;