EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
今天和大侠简单聊一聊FPGA 控制 RGMII 接口 PHY芯片基础,话不多说,上货。
& y3 F1 e; T* z" f3 i' o
一、前言 网络通信中的PHY芯片接口种类有很多,之前接触过GMII接口的PHY芯片RTL8211EG。但GMII接口数量较多,本文使用RGMII接口的88E1512搭建网络通信系统。这类接口总线位宽小,可以降低电路成本,在实际项目中应用更广泛。
% ~* V7 ?! D) J3 l. S- ~
二、从GMII过度到RGMII 6 u ?0 z/ A+ |. ?; e# X/ I
先看看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 9 n I' g. V1 o, ~
RGMII: 发送 tx_clk tx_d[3:0] tx_ctrl
. V( s( k/ k6 e* @接收 rx_clk rx_d[3:0] rx_ctrl & Z4 O1 c7 W% c# ?
7 L! V, c( ^6 A4 Q8 ^
9 G \$ t5 e' D- q _, f
为什么接口变少了?首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1512 Datasheet中时序图可以直观看出这一点。
9 ^# Q) \3 n7 z( ~9 x
: @' [& U- e6 T* c$ Z4 g2 C1 U6 y2 W K
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个。 - i% m+ L( U3 h+ B& K; E
三、add clock skew / D1 r% P) U, e& _* Z
# o. N& ?+ M, _5 A. S* s- @ s. C1 D3 ~8 B: Y
从上边的时序图分析,数据在时钟的边沿变化。因此如果不做额外处理,接收端无法稳定采样。为了解决这一问题,常见的做法是为时钟信号添加延时,使其边沿对准数据总线的稳定区间。可以在控制器端、PCB走线以及PHY芯片内部添加时钟偏移,本文使用最后一种方式实现。 5 c6 l# `: [# X- m$ J# W
; g. L% C2 \& w* B9 h$ \
* `$ Q* e: i4 E: h H [
在第三阶段中添加延迟。数据发送方向,FPGA侧的TX_CLK信号不需要额外处理,也就是说FPGA发送与数据边沿对齐的时钟信号。TXD和TX_CLK信号波形如图。
# p J0 d9 h1 N# p6 L! a
* f1 S. v, P8 N% U( U D' V
0 A% x* c7 g, t8 y0 q4 }
PHY内部会调整TX_CLK,使之能够稳定采样TXD。数据接收方向,由于RX_CLK由PHY提供,PHY芯片直接产生与数据中心对齐的时钟信号。RXD和RX_CLK信号波形如图。
) @9 {* u# Q+ k, A
. C0 x( n: o9 b# j. `
. J$ o/ r4 C1 H! K, R3 b! u
" {; B2 g# F2 l: K! _可见,使PHY芯片工作在延迟模式下时,FPGA不需要添加额外的逻辑来保证稳定采样。发送方向直接将数据驱动时钟作为TX_CLK信号发送,接收方向直接利用RX_CLK对RXD信号采样。
) L. {4 q- E4 S- T
6 r8 O6 {/ U# ]; W! e9 W
w+ {1 u# t) [* E
8 a0 S1 ], y" U3 r; C' K2 U P, _. i
3 T2 c! O4 J, j( o9 q% z$ @3 k# M6 E
四、系统设计方案 6 F( W2 U- r6 }2 |
# o4 M, p) }6 {# i1 k, X. R4 `3 e
本文使用ZYNQ内部的MAC控制器实现数据链路层功能。但由于其接口为GMII,需要用到GMII_to_RGMII IP Core转换接口逻辑。上层网络协议则通过LWIP开源协议栈完成。首先配置ZYNQ IP,使能ENET1并以EMIO方式引出。
( _7 A( y3 I4 f4 _2 I
# X% W9 i; c. V. x: ]) D
/ ~; c9 O2 R! C" Z" E
& b0 I6 N1 R/ y; x. L" \# U8 p7 R6 Z, J2 t1 a
系统硬件结构如图:
7 u8 f4 C( {5 O# H6 j2 J6 c- o% h/ m4 s2 \
8 r1 a( d4 n2 l6 y
0 d& a1 r$ s3 H& b
@: B" i% y6 S
五、I/O 时序约束
- l' b/ O0 W" U$ l) E' ?在较高速设计场合下,输入输出接口部分很容易出现数据采样不稳定的现象。这时候就要通过Input delay,output delay约束以及STA来分析设计是否满足稳定采样需求。input/output delay是指数据相对于时钟的延迟,只有设置好上述两个数值,综合工具才会往正确的方向优化并给出合理的时序报告。 8 c v9 L& k! N! t
+ [1 _& |: g9 _% IFPGA与RGMII接口的PHY芯片之间的时序关系按照数据接口同步和数据采样方式属于源同步DDR采样。input delay约束对应接收方向,时序关系是中心对齐。output delay约束对应发送方向,时序关系是边沿对齐。前者由于很多时候不知道上游器件Tcko信息,会使用示波器测量有效数据窗口来计算。而后者因为是边沿对齐,通过示波器测量抖动窗口并使用skew based method计算。这部分笔者还没有亲身实践过,若有误欢迎指出。
$ [8 {/ z$ j% f$ f0 y* h; R
0 G6 m( m0 w) Y. \8 O |