问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

详解Xilinx的10G PCS PMA IP(万兆以太网二)

创作时间:
作者:
@小白创作中心

详解Xilinx的10G PCS PMA IP(万兆以太网二)

引用
CSDN
1.
https://m.blog.csdn.net/weixin_50810761/article/details/139458937

在Xilinx的FPGA上实现万兆以太网通信主要有三种方法:使用GTX等Serdes作为底层PHY并自行实现MAC和IP层;使用Xilinx提供的10G PCS PMA IP核并自行实现MAC层;或者直接使用Xilinx提供的带有MAC层的完整IP核。本文将详细介绍第二种方法,即使用10G PCS PMA IP核作为PHY层,并重点讲解其工作原理、接口时序和配置方法。

1. 10GBASE-R/KR概述

下图展示了10G PCS PMA的使用原理。上层通过XGMII接口与用户逻辑的MAC层交互数据,接收的用户数据经过内部处理后,通过Serdes接口输出到光纤。


图1 使用XGMII接口连接到MAC内核的内核

10G PCS PMA可以通过参数设置工作在10GBASE-R或10GBASE-KR模式。10GBASE-R内核主要包含加扰、解扰、接收端字对齐、变速器等功能模块。接收端有一个弹性缓冲器,深度为32个字,可以存储最多64个时钟校正序列。

10GBASE-KR内核相比10GBASE-R增加了链路训练模块以及可选的自动协商(AN)和前向纠错(FEC)功能,以支持背板上的10 Gb/s数据流。


图3 10GBASE-KR内核框图

2. XGMII接口时序

2.1 64位数据位宽

下表列出了64位数据位宽的XGMII端口信号。控制位的高电平表示数据信号对应字节为控制位,低电平表示数据信号对应字节为数据位。

信号名
I/O
含义
xgmii_txd[63:0]
I
发送端接口数据信号
xgmii_txc[7:0]
I
发送端的控制信号
xgmii_rxd[63:0]
O
接收端接口数据信号
xgmii_rxc[7:0]
O
接收端的控制信号

下图展示了通过64位接口发送数据帧的时序。数据帧的开始由起始字符(/S/)表示,后面发送数据字符。万兆以太网规定起始位/S/可以位于第一字节或第四字节。


图5 64位xgmii发送数据接口时序

下表列出了XGMII字符的部分列表及其对应的取值。

名称(缩写)
取值(Hex)
控制字符取值
数据位(D)
[8’h00,8’hff]
0
空闲位(I)
8’h07
1
起始位(S)
8’hfb
1
停止位(T)
8’hfd
1
错误位(E)
8’hfe
1

2.2 32位数据位宽

下表列出了32位数据位宽的XGMII接口信号。控制位的高电平表示数据信号对应字节为控制位,低电平表示数据信号对应字节为数据位。

信号名
I/O
含义
xgmii_txd[31:0]
I
发送端接口数据信号
xgmii_txc[3:0]
I
发送端的控制信号
xgmii_rxd[31:0]
O
接收端接口数据信号
xgmii_rxc[3:0]
O
接收端的控制信号

下图展示了通过32位XGMII接口传输数据帧的时序。开始字符/S/只能出现在第1字节,后面的3字节为传输数据。数据传输完成后,发送停止位/T/,其余时间使用空闲字符填充。


图11 GTX内部传输数据位宽

3. 内核时钟分析

如果XGMII的数据接口选择64位,则7系列的FPGA必须给高速收发器提供156.25MHz的差分参考时钟。如果是32位数据接口,则必须提供312.5 MHz的差分参考时钟。

下图展示了该IP的内核时钟结构。其中红框部分可以放置在示例工程中。内核时钟作为用户接口的时钟信号,就是输入的差分参考时钟信号。


图11 GTX内部传输数据位宽

为什么上图中TXOUTCLK为322.26MHz?通过这个时钟生成uxrclk和usrclk2?首先万兆以太网的是指在进行64B66B编码前的数据传输速率为10Gbps,经过64B66B编码之后,速率变为10Gbps/(64/66)=10.3125Gbps,即万兆以太网的线速率为10.3125Gbps。

在前面讲解GTX的64B66B编码时,如下图所示,高速收发器的PCS内部并行数据传输的位宽为32位,即可算出usrclk的频率应该为10.3125Gbps/32=322.265625MHz≈322.26MHz。


图11 GTX内部传输数据位宽

此处的TXOUTCLK通过BUFG之后直接作为txusrclk和txusrclk2,没有经过MMCM分频处理,还可以推测出高速收发器接收和发送的数据位宽同为32位。

为什么有上述推导,原因在讲GTX的时候都详解过,10G PCS PMA也不过是在GTX上封装而来,底层的时钟关系是不会变的,吃透GTX时钟关系即可以吃透所有上层高速IP的时钟关系。

现在已经讲解过Aurora、SRIO、10G PCS PMA的时钟架构都遵循GTX的时钟架构规则,后续的JESD204B依旧如此。

4. 其余接口

10G PCS PMA作为一个PHY层设计,内部也有很多的寄存器,用户可以通过MDIO设置内部寄存器的数值。但是一般保持默认即可,因此该接口的时序不做讲解,在讲解千兆网接口时,详解过MDIO接口时序,可以参考。

另外该IP可以通过DRP接口动态配置参数,如果不需要使用DRP接口,则将drp接口的所有信号与core_to_gt_drp接口对应信号相连,并将drp_req连接到drp_gnt,允许内核在需要时访问DRP,如下图所示。


图11 GTX内部传输数据位宽

5. IP的功能信号与调试信号

下图是一个光纤接口的原理图,其中tx_fault、MODDEF0、LOS(信号丢失)都上拉到VCC,且没有连接到FPGA的管脚。

而10G PCS PMA建议将signal_detect(MODDEF0或非LOS)信号连接到VCC,tx_fault信号连接到GND。因此在调用IP时,直接把signal_detect赋值为1,tx_fault赋值为0,不与引脚相连。

同时10G PCS PMA提供了一个tx_disable信号,可以直接连接到光口。


图11 GTX内部传输数据位宽

该IP的发送端和接收端都有复位完成指示信号,reset_counter_done表示配置完成后已经过了500 ns。

另外还有一些10GBASE-R的控制信号和状态信号,如下表所示。特别注意仿真加速信号,在仿真开始时,必须给该信号提供一个上升沿(先拉低至少100ns后拉高),才能加速仿真,否则可能仿真半个小时也跑不出结果。

信号
I/O
含义
core_status[7:0]
O
[0]:PCS同步完成,[7:1]保留
sim_speedup_control
I
上升沿加速仿真
pma_pmd_type[2:0]
I
定义PMA/PMD类型,3’b111(10g base-SR),3’b110(10g base-LR),3’b101(10g base-ER)

该IP还有一些控制信号configuration_vector[535:0]和状态信号status_vector[447:0]。这两个寄存器的每一位都有其特定含义,但用户只需要关注一些常用的数据位即可,其余的寄存器在使用时可以通过手册查看。

信号
I/O
含义
configuration_vector[0]
I
使能PMA回环模式
configuration_vector[512]
I
设置PMA链接状态
configuration_vector[516]
I
设置PCS链接状态
status_vector[18]
O
接收端的PMA连接状态
status_vector[226]
O
接收端的PCS连接状态

关于10G PCS PMA的讲解到此结束,通过以上介绍,足够简单使用该IP,后文将通过该IP构建万兆以太网的PHY层。

本文参考于Xilinx的Pg068手册,可以在官方获取。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号