AXI4读时序在AXI Block RAM (BRAM) IP核中的应用

在本文中将展示描述了AXI从设备(slave)AXI BRAM Controller IP核与Xilinx AXI Interconnect之间的读时序关系。

Single Read

图1展示了一个从32位BRAM(Block RAM)进行AXI单次读取操作的时序示例。

38b93a529def4bf59d4a41548af0b4b7.png

图1  AXI 单次读时序图

在该时序中,需要注意的信号有:

(1)ARREADY信号

AXI读地址通道(AR Channel)上的ARREADY信号是一个注册输出信号,它默认是高电平断言(即置高)。AXI BRAM Controller可以在ARVALID信号首次有效的同一时钟周期内接受读取地址。当ARVALID和ARREADY信号都被断言时,AXI BRAM Controller将读取地址寄存器化(即存储)。

(2)读取地址流水线

AXI BRAM Controller内部有一个读取地址流水线(通常有两级深度)。当流水线满时(即已经有两个地址等待处理),AXI BRAM Controller会清除ARREADY信号,直到流水线中的地址数量减少,再次回到非满状态。

(3)RREADY信号

如果主设备可以立即接受数据,它可以在同一时钟周期内断言RREADY信号。当主设备在AXI总线上断言RREADY信号时,AXI BRAM Controller会否定(即置低)RVALID信号。这表示主设备已经准备好接收数据,并且BRAM Controller会在下一个时钟周期提供数据。

(4)RVALID和RLAST信号

对于单次读取事务,AXI BRAM Controller会在与RVALID信号相同的时钟周期内断言RLAST信号。RLAST信号表示这是单次读取操作中的最后一个数据项。在burst读取操作中,RLAST信号会在burst中的最后一个数据项时被断言。

在AXI读取事务中,读取数据总是在读取地址握手之后传输。AXI BRAM Controller不会断言RVALID信号,直到在同一时钟周期内ARVALID和ARREADY信号都被断言。换句话说,AXI BRAM Controller不支持提前访问,也没有内部缓存能力。

在AXI协议中,地址通道(AR通道)和数据通道(R通道)是分开的,这使得地址和数据可以独立地进行传输和处理。

2 Read Bursting

图2展示了一个AXI BRAM Controller进行的一个AXI读突发的时序图。

内存读突发开始于BRAM的0x1000h地址,并给定C_S_AXI_BASEADDR = 0xA000 0000以及C_S_AXI_HIGHADDR允许超过4k的可寻址内存。

AXI Read Address Channel 接口保持 ARREADY 信号断言,直到 AXI BRAM Controller 中的读地址流水线填满,这个过程是AXI协议中主从设备间数据传输的一个重要时序行为。

在AXI的读数据通道(R通道)上,AXI BRAM Controller支持AXI主设备/互联设备(Interconnect)在同一时钟周期内对RVALID信号的断言进行响应,即发出RREADY信号。

当AXI主设备或互联设备(Interconnect)在接受读突发数据时发生节流(即通过将RREADY信号置为低电平来减缓数据接收速率),AXI BRAM Controller能够处理这种情况,并暂停数据流水线,直到RREADY信号再次被断言(置为高电平)。

0ce671c492624cb88a18df0c27e5c66d.png

图2 AXI读突发时序

3 Read Throttling

AXI BRAM Controller必须支持读节流。在读操作过程中,AXI BRAM Controller向块RAM发出读命令,但只能在读数据缓存流水线中预读两个地址(这取决于AXI BRAM Controller支持的BRAM读数据节拍数)。请求AXI主设备无需立即捕获所有数据,而是可以在准备好接收数据时,通过断言RREADY信号来进行节流。当请求主设备否定RREADY时,AXI BRAM Controller必须暂停读操作并保持现有读数据。图3展示了这种行为以及相应的BRAM端口操作。

两级读数据流水线确保了所有到块RAM的输出和到AXI读数据通道的输出都被寄存。图3所展示的行为反映了主设备在RVALID被断言之前等待断言RREADY的情况。然而,AXI BRAM Controller可以在RVALID断言之前接受主设备对RREADY的断言。两个信号都必须被断言,以推进AXI BRAM Controller中的读数据缓存流水线。

f5f211aefc5a4dc3b469db2a05ec2388.png

图3  AXI读突发节流

4 Read Address Pipeline

图4和图5展示了流水线读突发操作的时序示例。AXI BRAM Controller可以处理作为连续突发读操作到块RAM的流水线读地址。在这些条件下,流水线读操作的主设备可以在RLAST(来自先前的读操作)断言后的时钟周期内接收数据:

  • 读操作不是单个数据节拍的传输
  • 读突发大于两个数据节拍
  • AXI突发操作大小等于AXI互联(Interconnect)的数据端口大小
  • 请求的突发类型是INCR或WRAP
  • 在倒数第二个BRAM地址被注册到内存之后,当前读突发在AXI读通道上没有检测到节流

无论是在双端口配置(使用第二个端口到块RAM)还是单端口BRAM配置(没有活动的待处理写传输)中,都支持到块RAM的连续读突发。如果流水线读操作中存在上述任何条件,主设备必须等待RVALID重新断言,才能开始读取后续突发的数据。预期延迟是在先前的RLAST之后两个AXI时钟周期,直到RVALID被断言(当上述任何条件存在时)。图5展示了这种场景的时序。

图4展示了AXI BRAM Controller接受流水线读请求地址的能力,并保持到块RAM的100%总线利用率。数据突发必须大于两个数据节拍,才能在AXI读数据通道上没有空闲时钟周期的情况下,从块RAM达到最大100%的数据吞吐量。请求的突发类型必须是INCR或WRAP,并且请求的读突发大小必须等于AXI互联(Interconnect)读数据端口的大小(没有“窄”突发类型事务),以实现流水线读突发的100%总线利用率。

读数据缓存缓冲区的利用说明了主设备在接受读数据时的节流能力。由此产生的BRAM事务时序如图5所示。

e8929fcb809349a2b51aa0092dbcc585.png

图4 在流水线读突发上实现AXI 100%总线利用率

46dcdc5f79bd4db7b1e931fe6375bce7.png

图5 AXI 读流水线节流时序

Cacheline Reads

图6展示了AXI WRAP或缓存行突发事务的时序。当达到地址边界时,生成到块RAM的地址从目标字开始并循环(WRAP)回到起始点。

在WRAP突发模式下,地址在达到其定义的边界后,会“回绕”到突发开始的地址,并继续以递增的方式发送,直到达到突发长度的指定值。这种模式在访问连续内存区域时特别有用,尤其是当这些区域跨越了物理地址边界(如缓存行边界)时。

对于缓存行突发事务,地址通常按照缓存行的大小(如64字节)递增,并可能在达到缓存行边界时继续下一个缓存行的起始地址。这种突发模式有助于高效地与缓存一致的内存子系统交互,因为缓存行是缓存和主存储器之间数据传输的基本单位。

29c762c8e2d54c23aa5b38245c64f678.png

图6 AXI Cacheline Read

 

 

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

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

相关文章

书生浦语训练营第三次课笔记:XTuner 微调 LLM:1.8B、多模态、Agent

Finetune 简介 两种Finetune范式:增量预训练微调、指令跟随微调 微调数据集 上述是我们所期待模型回答的内容,在训练时损失的计算也是基于这个。 训练数据集看起来是这样,但是真正喂给模型的,是经过对话模板组装后的 下图中&…

信息系统项目管理师0097:价值交付系统(6项目管理概论—6.4价值驱动的项目管理知识体系—6.4.6价值交付系统)

点击查看专栏目录 文章目录 6.4.6价值交付系统1.创造价值2.价值交付组件3.信息流6.4.6价值交付系统 价值交付系统描述了项目如何在系统内运作,为组织及其干系人创造价值。价值交付系统包括项目如何创造价值、价值交付组件和信息流。 1.创造价值 项目存在于组织中,包括政府机构…

ICode国际青少年编程竞赛- Python-2级训练场-数独

ICode国际青少年编程竞赛- Python-2级训练场-数独 1、 Spaceship.step(3)2、 Spaceship.step(3)3、 Spaceship.step(1) Spaceship.turnLeft() Spaceship.step(1)4、 Spaceship.step(3) Spaceship.turnRight() Spaceship.step(1)5、 Spaceship.step(4) for i in range(3):Spaces…

(二十一)springboot实战——Spring AI劲爆来袭

前言 本节内容是关于Spring生态新发布的Spring AI的介绍,Spring AI 是一个面向人工智能工程的应用框架。其目标是将 Spring 生态系统的设计原则,如可移植性和模块化设计,应用到人工智能领域,并推广使用普通的Java对象&#xff08…

【Linux】项目自动化构建工具make/makefile

🎉博主首页: 有趣的中国人 🎉专栏首页: Linux 🎉其它专栏: C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好,本片文章将会讲解Linux中项目自动化构建工具make/makefile的相关内容。 如果看到最后…

2024年自动驾驶、车辆工程与智能交通国际会议(ICADVEIT2024)

2024年自动驾驶、车辆工程与智能交通国际会议(ICADVEIT2024) 会议简介 2024年自动驾驶、车辆工程和智能交通国际会议(ICADVEIT 2024)将在中国深圳举行。会议主要聚焦自动驾驶、车辆工程和智能交通等研究领域,旨在为从…

盲盒一番赏小程序:探索未知,开启神秘宝藏之旅

开启神秘之门,探索未知的乐趣 在繁忙的生活中,我们渴望一丝丝未知带来的惊喜与乐趣。盲盒一番赏小程序,正是为了满足您这种探索未知的欲望而诞生。它不仅仅是一个购物平台,更是一个充满神秘与惊喜的宝藏世界。 精选好物&#xf…

Electron学习笔记(一)

文章目录 相关笔记笔记说明 一、轻松入门 1、搭建开发环境2、创建窗口界面3、调试主进程 二、主进程和渲染进程1、进程互访2、渲染进程访问主进程类型3、渲染进程访问主进程自定义内容4、渲染进程向主进程发送消息5、主进程向渲染进程发送消息6、多个窗口的渲染进程接收主进程发…

Linux:进程信号

生活角度的信号 a.信号在生活中,随时可以产生(信号的产生和我是异步的) b.你能认识这个信号 c.我们知道信号产生了,我能识别这个信号,信号该怎么处理 d.我们可能正在做着更重要的事情,把到来的信号暂不处理(1.我记得这个事 2.…

YOLOv9中模块总结补充|RepNCSPELAN4详图

专栏地址:目前售价售价69.9,改进点70 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 1. RepNCSPELAN4详图 RepNCSPELAN4是YOLOv9中的特征提取-融合模块,类似前几…

phpstudy(MySQL启动又立马停止)问题的解决办法

方法一:查看本地安装的MySQL有没有启动 1.鼠标右击开始按钮选择计算机管理 2.点击服务和应用程序 3.找到服务双击 4.找到MySQL服务 5.双击查看是否启动,如启动则停止他,然后确定,重新打开phpstudy,启动Mysql. 方法二&#xff…

Python从0到POC编写--实用小脚本02

爆破脚本: 爆破脚本也是我们经常使用的东西 这里就简单讲讲后台爆破脚本的编写吧 在编写之前,我们先通过访问网站去看看情况 首先我们可以先登录看看 输入账号 admin ,密码 12345 后 登录失败,提示 用户名或密码错误 在输入…

苹果新品发布会速览:iPad革新遇市场挑战 | 百能云芯

北京时间5月7日晚,苹果以“放飞吧”为主题,举办了一场不到40分钟的线上新品发布会。在这场发布会上,iPad产品线成为了焦点,M4芯片和OLED技术的融入更是引起了广泛关注。 iPad新篇章:技术革新与市场竞争 时隔18个月&…

WebSocket 多屏同显和异显

介绍 多屏同显:通过在一个应用上进行操作之后,另一个应用也能跟着一起发生改变,例如app1播放了晴天这首音乐,那么app2也要同步播放这首音乐,确保所有屏幕显示的内容完全相同。多屏异显:每个屏幕可以显示不同的内容,或者在内容更新时存在一定的延迟,而不需要严格保持同步…

Linux下的SPI通信

SPI通信 一. 1.SPI简介: SPI 是一种高速,全双工,同步串行总线。 SPI 有主从俩种模式通常由一个主设备和一个或者多个从设备组从。SPI不支持多主机。 SPI通信至少需要四根线,分别是 MISO(主设备数据输入,从设备输出),MOSI (主设数据输出从设备输入),SCLK(时钟信号),CS/SS…

物理层——计算机网络学习笔记二

目录 物理层的基本概念 数据通信的基础知识 物理层下面的传输媒体 信道复用技术 图片大部分来源于谢希仁《计算机网络》教材配套的ppt。 这一样都是介绍一下概念性的东西,了解一下就行,就重要性而言不如后面的内容。 物理层的作用:考虑如何才…

android基础-服务

同样使用intent来传递服务 oncreate是服务第一次启动调用,onStartCommand是服务每次启动的时候调用,也就是说服务只要启动后就不会调用oncreate方法了。可以在myservice中的任何位置调用stopself方法让服务停止下来。 服务生命周期 前台服务类似于通知会…

在Linux操作系统中扩建swap容量

在Linux操作系统上创建硬盘分区不仅可以储存数据,还可以使用创建的硬盘分区去扩展机器上swap分区的大小——去扩展交换工具的容量。 有些软件对于swap分区的大小是有要求的,swap分区的大小小于多少就安装不上软件。 要扩展swap容量要么重装系统&#x…

初学者理解Transformer,本文is all you need

要问现在AI领域哪个概念最热,必然是openAI推出chatGPT之后引发的大模型。然而这项技术的起源,都来自一篇google公司员工的神作“Attention Is All You Need”——本文标题也是一种致敬^_^,目前已有近12万的引用(还在增长)。 在“Attention Is…

【教程】极简Python接入免费语音识别API

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,请不吝给个[点赞、收藏、关注]哦~ 安装库: pip install SpeechRecognition 使用方法: import speech_recognition as srr sr.Recognizer() harvard sr…