当前位置: 首页 > news >正文

CMAC USPLUS (CAUI-4) 使用方式分析

in hsb fpga/pynq/

基于FPGA_top.sveth_100gb_top.svrst.sv三个 SystemVerilog 文件,并结合Xilinx PG203 (Integrated 100G Ethernet Subsystem v3.0)文档的总结。


1. 整体架构

该设计采用Xilinx UltraScale+ 集成 100G 以太网子系统 (CMAC USPLUS)作为 100GbE 主机接口,配置为CAUI-4 模式(通过 4 路 GT 收发器实现,每路 25.78125 Gbps)。

层次结构如下:

FPGA_top.sv (顶层) ├── eth_100gb_top.sv (CMAC/GT 封装与初始化) │ └── design_1 (Vivado Block Design 生成的 CMAC + GT Wrapper) ├── rst.sv (复位控制) └── HOLOLINK_top.sv (业务逻辑)

2. 时钟结构

根据 PG203 和代码,时钟连接如下:

信号来源/去向说明
ETH_REFCLK_P/N外部 156.25 MHz 差分时钟输入到gt_ref_clk_0_clk_p/n,作为 GT 的参考时钟
init_clk板载 100 MHz 经 IBUFDS+BUFG自由运行时钟,用于 GT 复位状态机 (init_clk_0)
o_usr_clk(gt_txusrclk2_0)CMAC/GT 输出322 MHz的用户数据时钟,驱动所有 AXI4-Stream 接口和 HOLOLINK 数据平面
o_aclk(clk_out1_0)CMAC 内部 Clocking Wizard50 MHz,作为 APB 控制平面时钟
o_ptp_clk(clk_out2_0)CMAC 内部 Clocking Wizard100 MHz,用于 PTP/IEEE 1588 时间戳

关键点usr_clk是数据平面的唯一主时钟,HOLOLINK 的传感器接口和主机接口均工作在该时钟域下。


3. 复位策略

代码实现了两级复位,严格遵循 PG203 的复位要求:

(1) CMAC/GT 系统复位 (i_cmac_rstsys_reset_0)

  • FPGA_top中,使用init_clk域的状态机监测gt_powergoodout(4-bit,等待所有 4 个 lane 的 Power Good 都置位后),生成rst_all
  • rst_all作为i_cmac_rst输入eth_100gb_top,连接到 CMAC 的sys_reset_0
  • 作用:复位 GT 收发器和 CMAC 核心,需在时钟稳定期间保持。

(2) 系统级复位 (sys_rstcmac_sys_rst)

  • rst.sv模块区分了:
    • o_cmac_sys_rst:由软件复位 (i_sw_rst) 和 PLL 锁定状态控制,用于 CMAC。
    • o_sys_rst:不仅依赖 PLL 锁定,还依赖mac_aligned(即stat_rx_aligned经跨时钟域同步到 APB 时钟域)。这意味着整个系统必须在 CMAC 接收端完成 Lane 对齐后,才会退出复位

4. GT 串行接口 (CAUI-4)

// 4 路差分 RX/TX,对应 CAUI-4 的 4 个 SerDes lane input [3:0] gt_serial_port_0_grx_p, gt_serial_port_0_grx_n; output [3:0] gt_serial_port_0_gtx_p, gt_serial_port_0_gtx_n;
  • 代码中实例化了 4 路 GT 通道,与 CAUI-4 模式匹配。
  • 输出信号:
    • gt_powergoodout[3:0]:各路 GT 电源良好指示。
    • gt_ref_clk_out:GT 参考时钟输出(可用于监测)。

5. AXI4-Stream 用户数据接口

CMAC 配置为AXI4-Stream 用户接口(非 LBUS)。数据宽度为512-bit,在usr_clk域工作。

TX 方向 (HOLOLINK → CMAC → 网线)

axis_tx_0_tdata [511:0] axis_tx_0_tkeep [63:0] axis_tx_0_tlast axis_tx_0_tuser axis_tx_0_tvalid axis_tx_0_tready (反压信号)

RX 方向 (网线 → CMAC → HOLOLINK)

axis_rx_0_tdata [511:0] axis_rx_0_tkeep [63:0] axis_rx_0_tlast axis_rx_0_tuser axis_rx_0_tvalid

这些信号在FPGA_top中直接连接到HOLOLINK_top的主机接口(Host IF),实现了 HOLOLINK 协议栈与 100GbE 物理层的对接。


6. CMAC 控制/状态信号

代码中使用了以下 PG203 定义的关键控制/状态端口:

信号名方向说明
ctl_rx_0_ctl_enableInputRX 路径使能,必须置 1 才能正常接收
ctl_rx_0_ctl_rx_force_resyncInputRX 强制重新同步/对齐,平时为 0
ctl_tx_0_ctl_enableInputTX 路径使能,需在对端就绪后才置 1
ctl_tx_0_ctl_tx_send_rfiInput发送 Remote Fault Indication (RFI),未对齐前应置 1
ctl_tx_0_ctl_tx_send_lfiInput发送 Local Fault Indication (LFI)
ctl_tx_0_ctl_tx_send_idleInput发送 Idle 码
stat_rx_alignedOutput关键状态:所有 PCS Lane 已完成对齐/解偏斜
usr_tx_reset_0(o_usr_rst)OutputCMAC 输出的 TX 用户逻辑复位

7. Core Bring Up Sequence (核心启动状态机)

这是代码中最关键的 CMAC 使用部分。eth_100gb_top.sv中实现了一个 3 状态 FSM,完全遵循 PG203 推荐的 “Without AXI4-Lite Interface” 启动序列

typedef enum logic [1:0] { IDLE = 2'b00, WAIT = 2'b01, RX_ALIGNED = 2'b10 } state_rx_init;

启动流程:

  1. IDLE 状态(复位后):

    • 置位ctl_rx_enable = 1(使能接收路径)。
    • 置位ctl_tx_send_rfi = 1(向链路对端发送 Remote Fault,表明本端尚未准备好接收数据)。
  2. WAIT 状态

    • 持续等待stat_rx_aligned == 1(本端 RX 完成 Lane 对齐,可以正确接收数据)。
    • 一旦对齐
      • 撤销ctl_tx_send_rfi = 0(不再发送 Remote Fault)。
      • 置位ctl_tx_enable = 1(使能发送路径,开始正常发送以太网帧)。
      • 进入RX_ALIGNED状态。
  3. RX_ALIGNED 状态

    • 正常工作状态,数据可以正常收发。

PG203 原文要求CTL_TX_ENABLE不应在对端 RX 对齐就绪前置 1,否则会导致数据丢失。代码中的 RFI 机制正是为了避免这一问题。


8. 未使用的功能

代码中明确将以下端口置为无效(Tie-off),表明未使用这些高级功能:

  • core_drp_*:未使用动态重配置端口 (DRP)。
  • gt_loopback_in_0:接12'b0,未启用近端/远端环回。
  • AXI4-Lite 配置接口:未使用寄存器映射方式配置 CMAC,所有控制直接通过端口信号由状态机驱动。

9. 与上层 HOLOLINK 逻辑的集成

  • 数据平面usr_clk同时驱动 CMAC AXI4-Stream 接口和 HOLOLINK 的 Sensor/Host 接口,确保数据路径处于同一时钟域,简化时序。
  • PTP 支持:代码从 CMAC 获取ptp_clk(100 MHz),并通过streaming_cdc将 PTP 时间戳(ptp_sec,ptp_nsec)同步到usr_clk域,供数据帧打时间戳使用。
  • ILA 调试:在usr_clk域实现了多个 ILA(Integrated Logic Analyzer),用于抓取 PTP 时间戳、帧计数器、Sensor 接口数据等信号。

总结

该代码以一种标准且规范的方式使用 CMAC USPLUS IP:

  • 模式:CAUI-4 (4x25.78125G),AXI4-Stream 512-bit 接口。
  • 时钟:156.25 MHz 外部参考时钟输入,生成 ~322 MHz 用户数据时钟。
  • 复位:分层复位策略,确保 GT 和 CMAC 在时钟稳定后释放,且系统级复位依赖 RX 对齐完成。
  • 启动:严格遵循 PG203 推荐的 Bring Up Sequence,通过状态机管理ctl_rx_enablectl_tx_send_rfi→ 等待stat_rx_alignedctl_tx_enable的时序,保证链路双方可靠建立。
  • 数据通路:CMAC 的 AXI4-Stream 直接对接 HOLOLINK 协议栈,形成完整的 100GbE 传感器桥接方案。
http://www.jsqmd.com/news/1221609/

相关文章:

  • 长沙岳麓区代办营业执照机构 - 资讯焦点
  • 二进制、八进制、十进制与十六进制之间的转换(图片说明+举例介绍)
  • 2026南京复杂婚姻家事案件律师能力解析:多维度争议解决与家企交叉纠纷如何有效应对 - GrowUME
  • UE5 C++项目升级Visual Studio后编译失败的系统性解决方案
  • 基于TI TDAx DSP的ADAS环视系统:从鱼眼畸变校正到3D视图的工程实现
  • 格拉苏蒂中国官方售后服务中心|最新维修地址及官方电话权威信息公告(2026年7月最新) - 亨得利官方服务中心
  • AI 产品的能力边界沟通:管理用户预期的设计策略
  • 2026年市场认可的打标签软件推荐:从国产替代到企业级全场景覆盖
  • 2026年7月最新杭州上城区小营街道亨得利官方钟表服务中心电话公示 - 亨得利官方博客
  • Godot性能优化实战:从Profiler工具到常见瓶颈解决方案
  • 易奢福大连 2026 线下实体:回收奢侈品二手店资质齐全靠谱 - 奢侈品回收实体店
  • Cordova插件开发:原理、实战与性能优化
  • LangChain 接入生产环境:我推翻的三个“想当然”与团队协作红线
  • 2026年7月最新欧米茄西安大悦城维修保养服务电话 - 欧米茄官方服务中心
  • 045-IAP Kit应用内支付
  • 直冷冰箱技术解析:统帅Leader 218L真实体验与选购指南
  • 百达翡丽中国官方售后服务中心|全新网点地址与官方售后热线权威信息通告(2026年7月最新) - 百达翡丽服务中心
  • 基线模型:机器学习工程中的数据听诊器与可信锚点
  • Wwise音频文件处理实战:从游戏音效到个性化音频改造
  • 亲身到店探访广州卡地亚官方售后服务中心|服务热线及门店官方地址(2026年7月最新) - 卡地亚服务中心
  • 基于优先搜索的路径规划算法性能分析7
  • 11.Python 面向对象三大特性详解:封装、继承、多态与多继承、魔术方法及抽象类
  • 单片机高电平与低电平:从基础原理到工程实践全解析
  • 2026年香港专才计划避坑指南:雇主资质不达标、职位不匹配、薪酬不合理,专才申请99%被拒都栽在这 - 德益云企业服务
  • 2026 自媒体博主在线 AI 图片编辑人气榜封面海报配图智能美化Imagegood 口碑强势出圈 - 优企甄选
  • Python循环控制:continue与while语句详解
  • 海口回收迪奥戴妃包,逛友谊阳光城警惕商家虚报真伪压低价 - 大牌深度测评
  • Fyne框架:Go语言跨平台GUI开发实战指南
  • 【刷机】魔百盒CM201-2 CH免拆刷机亲测成功
  • 数据库迁移的实践指南:从手工 SQL 到自动化迁移工具