找回密码
 注册
关于网站域名变更的通知
查看: 262|回复: 1
打印 上一主题 下一主题

FPGA 控制 RGMII 接口 PHY芯片基础

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-6-6 15:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

今天和大侠简单聊一聊FPGA 控制 RGMII 接口 PHY芯片基础,话不多说,上货。

4 q  y) `1 J! u0 p& j: r

一、前言 

 

网络通信中的PHY芯片接口种类有很多,之前接触过GMII接口的PHY芯片RTL8211EG。但GMII接口数量较多,本文使用RGMII接口的88E1512搭建网络通信系统。这类接口总线位宽小,可以降低电路成本,在实际项目中应用更广泛。


/ o6 W1 w, I$ P0 T" \* {. P: v* |

二、从GMII过度到RGMII


0 U2 N; m9 ]% M7 F& x

先看看GMII和RGMII主要的接口。

GMII:

发送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er

接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er

5 i9 ~' u% [. y) [3 z! O- G

RGMII:

发送 tx_clk tx_d[3:0] tx_ctrl

) P" t5 \2 @( P' C% c$ u' u

接收 rx_clk rx_d[3:0] rx_ctrl


1 Q6 V2 N! L8 e0 c) O

1 O" m2 {  p  E7 w/ H" {


0 C% N9 L  ?, D3 O9 I  @$ ~9 n1 o

为什么接口变少了?首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1512 Datasheet中时序图可以直观看出这一点。

1 O7 C- j. P& ^* ~' N% K& F


. D3 E/ b2 f- P' Q0 u

$ c% f) T* p/ k9 Y; G. n

RGMII中上升沿发送一字节数据的低四位,下降沿发送剩余的高四位数据。接收端时钟双边沿采样,因此125MHZ*8bit = 125MHZ*4bit*2 = 1000Mbit/s。至于GMII中的数据有效和数据错误指示信号被ctrl信号复用:tx_ctrl在时钟tx_clk上升沿发送是tx_en,在下降沿发送是tx_en ^ tx_er。rx_ctrl在时钟rx_clk上升沿接收是rx_dv,在下降沿接收是rx_en ^ rx_er。综上,RGMII接口引脚数从25个降低到14个。


/ o) K3 j2 m# k3 V& i

三、add clock skew 


! q" O0 p' u2 L' P- O6 B5 p1 S2 ?0 m, V$ F( K
8 b* ~3 \6 y$ A+ j! l/ a

从上边的时序图分析,数据在时钟的边沿变化。因此如果不做额外处理,接收端无法稳定采样。为了解决这一问题,常见的做法是为时钟信号添加延时,使其边沿对准数据总线的稳定区间。可以在控制器端、PCB走线以及PHY芯片内部添加时钟偏移,本文使用最后一种方式实现。

# a, }: j( o8 B3 S3 ~& O' }, Q


4 M5 _& K, L  V/ y1 p* D! _) ?: A5 H# P: r: g) j# g9 I

在第三阶段中添加延迟。数据发送方向,FPGA侧的TX_CLK信号不需要额外处理,也就是说FPGA发送与数据边沿对齐的时钟信号。TXD和TX_CLK信号波形如图。

- d1 u$ u0 \) {) J

1 \8 w2 A; Q3 _' t1 ?$ {

( Y* z2 ]" k3 [( U% z$ f

PHY内部会调整TX_CLK,使之能够稳定采样TXD。数据接收方向,由于RX_CLK由PHY提供,PHY芯片直接产生与数据中心对齐的时钟信号。RXD和RX_CLK信号波形如图。


  v! c) x3 Z! g/ @- i, k


! x/ D& k9 P  {! l" Y0 r0 z
9 R: @1 E; l. `  l+ T, @! e1 @/ G  H6 O! l7 C

可见,使PHY芯片工作在延迟模式下时,FPGA不需要添加额外的逻辑来保证稳定采样。发送方向直接将数据驱动时钟作为TX_CLK信号发送,接收方向直接利用RX_CLK对RXD信号采样。


! M! `; [0 O$ |' f5 n) U  P7 i) u

, ]9 h6 @$ @6 }& L3 l8 r% e# B9 U8 c9 R. S0 d
! x( S5 ?  d+ y, ?1 e  ~( z

9 k/ w; M) b! E* K
2 W7 e7 N9 m6 n. k" M2 L7 h

四、系统设计方案

' l, n  s6 Z. y; ]$ ?# g

3 Y9 k5 R! S! C/ @

本文使用ZYNQ内部的MAC控制器实现数据链路层功能。但由于其接口为GMII,需要用到GMII_to_RGMII IP Core转换接口逻辑。上层网络协议则通过LWIP开源协议栈完成。首先配置ZYNQ IP,使能ENET1并以EMIO方式引出。


6 w% a; J( O* {- \! H4 B$ U7 i; X5 _
: I1 s1 u: F( `  _) a- q' h1 O


- _# A0 _  m' I) Z
% Q! l% `9 J/ z. k" x! v! Y: j" W4 G5 T

系统硬件结构如图:

  P* t1 [0 }/ |
/ F0 P" B: p! G4 E8 e

, J  z. l1 }$ `( w
8 v7 Y  n4 ]' J" D1 A
7 v3 |$ w3 K! H: I" @

五、I/O 时序约束 


0 U4 e* V9 p: ^( o. ]  z6 e; W

在较高速设计场合下,输入输出接口部分很容易出现数据采样不稳定的现象。这时候就要通过Input delay,output delay约束以及STA来分析设计是否满足稳定采样需求。input/output delay是指数据相对于时钟的延迟,只有设置好上述两个数值,综合工具才会往正确的方向优化并给出合理的时序报告。 

1 Y3 }: e) F, c% k9 P" J  G3 B; s

$ |0 ^2 u4 V* W. o. R( R/ V5 _7 X+ m

FPGA与RGMII接口的PHY芯片之间的时序关系按照数据接口同步和数据采样方式属于源同步DDR采样。input delay约束对应接收方向,时序关系是中心对齐。output delay约束对应发送方向,时序关系是边沿对齐。前者由于很多时候不知道上游器件Tcko信息,会使用示波器测量有效数据窗口来计算。而后者因为是边沿对齐,通过示波器测量抖动窗口并使用skew based method计算。这部分笔者还没有亲身实践过,若有误欢迎指出。


2 y! n0 N4 x3 M! l/ y8 c
+ x9 p! R+ c! Y4 A& X
  • TA的每日心情
    开心
    2023-5-15 15:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2023-6-6 16:24 | 只看该作者
    有例子程序吗
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-5 05:14 , Processed in 0.156250 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表