这里记录一下我个人对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 这是我安装时所使用的版本, ...
随机推荐
- JavaScript:严格模式"use strict"
因为历史遗留问题,JS其实存在很多feature,以及兼容性问题: 所以JS在ES5之后,新增了一个严格模式,以区别于普通模式,用来激活新的特性,使得某些代码的执行准确无误: 如何开启严格模式? 在J ...
- Python Kconfiglib初次学习
1 参考 kconfiglib库官方介绍:kconfiglib · PyPI Kconfiglib源码:GitHub - ulfalizer/Kconfiglib: A flexible Python ...
- Asp-Net-Core权限认证
title: Asp.Net Core权限认证 date: 2022-10-27 16:17:52 tags: - .NET 翻了很多的博客,文档,发现asp.net core自带的权限认证还是比较复 ...
- angular 输入框获取焦点失效的问题
重点说明: 假如先设定了 输入框disabled又打开,然后执行获取焦点,可能会失效,这个时候可以把getFocus函数放在定时器里,1秒钟后执行,就可以了哦~ 具体代码如下 html ...
- 当LOGO设计与世界文化擦出火花——JJQ的LOGO设计之路
<当LOGO设计与世界文化碰撞出火花--论 JJQ 的LOGO是如何制成的> (友链:https://tg.hszxoj.com/user/475) 首先我们对jjq对应的汉字进行拉长 ...
- Unity_UIWidgets新手入门
Unity_UIWidgets新手入门 Hello Everyone!好久没见了,有没有有些想念小黑呢?什么?这么想?哈哈哈哈哈哈,不过我也知道你是想了解新的知识了,才不是想我嘞. 好了,好歹也半年没 ...
- python生成自动化测试报告并发送到指定邮箱
#-*-coding:utf-8 -*- import HTMLTestRunner import unittest import time import sys import os import s ...
- java画海报
package demotest; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; impor ...
- 【rust】rsut基础:模块的使用一、mod 关键字、mod.rs 文件的含义等
本文内容 这篇文章是实战性质的,也就是说原理部分较少,属于经验总结,rust对于模块的例子太少了.rust特性比较多(悲),本文的内容可能只是一部分,实现方式也不一定是这一种. 关于 rust 模块的 ...
- 谈谈Selenium中的三种切换之alert
谈谈Selenium中的三种切换之alert 一.如何识别 识别方法:alert中的确定.取消.输入框无法用inspector定位到,当然还有一些特例. alert分为三种 alert confirm ...