4. Lattice SerDes配置工具与IP生成

在Lattice FPGA上使用高速串行链路,第一步不是写RTL,而是把SerDes/PCS IP正确地“配出来”。Lattice提供两套主流工具链:面向新一代器件的Radiant,以及面向经典器件的Diamond。两者都通过图形化IP向导完成SerDes/PCS的协议参数、数据宽度、均衡设置与代码生成。理解这些工具的组织方式,比记住某个按钮位置更重要,因为参数之间是相互约束的,配错一个往往导致链路根本起不来。

工具链与IP入口

在Radiant中,SerDes相关IP通常通过IP Catalog调用,部分器件使用Clarity Designer进行子系统级配置;在Diamond中,则通过IP Express或Clarity Designer生成。无论入口叫什么,本质都是同一件事:向导收集参数,生成一个可综合的IP核(含RTL封装、约束、仿真模型和文档),再在顶层例化。

需要先明确一个概念:SerDes IP通常分为两层。底层是PCS/PMA硬核,负责串并转换、时钟恢复、均衡、预加重等物理层功能;上层是协议封装,如PCIe、SATA、以太网或自定义协议。配置工具同时管理这两层,但调试时我们更关心PCS/PMA层的参数,因为它们直接决定信号质量。

SerDes/PCS IP 配置与生成流程 工具入口 Radiant: IP Catalog Diamond: IP Express 协议与速率 PCIe / SATA / 自定义 线速率 1.25–10.3 Gbps 数据宽度 8/16/20/32/40 bit 与PCS时钟域匹配 均衡/预加重 TX EQ RX CTLE/DFE IP 生成产物 RTL 封装 .v / .sv 约束文件 .lpf / .sdc 仿真模型 行为级 文档 用户指南 顶层例化与引脚约束 refclk / txp / txn / rxp / rxn / reset 调试观察点 CDR锁定状态 误码率 BER 眼图张开度 均衡自适应收敛 参数相互约束:速率决定PCS宽度,宽度决定时钟域,均衡决定信号质量

协议参数:先定速率,再定参考时钟

配置向导的第一步通常是选择协议模板或自定义模式。以PCIe Gen2为例,线速率为5.0 Gbps,参考时钟可选100 MHz。这里有一个容易被忽略的约束:参考时钟频率与PLL倍频比必须匹配。如果板上晶振是125 MHz,却按100 MHz配置,PLL无法锁定,链路直接失败。

在自定义模式下,需要手动填写线速率和参考时钟。Lattice工具会根据两者自动计算PLL的分频/倍频系数,并在界面上显示是否合法。建议把计算过程记下来,例如:

目标线速率: 5.0 Gbps
参考时钟: 100 MHz
PLL倍频比: 50x
PCS时钟 = 线速率 / 数据宽度 = 5.0G / 20 = 250 MHz

如果数据宽度选20 bit,PCS并行时钟就是250 MHz;选40 bit则为125 MHz。这个时钟会送到FPGA逻辑侧,必须确认它落在时序收敛范围内。

数据宽度:与时钟域和FIFO深度联动

数据宽度不是随便选的。它决定了PCS并行侧的工作频率,也影响收发FIFO的深度和延迟。较窄的宽度(如8 bit)意味着PCS时钟更高,对FPGA逻辑时序压力大;较宽的宽度(如32/40 bit)降低时钟频率,但占用更多布线资源。

在Radiant的SerDes IP中,数据宽度通常与协议绑定。例如PCIe Gen2 x1常用16或20 bit;自定义协议可以选8、16、32。选择后,工具会生成对应的收发接口信号,如tx_data、rx_data、tx_clk、rx_clk。需要特别注意的是,rx_clk是从CDR恢复出来的,与本地参考时钟异步,跨时钟域处理必须用FIFO或握手。

建议在IP向导中把收发FIFO使能打开,并选择“弹性缓冲”模式。这样即使参考时钟有±100 ppm偏差,也能通过插入/删除空闲字符来补偿,避免溢出。

均衡设置:TX预加重与RX均衡

高速信号经过PCB走线、连接器和电缆后,高频分量衰减严重,眼图闭合。SerDes IP提供两级补偿:发送端预加重(Pre-emphasis)和接收端均衡(Equalization)。

TX预加重通过提升信号跳变沿的幅度来补偿高频损耗。典型参数是预加重等级,如0–6 dB,步进约1 dB。设置过大反而会造成过冲和EMI。RX均衡通常包括CTLE(连续时间线性均衡)和DFE(判决反馈均衡)。CTLE补偿低频到高频的增益斜率,DFE则根据历史判决结果消除码间干扰。

在Lattice工具中,这些参数可能以“均衡模式”下拉框出现,如“自适应”、“手动”、“关闭”。调试初期建议先用手动固定值,观察眼图变化,再切到自适应。如果链路误码率在10⁻¹²量级,说明均衡基本到位。

生成流程与检查清单

参数填完后,点击Generate,工具会输出IP核。此时不要急着上板,先做三件事:

  1. 检查生成的约束文件是否包含参考时钟频率、引脚位置和IO标准。SerDes引脚通常是专用差分对,不能随意分配。
  2. 确认复位逻辑。SerDes IP一般需要稳定的复位脉冲,且复位释放要与参考时钟同步。
  3. 用仿真模型跑一次基本收发,确认tx_data能正确串出,rx_data在回环下能恢复。

下面是一份可参考的配置检查表,适用于自定义协议场景:

检查项 示例值 判断依据
线速率 3.125 Gbps 与对端一致
参考时钟 125 MHz 板上晶振实测
数据宽度 20 bit PCS时钟=156.25 MHz
TX预加重 3.5 dB 眼图张开度改善
RX均衡 自适应 BER < 1e-12
复位 同步释放 无亚稳态
不要忽略IP生成后的“引脚约束”文件。SerDes的参考时钟引脚和高速差分对在Lattice器件中是固定管脚,配错会导致布局布线失败或链路无输出。

最后,IP生成只是起点。真正的调试从板级开始:用示波器看TX眼图,用误码仪或PRBS检查BER,用工具读取CDR锁定状态。如果链路不通,优先回查参考时钟频率、数据宽度与PCS时钟是否匹配、均衡是否过补偿。把这些参数关系理清,后续的调试才有方向。