microblaze是怎么通过把数据通过axi总线给到ip的

news/2026/1/20 21:36:22/文章来源:https://www.cnblogs.com/xxiaobai/p/19508833

User: microblaze是怎么通过把数据通过axi总线给到ip的
Kimi: MicroBlaze 把数据“送”给 IP 并不是靠一根信号线,而是靠“AXI 总线协议”在地址空间上完成一次标准读写。只要 IP 核在 Vivado 里被挂到同一根 AXI 总线(通常是 AXI4-Lite 或 AXI4),MicroBlaze 就把 IP 当成一段 RAM:写数据就是一次 AXI 写事务,读数据就是一次 AXI 读事务。下面把全过程拆开说明。

  1. 地址映射
    在 Block Design 里,Vivado 会自动给每个 AXI 从设(包括你自定义的 IP)分配一段地址。
    例如 IP 的基地址是 0x44A0_0000,偏移 0x0~0xFFF。
    只要 C 程序里用指针访问这段地址,硬件就会自动翻译成 AXI 事务。

  2. 写数据流程(MicroBlaze → IP)

    1. C 代码里写 *(volatile u32 *)0x44A00000 = 0x12345678;
    2. MicroBlaze 的数据外设接口 M_AXI_DP 在总线上发起一次 AXI4-Lite 写事务:
      – 写地址通道:给出 0x44A00000 和写控制信号 AWVALID;
      – 写数据通道:给出 0x12345678 和 WVALID;
      – IP 收到地址和数据后回 AWREADY/WREADY,并在写响应通道回 BVALID,完成握手。
    3. IP 内部逻辑检测到 WVALID && WREADY,就把数据锁存到寄存器或 FIFO,完成“收到数据”。
  3. 读数据流程(IP → MicroBlaze)

    1. C 代码里 u32 val = *(volatile u32 *)0x44A00004;
    2. M_AXI_DP 发起一次 AXI4-Lite 读事务:
      – 读地址通道:给出 0x44A00004 和 ARVALID;
      – IP 回 ARREADY,并把读数据放到读数据通道 RDATA,同时拉高 RVALID;
    3. MicroBlaze 收到 RVALID && RREADY 后把数据返回给 CPU 寄存器,完成读操作。
  4. 如果数据量很大,可以用 AXI4-FIFO 或 AXI-DMA 做“流式”通道:
    – 把 IP 做成 AXI-Stream 从接口,MicroBlaze 通过 AXI-DMA 配置源地址/长度,启动后 DMA 会把内存块自动拆成连续 AXI-Stream 数据包推给 IP;
    – 反之,IP 产生的数据先进入 AXI-Stream FIFO,DMA 再搬回 DDR,MicroBlaze 只需查询中断或轮询寄存器即可 。

  5. 自己写 IP 时,只要用 Vivado 的“Create AXI Peripheral”模板,把
    – 总线接口选成 AXI4-Lite(寄存器控制)或 AXI-Stream(数据流),
    – 在 slv_reg0/1/2… 里做逻辑,就能直接享受上述读写流程 。

一句话总结:
MicroBlaze 把 IP 当内存,读写寄存器就是一次 AXI 事务;大数据就用 DMA+AXI-Stream,把内存块变成连续数据流自动送进 IP。
User: 硬件怎么把读写变成axi事务?
Kimi: MicroBlaze 核里并没有“先产生一条抽象指令、再翻译成 AXI 包”这一步——
“把读写变成 AXI 事务”这件事,在硬件上就是一次 AXI 主端口(M_AXI_DP)的时序握手本身
下面把“CPU 核 → 总线接口 → 外设”这一路拆开,让你看到“硬件到底在哪一拍把读写变成了 AXI 信号”。


  1. CPU 内核看到的只是“外部总线”
    MicroBlaze 的 LSU(load/store 单元)在执行
    lw r5, 0x44A0_0004(r0)
    时,地址 0x44A0_0004 落在“外设”区域(由 Vivado 里 C_ADDR_SIZE/C_DATA_SIZE 决定)。
    LSU 把“地址 + 字节使能 + 写数据(如果是 store)”送到内核与总线之间的 LMB/AXI 桥(官方叫 IPIF,Interface Protocol Interface)。

  2. IPIF 把“CPU 本地总线时序”直接映射成 AXI 通道
    MicroBlaze 本地总线协议非常简单:
    – 单地址相位
    – 单数据相位
    – 无突发(burst=1)
    – 无缓存/无乱序

    IPIF 里有一个状态机,同一时钟周期就把这些信号转成 AXI 通道:

    CPU 本地                AXI 主端口
    ————————————————————————————————————
    addr = 0x44A0_0004  →  ARADDR
    size = 4 B          →  ARSIZE = 2'b010
    read_req            →  ARVALID
    ……等待从机回 ARREADY 后 →  RREADY
    收到 RVALID         ←  RDATA
    

    写操作同理,只是多了 AWADDR/WDATA/WSTRB 和 B 通道握手。
    注意:这里没有任何“封包”或“协议处理器”——状态机就是并行的寄存器+组合逻辑,一拍一拍地把 CPU 本地握手映射成 AXI 握手。

  3. AXI 交叉开关(Interconnect)只做路由
    Vivado 生成的 AXI Interconnect 根据 ARADDR/AWADDR 的高位把事务路由到对应从机,并做:
    – 单主到多从的解码
    – 时钟域/数据宽度转换(可选)
    – 打拍寄存(可选)
    但它不会修改协议本身,只是把 ARVALID/ARREADY 等信号继续往下游传递。

  4. 从机(你的 IP)收到的是什么?
    就是标准的 AXI 信号线:
    input wire s_axi_arvalid,
    output wire s_axi_arready,
    input wire [31:0] s_axi_araddr,

    你在 IP 里写一个 always 块:

    always @(posedge aclk) beginif (s_axi_arvalid & s_axi_arready) begincase (araddr[7:0])8'h00 : rdata <= reg0;8'h04 : rdata <= reg1;endcaseend
    end
    

    就完成了“CPU 读寄存器”。


一句话总结
“硬件把读写变成 AXI 事务”并不是额外加了一层协议转换芯片,而是——
MicroBlaze 内核的 LSU 一旦访问外设地址,在紧挨着内核的 IPIF 状态机里,同一时钟周期就把 CPU 本地总线请求直接映射成 AXI 通道握手信号;后续所有模块(Interconnect、IP)都只是在这条 AXI 信号链路上继续握手而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1190872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强烈安利8个AI论文软件,本科生搞定毕业论文!

强烈安利8个AI论文软件&#xff0c;本科生搞定毕业论文&#xff01; AI 工具让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的本科生开始借助 AI 工具来辅助完成毕业论文。这些工具不仅能够帮助学生高效地完成内容创作&#xff0c;还能在降低 AIGC 率、保持语义通顺…

强烈安利8个AI论文软件,本科生搞定毕业论文!

强烈安利8个AI论文软件&#xff0c;本科生搞定毕业论文&#xff01; AI 工具让论文写作不再难 在当前的学术环境中&#xff0c;越来越多的本科生开始借助 AI 工具来辅助完成毕业论文。这些工具不仅能够帮助学生高效地完成内容创作&#xff0c;还能在降低 AIGC 率、保持语义通顺…

solaris vlan网卡设置

首先,查看当前机器的网卡信息: if config -a ls /etc/hostname* 确认当前机器有几块网卡?网卡名? 哪些网卡已经设置了 vlan子网卡。方式一,通过配置文件设置 假如在 e1000g3 网卡上,添加 vlan.107 子网卡,…

第 470 场周赛Q2——3702. 按位异或非零的最长子序列

题目链接&#xff1a;3702. 按位异或非零的最长子序列&#xff08;中等&#xff09; 算法原理&#xff1a; 解法&#xff1a;枚举 2ms击败95.80% 时间复杂度O(N) 先把数组中所有数全部异或在一起&#xff0c;如果异或结果不为零&#xff0c;就直接返回数组长度&#xff0c;如果…

文字标注旋转角度设置(防止文字倒立)

对CAD中曲线进行文字标记时&#xff0c;当文字角度必须随曲线角度时&#xff0c;为避免字头朝下&#xff0c;可采用如下方式ang ang % Math.PI;while (ang < 0) { ang Math.PI; }// 确保文字不会倒立&#xff08;阅读方向从左到右&#xff09;while (ang > Math.PI / 2…

换根 DP 简介

​【换根 DP 简介】● 换根 DP 是树形 DP 的一种重要技术,用于解决需要以树中‌不同节点为根‌分别计算答案的问题。其核心思想是在一次动态规划后,通过‌推导出换根时的状态转移公式‌,高效地计算出所有节点作为根…

文字标注旋转角度设置(防止文字倒立)

对CAD中曲线进行文字标记时&#xff0c;当文字角度必须随曲线角度时&#xff0c;为避免字头朝下&#xff0c;可采用如下方式ang ang % Math.PI;while (ang < 0) { ang Math.PI; }// 确保文字不会倒立&#xff08;阅读方向从左到右&#xff09;while (ang > Math.PI / 2…

【毕业设计】基于机器学习的网络购物平台的智能推荐(源码+文档+远程调试,全bao定制等)

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

储能辅助电力系统调峰的容量需求研究 Matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。&#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿真咨询内容私信。&#x1f447; 关注我…

咋的,寒假 1 个月学门黑客技术,难道很难吗?

前言 先介绍一下我自己吧&#xff0c;我是一名从事网络安全行业近十年的白帽黑客&#xff0c;在奇安信做了6年的安全研发员&#xff0c;期间大大小小的Hvv也参加了数次&#xff0c;都取得了不错的成绩。本文我就以亲身经验为锚&#xff0c;给那些有着一个黑客梦的小伙伴撰写一份…

【Matlab】 CRC-8 计算数组Checknum

function crc crc8(data) % data: uint8 数组 poly uint8(hex2dec(07)); % 多项式 crc uint8(0); % 初始值for byte datacrc bitxor(crc, byte); % 与输入异或for i 1:8if bitand(crc, 128) % 检查最高位crc bitxor(bitshift(crc, 1), poly);elsecrc bitshift(crc, 1);…

拒绝“数据搬运工”:PostgreSQL 存储过程与函数实战指南

后端兄弟别当搬运工!10行代码省下50%网络开销 快停手,你的 Java/Python 代码正在“谋杀”数据库! 实测数据显示,同样的批量处理逻辑,放在应用层跑比原生数据库慢了整整 10 倍。 连 Stack Overflow 上的高赞回答都直言:“把逻辑离数据近一点,是高性能架构的第一铁律。” …

2026年评价高的镀锌桥架,模压桥架,北方电缆桥架厂家行业优质推荐 - 品牌鉴赏师

引言在现代基础设施建设中,电缆桥架作为电缆敷设的重要支撑和保护装置,其质量和性能直接关系到电力系统的安全稳定运行。为了帮助广大用户在众多电缆桥架厂家中挑选出最优质、最适合的合作伙伴,我们依据一系列科学、…

吐血推荐!本科生AI论文平台TOP10:开题报告文献综述全搞定

吐血推荐&#xff01;本科生AI论文平台TOP10&#xff1a;开题报告文献综述全搞定 2026年本科生AI论文平台测评&#xff1a;为什么你需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具辅助论文写作。然而&#xff0c;面对市场上五…

开源版 Claude Code 杀疯了,怒斩 70k+ Star!!

大家好,我是R哥。 前段时间分享了《2026 AI编程终极套装:Claude Code + Codex + Gemini CLI + Antigravity,四位一体实战指南!!》,还没来得及学习? 别急,2026 年 AI 编程工具又要变天了。。 最近一款号称开源版…

Jetbrains全家桶自动破解

1.下载需要的pycharm与idea等 打开网站查看破解命令 https://liyangxu1.github.io/keyrun/ 2.打开powershell 3.输入: 对应的命令 一路回车即可 Linux: Mac:

UVM-build_phase/run_phase的执行顺序及仿真调度

build_phase build_phase的执行顺序在整个层次上看遵循从上到下,但在一个组件内中的build_phase是顺序顺序执行。create的本质就是创建对象,本质是调用new函数。所以在build_phase中呈现的顺序会出现跳转现象。当在build_phase中执行到create函数时,它会去执行所要创建的组件…

AL_ControlRes代码中文注释

///////////////////////////////////////////////////////////////////////////////////////// /*** \brief 应用程序控制响应函数 (Application Control Response)。* \details 此函数由协议栈周期性地调用&#xff0c;用于处理由应用程序触发的、需要异步完成的状态转换…

Makefile中 =、:=和 ?=的使用方法

理解Makefile中 、:和 ?这三个赋值操作符的区别&#xff0c;对编写可靠高效的构建脚本至关重要。下面这个表格能帮你快速把握它们的核心差异。特性(递归扩展赋值):(简单扩展赋值)?(条件赋值)赋值时机​变量被使用&#xff08;引用&#xff09;时才展开求值变量定义时就立即展…

2026.1.10 作业 - # P14063 [PO Final 2022] 海滩 / Badstrand

2026.1.10 作业 - # P14063 [PO Final 2022] 海滩 / Badstrand题目描述 Maja 厌倦了海岸被大湖占据,她想要修建一个又长又漂亮的公用海滩。现在,她计划买下海岸边的一块土地来建造海滩。 Maja 预算为 \(B\) 克朗。有…