3. 收发器链路设计约束与管脚规划
收发器链路能否在硬件上稳定工作,往往在原理图阶段就已经决定了大半。Quartus 中的引脚分配只是把设计意图“告诉”工具,而真正约束链路的是三件事:参考时钟从哪来、收发器电源怎么供、高速差分对怎么连。本节围绕这三类约束展开,并给出一个可综合的链路管脚与时钟规划任务。
一、参考时钟:链路时序的源头
收发器需要一个低抖动的参考时钟(refclk)来驱动 CDR 和 PLL。以常见的 Intel/Altera 器件为例,每个收发器 bank 通常有专用的 refclk 差分输入对,例如 refclk0、refclk1,它们只能从特定的专用时钟管脚进入,不能随意映射到普通 IO。规划时先要明确:本链路需要几个参考时钟?是单通道还是多通道共享?
假设一个四通道链路,四个通道速率相同(例如 10.3125 Gbps),可以共享同一个 refclk,由 bank 内的 ATX PLL 或 fPLL 产生通道时钟。若通道速率不同,或需要独立展频,则要分配多个 refclk。参考时钟的频率选择要满足 PLL 的 VCO 范围与分频比约束,例如 10.3125 Gbps 常用 644.53125 MHz 或 322.265625 MHz 参考时钟,具体取决于所选 PLL 类型和分频配置。
在 Quartus 中,参考时钟通过 set_location_assignment 绑定到专用管脚,并在 QSF 中声明为全局时钟或收发器参考时钟。若使用外部晶振经时钟缓冲器分发,还要注意缓冲器输出的抖动指标和走线长度匹配。
二、收发器电源:容易被忽视的硬约束
收发器电源不是“接上就行”。以典型器件为例,收发器 bank 通常需要 VCCR_GXB(接收器电源)、VCCT_GXB(发送器电源)、VCCA_GXB(模拟电源)以及 VCCH_GXB(辅助电源),不同 bank 可能还有独立的 VCCR_GXB 分组。这些电源的电压值、纹波要求和上电顺序都有明确规定。
规划时要确认:目标 bank 的电源轨是否与设计中其他 bank 共用?如果共用,是否满足所有 bank 的电流需求?电源滤波电容的容值和布局是否按器件手册推荐?在 Quartus 的 Pin Planner 中,电源管脚通常不参与用户分配,但电源规划错误会直接导致链路无法建立,因此必须在原理图阶段核对。
三、高速差分对:管脚与极性约束
高速差分对(GXB 收发通道)的管脚位置由器件物理布局决定,不能跨 bank 随意分配。每个收发器通道有固定的 tx_p/tx_n 和 rx_p/rx_n 管脚,Quartus 通过 set_location_assignment 将设计中的 tx_serial_data[0] 绑定到具体管脚。若 PCB 上差分对极性接反,可以在 Quartus 中通过 set_instance_assignment -name GXB_TX_POLARITY_INVERT 或接收端极性反转来修正,而不必改板。
差分对的约束还包括:是否启用片内匹配、AC 耦合电容的位置、以及是否需要外部终端电阻。对于 10 Gbps 以上链路,通常采用 AC 耦合,耦合电容靠近发送端放置,容值一般为 100 nF,并注意电容封装带来的寄生参数。
四、复位与配置管脚
收发器链路还需要复位和重配置接口。常见的复位信号包括 nRST(低有效全局复位)和收发器专用的 tx_digitalreset、rx_digitalreset、rx_analogreset。这些信号在 Quartus 中通常由软逻辑产生,但若需要外部控制,应分配到普通 IO 并约束为异步复位,注意做同步释放处理。
重配置接口(如 Avalon-MM 或 Avalon-ST)用于动态调整 PLL 分频比、均衡器参数等。若使用外部控制器,需要分配 reconfig_clk、reconfig_write、reconfig_read、reconfig_address、reconfig_writedata、reconfig_readdata 等管脚。这些管脚数量较多,规划时应集中布局,避免与高速差分对交叉。
五、可综合的链路管脚与时钟规划任务
下面给出一个四通道 10.3125 Gbps 链路的规划示例。假设使用 Intel Arria 10 器件,bank 1C 包含四个收发器通道,参考时钟从专用 refclk0 输入,电源由板级 LDO 提供。
| 信号名 | 方向 | 管脚/资源 | 约束说明 |
|---|---|---|---|
| refclk0_p/n | 输入 | 专用 refclk 管脚 | 644.53125 MHz,差分,低抖动 |
| tx_serial_data[3:0] | 输出 | GXB_TX_P/N[3:0] | 绑定到 bank 1C 通道 0–3 |
| rx_serial_data[3:0] | 输入 | GXB_RX_P/N[3:0] | 绑定到 bank 1C 通道 0–3 |
| nRST | 输入 | 普通 IO | 异步复位,同步释放 |
| reconfig_clk | 输入 | 普通 IO | 100 MHz,用于 AVMM 重配置 |
| reconfig_write/read | 输入 | 普通 IO | 与 reconfig_clk 同组布局 |
对应的 QSF 约束片段如下:
set_location_assignment PIN_A10 -to refclk0_p
set_location_assignment PIN_A11 -to refclk0_n
set_location_assignment PIN_B20 -to tx_serial_data[0]
set_location_assignment PIN_B21 -to tx_serial_data[0](n)
set_location_assignment PIN_C20 -to rx_serial_data[0]
set_location_assignment PIN_C21 -to rx_serial_data[0](n)
set_instance_assignment -name GXB_TX_POLARITY_INVERT ON -to tx_serial_data[0]
set_instance_assignment -name GXB_RX_POLARITY_INVERT ON -to rx_serial_data[0]
规划完成后,在 Quartus 中执行 Analysis & Synthesis,检查 Pin Planner 中是否有未分配或冲突的管脚;再运行 Fitter,查看收发器 bank 的电源和时钟报告是否通过。若出现“refclk 未连接”或“GXB 管脚位置非法”的报错,应回到管脚规划阶段修正,而不是在布局布线后强行修改。
完成上述规划后,链路具备了可综合的管脚与时钟基础。下一步是在 Quartus 中建立工程、例化收发器 IP,并将这些约束应用到实际设计中。