2026/2/6 16:54:01
网站建设
项目流程
个人备案网站建设方案书,网站套用模板,wordpress做跟随导航导航,青岛建设系统一体化网站FPGA教程系列-Vivado Aurora 8B#xff0f;10B IP核设置
Aurora 8B/10B 是 Xilinx 开发的一种轻量级、链路层的高速串行通信协议。它比单纯的 GT#xff08;Transceiver#xff09;收发器更高级#xff08;因为它帮你处理了对齐、绑定、甚至流控#xff09;#xff0c;但…FPGA教程系列-Vivado Aurora 8B10B IP核设置Aurora 8B/10B 是 Xilinx 开发的一种轻量级、链路层的高速串行通信协议。它比单纯的 GTTransceiver收发器更高级因为它帮你处理了对齐、绑定、甚至流控但比以太网或 PCIe 更简单、延迟更低。手册看的脑袋疼还是实操一下看看如何使用吧可能很多部分都是官方写好的不需要自己去弄而实际使用可能就是修改一些参数就行了。1. Physical Layer (物理层设置)这一部分直接决定了底层的硬件连接和电气特性必须严格按照板卡设计和对端设备来配置。Lane Width (Bytes) [通道宽度]2 或 4。决定了用户逻辑接口AXI-Stream的数据位宽也直接影响user_clk的频率。2 BytesAXI 接口位宽为 16-bit。user_clk 线速率 / 20。4 BytesAXI 接口位宽为 32-bit。user_clk 线速率 / 40。如果线速率很高比如 5Gbps建议选 4 字节这样可以让 FPGA 内部逻辑时钟user_clk跑慢一点更容易满足时序。如果是 3.125G 这种中低速选 2 字节即可。Line Rate (Gbps) [线速率]光纤或铜线上实际跑的比特率。取决于 SFP 模块能力、PCB 走线质量以及对端设备的速度。3.125 Gbps是 Aurora 的一个经典速率也是 XAUI 的标准速率。GT Refclk (MHz) [GT 参考时钟]FPGA 外部输入的差分参考时钟频率。必须与你 PCB 板子上连接到 FPGA GT Bank 的那个晶振频率完全一致。如果填错了PLL 锁不住整个核都起不来。INIT clk (MHz) [初始化时钟]用于驱动复位逻辑和初始化状态机的辅助时钟。在上电初始化阶段可以使用该时钟来驱动一些逻辑。默认值50Mhz。通常给 50MHz 到 100MHz 之间的稳定时钟即可。这个时钟对抖动要求不高可以用普通的逻辑时钟。DRP Clk (in MHz) [动态重配置时钟]用于驱动 DRPDynamic Reconfiguration Port接口的时钟允许你在运行时修改 GT 的参数。通常和 INIT clk 共用一个时钟源。动态重配置一般没用默认值50Mhz通常一个内部模块需要进行配置使用两种方法端口控制和配置参数控制。一个常见的应用就是线速率切换。这时候就需要利用DRP端口来调整部分参数的值然后复位GTX使GTX工作在不同的线速率下。。Tip关于时钟上面这三个时钟是IP核工作所需要的时钟也是我们需要提供给IP核的。此外还有一个时钟是IP核提供给我们的user_clk。这个时钟是IP核根据设置的线速率及Lane的位宽计算出来的用户时钟用户需要传输的数据必须是该时钟域下的数据否则会存在亚稳态风险。2. Link Layer (链路层设置)这一部分决定了数据如何打包、如何握手。通信双方TX 和 RX的配置必须完全一致。Dataflow Mode [数据流模式]Duplex (双工)最常用同时收发。TX-only / RX-only (单工)只发或只收。Simplex (单工)类似单工但有特殊的边带信号处理。Interface [用户接口类型] —— ⭐️ 非常重要Framing (帧模式)有“包”的概念。AXI 接口上有tlast信号用来指示一个数据包的结束。发送类似以太网包、命令包等非连续、有边界的数据。Aurora 会自动处理两帧之间的空闲填充。Streaming (流模式)特点像一根水管没有“包”的概念也没有tlast信号。数据源源不断。适用发送 ADC 采样数据、视频流等连续数据。传输效率最高因为没有帧头帧尾的开销。Flow Control [流控]None不使用流控最常用也最简单。UFC (User Flow Control)用户发命令来插队。NFC (Native Flow Control)核心自动根据接收端缓冲区的满/空状态给发送端发暂停信号反压。初学者建议选None。如果你需要防止接收端 FIFO 溢出可以选 NFC。Back Channel [回传通道]Sidebands通常用于单工模式利用额外的 GPIO 线来告诉发送端“我准备好了”。在双工模式下通常不需要太关注这个。Scrambler/Descrambler [加扰/解扰]在发送前把数据打散伪随机化接收后还原。避免数据中出现长时间的连 0 或连 1减少电磁干扰 (EMI)有利于时钟恢复。Little Endian Support [小端序支持]决定多字节数据的传输顺序。Aurora 默认是大端序网络字节序。除非你的处理器是强小端序且你不想在软件里倒腾字节否则保持默认不勾选。小段模式对应[31:0]这种书写习惯大端模式对应的是[0:31]这种书写习惯3. Error Detection (错误检测)CRC [循环冗余校验]在每一帧数据后面自动加一个校验码。如果选了Framing模式建议勾选。这样接收端收到数据时如果发现 CRC 不对会报错保证数据完整性。如果是 Streaming 模式通常不加 CRC。4. Debug and Control (调试与控制)Vivado Lab Tools在 IP 核里自动插入 ILA逻辑分析仪。调试阶段建议勾选。它会把 Aurora 的状态机、lane_up、channel_up 等关键信号抓出来如果不通你能看到卡在哪一步。量产时关掉以节省资源。配置总结 避坑指南时钟计算按照图中的配置3.125 Gbps / 2 Bytes (16 bits) / 10 (8B/10B编码效率) 156.25 MHz。user_clk是 156.25 MHz。所有 AXI 接口逻辑读写 FIFO、状态机都必须在这个时钟频率下工作。两端一致性FPGA A 和 FPGA B 通信它们的 Line Rate、Lane Width、Scrambler、Interface (Framing/Streaming)必须一模一样否则channel_up永远起不来。Refclk 必须准如果板子上的晶振是 156.25MHz这里就必须填 156.25不能填 125。复位顺序Aurora 也是基于 GT 的对复位非常敏感。通常建议使用 IP 核自带的reset_pb (信号) 或者按照官方 Example Design 的复位序列来操作。上电后先gt_reset再reset。第二页如果说上一页 “Core Options” 决定了“我们要传多快、传什么格式”那么这一页则是决定“这套协议要在 FPGA 的哪几根物理引脚上跑”。这是一个纯物理层的配置界面必须结合PCB 原理图和FPGA 芯片手册来设置。1. Lanes (通道数量)Aurora 链路包含几条物理通道。如果需要更高的带宽可以将多条 Lane 绑定在一起Bonding。例如选 4那么带宽就是单条 Lane 的 4 倍且 Aurora 会自动处理通道间的对齐。必须与原理图一致如果你板子上只画了 1 对线连到光模块这里就只能选 1。2. Lane Assignment (通道分配表)这是最容易晕的地方。这个表格代表了 FPGA 内部GT (Gigabit Transceiver)资源的物理位置分布。结构解析左侧列 (GTXQ1, GTXQ2…)代表Quad。Xilinx 的高速收发器是每 4 个一组称为一个 Quad。GTXQ1通常指物理位置最靠下的那个 Quad或者编号最小的。右侧网格代表每个 Quad 里的 4 个具体收发器通道 (Channel 0 - Channel 3)。下拉菜单 (X 或 数字)X表示这个物理通道不被当前的 Aurora 核使用。1, 2, 3…表示将 Aurora 的第几条逻辑通道映射到这个物理位置。如何设置关键步骤打开原理图查看你的 SFP 光口或 SMA 接口连接到了 FPGA 的哪个 Bank哪对引脚例如MGTHTXP_115。查找映射去查 Xilinx 的封装文件Package File或在 Vivado 的 “I/O Planning” 视图里看确定那对引脚属于哪个 Quad 以及该 Quad 里的第几个 Channel例如 X0Y0, X0Y1。在表中勾选找到对应的位置选上编号。注意这里的图形化界面只是一个生成网表的向导。最稳妥的做法是这里大概选对 Quad然后在XDC 约束文件中通过set_property LOC GTXE2_CHANNEL_X0Y0 [get_cells ...]来进行精确的物理约束。3. GT Refclk1 / GT Refclk2 (参考时钟选择)GT 收发器需要一个非常高质量的差分参考时钟MGTREFCLK才能工作。决定 Aurora 核使用板子上的哪一个差分晶振输入作为参考时钟。如何设置看原理图你的 125MHz或 156.25MHz差分晶振连接到了 FPGA 的哪两个引脚例如MGTREFCLK0P_115 /MGTREFCLK0N_115。确认 Quad确定这两个引脚属于哪个 Quad。选择在下拉菜单中选择对应的 Quad。重要规则时钟路由通常建议参考时钟和你的数据通道在同一个 Quad或者在相邻的 QuadNorth/South。如果距离太远时钟抖动会变大Vivado 可能会报错。避坑提示如果你实在搞不清具体的物理坐标X0Y?, X0Y?可以在这里先随便选一个比如都选在 Q1生成 IP。但是在写.xdc 约束文件时必须严格加上package_pin 约束和LOC约束Vivado 会以 XDC 文件为准强行把逻辑“拽”到正确的物理引脚上。如果这里选的和 XDC 冲突太大比如跨了太多 Bank 导致时钟够不着Implementation 阶段会报错。第三页简单来说这一页是在问“在这个 IP 核内部我要不要自带时钟发生器PLL和差分时钟缓冲器IBUFDS”什么是“Shared Logic”在 Xilinx FPGA 的高速收发器GT架构中4 个通道Channel组成一个 Quad。这 4 个通道共享一些公共资源最主要的就是PLL锁相环和参考时钟输入缓冲Diff Refclk Buffer。PLL负责将参考时钟倍频生成高速串行时钟。Buffer负责将板子上的差分时钟引入芯片内部。1. Include Shared Logic in core (包含在核内) ——“我是房东”这个 IP 核会把 PLL、参考时钟缓冲、复位逻辑全部包含在自己肚子里。它是全功能、自给自足的。生成的 IP 核对外接口比较简单直接接板级引脚refclk即可。什么时候选工程里只有一个Aurora 核。或者在一个 Quad 里有多个 Aurora 核这是第一个主核。它负责产生时钟分给别人用。2. Include Shared Logic in example design (包含在示例工程中/核外) ——“我是租客”这个 IP 核内部不包含PLL 和时钟缓冲。它是一个“空壳”或“从核”。它必须依赖外部送进来的 PLL 时钟信号才能工作。生成的 IP 核会多出一堆输入端口如gt_pll_clk、gt_refclk_out等你需要把别的核产生的时钟连进去。为什么叫“在示例工程中”如果你生成了 Example DesignVivado 会把那些公共逻辑PLL等放在 IP 核外面的顶层文件中。这样方便你修改或者将其去驱动其他的 IP 核。什么时候选多核复用当你在同一个 Quad 里放了第 2、3、4 个 Aurora 核时。因为 PLL 只有一个已经被第 1 个核房东占用了剩下的核租客只能借用第 1 个核输出的时钟。高级共享当你有一个以太网核和一个 Aurora 核共用同一个 Quad 的 PLL 时。Core with Shared Logic虚线框是 IP 核的边界。可以看到Shared LogicPLL 等是在虚线框里面的。独立但也独占资源。Example Design虚线框是 IP 核的边界。可以看到Core without Shared Logic 在里面而Shared Logic 被挪到了外面Example Design 层级。特点For users who want to edit…如果你想自己手写 PLL 的复位逻辑选这个。Drive multiple cores…这是最常用的场景。外部的 Shared Logic 产生一次时钟箭头指向Core without Shared Logic也就是当前这个 IP同时还可以引出箭头去驱动其他的 IP 核。场景 A最简单的情况新手推荐情况你的设计里只需要1 个Aurora 接口或者虽然有多个接口但它们分布在完全不同的 Quad 里比如一个在 Bank 115一个在 Bank 117。设置选择Include Shared Logic in core。理由最省事不需要处理复杂的时钟互连开箱即用。场景 B同一个 Quad 里有多个通道情况你的板子上光口是 4 路的QSFP你想跑 4 个独立的 Aurora 单工/双工链路它们都在同一个 Quad 里。设置第 1 个 IP 核选择Include Shared Logic in core。它是 Master负责开启 PLL。第 2、3、4 个 IP 核选择Include Shared Logic in example design。它们是 Slave。连线在顶层 Verilog 中把第 1 个核输出的gt_pll_out等时钟信号连到后面 3 个核的对应输入端口上。场景 C你想完全掌控时钟情况你有非常复杂的时钟需求或者你想在顶层自己实例化IBUFDS_GTE 和GT_COMMON原语。设置选择Include Shared Logic in example design。这样 IP 核就是纯净的数据通路时钟全靠你喂。