电路设计论坛
直播中

爱与友人

10年用户 1065经验值
擅长:可编程逻辑 模拟技术 存储技术
私信 关注
[问答]

AD9177线速率为什么无法达到19.8Gbps?

通过MICROBALZE配置AD9177,数据率9.6GSPS
输入300MHz参考时钟,内部倍频至9.6GHz作为采样时钟,显示PLL已锁定
JESD204C 8个lane无法正常校验成功,此时线速率是19.8Gbps;将其配置为9.9Gbps后lane正常

回帖(1)

AD9177在配置为19.8Gbps线速率时出现JESD204C校验失败的问题,可能由以下原因导致:


1. 信号完整性问题



  • PCB走线设计:19.8Gbps的高速信号对PCB设计要求极高,需确保:

    • 差分对严格等长(<5mil偏差)

    • 阻抗控制精确(通常100Ω差分)

    • 避免过孔和直角走线

    • 参考层完整无割裂


  • 串扰与衰减:高频信号易受邻近走线干扰,建议:

    • 关键信号3W间距规则

    • 使用低损耗板材(如Rogers 4350B)

    • 增加预加重/均衡配置



2. 时钟质量与PLL配置



  • 参考时钟抖动:300MHz参考时钟需满足<100fs RMS超低抖动

  • PLL倍频参数
    // 示例PLL配置寄存器设置(需根据实际调整)
    write_reg(0x34, 0x1F);  // N分频=32
    write_reg(0x35, 0x03);  // CP电流设置
    write_reg(0x36, 0x0A);  // 环路滤波器带宽

  • VCO稳定性:9.6GHz VCO需验证相位噪声是否满足:

    • <-100 dBc/Hz @ 1MHz offset



3. JESD204C配置验证



  • 链路参数计算
    线速率 = (M × L × 10/8 × Fs) / (N' × S)
    其中M=2,L=8,N'=1,S=1时:
    19.8Gbps = (2×8×10/8×9.6G)/1 → 验证参数一致性

  • 关键寄存器检查
    // JESD参数设置示例
    write_reg(0xA00, 0x83);  // L=8, M=2
    write_reg(0xA01, 0x1F);  // F=3, K=32
    write_reg(0xA02, 0x07);  // S=1


4. 电源完整性验证



  • 核心电源要求

    • AVDD: 0.95V ±1% 纹波<10mVpp

    • DVDD: 1.1V ±2% 纹波<20mVpp


  • 推荐使用LTM4644等μModule稳压器配合100nF X7R陶瓷电容


5. 调试建议流程



  1. 使用高速示波器(>30GHz带宽)捕获眼图

    • 要求眼高>80mV,眼宽>0.7UI


  2. 检查SYSREF与Device Clock相位关系

    • 确保建立/保持时间满足


  3. 逐步提升速率测试:
    9.9Gbps → 12.5Gbps → 16Gbps → 19.8Gbps

  4. 使用ADI JESD Compliance Tool进行协议分析


6. 热管理验证



  • 全速运行时测量芯片表面温度:

    • 应<85℃(建议保持<75℃)


  • 考虑强制风冷(≥2m/s气流)


当这些问题解决后,可通过以下配置脚本优化高速性能:


// 高速模式优化配置
void ad9177_highspeed_config() {
    // 增强接收均衡
    write_reg(0xC20, 0x1F);  // RX_EQ Level 3
    // 增加发射预加重
    write_reg(0xB10, 0x25);  // 3dB pre-emphasis
    // 调整PLL带宽
    write_reg(0x36, 0x0D);   // 2MHz PLL带宽
    // 同步信号延迟校准
    write_reg(0xA10, 0x01);  // 启动lane延迟校准
}

建议结合ADI提供的IBIS模型进行信号完整性仿真,同时使用芯片内置的PRBS检测功能验证物理层性能:


// 启动内置误码检测
write_reg(0xA20, 0x81);  // 使能PRBS31生成
write_reg(0xA21, 0x01);  // 启动误码计数器
// ...运行测试后...
uint32_t errors = read_reg(0xA22) | (read_reg(0xA23) << 8);
printf("Bit error count: %un", errors);

通过系统性排查和优化,可最终实现19.8Gbps的稳定传输。注意在最终设计中建议保留至少10%的时序余量。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分