千兆UDP学习调试记录(二)

千兆UDP学习调试记录(二)

注:本文主要是对Verilog源码进行整体分析,补充UDP协议传输的相关知识,为下一步源码分析做准备。

接下来,就是分析代码了。几大疑问:

  1. 程序中并没有MAC层的处理,也没有用MAC的IP核,所以该程序是用硬件来解决MAC层的吗?
  2. UDP的发送和接收模块都很清晰,分析其流程和通用性,看能否能行拓展。
  3. 寻找方法,或编写程序,对该UDP传输进行测试,看起最大传输速率。

20181007 周日

首先进行程序梳理。

△GMII的理解,参见博文,讲得很好:https://www.cnblogs.com/geekite/p/5204512.html

MII (Media Independent Interface(介质无关接口)或称为媒体独立接口,它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口和一个MAC和PHY之间的管理接口。数据接口包括分别用于发送器和接收器的两条独立信道,每条信道都有自己的数据、时钟和控制信号。

MII总线是一种用于将不同类型的PHY相同网络控制器(MAC相连接的通用总线。

通过逐字学习,原来MAC层的实现,是通过硬件网卡完成的,所以,在程序中不用编写了。

△开发板的硬件设置

RTL8211EG 支持MDI/MDX 自适应,各种速度自适应,Master/Slave 自适应,支持

MDIO 总线进行 PHY 的寄存器管理。

连接示意图。

也就是说,通过FPGA控制RTL8211EG芯片,就能实现物理层和链路层的功能了,在FPGA端,只需考虑传输层即可。

当然,可以通过固定PHY管脚一些参数,可以配置其工作模式。

△程序的UCF解读。

1)SLEW 压摆约束:NET “FAST_OUT” SLEW=”FAST” ;

说明:输出斜率控制,可选为FAST以及SLOW,可以提高设计的信号完整性。

2)周期约束设计:NET “usr_clk” TNM_NET= “usr_clk”;

TIMESPEC “TS_usr_clk” = PERIOD “usr_clk” 5.0ns

说明:第一条约束定义时钟usr_clk驱动的所有同步器件为一个分组;第二条约束定义其周期为5ns,即200MHZ。

△RAM分析

双口RAM,进32位,出32位,深度为400,主要功能是将以太网形式的32bit数据,转换为GMII接口需要的8bit位宽数据。

△关于CRC。在该网站上选择生成多项式,而生成Verilog代码,如下。

http://www.easics.com/webtools/crctool

代码分析:CRC初值设为32位的1,来一个8bit位宽的数据,更新一次CRC值,CRC值是累积的,与前值有关。

千兆以太网时钟是125Mhz,每个时钟下,都会更新来8bit数据,超级快。

补充:CRC为自定义添加,只针对UDP帧头到数据末尾,不对其他数据位进行校验,也就是说,只有数据到了UDP帧头才开始计算CRC,到数据末尾结束,并将结果(32bit=4Byte)附在末尾。

 

有兴趣的朋友,欢迎留言,交流,本人扣扣1021100382 ~

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间看得见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值