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/7/31 5:19:54阅读更多 →
基于OpenCV与STM32的视觉伺服系统:从图像处理到电机控制全流程解析

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

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

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

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

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

2026/7/31 5:19:54阅读更多 →
Elasticsearch单节点生产级部署:从系统调优到故障排查全指南

Elasticsearch单节点生产级部署:从系统调优到故障排查全指南

1. 项目概述:为什么Elasticsearch的安装部署是数据工程的第一道坎如果你刚接触搜索、日志分析或者任何需要处理海量非结构化数据的项目,Elasticsearch(简称ES)大概率是你绕不开的一个名字。它不仅仅是一个搜索引擎,更是…

2026/7/31 6:26:18阅读更多 →
2026年盘点:寻找真正靠谱的七家解码矩阵供应商完整指南

2026年盘点:寻找真正靠谱的七家解码矩阵供应商完整指南

走进任何一个现代指挥中心、监控大厅甚至企业展厅,你都能看到多块屏幕拼接成的巨大画面。支撑这些画面流畅切换、信号稳定解码的核心,正是默默工作的解码矩阵设备。随着“智慧城市”、“数字孪生”建设的深入,解码矩阵市场迎来了爆发式增长&a…

2026/7/31 6:26:18阅读更多 →
H3C防火墙主备HA配置实战:VRRP与状态同步实现高可用

H3C防火墙主备HA配置实战:VRRP与状态同步实现高可用

1. 项目概述:为什么防火墙需要HA?在任何一个对网络连续性有要求的场景里,单点故障都是悬在运维人员头上的达摩克利斯之剑。防火墙作为网络边界的关键节点,一旦宕机,轻则业务中断,重则安全防线洞开。我见过太…

2026/7/31 6:26:18阅读更多 →
Ryujinx:免费开源Switch模拟器的终极使用指南

Ryujinx:免费开源Switch模拟器的终极使用指南

Ryujinx:免费开源Switch模拟器的终极使用指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上畅玩《塞尔达传说:王国之泪》的史诗冒险,或…

2026/7/31 6:26:18阅读更多 →
小米平板1刷机遇E1001 Error 7与Error 255的深度解析与解决方案

小米平板1刷机遇E1001 Error 7与Error 255的深度解析与解决方案

1. 项目概述:当小米平板1的刷机之路遭遇“拦路虎”手里这台小米平板1,算得上是古董级的设备了,但很多朋友还是舍不得扔,想通过刷入新的ROM来让它焕发第二春,或者解决一些老系统的卡顿问题。然而,这条“重生…

2026/7/31 6:26:18阅读更多 →
Java Stream流:从集合操作到声明式编程的核心原理与实战避坑指南

Java Stream流:从集合操作到声明式编程的核心原理与实战避坑指南

1. 从集合操作到声明式编程:为什么我们需要Stream流?如果你写过几年Java,处理集合数据时,大概率经历过这样的场景:拿到一个用户列表,需要过滤出活跃用户,然后按年龄排序,最后提取出他…

2026/7/31 6:24:18阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/31 0:49:33阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/31 5:08:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →