RTL8211FSI PHY电路设计

文章目录

硬件设计

引脚

笔者前代数字采集板采用的 PHY 芯片是博通 Boardcom 的 B50610,其仅支持 0 ∼ 7 0 ∘ C 0\sim70^\circ C 0∼70∘C 的工作温度,不符合预期的工作环境温度范围,且没有可直接替换的低温版本。因此在新一版采集板设计中须更换 PHY 芯片,拟采用瑞昱 Realtek 的 RTL8211FS,其工业版本 FSI 版本的可支持 − 4 0 ∘ C -40^\circ C −40∘C 的低温工作环境。首先做一个小的测试板,验证其电路及功能是否可行,本文即对此进行一个工作记录。

RTL8211FSI 的接口如下图

  • RGMII 接口

    • TX:TXC (I),TXD3:0 (I),TXCTL (I);
    • RX:RXC (O),RXD3:0 (O),RXCTL (O);
    • RXDLY,RX Delay,上拉(接 4.9 k Ω 4.9k\Omega 4.9kΩ 到 DVDD_RG)时,在 RXC 到 RXD 增加 2ns 的延迟;下拉时接 4.9 k Ω 4.9k\Omega 4.9kΩ 到 GND;
    • TXDLY 没有引脚进行配置,但可以通过 Page 0xd08, Reg17, Bit[8] 进行设置。
  • SMI 接口

    • MDC (I)
    • MDIO (IO),引脚接 1.5 k Ω 1.5k\Omega 1.5kΩ 上拉
  • SerDes 接口 (不使用,设计中直接悬空即可)

    • HSIP,HSIN,HSOP,HSON,HSOP_CLK,HSON_CLK
  • MDI 接口 (不多介绍,连接 RJ45 水晶头)

    • MDIP/MDIN[3:0] (IO)
  • CLK

    • XTAL_IN,I,25M 时钟输入,若有外部时钟驱动 XTAL_OUT/EXT_CLK 脚,则本引脚应接地;
    • XTAL_OUT/EXT_CLK,O,25M 时钟输出;若使用外部时钟,本引脚接晶振输出端;
    • CLKOUT,O,芯片内部 PLL 产生的时钟,若此时钟未被使用,应浮空;在 1000BASE 和 100BASE 时输出 125M/25M,用以支持同步以太网(作为主机,由内部 PLL 输出,作为从机,从 MDI 恢复出时钟),可通过 PHYCR2 (Page 0xa43, Addr 0x19)寄存器进行配置;
    • PTP_CLK,对于 RTL8211FS(I)-VS 版本,33 脚为 PTP_CLK/PTP_GPIO0,PTP_CLK 为外部参考时钟,PTP 为精确时间协议 Precision Time Protocol,不使用应浮空;RTL8211FS(I) 版本下 33 脚则为 NC,浮空。
  • Hard Reset

    PHYRSTB,即 Reset_n 引脚,硬复位,复位至少要保持 10ms 低电平

  • PHYADDR

    PHYAD[2:0],上电/硬复位后检测其引脚电平,决定 PHYADDR 的地址。

  • PWR

    • AVDD33,模拟 3.3V 供电;
    • AVDD10,模拟 1.0V 供电;
    • DVDD10,数字核心 1.0V 供电;
    • DVDD33,数字(非 RGMII IO)的 3.3V 供电;
    • DVDD_RG,RGMII IO 电平,注意和 CFG_LDO[1:0] 的设置相匹配;注意,当 CFG_LDO[1:0]=00 时,IO Pad 由连接到 DVDD_RG 的 3.3V 供电,其他情况下则由内部 LDO 供电;
    • VDD_REG,内部调节器的 3.3V 供电;
    • REG_OUT,内部调节器的 1.0V 输出,由于实际是个 DCDC 开关电源,因此要串接 2.2 μ H 2.2\mu H 2.2μH 电感;应仅供应 AVDD10 和 DVDD10;
    • RSET,接 2.49 k Ω ( 1 % ) 2.49k\Omega\ (1\%) 2.49kΩ (1%) 到 GND
  • CFG 端口

    • CFG_LDO[1:0],设置 RGMII IO 的电平,00: 3.3V,01: 2.5V,10: 1.8V,11: 1.5V;
    • CFG_MODE[2:0],设置操作模式(网线类型 <-> 协议类型),000 对应 UTP <-> RGMII。
  • INTB/PMEB/GPIO1

    该引脚的功能可以配置为中断 INTB 或电源管理 PMEB 功能,RTL8211FS(I)-VS 版本下,则还可作为 PTP_GPIO1;作为 PMEB 功能时,应接 4.7 k Ω 4.7k\Omega 4.7kΩ 到 3.3V;不使用时应浮空。

  • LED

    LED[2:0] 默认分别表示 1000BASE、100BASE、10BASE,通过寄存器配置的介绍见后文

    不过注意下 LED2、LED1 引脚的极性,LED2 应当采用共阴接法,LED1 则采用共阳接法。

功能框图

说明

PHYADDR

PHYADDR[4:3]='b00,PHYADDR[2:0]=PHYAD[2:0],由上电时 PHYAD[2:0] 引脚的上下拉状态决定,拥有 0x00 到 0x07 共 8 个可用地址。

注意,RTL8211FS 默认将地址 0x00 视为广播地址,所有 RTL8211FS 都会响应,可通过配置 PHYCR1 (Page 0xa43, Reg24 (0x18), Bit13 = 0) 来禁用广播功能。 如 PHYAD[2:0]='b000,RTL8211FS 默认会自动记住第一个非零地址,可以通过配置 PHYCR1, Bit6 = 1 来启用该功能。

因此,在设计中最好避开 0x00 这个地址,免去不必要的麻烦。

Page

RTL8211FS 寄存器较多,因此除 RegAddr 外,还有不同的 Page。一个确切的寄存器声明如下:PAGE 0x0XXX, REG 0xXX, BIT[M:N]。

Page 可通过对 PAGSR(Page 0xa43, Reg 31 (0x1F), bit[11:0]) 寄存器进行配置。配置 Reg 31 值为 0x0000 或 0x0a42 将切换回 IEEE 标准寄存器。(略有疑问,PAGSR 寄存器应该是在 Page Any, Reg 31 都可以访问,而不仅在 Page 0xa43;后经过上板验证发现确实如此

LED 模式

控制 LED 的官方参考设计如下(左,共阳接法;右,共阴接法)

RTL8211FS 的 LED 控制没有太花哨的功能,基本就是每个 LED 管脚对应一个速度。LCR (Page 0xD04, Reg 0x10) 寄存器用于配置 LED 的工作模式,以 LED2 管脚的默认值为例,LED2_ACT、LED2_LINK_1000 为 1,因此在连接 1000BASE 时,LED2 会亮起,当处于 1000BASE 活动状态时,则 LED2 闪烁。(这个默认配置就挺好用的,不需要再另行配置了,将 LED2/LED1 管脚接到 RJ45 的两个灯就可以了;注意极性)

自动协商/速度/全半双工模式

BMCR (Page 0x0, Reg 0), Bit 12 为自动协商使能,默认为 1 (on)。

当关闭自动协商时,BMCR Bit 6、Bit 13 决定本 PHY 芯片工作在何种速度,{Bit6, Bit13} = 10: 1000BASE,01: 100BASE,00: 10BASE。BMCR Bit 8 决定全双工/半双工模式,仅在关闭自动协商时起作用。

PHYSR (Page 0xa43, Reg 0x1A) 寄存器可以查看连接状态,Bit 2 指示是否连接,Bit5:4 指示速度,Bit 3 指示全半双工模式。

Soft Reset

Page 0x0, Reg 0, Bit 15 设为 1 将触发软复位,复位后自动清零。

上电顺序

RTL8211FS 上电顺序如图

3.3V 供电的上升时间应大于 0.5ms,否则可能永久损坏内部电压调节器。

原理图设计参考

软件控制(FPGA)

(暂略)

硬件调试

打板回来后进行了测试,然而发现只能自动协商到 100BASE,进一步测试发现,十兆和百兆均可以正常建立连接,而千兆会协商失败,从而自动降速到了百兆。进一步通过 MDIO 关闭自协商,并强制规定到千兆,电脑就无法识别到这个设备了,读取 PHYSR (Page 0xa43,Reg 0x1A)寄存器,也发现 bit2=0 (Link not OK)。测量 3.3V 供电、 1.0V 核压以及 25M 晶振输出,均正常,其中 1.0V 输出有 70mV 纹波。

(咳,本菜鸟画的第一块 PCB,各种修正方案都尝试了一遍,但还是无法解决千兆连接的问题,是否有大佬可以指点一二,万分感激)

相关推荐
fei_sun7 小时前
【Verilog】第一章作业
fpga开发·verilog
深圳市雷龙发展有限公司longsto8 小时前
基于FPGA(现场可编程门阵列)的SD NAND图片显示系统是一个复杂的项目,它涉及硬件设计、FPGA编程、SD卡接口、NAND闪存控制以及图像显示等多个方面
fpga开发
9527华安12 小时前
FPGA实现PCIE3.0视频采集转10G万兆UDP网络输出,基于XDMA+GTH架构,提供工程源码和技术支持
网络·fpga开发·udp·音视频·xdma·pcie3.0·万兆网
able陈12 小时前
为什么verilog中递归函数需要定义为automatic?
fpga开发
fei_sun13 小时前
【Verilog】第二章作业
fpga开发·verilog
碎碎思14 小时前
如何使用 Vivado 从源码构建 Infinite-ISP FPGA 项目
fpga开发·接口隔离原则
江山如画,佳人北望16 小时前
fpga-状态机的设计及应用
fpga开发
晓晓暮雨潇潇17 小时前
Xilinx IP核(3)XADC IP核
fpga开发·vivado·xadc·ip核
CWNULT18 小时前
AMD(Xilinx) FPGA配置Flash大小选择
fpga开发
碎碎思1 天前
很能体现FPGA硬件思维的一道面试题
fpga开发