当前位置:   article > 正文

RGMII接口及时序详解

rgmii

一、RGMII接口介绍

以太网的通信离不开物理层 PHY 芯片的支持,以太网 MAC 和 PHY 之间有一个接口,常用的接口有MII、 RMII、 GMII、 RGMII 等。

RGMII接口如下:

信号名称位宽方向描述
TXC1OUT发送时钟信号,10/100/1000Mbps 模式频率分别为 2.5M/25M/125MHz
TD4OUT发送数据信号
TX_CTL1OUT发送数据控制信号,上升沿时为数据有效信号,下降沿时为数据有效信号/错误信号
RXC1IN接收时钟信号,10/100/1000Mbps 模式频率分别为 2.5M/25M/125MHz
RD4IN接收数据信号
RX_CTL1IN接收控制信号,上升沿时为数据有效信号,下降沿时为数据有效信号/错误信号

在这里插入图片描述

RGMII 是 GMII 的简化版,数据位宽为 4 位

  • 在 1000Mbps 传输速率下,时钟频率为 125Mhz,在时钟的上下沿同时采样数据
  • 在 100Mbps传输速率下,时钟频率为25MHz,为单个时钟沿采样
  • 在 10Mbps传输速率下,时钟频率为2.5MHz,为单个时钟沿采样

二、MAC和PHY

1.关系

MAC(介质访问控制)和PHY(物理层)是网络通信中两个互补的组件,它们共同工作以实现数据在网络中的传输。它们在OSI模型中分别对应不同的层次:

  • MAC层
    • MAC层位于OSI模型的数据链路层的上层,负责控制对共享介质(如以太网)的访问。
    • 它处理帧的封装和拆封,包括添加MAC头部和尾部,以及处理错误检测和控制机制。
    • MAC层还负责多路访问和冲突解决,例如在以太网中通过CSMA/CD(Carrier Sense Multiple Access with Collision Detection)协议。
    • MAC地址,也称为物理地址或硬件地址,是网络设备在网络中的唯一标识,由MAC层管理。
  • PHY层
    • PHY层位于OSI模型的数据链路层的下层,直接与传输媒介(如电缆、光纤、无线电波等)交互。
    • 它负责通过物理媒介传输和接收比特流,包括信号编码、调制解调、信号放大和时钟恢复。
    • PHY层定义了电气特性,如电压水平、阻抗匹配、数据速率、最大传输距离等。
    • 它还可能包括介质相关接口(MDI)和物理编码子层(PCS),用于进一步处理数据以适应特定的传输媒介。

在这里插入图片描述

2.MAC和PHY的交互

  • MAC层生成要传输的数据帧,并将它们发送到PHY层。
  • PHY层接收来自MAC层的帧,将其转换为适合在物理媒介上传输的信号,并发送出去。
  • 当PHY层接收到来自物理媒介的信号时,它将信号转换回帧,并将其发送到MAC层。
  • PHY层还负责与链路伙伴(如交换机、路由器或另一台主机)的PHY层进行协商,以确定最佳的传输参数,如速率、双工模式等。

3.MAC为什么要配置PHY

MAC(Media Access Control,介质访问控制)是网络接口的一部分,负责管理和控制数据在物理媒介上的传输。PHY(Physical Layer,物理层)是网络接口的另一个重要组成部分,它负责通过物理媒介(如电缆、光纤等)传输和接收实际的比特流。MAC和PHY共同工作以实现网络通信。

MAC需要配置PHY的原因包括:

  1. 物理层参数:不同的物理媒介有不同的特性和要求,例如信号速率、双工模式(全双工或半双工)、流控制等。配置PHY可以确保数据传输符合所使用的物理媒介的特性。
  2. 接口标准化:配置PHY有助于确保网络设备遵循特定的标准(如以太网、Wi-Fi等),这些标准定义了物理层的操作方式。
  3. 自动协商:许多网络设备使用自动协商来确定最佳的传输速率和模式。通过配置PHY,可以实现速率和双工模式的自动协商。
  4. 信号完整性:PHY负责信号的生成和接收,配置PHY可以优化信号的完整性,减少噪声和干扰,提高数据传输的可靠性。
  5. 错误检测和纠正:某些PHY支持错误检测和纠正机制,配置PHY可以启用这些机制,从而提高数据传输的准确性。
  6. 电源管理:PHY可能包含电源管理功能,如节能模式,配置PHY可以优化设备的能耗。
  7. 远程监控:配置PHY还可以允许远程监控物理层的状态,包括链路状态、速率、错误统计等。
  8. 兼容性:不同的网络设备可能使用不同的PHY芯片或技术,配置PHY确保MAC层与PHY层兼容,从而实现无缝通信。
  9. 高级功能:一些高级网络功能,如优先级队列、虚拟局域网(VLAN)标记等,可能需要PHY支持特定的硬件功能。
  10. 故障诊断:配置PHY有助于故障诊断,因为它可以提供链路状态和错误信息,帮助网络管理员识别和解决问题。

总之,MAC配置PHY是为了确保网络接口能够在物理层上正确、高效、可靠地传输数据,并与网络中的其他设备兼容。

4.如何配置

(1)原理

MDIO(Management Data Input/Output,管理数据输入输出) 是一种简单的双线串行接口。该总线由 IEEE 通过以太网标准 IEEE 802.3 的若干条款加以定义。可收集的信息包括链接状态、传输速度与选择、断电、低功率休眠状态、TX\RX 模式选择、自动协商控制、环回模式控制等。

其包含 2 个引脚:MDC 和 MDIO。MDC 管理数据的时钟输入,最高速率 8.3 MHz;MDIO 管理数据的输入输出,数据是与 MDC 时钟同步的。

在这里插入图片描述

通过FPGA向PHY操作的数据格式如下:

PreambleStartOpcodePHY addressRegister addressTurn-aroundRegister dataIdle
32bit 101Read:10 Write:015bit5bitRead:z0 Write:1016 bitz
  • Preamble:32bits的前导码,全1。
  • Start:2bit的开始位
  • PHY adress:5bits的PHY地址,
  • Register adress:5bits的寄存器地址
  • Turn-around:2bits的TA,在读命令中,MDIO在此时由MAC驱动改为PHY驱动,并等待一个时钟周期准备发送数据。在写命令中,不需要MDIO方向发生变化,则只是等待两个时钟周期准备写入数据。
  • Register data:16bits数据,在读命令中,PHY芯片将读到的对应PHYAD的REGAD寄存器的数据写到Data中,在写命令中,MAC将要写入对应PHYAD的REGAD寄存器的值写入Data中。
  • Idle:空闲状态,此时MDIO无源驱动,处高阻状态。

下面给出读写两种情况下的MDIO和MDC的时序图:

①写操作

在这里插入图片描述

②读操作

在这里插入图片描述

时序图中与手册规定的不一样,并没有采用32bit的前导码。

对寄存器进行配置或读取时,需要按照上述的数据格式,通过MDIO一比特一比特的传输到PHY中。

(2)PHY地址的确定

要确定PHY芯片的地址,需要查看PHY芯片手册以及板卡原理图

①PHY芯片手册决定了控制信号和PHY地址的对应关系

②板卡原理图决定了PHY地址的控制信号所连接的对象

接下来以手上的一个325t的办卡进行举例:

先看一下PHY芯片手册:

在这里插入图片描述

可以看到各个控制信号对应的管脚信息,并且说明了CONFIG[0]决定了PHY地址的低3位,CONFIG[1]决定了PHY地址的高两位。

查看板卡原理图:

在这里插入图片描述

我们可以发现,CONFIG[0]连接着PHYA_LED_RX,CONFIG[1]连接着PHYA_LED_LINK1000。我们查看88E1111的手册,如下:

在这里插入图片描述

可知LED_RX对应010,LED_LINK1000对应100,因此CONFIG[0]对应的PHY地址低3位为010,CONFIG[1]对应的PHY地址高2位为00,因此PHY地址为00010。

(3)寄存器地址及配置数据

我们以控制寄存器0举例,为了配置千百兆模式需要对控制寄存器0的bit6和bit13进行配置。

在这里插入图片描述

因此寄存器地址为0,将寄存器数据的bit13、bit6按照需要的模式进行配置,其他功能可对对应bit配置相应数据。

三、88E1111中PHY的时序

1.接收端时序

接收端信号时序如下图所示:

在这里插入图片描述

一般的PHY芯片包含两种RGMII接收端口时序模式,分别为延时模式和非延时模式,通过控制寄存器20bit7实现,当其为1时是延时模式为0时是非延时模式默认情况下是非延时模式

在这里插入图片描述

(1)非延时模式

在这里插入图片描述

非延时模式下,接收时钟与接收数据信号边沿对其。

(2)延时模式

在这里插入图片描述

延时模式下时钟信号RX_CLK的边沿处于数据和控制信号的中心位置,此时的RX_CLK相对于数据和控制信号有2ns的延迟(2ns是因为在1000M速率下时钟为125MHz,一个时钟周期为8ns,一个数据的有效时间为4ns)

2.发送端时序

发送端信号时序如下图所示:

在这里插入图片描述

一般的PHY芯片包含两种RGMII发送端口时序模式,分别为延时模式和非延时模式,通过控制寄存器20bit1实现,当其为1时是延时模式为0时是非延时模式默认情况下是非延时模式

在这里插入图片描述

(1)非延时模式

在这里插入图片描述

非延时模式下时序图如上图所示,可知在此模式下时钟信号TX_CLK的边沿处于数据和控制信号的中心位置,此时的TX_CLK相对于数据和控制信号有2ns的延迟(2ns是因为在1000M速率下时钟为125MHz,一个时钟周期为8ns,一个数据的有效时间为4ns)。

(2)延时模式

在这里插入图片描述

延时模式下,要求发送时钟和数据及控制信号的边沿对齐。

四、Xinlinx中处理RGMII接口的数据

1.IDDR

(1)作用及接口说明

IDDR(Input Double Data Rate)原语是Xilinx FPGA中用于处理双数据速率信号的一种原语,它将输入的双被速率数据转换为单倍速率信号。

信号名称位宽方向描述
CE1IN时钟使能信号
C1IN时钟信号
S1IN置位信号
R1IN复位信号
D1IN输入的双倍速率的数据,即D在时钟的上升沿和下降沿都会发生切换,一个时钟周期发送2bit数据
Q11OUT单倍速率的输出数据
Q21OUT单倍速率的输出数据
(2)三种工作模式

它支持三种不同的工作模式,这些模式决定了IDDR如何对输入数据进行采样以及输出数据的生成方式:

  • OPPOSITE_EDGE模式:在这种模式下,IDDR将在时钟的上升沿和下降沿都进行数据采样。这意味着每个时钟周期的上升沿和下降沿都会有数据变化,实现双沿传输。输出Q1在时钟的每个上升沿提供在该上升沿采集到的数据,而Q2在时钟的每个下降沿提供在该下降沿采集到的数据。

    在这里插入图片描述

  • SAME_EDGE模式:此模式与OPPOSITE_EDGE模式的输入信号时序一致,但区别在于Q1和Q2都只在时钟的上升沿输出数据。在第一个上升沿,Q1输出在该上升沿采集到的数据,而在随后的下降沿,Q2采集数据,并在第二个上升沿,Q1输出第二个上升沿采集的数据,Q2输出第一个下降沿采集的数据。

    在这里插入图片描述

  • SAME_EDGE_PIPELINED模式:这是最常用的数据采集模式。与SAME_EDGE模式类似,但Q1的输出数据会延迟一个时钟周期,使得Q1和Q2的第一个数据至最后一个数据进行对齐,这样方便后续逻辑的操作,但代价是Q1的输出数据会有一个时钟周期的延迟

    在这里插入图片描述

(3)数据处理过程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.ODDR

(1)作用及接口说明

它的功能是将单倍速率的数据转化成双倍速率的数据。

信号名称位宽方向描述
C1IN时钟信号
CE1IN时钟使能信号
S1IN置位信号
R1IN复位信号
D11IN单倍速率的输入数据
D21IN单倍速率的输入数据
Q1OUT输出的双倍速率的数据,即Q在时钟的上升沿和下降沿都会发生切换
(2)工作模式

ODDR支持两种不同的工作模式:

  • OPPOSITE_EDGE模式:在此模式下,ODDR在时钟的上升沿采集D1输入信号,并在上升沿将采集到的信号输出;在时钟的下降沿采集D2输入信号,并在下降沿将采集到的信号输出。这种模式使用起来相对复杂,因为FPGA内部需要在时钟的上升沿给D1赋值,在时钟的下降沿给D2赋值,一般不常使用1820。

    在这里插入图片描述

  • SAME_EDGE模式:此模式下,ODDR在时钟的上升沿同时采集D1和D2的数据,然后在时钟的上升沿输出采集的D1数据,在下降沿输出采集的D2数据。这种方式实现起来比较简单,属于常用的模式20。

    在这里插入图片描述

(3)数据处理过程

在这里插入图片描述

在这里插入图片描述

3.IDELAYE2

用于将数据延迟一段时间。

例化:

(* IODELAY_GROUP = <iodelay_group_name> *) // Specifies group name for associated 
IDELAYs/ODELAYs and IDELAYCTRL
 IDELAYE2 #(
 .CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)
 .DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)
 .HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
 .IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
 .IDELAY_VALUE(0), // Input delay tap setting (0-31)
 .PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE
 .REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 
290.0-310.0).
 .SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal
 )
 IDELAYE2_inst (
 .CNTVALUEOUT(CNTVALUEOUT), // 5-bit output: Counter value output
 .DATAOUT(DATAOUT), // 1-bit output: Delayed data output
 .C(C), // 1-bit input: Clock input
 .CE(CE), // 1-bit input: Active high enable increment/decrement input
 .CINVCTRL(CINVCTRL), // 1-bit input: Dynamic clock inversion input
 .CNTVALUEIN(CNTVALUEIN), // 5-bit input: Counter value input
 .DATAIN(DATAIN), // 1-bit input: Internal delay data input
 .IDATAIN(IDATAIN), // 1-bit input: Data input from the I/O
 .INC(INC), // 1-bit input: Increment / Decrement tap delay input
 .LD(LD), // 1-bit input: Load IDELAY_VALUE input
 .LDPIPEEN(LDPIPEEN), // 1-bit input: Enable PIPELINE register to load data input
 .REGRST(REGRST) // 1-bit input: Active-high reset tap-delay input
 );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

延时值如下:

延时值 = 600 p s + t a p ∗ r e s o l u t i o n r e s o l u t i o n = 1 64 ∗ f ( u s ) 延时值=600ps+tap*resolution\\ resolution=\frac{1}{64*f} (us) 延时值=600ps+tapresolutionresolution=64f1us

其中f频率的单位为MHz,tap值为CNTVALUEIN的值。

详细可参考下面文章:

Xilinx IDELAYE2应用笔记及仿真实操-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/912265
推荐阅读
  

闽ICP备14008679号