单片机初学者
哈,刚踩完坑。最大的坑往往是“以为IP核配好了就万事大吉”。实际上,Xilinx的PCIe IP有很多参数和时钟架构选项,选错了后期改起来很痛苦。比如AXI接口的时钟域、用户时钟选择、PF/VF设置等。链路训练(LTSSM)卡住是最常见的现象,可能原因太多了:参考时钟、复位、PLL没锁定、RX极性反了、通道损耗超标、对端设备不兼容等等。
工具链要准备好。Vivado的IBERT是硬件调试第一步,必须会用。Vivado Lab Edition也能在独立模式下运行IBERT,方便生产测试。ILA要抓LTSSM状态(一般是3bit或5bit信号),这是判断卡在哪一步的关键。高级一点,可以用System ILA来抓AXI流数据。物理层离不开示波器,做眼图测试和抖动分析,看看是否符合PCIe规范的眼图模板。
分享个流程:先静态检查,核对IP核配置、约束文件(尤其是时钟和GT引脚位置、电平)。上电后,用IBERT验证每个Lane的物理层性能(误码率<1e-12)。然后接上PCIe IP,用ILA监控LTSSM,如果能进L0,基本成功一大半。之后用简单的读写测试(比如配置空间读写、内存读写)验证链路。注意仿真不能省,用VIP(验证IP)做一下仿真,能提前发现很多配置错误。最后,保持耐心,这类调试就是和细节死磕。
