这里记录一下我个人对AXI4主从模块的理解(这些理解主要来自阅读 Xilinx AXI_FULL_M_module 源码)
先只考虑读请求:
以取指模块和内存模块为例,取指模块是发出请求的模块,因此为 Master,属于AXI4MasterModule;内存模块是响应请求的模块,因此为 Slave,属于AXI4SlaveModule
相关的通道有两个:
1. Read Address Channel
2. Read Data Channel
主模块中,读地址通道中的核心信号包括:
读地址(主模块 -> 从模块)
读地址有效(主模块 -> 从模块)
读地址准备(从模块 -> 主模块)
它们的工作模式如下:
======================= 1. 读地址有效(主模块 -> 从模块):========================
每一个时钟上升沿,做一次下面的判断
情况1:当全局重置信号有效时,arvalid <= 0 --------------- 很好理解,不需要解释
情况2:如果当前 arvalid寄存器为无效,且 “start_single_burst_read” 信号为有效,则置 arvalid <= 1 ----------------------- 即,在当前时钟上升沿过后,arvalid = 1,相当于告诉从模块这个周期的读地址信号是有效的,要从模块(内存模块)返回存放在这个周期的读地址的数据
情况3:如果相连的从模块的 ARREADY(读地址准备)信号为高,且当前 arvalid 寄存器为有效(),则置 arvalid <= 0 (原因) ---------- 如果从模块的 ARREADY 信号为高,说明已经随时准备好接收读地址请求。那么,可以抱有信心,(当前周期 arvalid 有效)当前周期的 araddr 会在这个时钟上升沿之后被 从模块 顺利接收,所以 arvalid 可以在这个时钟上升沿之后置为0
情况4:其它时候,arvalid 保持不变 ----------------- 当 arvalid 无效时,如果没有收到 “要开始下一次读了(start_single_burst_read)”,也应该保持;当 arvalid 为有效时,如果没有收到“读数据发送完毕”的信息,应该保持
============================================================================
(从0手撕不会去管 INIT_AXI_TXN 信号)
------------------------------- 补充 -----------------------------------
mst_exec_state (主模块状态机): 四种: IDLE, INIT_WRITE, INIT_READ, INIT_COMPARE
IDLE(0): 1
INIT_WRITE(1): 1
INIT_READ(2): 1
INIT_COMPARE(3): 1
--------------------------------------------------------------------------
======================= 0.3. “start_single_burst_read”:========================
============================================================================
这里记录一下我个人对AXI4主从模块的理解(这些理解主要来自阅读 Xilinx AXI_FULL_M_module 源码)的更多相关文章
- EventBus源码解析 源码阅读记录
EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInst ...
- flutter_boot android和flutter源码阅读记录
版本号0.1.54 看源码之前,我先去看下官方文档,对于其源码的设计说明,文中所说的原生都是指android 看完官方文档的说明,我有以下几个疑问 第一个:容器是怎么设计的? 第二个:native和f ...
- 源码安装ROS Melodic Python3 指南 (转) + 安装记录
这篇文章转自 https://blog.csdn.net/id9502/article/details/80410989 csdn真是作大死,我保存这篇博客的时候还不需要花钱就能看,现在居然要v ...
- 源码安装mysql,及主从同步
源码安装mysql [可选] 如果用源码安装cmake软件: cd /home/oldboy/tools/ tar xf cmake-.tar.gz cd cmake- ./configure #CM ...
- Spark join 源码跟读记录
PairRDDFunctions类提供了以下两个join接口,只提供一个参数,不指定分区函数时默认使用HashPartitioner;提供numPartitions参数时,其内部的分区函数是HashP ...
- centos 6x系统下源码安装mysql操作记录
在运维工作中经常部署各种运维环境,涉及mysql数据库的安装也是时常需要的.mysql数据库安装可以选择yum在线安装,但是这种安装的mysql一般是系统自带的,版本方面可能跟需求不太匹配.可以通过源 ...
- 编译CM13源码添加来去电归属地 SudaMod开源项目,查看commit提交记录
这个问题纠结了很多时间,感谢苏打先森@Sudamod的开源项目. 大家知道CM13是没有来去点归属地的,就算有那也是google,对于中国人不适用,所以这里把方法贡献出来. 1.与通话有关的app D ...
- Java--Spring AOP 源码散点记录(最后整理成一篇博客)
Spring AOP 源码记录: 1.AOP 入口ProxyFactoryBean.getObject()方法: 2.AOP实现: (1)实现InvocationHandler接口 (2)通过java ...
- android录像增加时间记录(源码里修改)
需要做一个功能,录像和播放时都显示录时的时间,参考文章链接找不到了,不好意思,这里记录一下,防止下次找不到了.另一篇关于源码录像的流程请参考 http://www.verydemo.com/demo_ ...
- Centos7源码安装mysql及读写分离,互为主从
Linux服务器 -源码安装mysql 及读写分离,互为主从 一.环境介绍: Linux版本: CentOS 7 64位 mysq版本: mysql-5.6.26 这是我安装时所使用的版本, ...
随机推荐
- 历时9个月重构iNeuOS工业互联网操作系统,打造工业领域的“Office”
目 录 1. 概述... 1 2. 整体介绍... 2 3. 主要功能简介... 5 1. 概述 历时9个月的时间,对iNeuOS工业互联网操作系统进行全 ...
- 实践GoF的23种设计模式:命令模式
摘要:命令模式可将请求转换为一个包含与请求相关的所有信息的对象, 它能将请求参数化.延迟执行.实现 Undo / Redo 操作等. 本文分享自华为云社区<[Go实现]实践GoF的23种设计模式 ...
- 痞子衡嵌入式:Farewell, 我的写博故事2022
-- 题图:苏州荷塘月色 2022 年的最后一天,写个年终总结.困扰大家三年之久的新冠疫情终于在 12 月全面放开了,痞子衡暂时还没有阳,计划坚持到总决赛.对于 2023 年,痞子衡还是充满期待的,慢 ...
- NOIP2022 退役记
无所谓,我还能卡队线. 无所谓,我还能被卡校线.
- UOJ33 [UR#2] 树上 GCD
UOJ33 [UR#2] 树上 GCD 简要题意: 给定一棵有根树,对于每个 \(i \in [1,n)\),求出下式的值: \[Ans[i] = \sum_{u<v} \gcd({\rm{di ...
- 原生js实现jsonp
有时候用js封装个小工具需要一些已经被封装好的函数,比如jq的jsonp 但是原生小工具如果仅仅为了这个就导入一个上百kb的jQuery不划算 然后我去网上找,一大堆废文,还是自己发一篇记录一下吧 下 ...
- Nodejs报错记录
◉ digital envelope routines::unsupported D:\workspace\vuedemo> npm run dev ... error:0308010C:dig ...
- 求和【第十三届蓝桥杯省赛C++A/C组 , 第十三届蓝桥杯省赛JAVAA组】
求和 给定 \(n\) 个整数 \(a1,a2,⋅⋅⋅,an\),求它们两两相乘再相加的和,即 \(S=a1⋅a2+a1⋅a3+⋅⋅⋅+a1⋅an+a2⋅a3+⋅⋅⋅+an−2⋅an−1+an−2⋅a ...
- MQ系列11:如何保证消息可靠性传输(除夕奉上)
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...
- js节流防抖 减少服务器请求