如何通过FPGA设计实现2.5G以太网芯片控制?
在ECP3系列作为FPGA芯片,需要配置IP核,对应使用能实现2.5G的以太网转换芯片,目前选出了三种YT8821C/GPY211C0VC/RTL8221B。
一.YT8821C与FPGA的连接主要分为数据通路和管理通路两部分
1. 数据通路 (SERDES接口)
这是传输2.5G以太网数据的高速接口。连接方式是将ECP3侧2.5G Ethernet PCS IP核的SERDES收发引脚,直接与YT8821C的对应SERDES引脚相连。
设计要点:
接口模式:YT8821C的SERDES接口可配置为SGMII或2500BASE-X。为2.5G速率,应配置为2500BASE-X模式。
PCB布线:这两对是高速差分信号,需严格控制100Ω差分阻抗,并保持走线等长。
2. 管理通路 (MDIO接口)
这是FPGA配置和读取PHY状态的低速管理接口。
| 功能 | Lattice ECP3 (FPGA) 引脚 | YT8821C (PHY) 引脚 | 备注 |
|---|---|---|---|
| 时钟 | 任意GPIO | MDC | 由FPGA提供,速率最高可达25MHz |
| 数据 | 任意GPIO (需开漏/三态) | MDIO | 双向数据线,需接一个1.5kΩ上拉电阻至1.8V/3.3V |
设计要点:YT8821C支持Clause 22和Clause 45两种MDIO协议,2.5G配置通常使用Clause 45。
3. 时钟与复位
| 功能 | Lattice ECP3 (FPGA) 引脚 | YT8821C (PHY) 引脚 | 备注 |
|---|---|---|---|
| 参考时钟 | (可选) 输出或不用 | XI | 需提供25MHz时钟。可由FPGA提供,或使用板上25MHz晶振 |
| 硬件复位 | 任意GPIO | RESET_N | 低电平有效,FPGA需可控此引脚 |
⚙️ 配置2.5G模式
YT8821C提供了两种配置工作模式的方式,推荐使用更灵活的MDIO软件配置。
方案一:MDIO软件配置 (推荐)
这是最灵活的方式,通过MDIO总线配置YT8821C的内部寄存器。
核心是将YT8821C的SERDES强制为FORCE_BX2500模式。在此模式下,无论网线侧连接速率如何,PHY与FPGA之间始终以2.5G的2500BASE-X模式通信,速率不匹配的问题由YT8821C内部通过流控(Pause Frame)自动处理。
方案二:硬件引脚配置 (备选)
你也可以在PCB上通过上下拉电阻设置YT8821C的特定配置引脚(如CFG_LED_0,CFG_LED_1等),使其在硬件复位后直接工作在2500BASE-X模式。但这种方式灵活性差,PCB改版麻烦,因此更推荐软件配置方式。
二、GPY211C0VC
这款芯片是 2.5G 多速以太网 PHY,专门针对FPGA + 2.5G MAC的应用场景进行了优化,甚至 Linux 内核都有专门的驱动代码来启用它的 2.5G SGMII 速率适配功能。
以下是它与 ECP3 平台搭配的完整方案:
🔗 核心连接方案:SGMII (2.5G) + MDIO
与 YT8821C 类似,GPY211C0VC 也是通过SGMII 接口(实际跑 2.5G 速率)与 FPGA 相连。连接方式非常直接:
| 功能 | Lattice ECP3 (FPGA) 引脚 | GPY211C0VC (PHY) 引脚 | 说明 |
|---|---|---|---|
| 高速数据 | SERDES_TX_P/N | SGMII_TX_P/N | 差分对,直连,阻抗控制 100Ω |
| 高速数据 | SERDES_RX_P/N | SGMII_RX_P/N | 差分对,直连,阻抗控制 100Ω |
| 管理时钟 | 任意 GPIO (输出) | MDC | FPGA 提供时钟,速率 ≤ 25MHz |
| 管理数据 | 任意 GPIO (三态/开漏) | MDIO | 双向,需接 1.5kΩ 上拉电阻 |
| 参考时钟 | 任意 GPIO 输出,或外部晶振 | XI | 需提供稳定的25MHz时钟 |
| 硬件复位 | 任意 GPIO (输出) | RESET_N | 低电平有效 |
⚙️ 关键配置:开启 2.5G SGMII 速率适配
这是 GPY211 最大的优势。无需像 YT8821C 那样配置复杂的 Clause 45 寄存器,只需要在 MDIO 初始化序列中,向特定寄存器写入一个值,就能开启芯片的"速率适配"功能。
📌 ECP3 侧设计验证
IP 核兼容性:ECP3 的
2.5G Ethernet PCS IP核心支持SGMII模式,与 GPY211 接口完全匹配。PCB 设计要点:除了 SERDES 差分对,请注意 GPY211 需要额外的22kΩ 1%和200Ω 1%精密电阻用于内部校准。
✅ 方案对比总结
| 对比项 | YT8821C | GPY211C0VC |
|---|---|---|
| 接口模式 | 需强制设为2500BASE-X模式 | 推荐使用SGMII + 速率适配模式 |
| 配置复杂度 | 中等,需配置 Clause 45 扩展寄存器 | 低,只需配置一个 Vendor 寄存器 (0x24e2) |
| 软件支持 | 一般 | 优秀,有主流 Linux 内核驱动源码参考 |
| 稳定性 | 高 | 高,Aquantia/MaxLinear 是 2.5G/5G/10G 多速率 PHY 的主流供应商 |
三、RTL8221B
RTL8221B 是 Realtek 推出的一款高集成度 2.5G 多速率以太网 PHY 芯片,与之前的GPY211C0VC 属于同一类产品,都是专门为 2.5GBASE-T 应用设计的。
✅ 核心规格确认
| 规格项 | 支持情况 | 说明 |
|---|---|---|
| 速率支持 | 10/100/1000/2.5Gbps | 支持 2.5GBASE-T (IEEE 802.3bz) |
| MAC接口 | SGMII / HiSGMII /2500BASE-X | 与 ECP3 的 PCS IP 核完美匹配 |
| 管理接口 | MDC/MDIO (Clause 22 & 45) | 与你之前的配置方案一致 |
| 参考时钟 | 25MHz 晶振或外部时钟 | 可为 MAC 提供 25MHz 时钟源 |
| 封装 | QFN-48 | 便于手工焊接和 PCB 布局 |
🔌 与 ECP3 的连接方案
与之前讨论的 GPY211 一样,RTL8221B 通过SERDES 接口与 ECP3 直连:
| Lattice ECP3 (FPGA) | RTL8221B (PHY) | 说明 |
|---|---|---|
SERDES_TX_P/N | SERDES_SIN_P/N | 差分对,直连,100Ω 阻抗控制 |
SERDES_RX_P/N | SERDES_SOUT_P/N | 差分对,直连,100Ω 阻抗控制 |
| GPIO (输出) | MDC | 管理时钟,FPGA 提供 |
| GPIO (三态/开漏) | MDIO | 双向数据,需 1.5kΩ 上拉 |
| GPIO (输出) | RESET_N | 硬件复位,低电平有效 |
| GPIO 输出或 25MHz 晶振 | XI | 25MHz 参考时钟 |
⚙️ 关键配置:2.5G 工作模式
RTL8221B 支持三种 SERDES 接口模式:SGMII、HiSGMII和2500BASE-X。针对 LatticeECP3 的 2.5G PCS IP 核,应配置为2500BASE-X + Rate Adapter模式。
官方推荐的初始化序列
根据 RTL8221B 官方应用笔记,实现 2.5G 固定链路的关键配置代码如下:
c
/** * RTL8221B SerDes 配置流程 (2500BASE-X + Rate Adapter 模式) * 基于官方 Application Note v2.4 */ void rtl8221b_serdes_init(uint16_t phy_addr) { const uint16_t MMD_VEND = 31; // Vendor Specific MMD /* 1. 选择 SerDes 工作模式 (寄存器 0x6a04) * Bit 8: SDS_REG_SEL = 1 (使用软件配置,忽略硬件引脚) * Bits 6-4: MODE_SEL = 010 (2500Base-X + Rate Adapter) * 值: 0x0120 */ mmd_write(phy_addr, MMD_VEND, 0x6a04, 0x0120); /* 2. 配置 Rate Adapter 逻辑 (应用笔记中的固定值) */ mmd_write(phy_addr, MMD_VEND, 0x6f10, 0xd455); mmd_write(phy_addr, MMD_VEND, 0x6f11, 0x8020); /* 3. 关闭带内自动协商 (寄存器 0x75ad) * 大部分 2.5G MAC 需要禁用带内 AN */ mmd_write(phy_addr, MMD_VEND, 0x75ad, 0x0000); /* 4. SerDes 复位序列 (关键步骤,不可省略) */ mmd_write(phy_addr, MMD_VEND, 0x6a40, 0x0000); // 断言复位 msleep(10); // 等待 PLL 稳定 mmd_write(phy_addr, MMD_VEND, 0x6a40, 0x0200); // 设置 Patch Ready mmd_write(phy_addr, MMD_VEND, 0x6a40, 0x8000); // 释放复位,恢复正常操作 }配置要点说明
| 要点 | 说明 |
|---|---|
| SDS_REG_SEL = 1 | 必须将此位置 1,否则 PHY 会忽略软件配置而使用硬件引脚状态 |
| Rate Adapter 模式 | MAC 侧固定以 2.5G 链路通信,PHY 自动适配网线侧速率变化,无链路闪断 |
| 10ms 延时 | 复位后等待 PLL 重新锁定的延时是强制性的,不能省略 |
| 硬件版本识别 | 可通过读取 MMD 31 寄存器 0x6958 识别:0x0001 = Rev B,0x0002 = Rev VB |
📊 与 GPY211C0VC 方案对比
| 对比项 | RTL8221B | GPY211C0VC |
|---|---|---|
| 接口模式 | 2500BASE-X + Rate Adapter | SGMII + 速率适配 |
| 配置复杂度 | 中等,需配置多个 Vendor 寄存器 | 低,单寄存器配置 (0x24e2) |
| 官方文档 | 有公开的应用笔记 (v2.4) | 需联系原厂获取 |
| 成本 | 约 ¥17-27 | 通常略高 |
| 货源 | 广泛,易购买 | 相对较少 |
✅ 结论
RTL8221B 完全可以用于 LatticeECP3 + 2.5G IP 核方案,是一款成熟、成本可控的选择。
ECP3 侧保持不变:仍然需要同时例化2.5G Ethernet MAC和2.5G Ethernet PCS两个 IP 核,PCS IP 核配置为2500BASE-X模式。
