千兆以太网_接收模块设计_udp_rgmii_rx

本文介绍了一种从RGMII接口接收数据并将其转换为8位数据的方法,通过gmii接口验证UDP帧的正确性并提取用户数据。文章详细描述了gmii接收过程中的分段判断技巧及三段式状态机实现方式,还讲解了gmii到rgmii接口转换的设计难点,包括双沿采样、信号延迟方法等。

一.功能:从rgmii接口(物理芯片)接收数据(4位),并通过gmii转rgmii接口(fpga)把数据转化为8位,验证udp帧的正确性,并把用户数据提取出来(去掉帧头帧尾)存储。

二.接收过程(gmii):

①分段判断:

Ⅰ.前导码;

Ⅱ.mac帧头:mac地址和以太网类型(IP还是arp);

Ⅲ.ip帧头:IP地址和上层协议类型(udp还是TCP);

以上要素都正确则接收帧,有一个出错则舍弃帧。

②技巧:

Ⅰ.存下ip首部长度,用以判断ip帧头是否接受完(因为ip帧头长度不固定,有可填充字段);

Ⅱ.存下udp帧长度,用以确定用户数据的长度。(用户数据长度 = udp帧长度 - udp帧头长度);

Ⅲ.依旧是用计数器来接收数据,每个时钟上升沿到来接收一次数据,(因此接收数据的速率是固定的)。

三.实现(gmii):三段式状态机(3个always块)

根据udp帧数据的分段定义出几个状态;

②定义接收正确和接收错误的跳变信号;

③定义两个状态寄存器

第一个always块:用时序逻辑时刻更新状态寄存器;

 第二个always块:用组合逻辑根据跳变信号判断是否要实现状态跳变:

 第三个always块:用时序逻辑根据当前接收的数据设定跳变信号的值:

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值