3、Vivado中Aurora IP核的配置:IP Catalog中查找Aurora核、Core Configuration选项卡详解、GT Selection与Line Rate设置

好,咱们直接进入正题。这一节我带你手把手走一遍Aurora IP核的配置流程。说实话,很多新手第一次打开Vivado的IP Catalog时,面对那一堆选项直接就懵了。别担心,我当年也一样,踩过不少坑,今天把这些经验全抖出来。

3.1 在IP Catalog中定位Aurora核

打开Vivado,左侧Flow Navigator里找到IP Catalog。点进去之后,在搜索框里输入“Aurora”。你会看到几个选项:

  • Aurora 8B/10B —— 最常用的,8B/10B编码,适合中低速链路
  • Aurora 64B/66B —— 64B/66B编码,效率更高,适合高速场景

我个人习惯用8B/10B,因为它的时钟恢复更容易,调试起来也省心。但如果你追求带宽利用率,64B/66B是更好的选择。

小提示: 如果你用的是Kintex-7或Artix-7,老老实实选8B/10B。UltraScale系列可以上64B/66B,但要注意参考时钟的抖动要求。

3.2 Core Configuration选项卡详解

双击IP核,进入配置界面。第一个选项卡就是Core Configuration。这里我按顺序讲几个关键参数:

3.2.1 Lane Width与Data Flow Mode

Lane Width:说白了就是并行数据位宽。常见的有2字节、4字节。我一般选4字节,这样内部逻辑时钟可以跑低一点,时序压力小。

Data Flow Mode

  • Duplex —— 全双工,收发同时进行
  • Simplex (TX Only) —— 只发不收
  • Simplex (RX Only) —— 只收不发

嗯,这里要注意:如果你选Simplex,那另一端的IP核也得配成对应的模式,否则链路起不来。我曾经在一个项目里吃过这个亏,两边配反了,折腾了两天才发现。

3.2.2 Interface与Flow Control

Interface:选Framing还是Streaming

  • Framing:带帧头帧尾,适合需要包边界识别的场景
  • Streaming:纯数据流,没有帧结构,适合连续传输

我个人偏爱Framing,因为调试时能看到帧边界,定位问题方便。Streaming虽然省带宽,但一旦丢数据,你根本不知道从哪开始错的。

Flow Control:一般选None。除非你的应用层有明确的背压需求,否则别开。开了反而增加逻辑复杂度。

3.2.3 时钟配置

这里有个容易忽略的点:User Clock的来源。你可以选:

  • From GT Common —— 从GT的公共时钟域来
  • From Fabric —— 从FPGA逻辑来

我建议选From GT Common,这样时钟抖动小,链路更稳定。用Fabric时钟的话,万一布线长了,时序容易出问题。

重点: User Clock频率 = Line Rate / (Lane Width × 编码系数)。8B/10B的编码系数是10/8,64B/66B是66/64。算错了的话,IP核会报错,但有时候报错信息不明显,你得自己核对。

3.3 GT Selection与Line Rate设置

接下来是重头戏——GT Selection选项卡。这里决定了你的高速串行链路到底用哪对收发器。

3.3.1 选择GT Quad

Vivado会列出你芯片上所有的GT Quad。每个Quad包含4个GT通道。你需要指定:

  • GT Type:GTP、GTH、GTY等,取决于芯片型号
  • Quad Location:比如Quad 112、Quad 113等
  • GT Channel:每个Quad里的第几个通道

我一般建议:优先选靠近IO Bank的Quad。为什么?因为走线短,信号质量好。我曾经为了省事随便选了一个,结果眼图测试不过关,最后不得不改PCB,教训深刻。

3.3.2 Line Rate设置

Line Rate就是串行线上的比特率,单位是Gbps。设置时要注意:

  • 必须与对端设备匹配
  • 不能超过GT支持的最大速率
  • 参考时钟频率 = Line Rate / (PLL倍频系数)

举个例子:你想跑5 Gbps,用8B/10B编码,GT的PLL倍频系数是20,那参考时钟就是5 Gbps / 20 = 250 MHz。这个计算一定要准,否则IP核初始化会失败。

警告: 别把Line Rate设得太接近GT的极限。比如GTH最高能跑13.1 Gbps,你设个13 Gbps,看着没问题,但温度一高、电压一波动,链路就断了。留10%~15%的余量是明智的。

3.3.3 参考时钟选择

每个Quad需要一对差分参考时钟。你可以选:

  • 专用参考时钟引脚(比如MGTREFCLK0P/N)
  • 从其他Quad借时钟(通过GT Common)

我强烈建议用专用引脚。借时钟虽然省引脚,但会增加抖动,而且布线复杂。除非你引脚实在不够用,否则别走这条路。

3.4 一个完整的配置示例

假设我们要配一个Aurora 8B/10B,4通道,Line Rate 6.25 Gbps:

参数 设置值 说明
Core Type Aurora 8B/10B 常用编码
Lane Width 4 Bytes 内部数据位宽
Line Rate 6.25 Gbps 串行线速率
GT Type GTH Kintex-7常用
Reference Clock 156.25 MHz 6.25 / 40 = 0.15625 GHz
Data Flow Mode Duplex 全双工
Interface Framing 带帧结构

配完之后,记得点OK生成IP核。Vivado会花几分钟综合,然后你就可以在IP核的例化模板里看到端口了。

3.5 知识体系总览

下面这张图帮你理清整个配置流程的逻辑关系:

Aurora IP核配置知识体系 IP Catalog 查找 Core Configuration 选项卡 Lane Width / Data Flow Interface / Flow Control User Clock 配置 GT Selection & Line Rate GT Quad / Channel 选择 Line Rate / 参考时钟 余量预留 / 抖动控制

这张图把整个配置流程分成了三层:先找到IP核,再配核心参数,最后搞定GT和速率。每一层都有几个关键点,你按这个顺序走,基本不会漏。

好了,这一节的内容就到这。配置Aurora IP核其实不难,关键是每个参数你都得知道它干嘛用的。下一节咱们聊仿真验证,到时候我会教你怎么写一个简单的testbench来测链路通不通。


公众号:蓝海资料掘金营,微信deep3321