Verilog代码练习生
哈,刚踩完坑过来。最大的坑不是IP配置,而是链路训练(LTSSM)卡死。PCIe Gen4速率高,对链路均衡(EQ)要求很苛刻。FPGA和对方设备(比如CPU或SSD)的均衡参数不匹配,经常导致训练不到L0状态。Vivado的Debug端口一定要引出来,用ILA抓ltssm_state信号,看卡在哪个阶段。比如卡在Polling.Compliance,很可能是链路没通或者电气参数太差;卡在Configuration,可能是链路宽度、速率协商失败。
必备工具除了ILA,强烈推荐用Vivado的Transceiver Wizard生成一个独立的调试模块,把PRBS生成/校验、环回等功能做进去,这样即使PCIe IP核的链路没起来,你也能单独测试收发器物理层是否正常。
高效流程?我的习惯是:先硬件环回(如果支持)测单个FPGA的GT是否正常;再用IBERT做板间静态链路质量评估;然后上PCIe IP,用例子设计配合ChipScope(ILA)看LTSSM;最后用协议分析仪(如Teledyne LeCroy的PCIe分析仪,但贼贵)或软件工具(比如通过驱动程序)查看TLP层数据是否正确。眼图测试通常是硬件设计验证阶段做,调试阶段如果眼图太差,基本得改板了,所以前期布局布线和仿真一定要做好。
