实战篇-FPGA实现RGMII数据接收

        RGMII时序

        前面讲到关于关于ARP的理论知识,该章节主要通过FPGA接收以太网数据,并作数据分析。

        首先关于以太网RGMII接收时序如下图所示:

        

                                                        图1 RGMII接收时序图

        如上图所示,RGMII采用双沿采样,4根数据线,时钟采用125MHz。这里提一下关于GMII时钟同样是125MHz,8根数据线,采用单沿采样。

        如上图所示,接收的信号需要将数据端整体偏移,保证数据在时钟沿的中间,这样保证采样时数据处于稳定状态。移动后的数据如下图所示:

                                                                图2 数据偏移后的数据

        偏移数据采和双沿采集会用到FPGA里的IDELAYE2原语和IDDR原语,下面就FPGA原语做简单介绍。

        FPGA驱动

        FPGA解析双沿信号一般使用IDDR转换成单沿信号,根据ug471_7Series_SelectIO文档说明,IDDR分别由三种工作模式,分别为OPPOSITE_EDGE mode、SAME_EDGE mode、SAME_EDGE_PIPELINED mode。时序图如下图所示:

                                                图3 OPPOSITE_EDGE mode模式

                                                        图4 SAME_EDGE mode模式

                                          图5 SAME_EDGE_PIPELINED mode模式

        本设计以太网采用第一种模式,如下图所示为rgmii接收端FPGA代码驱动:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/07/22 16:11:10
// Design Name: 
// Module Name: rgmii_2_gmii_rx
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module rgmii_2_gmii_rx(
	input              idelay_clk  ,
    input              rgmii_rxc   , //RGMII接收时钟
    (* MARK_DEBUG="true" *)input              rgmii_rx_ctl, //RGMII接收数据控制信号
    (* MARK_DEBUG="true" *)input       [3:0]  rgmii_rxd   , //RGMII接收数据
	
    output             gmii_rx_clk , //GMII接收时钟
    (* MARK_DEBUG="true" *)output             gmii_rx_dv  , //GMII接收数据有效信号
    (* MARK_DEBUG="true" *)output      [7:0]  gmii_rxd    	 //GMII接收数据
	
	
	
    );

	
wire[3:0] r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值