AMD/Xilinx 生态中的块级控制协议(Block-Level Control Protocol),以cmac 为例
ap_ctrl_none是 AMD/Xilinx Vitis/Vivado HLS 生态中的块级控制协议Block-Level Control Protocol表示该硬件模块为**“自由运行”Free-Running**模式——一旦 FPGA 加载完成模块即刻自主运转无需 Host CPU 通过ap_start/ap_done等握手信号来逐次调度。一、三种块级控制协议对比在 Vitis HLS 或 RTL Kernel 中块级协议决定整个 IP 核的执行生命周期何时启动、何时算完成、何时空闲与端口级的 AXI4-Stream/AXI4-Lite 等数据接口是不同层面的概念 协议控制信号执行模式典型场景ap_ctrl_hsap_start,ap_done,ap_idle,ap_ready控制驱动单次执行Host 发令 → 核执行 → 核报告完成传统加速器如 FFT、矩阵乘ap_ctrl_chain上述信号 ap_continue控制驱动支持流水线级联下游可反压上游多核链式数据流ap_ctrl_none无握手信号或被优化为高电平常有效数据驱动持续运行网络包转发、视频流、自由运行 RTL Kernel二、ap_ctrl_none 的核心语义1. 无生命周期握手模块不暴露ap_start/ap_done/ap_idle/ap_ready给 Host。对 Host 软件XRT/OpenCL而言无法通过clEnqueueTask来启动一次任务也无法查询这次任务是否做完 。2. 数据驱动Data-Driven模块的运行节奏完全由数据流可用性决定输入端口如S_AXIS有数据 → 模块处理输入为空 → 模块自动阻塞stall等待输出端口如M_AXIS被下游反压 → 模块自动挂起。这相当于硬件层面的while(1)循环 。3. 上电即运行在 RTL Kernel 语境下一旦xclbin加载到 FPGAap_ctrl_none的内核立即开始工作不需要 Host 下发启动命令 。三、为什么 CMAC Kernel 使用 ap_ctrl_none结合 CMAC Kernel 文档该设计选择ap_ctrl_none的原因非常明确设计特征与 ap_ctrl_none 的契合点网络子系统100G 以太网 MAC/PCS 是持续收发的流水线没有一次任务的概念AXIS 数据流通过S_AXIS/M_AXIS与上下游交互天然适合数据驱动控制与数据分离数据面512-bit AXIS持续跑控制面AXI4-Lite 寄存器旁路配置互不影响无需 Host 调度Host 不需要说发一个包——包来了硬件自动处理换句话说CMAC 是一个**“永远在线的 I/O 引擎**而非被 Host 反复调用的函数”。四、使用 ap_ctrl_none 的约束与注意事项根据 AMD 官方文档采用该协议需满足特定条件否则 C/RTL 协同仿真会报错 必须是流式/流水线设计接口推荐使用hls::stream或axis避免使用m_axi内存映射作为数据主通路不能有循环内的 dataflow 区域ap_ctrl_none区域若嵌套在for循环内部会导致父级 FSM 永远等不到ap_done而死锁父级模块也需为 ap_ctrl_none若上层还有非自由运行模块等待该核的完成信号系统会挂起AXI4-Lite 仍可用虽然数据面无控制握手但寄存器配置接口S_AXILITE仍可独立存在用于状态查询和参数配置。五、总结ap_ctrl_none拉闸即运转数据来则动数据尽则停Host 不干预生命周期。对 CMAC 这类 100G 网络硬核而言它是自由运行内核的标准签名确保网卡从 FPGA 加载完成后即刻进入线速转发状态无需 CPU 逐包调度。六、cmac 概述CMAC 内核本文档提供 cmac 内核的概述。cmac 内核cmac内核是一个 RTL 自由运行内核它封装了 UltraScale 集成 100G 以太网子系统。该内核使用ap_ctrl_none作为硬件控制协议。该内核根据传递给 make 的INTERFACE、DEVICE和PADDING_MODE参数进行配置。它向用户逻辑暴露两个 512 位 AXI4-Stream 接口S_AXIS 和 M_AXIS这些接口以内核相同的频率运行内核内部集成了 CDC时钟域跨越逻辑用于将内核时钟转换为 100G 以太网子系统时钟。它还提供一个 AXI4-Lite 接口用于查看 UltraScale 集成 100G 以太网子系统的寄存器映射。UltraScale 集成 100G 以太网子系统100G 以太网子系统提供了一个集成的 100 千兆比特每秒Gbps以太网媒体访问控制器MAC、物理编码子层PCS、IEEE 802.3bj 里德-所罗门前向纠错RS-FEC以及 100GE 自动协商/链路训练AN/LTIP以支持 KR4、CR4、SR4、CWDM4、PSM4 或 ER4f 等高性能应用方案。注意自动协商/链路训练在此内核中未启用。cmac_sync该 IP 实现了 PG203 中描述的内核启动序列。frame_padding该 IP 实现可选的帧填充至 60 或 64 字节。填充模式在编译时通过PADDING_MODE参数设置具体如下模式0表示不填充模式1默认填充至 60 字节模式2填充至 64 字节。时钟域跨越UltraScale 集成 100G 以太网子系统中的 Rx 和 Tx AXI4-Stream 接口工作在 322.265625 MHz。为了适应设计中其余部分的不同频率在 Tx 路径acc_kernel_tx_cdc 和 fifo_cmac_tx和 Rx 路径fifo_cmac_rx_cdc中均包含了跨时钟域逻辑。寄存器映射UltraScale 集成 100G 以太网子系统的寄存器映射详见 PG203可通过 AXI4-Lite 接口访问。其中许多寄存器已通过 template.xml 文件方便地映射为内核参数。如果您希望访问未映射的寄存器可以使用 pynq MMIO 的读写方法。例如# 读取 CONFIGURATION_AN_ABILITY 寄存器cmac.read(0xA8)# 在 CONFIGURATION_AN_ABILITY 寄存器中设置 ctl_an_ability_1000base_kxcmac.write(0xA8,0x1)您也可以修改 template.xml 文件以添加更多寄存器。修改此文件时需谨慎确保 id 正确更改。一旦修改了 template.xml 文件您必须重新构建设计以便将这些更改包含到 xclbin 中。修改 template.xml 后请删除此文件夹中的所有 *.xo 文件。接口名称描述ap_clk主时钟ap_rst_n主低电平复位clk_gt_freerun自由运行内核时钟gt_ref_clkGT 参考时钟gt_serial_portGT 串行通道S_AXILITEAXI4-Lite 从属控制接口S_AXIS512 位 AXI4-Stream 发送接口M_AXIS512 位 AXI4-Stream 接收接口多路 100 GbE 接口与 Alveo 卡为了支持多路 100 GbE 接口和 Alveo 卡会生成略有不同的内核其内部结构和接口保持不变。但 UltraScale 集成 100G 以太网子系统的配置会根据每个接口和 Alveo 卡进行调整。这些配置详见 此处。许可证要生成使用 UltraScale 集成 100G 以太网子系统 的 xclbin 文件您需要有效的许可证。您可以按照这些步骤生成免费许可证。注意要启用自动协商/链路训练您需要单独的许可证。更多信息请参阅相关文档。修改 RS-FECRS-FEC 在 CMAC 实例中默认启用。在运行时RS-FEC 默认处于关闭状态可以通过调用 Pynq 和 C 驱动程序中的相应函数来激活。激活后RS-FEC 设置为子模式 1纠错和指示均启用。更多详情请参阅 UltraScale 集成 100G 以太网子系统 文档。注意RS-FEC 激活后会增加延迟。Copyright© 2022 Xilinx

相关新闻

Spring Data JDBC实战:轻量级ORM框架的优势与应用

Spring Data JDBC实战:轻量级ORM框架的优势与应用

1. Spring Data JDBC 的定位与核心价值Spring Data JDBC 是 Spring 生态中一个经常被低估的持久层框架。与大家熟知的 JPA/Hibernate 不同,它采用了一种更接近 SQL 的轻量级 ORM 方式。我在多个生产项目中实际使用后发现,当你的业务场景符合以下特征时&a…

2026/9/28 22:01:59 阅读更多 →
基于OpenCV与STM32的视觉伺服系统:从图像处理到电机控制全流程解析

基于OpenCV与STM32的视觉伺服系统:从图像处理到电机控制全流程解析

1. 项目概述:一次从零到一的视觉控制实战去年带队参加电赛,E题那个视觉识别与控制结合的题目,相信让不少队伍都印象深刻。题目要求很明确:通过摄像头识别特定目标,然后驱动机械结构(通常是步进电机带动的云…

2026/10/11 22:47:48 阅读更多 →
谁说想看电脑网速和硬件状态,非得打开任务管理器那么麻烦?今天这个宝贝直接让你的任务栏活过来。

谁说想看电脑网速和硬件状态,非得打开任务管理器那么麻烦?今天这个宝贝直接让你的任务栏活过来。

谁说想看电脑网速和硬件状态,非得打开任务管理器那么麻烦?今天这个宝贝直接让你的任务栏活过来。Traffic Monitor 是个啥它就是 Traffic Monitor,一款能在任务栏实时显示网速、CPU 内存占用的小插件。不用的时候,它安安静静待在角…

2026/10/5 9:56:30 阅读更多 →

最新新闻

DeepSeek AI接入企业微信:从API到聊天机器人的完整实现指南

DeepSeek AI接入企业微信:从API到聊天机器人的完整实现指南

简介:这是一套将DeepSeek大模型接入微信聊天的完整工程实现,适合具备基础Python技能、希望为个人微信账号提供智能对话能力的开发者。项目从模型加载、消息收发到前端交互均有配套代码,支持文本对话、Web界面操作,并附带文档上传与…

2026/10/12 17:53:21 阅读更多 →
Python数据分析实战:双十一美妆销售数据清洗与可视化

Python数据分析实战:双十一美妆销售数据清洗与可视化

简介:这份Python示例源码面向数据分析初学者与高校学生,以天猫双十一美妆销售数据为对象,演示从数据清洗、转换到可视化呈现的完整分析流程,适合用作课程大作业或数据分析入门练手项目。压缩包共17个文件、约5.08MB,包…

2026/10/12 17:53:21 阅读更多 →
汽车零件机器视觉检测:OpenCV工业落地实操指南

汽车零件机器视觉检测:OpenCV工业落地实操指南

简介:本资源是一篇发表于《汽车工艺与材料》2023年第7期的工程应用型技术论文,面向汽车制造企业工程师、智能制造方向研究人员及高校自动化/车辆工程专业师生,聚焦多车型混线生产中零件错装、漏装等质量管控难题。论文提出并实现了基于YOLOv5…

2026/10/12 17:53:21 阅读更多 →
药源网Scrapy爬虫实战:10万药品数据采集与跨源校验

药源网Scrapy爬虫实战:10万药品数据采集与跨源校验

简介:本资源是一套基于Python开发的药品数据采集与建库系统,面向计算机、电子信息及生物信息相关专业学生与初阶开发者,解决药品结构化数据获取难、数据库建设门槛高的实际问题。压缩包共51个文件,含23个核心Python脚本&#xff0…

2026/10/12 17:53:21 阅读更多 →
Python旅游推荐数据分析可视化:从数据清洗到协同过滤全流程实战

Python旅游推荐数据分析可视化:从数据清洗到协同过滤全流程实战

简介:这是一套基于Python、Django与MySQL的旅游推荐数据分析可视化项目,专为计算机相关专业毕业设计、课程设计及期末大作业设计,同时适合需要项目实战的Python学习者。项目内置协同过滤推荐算法,实现用户登录注册、个人信息管理、…

2026/10/12 17:53:21 阅读更多 →
Qt JSON实战指南:解析、序列化与避坑要点

Qt JSON实战指南:解析、序列化与避坑要点

很多刚接触Qt的开发者会在Json选型上纠结:到底用自带的QJsonDocument,还是引入第三方Json库。我的建议很简单——如果项目本身就是Qt技术栈,自带的Json支持完全够用,而且从Qt 5到Qt 6,这套API一直稳定保留。这篇文章不…

2026/10/12 17:52:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →