1. 高速串行链路概述与Quartus工具链定位
在传统并行总线上,数据位与随路时钟一起传输,随着速率提升,走线偏斜、时钟抖动和同步窗口收缩会迅速吃掉时序余量。高速串行链路把并行数据在发送端串行化、在接收端恢复,用一对差分线承载 Gbps 级数据,同时把时钟信息嵌入数据流中,从根本上绕开了并行总线的偏斜瓶颈。理解这条链路,需要抓住四个核心概念:SerDes、CDR、均衡与链路预算。
SerDes:串行器与解串器的基本结构
SerDes 是 Serializer/Deserializer 的缩写,是高速串行收发器的核心。发送方向,FPGA 内部并行数据先进入发送 FIFO,经过 8b/10b 或 64b/66b 编码后送入串行器,把 N 位并行数据按位依次输出,再经发送缓冲驱动差分对。接收方向则相反:差分接收器把微弱信号整形为逻辑电平,CDR 从中恢复时钟,解串器把串行位流还原为并行字,再经对齐与解码交给用户逻辑。
以常见的 Intel FPGA 收发器为例,一个通道可配置为 1.25 Gbps 到 28.3 Gbps 等不同速率档位,内部包含 PMA(物理介质附加层)和 PCS(物理编码子层)。PMA 负责串行化、均衡、驱动与接收;PCS 负责编码、字对齐、通道绑定和速率匹配。设计时先明确线速率、参考时钟频率和编码方式,再反推 PCS 与 PMA 的分频关系,这是后续所有配置的起点。
CDR:从数据里“长”出时钟
接收端没有独立时钟线,必须靠 CDR(Clock and Data Recovery,时钟数据恢复)从数据跳变中提取相位信息。CDR 内部通常包含相位检测器、电荷泵、环路滤波器和压控振荡器,形成一个锁相环,使采样时钟始终对准数据眼图的中心。CDR 能否锁定,取决于数据跳变密度:长连 0 或长连 1 会让相位检测器失去参考,因此编码(如 8b/10b)会限制游程长度,保证足够的跳变。
调试时经常关注 CDR 锁定状态和眼图张开度。若 CDR 无法锁定,常见原因是参考时钟频率偏差过大、数据跳变不足或均衡设置不当。在 Transceiver Toolkit 中可以直接读取 CDR 锁定标志和误码计数,这是判断链路是否“活”的第一手依据。
均衡:补偿信道的高频损耗
PCB 走线、连接器和电缆对高频分量的衰减远大于低频,导致接收眼图闭合。均衡的作用就是在发送端或接收端提升高频、压低低频,把眼图重新“撑开”。发送端常用预加重(Pre-emphasis)和去加重(De-emphasis):在跳变沿提高幅度,或在长连码时降低幅度,使经过信道后的波形更平坦。接收端常用 CTLE(连续时间线性均衡)和 DFE(判决反馈均衡):CTLE 提供高频增益,DFE 则根据已判决的历史比特消除后游标干扰。
均衡参数不是越大越好。预加重过强会放大高频噪声,DFE 抽头过多会增加功耗和误判风险。实际调试中通常先固定发送端预加重,再逐步调整接收端 CTLE 增益和 DFE 抽头,同时观察误码率变化,找到眼图与误码率之间的平衡点。
链路预算:把余量算清楚
链路预算回答的是“这条链路到底能不能通”。它把发送幅度、信道损耗、连接器损耗、串扰、抖动和接收灵敏度放在一起核算,最终得到眼图余量。一个简化的示例:发送差分幅度 800 mVppd,信道在 Nyquist 频率处损耗 12 dB,连接器与过孔再损耗 3 dB,接收端 CTLE 提供 6 dB 高频增益,则到达接收机的高频幅度约为 800 mV × 10^(-(12+3-6)/20) ≈ 800 × 0.354 ≈ 283 mVppd。若接收机灵敏度为 100 mVppd,则幅度余量约 9 dB。再扣除抖动带来的时间余量,才能判断链路是否可靠。
链路预算不是一次性计算,而是设计迭代的标尺。走线长度、过孔数量、连接器选型、均衡配置都会改变预算结果。把预算表维护好,调试时就能快速定位是信道问题、均衡问题还是参考时钟问题。
Quartus 工具链在链路设计中的位置
Quartus Prime 是 Intel FPGA 的集成开发环境,承担从工程创建、引脚分配、收发器通道配置到时序收敛的全过程。其中 Transceiver 相关的 IP(如 Native PHY、PCS Direct、PCIe Hard IP)通过 Parameter Editor 配置线速率、参考时钟、编码方式和均衡参数,生成可综合的 RTL 与约束。Signal Tap 是嵌入式逻辑分析仪,通过 JTAG 把内部信号抓取到 Quartus 界面,适合观察用户逻辑侧的并行数据、状态机和握手信号。Transceiver Toolkit 则直接面向 PMA/PCS,提供眼图扫描、误码率测试、CDR 锁定状态和均衡参数在线调整,是链路调试的主力工具。
三者的分工可以这样理解:Quartus Prime 负责“把链路搭起来”,Signal Tap 负责“看逻辑对不对”,Transceiver Toolkit 负责“看模拟眼图和误码好不好”。实际调试顺序通常是先用 Quartus 完成配置与编译,再用 Signal Tap 确认数据通路和复位时序,最后用 Transceiver Toolkit 做眼图与误码评估。
从概念到动手:第一次链路评估该做什么
假设手头有一块 Intel FPGA 开发板,收发器参考时钟为 125 MHz,目标线速率 10.3125 Gbps,编码 64b/66b。第一步在 Quartus Prime 中新建工程,选择正确的器件型号,打开 Native PHY IP Parameter Editor,把线速率设为 10312.5 Mbps,参考时钟设为 125 MHz,编码选 64b/66b,使能发送端预加重和接收端 CTLE。第二步生成 IP 并例化到顶层,连接参考时钟、复位和用户数据接口,分配收发器 bank 的引脚约束。第三步编译工程,确认时序报告中没有收发器相关的严重违例。
第四步用 Signal Tap 抓取用户侧并行数据,确认复位释放后数据通路有稳定跳变,而不是恒 0 或恒 1。第五步打开 Transceiver Toolkit,连接 JTAG,选择对应通道,先读取 CDR 锁定状态;若未锁定,检查参考时钟频率和编码配置。锁定后运行误码率测试,观察误码计数是否在可接受范围内;再执行眼图扫描,看眼高和眼宽是否满足链路预算的预期。若眼图闭合,回到均衡参数,逐步调整 CTLE 增益和 DFE 抽头,同时记录误码率变化,直到找到稳定工作点。
常见误区与判断依据
一个常见误区是把“链路能通”等同于“链路可靠”。误码率测试短时间通过,不代表长时间运行没有偶发错误。判断链路是否可靠,应关注误码率是否低于系统要求(例如 1e-12),眼图余量是否留够,以及 CDR 锁定是否稳定。另一个误区是只调发送端预加重,忽略接收端 CTLE 和 DFE。实际上,接收端均衡往往对眼图改善更直接,尤其是在长走线或高损耗信道中。
还有一点容易被忽略:链路预算中的抖动余量。幅度余量够,不代表时间余量够。发送端总抖动、信道引起的确定性抖动和 CDR 跟踪能力共同决定采样窗口。若眼图在水平方向已经闭合,即使幅度足够,误码率也会恶化。因此眼图扫描时既要看眼高,也要看眼宽,两者缺一不可。