RTL库

开始使用万兆以太网UPD协议

RTL库 FPGA开发框架 提供了UDP协议模板可以例化使用,方便二次开发……

开始使用万兆以太网UDP模块


RTL库 的万兆以太网模块已经完成UDP的发包和收包,方便用户第二次开发和使用。

万兆以太网架构图


万兆以太网模块是由xilinx 的 10G ethernet subsystem IP core作为核心模块 、RTL库开发的UDP协议封装、IP和UDP的校验和计算模块、发送FIFO接口和接收AXI-Stream接口,架构框图如下:

万兆以太网框图

文件说明

  • fifo/*.v:异步FIFO模块 verilog HDL源码文件。
  • top_udp10geth.v:10G以太网顶层模块(此模块可以使用sublime v_udp10geth命令创建)。
  • tx_test_data.v:产生测试数据帧模块,将裸数据写入TX FIFO。
  • udp10g_tx_fifo.v:将写入此FIFO的数据添加IP/UDP校验和MAC IP PORT字段后发送给10G以太网核。
  • sim/tb_top_udp10geth.v:仿真测试文件,产生测试时钟激励。
  • diff_clock_inout.v:用于Xilinx官方VC709板卡差分参考时钟的配置。
  • iic_wr_ctrl.v:用于Xilinx官方VC709板卡差分参考时钟的配置。

以上每个文件都有内部注释。

用户接口波形

  • Tx_wr_fifo_en是fifo的写使能,控制写数据是否有效,当使能失效时刻标志着一帧UDP包完成,一般最大包是178*64bit,例如一帧数据有150*64bit,那么此150个时钟周期保证使能连续有效,数据结束使能拉低,自动会将数据转换为UDP协议发送。
  • Tx_wr_fifo_data是fifo的写数据,当写使能有效此数据将被写入fifo,只需要写入裸数据,无需UDP协议封装
  • Tx_busy高有效,当fifo的数据写玩将被转换为以太网udp包发送,此时fifo不允许写入新的数据
  • rx_data万兆以太网数据,包含MAC地址,IP数据,解析数据请参考以太网协议
  • rx_valid万兆以太网数据有效标志
  • rx_keep对应rx_data的字节有效标志,一个比特位标志一个字节有效,高有效。
  • rx_user在数据帧最后一个时钟周期有效标志此帧数据有效完整。
  • rx_last在数据帧最后一个时钟周期有效标志此数据是最后一个周期数据。

创建一个万兆功能

  1. 在hdl文件夹下新建一个top_udp10geth.V的文件;
  2. 用Sublime软件中打开并输入v_udp10geth 回车即可自动例化万兆代码;
  3. 在sim文件夹下新建一个tb_top_udp10geth.V的文件;
  4. 在Sublime软件中打开并输入v_tb_udp10geth 回车即可自动例化万兆代码;
  5. 将下载的RTL库框架中Hdl文件夹中的.V文件粘贴到新建的hdl文件夹中。
  6. 打开vivado 工具新建RTL工程
  7. 新建万兆以太网IP 10G ethernet subsystem

自动调用功能库

参与讨论

有任何使用问题,请在评论中留言,也欢迎大家发表意见、建议。

感谢大家对 RTL库 的关注和支持!

侧栏导航