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层的参数,因为它们直接决定信号质量。
协议参数:先定速率,再定参考时钟
配置向导的第一步通常是选择协议模板或自定义模式。以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或握手。
均衡设置:TX预加重与RX均衡
高速信号经过PCB走线、连接器和电缆后,高频分量衰减严重,眼图闭合。SerDes IP提供两级补偿:发送端预加重(Pre-emphasis)和接收端均衡(Equalization)。
TX预加重通过提升信号跳变沿的幅度来补偿高频损耗。典型参数是预加重等级,如0–6 dB,步进约1 dB。设置过大反而会造成过冲和EMI。RX均衡通常包括CTLE(连续时间线性均衡)和DFE(判决反馈均衡)。CTLE补偿低频到高频的增益斜率,DFE则根据历史判决结果消除码间干扰。
在Lattice工具中,这些参数可能以“均衡模式”下拉框出现,如“自适应”、“手动”、“关闭”。调试初期建议先用手动固定值,观察眼图变化,再切到自适应。如果链路误码率在10⁻¹²量级,说明均衡基本到位。
生成流程与检查清单
参数填完后,点击Generate,工具会输出IP核。此时不要急着上板,先做三件事:
- 检查生成的约束文件是否包含参考时钟频率、引脚位置和IO标准。SerDes引脚通常是专用差分对,不能随意分配。
- 确认复位逻辑。SerDes IP一般需要稳定的复位脉冲,且复位释放要与参考时钟同步。
- 用仿真模型跑一次基本收发,确认tx_data能正确串出,rx_data在回环下能恢复。
下面是一份可参考的配置检查表,适用于自定义协议场景:
| 检查项 | 示例值 | 判断依据 |
|---|---|---|
| 线速率 | 3.125 Gbps | 与对端一致 |
| 参考时钟 | 125 MHz | 板上晶振实测 |
| 数据宽度 | 20 bit | PCS时钟=156.25 MHz |
| TX预加重 | 3.5 dB | 眼图张开度改善 |
| RX均衡 | 自适应 | BER < 1e-12 |
| 复位 | 同步释放 | 无亚稳态 |
最后,IP生成只是起点。真正的调试从板级开始:用示波器看TX眼图,用误码仪或PRBS检查BER,用工具读取CDR锁定状态。如果链路不通,优先回查参考时钟频率、数据宽度与PCS时钟是否匹配、均衡是否过补偿。把这些参数关系理清,后续的调试才有方向。