FPGA光通信2——Aurora 64B/66B的开发使用

FPGA光通信2——Aurora 64B/66B的开发使用

可参考GZH:小蘇的FPGA

        FPGA光通信的开发过程中,最简便的方式为Aurora 64B66B,开发人员无需关注2bit同步头,加解扰等过程,开放给开发人员的主要是AXI-Stream用户数据接口。

        Aurora是一款可扩展的轻量级、高数据速率链路层高速串行通信协议,支持全双工或单工,支持64B/66B,8B/10B编码。

一、Aurora 64B/66B使用介绍

        该核的使用架构主要如下:借助xilinx 核,开发人员可根据用户接口实现多通道间的光通信。最大支持16lane。

1.1 、IP核的介绍

        参考PG074, 该核的内部结构如下:

        其中,Lane logic:每个GT收发器由一个lane逻辑模块实例驱动,初始化每个收发器,处理控制字符的编解码,并执行错误检测。

        Global logic: 全局逻辑模块执行通道绑定以进行通道初始化。在运行过程中,该通道跟踪Aurora 64B/66B协议定义的Not Ready空闲字符,并监控所有通道逻辑模块的错误。

        RX user interface: AXI4-Stream接收用户数据从通道移动到应用程序,并执行流控制功能。

        TX user interface: AXI4-Stream发送用户数据从应用程序移动到通道,并执行TX的流量控制功能。

1.1.1、接口

        IP核如下(不同版本界面有差异,但含义相同):

        主要的接口信息如下,具体含义可查看PG074。

        用户数据接口:USER_DATA_S_AXIS_TX(数据发送)、USER_DATA_M_AXIS_RX(数据接收)

        GT BANK管脚:GT_SERIAL_RX、GT_SERIAL_TX、REFCLK

        控制接口:CORE_CONTROL(回环模式等)

        控制接口:CORE_STATUS

        重配置端口:GT_DRP(比如动态切换线速率场景)

        剩下的为复位、时钟接口:

        INIT_CLK:初始化时钟,来源不同于GT BANK;

        USER_CLK/SYNC_CLK:用户时钟,LineRate × LaneNum x (64/66)/LaneWide,其中USER_CLK为用户收发数据时钟;

        pma_init和reset_pb:复位信号,后文介绍。

       时钟关系如下:

1.1.2 、复位

        复位接口为pma_init和reset_pb,高电平复位释放前要求INIT_CLK和REFCLK保持稳定;先释放pma_init(gt_reset),后释放reset_pb(reset),reset_pb的释放同步于USER_CLK,pma_init复位信号同步于INIT_CLK。

        pma_init的复位会重置收发器的所有物理编码子层(PCS)和物理介质附件(PMA)子组件,即会先复位高速收发器,后复位内核逻辑。而reset_pb只会复位内核逻辑,不会复位底层的高速收发器。先释放pma_init,后释放reset_pb。

        不同模式下,复位时序不一样,本文只介绍双工模式的复位时序:上电阶段复位、其他复位。

        双工模式下的正常复位时序如上图所示,先把reset_pb拉高128个时钟周期,然后再拉高pma_init一段时间。之后先拉低pma_init,最后拉低Reset_pb信号。

        如下图所示:双工模式下reset_pb拉高的最短时间为128个user_clk周期。经过一段时间后,channel_up被拉低,表示传输通道建立失效。

        

        如下图所示:双工模式下的pma_init(gt_reset)复位时序,pma_init至少拉高128个init_clk周期。经过一些时钟周期后,user_clk会暂停产生时钟(因为user_clk的时钟来源是GT收发器txoutclk,pma_init复位从底层的物理层复位)。随后拉低channel_up信号,表示传输通道建立失效。

1.1.3 、初始化

        初始化过程如下:

        Lane up表示通道中的哪些通道已完成通道初始化。仅当所有通道和内部逻辑完成整个初始化过程后,channel_up才会被拉高。Aurora 64B/66B内核可以在Channel_up拉高之前接收数据,但Channel_up拉高之前不能发送数据,可把Channel_up取反用作全双工模式下发送端的复位信号。

1.1.4 、控制及状态接口

        loopback:      回环模式,实际使用一般接到0;

        000:normal;001: Near-end PCS Loopback;010: Near-end PMA Loopback;100: Far-end PMA Loopback;110: Far-end PCS Loopback

        power down: 高电平有效。当其为高时,GT会进入非工作、低功耗的模式。使用的时一般直接拉低。

        pll_not_locked 接 ~pll_locked ;

        lane_up:        "1”状态指示各通道初始化成功,每位代表一个通道

        channel_up:  “ 1”状态指示通道初始化完成,通道已准备好进行数据传输

        hard_err:       主要是硬件类错误

        soft_err:        主要是软件类错误

        frame_err:     当前通道帧协议错误

1.1.5 、数据接口

        该核支持两类数据接口:

        Framing接口:在AXI4-Stream的基础上IP核自动加入帧头、帧尾,并在固定时间内完成时钟补偿,但是会降低传输效率和使用较多资源。

        Streaming接口:简化的AXI4-Stream接口,只有数据有效、握手和数据信号,此种方式传输效率高,但无法保证传输的准确性。

           本文只介绍Frame类型接口,即用户接口类型为AXIS模式。由于64B/66编码,aurora的设计上在发送端需要ready信号握手。发送端用户只需要在发送、接收双方完成握手后,即可发送数据,通信双方均可通过握手信号来反压对方;接收端用户仅需要在valid信号有效时从总线上拿数据即可

        当s_axi_tx_tready反压与s_axi_tx_tvalid握手成功后,即可发送数据,使用s_axi_tx_tlast来表示当前发送最后一个数据,s_axi_tx_tkeep来表示最后一个数据的有效字节。

        接收数据:当m_axi_rx_tvalid为高时,接收的数据是有效数据,可以拿来用了,m_axi_rx_tkeep与m_axi_rx_tlast的用法与发送端对应的信号一致。

1.2 IP核配置

        根据本人开发板原理图配置如下:

    GT Refclk :GT参考时钟,板子时钟为156.25Mhz

    Lane Rate : 以10.3125Gbps作为测试

    INIT clk    :初始化时钟,根据工程自行选择设计

    GT位置及lane数目:根据板子原理图设计

    Dataflow Mode:选择全双工

    Interface:Framing类型

    流控:不使用

        little Ednian support:小端数据(小端:[15:0] 大端:[0:15])

        动态重配置接口类型

        Debug信号

        CRC功能

        Shared Logic:设置IP的逻辑放置的位置,如果GT REFCLK没被别的serdes使用,两种模式都行,否则建议In example design模式。

         In core:在IP核内:support、复位、时钟等逻辑包含在ip内

         In example design:在例子中,support、复位、时钟等逻辑都在ip外

1.3 参考例子

        主要参考support、复位、时钟的使用。

        support模块:包含了对时钟、复位、IP等的例化处理等一系列操作;在应用中此部分可不需要修改。

        frame_gen数据生成模块,采用LFSR的方式生成伪随机序列;在实际工程中替换为自己的数据模块即可。

        frame_check数据检验模块,对接收的数据进行检验以验证传输的正确性;在实际工程中替换为自己的数据模块即可。

二、工程设计、测试

2.1 、工程设计

        按照上述配置的上进行设计,收发数据流程为,当Channel_up拉高后,可通过VIO使能控制data_test_module测试数据模块产生测试数据。

        data_test_module:当FIFO非空时写入递增数据,根据AXIS接口的ready反压信号读FIFO到Aurora IP核。

2.2 、仿真测试

        对上述工程进行自回环收发仿真测试:

        初始化及收发过程:

        复位关系、状态信号:

        发数据:ready和valid

        收数据主要关注data、valid、last、keep等信号。

2.3 、上板测试

        通过VIO使能控制data_test_module测试数据模块产生测试数据。

        接收到的数据:与发送数据一一对应。

三 、 总结

        有需要代码的请私聊。

可参考GZH:小蘇的FPGA

FPGA实现Aurora光通信应用(8B/10B)

UltraScale/+ FPGA实现万兆网的两种方式:GT核、10G Ethernet Subsystem核

FPGA实现100G UDP通信

FPGA 40G/50G Ethernet Subsystem核的使用

FPGA实现千兆网UDP协议(含ARP、ICMP)

JESD204B的使用系列——3、DAC的应用(AD9164 9.6GSPS)

JESD204B的使用系列——2、协议及ADC的应用(AD9689)

JESD 204B的使用系列—1、时钟芯片的应用

FPGA外挂存储器应用3——NVMe协议 M.2硬盘的读写功能测试

Read more

IDEA 插件 Trae AI 全攻略

在 Java 开发的日常中,你是否经常遇到这些场景:     面对重复的 CRUD 代码,机械敲击键盘却内心抗拒?     接手 legacy 系统,看着几百行的复杂逻辑无从下手?     调试时卡在某个异常,翻遍文档和 Stack Overflow 却找不到答案?     写单元测试时,明明功能简单却要耗费大量时间设计测试用例? 这些问题的核心,在于重复性工作占用了太多创造性时间。而随着 AI 技术的发展,AI 辅助开发工具已成为突破效率瓶颈的关键。在众多工具中,Trae AI作为 IDEA 的一款插件,凭借对 Java 生态的深度适配、与 IDE 的无缝集成以及强大的代码理解能力,逐渐成为开发者的 “编码搭子”。 本文将从基础到进阶,全面讲解 Trae AI 的功能、用法、实战技巧和最佳实践,帮你彻底释放 AI 辅助开发的潜力,让编码效率提升

VSCode配置 AI agent skills 详细步骤

VSCode配置 AI agent skills 详细步骤

在VS Code中配置“Agent Skills”,是为你的AI编程助手(如GitHub Copilot)定制可复用的专业能力包。你可以把它理解为教你助手如何执行特定任务的标准说明书 它主要由一个 SKILL.md 文件以及相关的脚本、示例组成。当你的需求与某个技能描述匹配时,Copilot会自动加载这个“技能包”来更精准地帮你完成任务,比如创建测试、调试工作流等 启用功能 技能创建位置 在项目根目录或个人配置文件夹中,创建一个特定的文件夹来存放你的技能包 * 项目技能:在项目根目录创建 .github/skills/ 目录。就会作用于项目 * 个人技能:在你电脑用户目录下创建 ~/.copilot/skills/(推荐)或 ~/.claude/skills/。作用于你电脑里所有的项目 技能编写规范 my-skill/ (技能文件夹) ├── SKILL.md # 必需:核心入口文件,包含元数据和主要指令 ‼️‼️‼️ ├── references/ 或 resources/

AI调参技巧:贝叶斯优化Optuna

AI调参技巧:贝叶斯优化Optuna

AI调参技巧:贝叶斯优化Optuna 📝 本章学习目标:本章聚焦性能优化,帮助读者提升模型效率。通过本章学习,你将全面掌握"AI调参技巧:贝叶斯优化Optuna"这一核心主题。 一、引言:为什么这个话题如此重要 在人工智能快速发展的今天,AI调参技巧:贝叶斯优化Optuna已经成为每个AI从业者必须掌握的核心技能。Python作为AI开发的主流语言,其丰富的生态系统和简洁的语法使其成为机器学习和深度学习的首选工具。 1.1 背景与意义 💡 核心认知:Python在AI领域的统治地位并非偶然。其简洁的语法、丰富的库生态、活跃的社区支持,使其成为AI开发的不二之选。掌握Python AI技术栈,是进入AI行业的必经之路。 从NumPy的高效数组运算,到TensorFlow和PyTorch的深度学习框架,Python已经构建了完整的AI开发生态。据统计,超过90%的AI项目使用Python作为主要开发语言,AI岗位的招聘要求中Python几乎是标配。 1.2 本章结构概览 为了帮助读者系统性地掌握本章内容,我将从以下几个维度展开: 📊 概念解析 → 原理推导 → 代

黄仁勋力荐:OpenClaw不止是下一个ChatGPT,更是AI“动手时代”的破局者

黄仁勋力荐:OpenClaw不止是下一个ChatGPT,更是AI“动手时代”的破局者

在2026年GTC大会上,英伟达创始人兼CEO黄仁勋抛出了一个振聋发聩的判断:“OpenClaw绝对是下一个ChatGPT”。 这一评价并非夸大其词,而是精准点出了AI产业的核心演进方向——从“被动回答”的语言交互,转向“主动行动”的任务执行。ChatGPT开启了大语言模型(LLM)的普及时代,让AI具备了理解和生成人类语言的能力,但它始终停留在“军师”的角色,只能提供方案建议;而OpenClaw的出现,彻底打破了这一局限,将AI变成了能动手干活的“数字员工”,完成了AI从“认知”到“执行”的关键跃迁,成为连接AI能力与现实场景的核心桥梁。 下面我将从技术本质出发,拆解OpenClaw的核心架构、关键技术实现,结合代码示例、架构图与流程图,深入解析其如何实现“行动型AI”的突破,以及为何能被黄仁勋寄予厚望,成为AI产业的下一个里程碑。 一、认知跃迁:从“回答型AI”到“行动型AI”的本质区别 要理解OpenClaw的价值,首先需要明确它与ChatGPT这类“回答型AI”的核心差异。