AXI4-Lite读写时序在AXI Block RAM 控制器IP核中的应用

AXI Block RAM (BRAM) 控制器是一个软件IP核,专为与Xilinx Vivado设计套件一起使用而设计。该IP核被设计为AXI端点从设备IP,用于与AXI互联和系统主设备集成,以便与本地块RAM进行通信。

AXI BRAM控制器IP核可以通过设置设计参数C_S_AXI_PROTOCOL = AXI4LITE来配置为简化版的IP核。在这种配置下,AXI BRAM控制器可以配置为与单端口或双端口BRAM接口。在单端口模式下,对块RAM的所有仲裁都在AXI写地址(AW)和读地址(AR)通道上进行。IP核中一次只允许一个活动操作。当AXI BRAM控制器的AW和AR通道接口同时接收到ARVALID和AWVALID信号的断言时,会优先处理读通道,以确保AXI BRAM控制器与任何AXI4-Lite主设备兼容。

当AXI BRAM控制器在包含AXI互联IP的系统拓扑中创建时,AXI互联确保ARVALID和AWVALID不会同时断言,并且AXI互联处理写和读通道之间的仲裁。AXI互联通过在构建过程中复制ARADDR和AWADDR信号来优化AXI BRAM控制器核心。

AXI4-Lite BRAM控制器设计为最小限度地使用FPGA资源。仅使用最少的寄存器,这些寄存器仅用于支持根据标准将寄存器输出到AXI4-Lite接口。

1  AXI4-Lite Single Write

在AXI4-Lite接口中,对于单写操作(AXI4-Lite Single Write),图1展示了AXI4-Lite接口在AW(Address Write)和W(Write Data)通道上的时序,并且假设在AXI AR(Address Read)和R(Read Data)通道上没有有效的传输活动(因为读操作与写操作是分开的)。

图1 AXI4-Lite 写时序

(1)地址写通道(AW)

● 主设备(Master)在AWVALID信号上发送有效信号,指示地址和写保护信息(如果有的话)是有效的。

● 主设备在AWADDR信号上发送目标内存地址。

●(可选)主设备可以在AWPROT信号上发送写保护信息(如果AXI4-Lite接口支持写保护)。

● 从设备(Slave,即AXI BRAM控制器)在AWREADY信号上发送有效信号,表示它已准备好接收下一个地址或开始写入操作。

(2)写数据通道(W)

●  一旦AW通道上的传输完成,主设备可以在WVALID信号上发送有效信号,并在WDATA信号上发送数据。

●(可选)主设备可以在WSTRB信号上发送字节使能信号,以指示WDATA中的哪些字节是有效的。

●(可选)主设备可以在WLAST信号上发送有效信号,以指示这是当前写突发(burst)的最后一个数据项。

●  从设备在WREADY信号上发送有效信号,表示它已准备好接收下一个数据项或完成写操作。

(3)写响应通道(B)

 ● 写操作完成后,从设备通过BVALID信号发送写响应有效信号,并在BRESP信号上发送响应状态(通常是OKAY表示成功)。

● 主设备在BREADY信号上发送有效信号,表示它已准备好接收写响应。

2 AXI4-Lite Multiple Write

当AXI4-Lite BRAM控制器能够连续接受单个写操作(Single Write Operations)时,这通常意味着它支持一种写突发(Write Burst)模式,即使这些写操作在逻辑上是连续的单个写事务(Single Write Transactions)。。

在AXI4-Lite协议中,写突发(Burst)的概念可能不像在AXI4或AXI Stream等更高级协议中那样明确定义,因为AXI4-Lite是一个轻量级的接口,主要关注于简单的读写操作。然而,连续的单个写操作仍然可以通过连续发送AW(Address Write)和W(Write Data)通道上的数据包来实现。

如图2所示。

图2  AXI4-Lite多个写事务时序

(1)第一个写事务

● 主设备(Master)发送一个AW通道的数据包,其中包含要写入的内存地址和其他控制信息(如写保护)。接着,主设备在W通道上发送写数据(WDATA),并可能包括字节使能(WSTRB)和最后一个数据(WLAST)的标志。

● BRAM控制器(Slave)在AWREADY和WREADY信号上发送有效信号,以确认接收到了地址和数据。

● 当写操作完成后,BRAM控制器在B通道上发送写响应(BRESP),主设备在BREADY信号上发送有效信号以确认接收到了响应。

(2)第二个及后续写事务

 一旦主设备接收到第一个写事务的响应,它可以立即开始下一个写事务,无需等待前一个事务完全完成。

重复上述步骤,发送新的AW、W和B通道的数据包,以进行下一个内存地址的写入操作。

在连续进行多个写事务时,需要注意以下几点:

  • 流水线操作:AXI协议支持流水线操作,这意味着主设备可以在等待前一个事务的响应时开始下一个事务。这可以显著提高数据传输的吞吐量。
  • 地址和控制信息的正确性:每个写事务都需要正确的地址和控制信息。确保在发送新的AW通道数据包之前,已经正确处理了前一个事务的响应。
  • 数据一致性和同步:由于写事务是独立的,因此需要确保在多个事务中写入的数据保持一致性和同步。这可能需要在应用层或更高层协议中进行额外的管理。

总之,AXI4-Lite接口支持多个连续的写事务,通过流水线操作可以提高数据传输的效率和吞吐量。在设计和实现时,需要注意地址、控制信息的正确性以及数据的一致性和同步。

3  AXI4-Lite Single Read

对于AXI4-Lite的单读操作,其数据读取路径的时序在图3中有所展示。这张图描述了AXI4-Lite事务中控制器和BRAM接口上多个读请求操作的时序。

图3  AXI4-Lite读时序

(1)读地址通道(AR

● 当主设备(Master)想要从BRAM读取数据时,它会首先通过读地址通道(AR)发送读请求。这包括将ARVALID信号置高,表示地址有效,并发送目标内存地址(ARADDR)。

● 从设备(Slave,即BRAM控制器)在接收到ARVALID信号后,如果它准备好接收读请求,会将ARREADY信号置高。

● 一旦ARVALID和ARREADY信号同时为高,主设备会发送具体的地址信息(ARADDR),并在发送完地址后,将ARVALID信号置低。

(2)读数据通道(R)

●  当从设备准备好发送读取的数据时,它会将RVALID信号置高,并在RDATA信号上发送实际的数据。

●  主设备在检测到RVALID信号为高时,会读取RDATA信号上的数据,并将RREADY信号置高以确认数据的接收。

●  如果这是读取突发(Burst Read)中的最后一个数据,从设备会将RLAST信号置高,以指示主设备该突发读取已完成。

AXI4-Lite Write with ECC

AXI4-Lite在启用了ECC(错误检查和纠正)的情境下进行写操作时,涉及一个读-修改-写(RMW)的序列,如图4所示。当C_ECC(ECC使能位)设置为1时,AXI4-Lite接口上的写传输会采用这种RMW序列。由于AXI4-Lite BRAM控制器为了节省资源,不会对AWADDR(地址写)和WDATA(写数据)进行寄存器操作,因此AWREADY(地址接收有效)和WREADY(数据写入有效)的输出标志断言会被延迟,直到RMW序列完成。

图4  带ECC的AXI-Lite写事务

在RMW序列中,以下是主要步骤:

读操作:首先,控制器会读取目标地址的数据。这是因为ECC需要在写入新数据之前检查原始数据,以便在必要时进行错误纠正。

修改操作:一旦读取了原始数据,控制器就会根据需要进行修改。这包括应用新的数据值,并可能进行ECC编码。

写操作:最后,控制器会将修改后的数据(包括新的ECC值)写回到目标地址。

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

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

相关文章

anything-llm的嵌入式聊天小部件

anything-llm 详情移步到官方: https://github.com/Mintplex-Labs/anything-llm anything-llm可以docker启动和本地启动 例如:docker 启动, 自行去安装docker哈 cd 到docker文件夹下, 窗口运行: docker-compose up -d --build运…

Qt客户端开发的技术难点

Qt客户端开发中可能会遇到的下面的一些技术难点,了解这些难点并采取有效的措施可以帮助开发者更高效地进行Qt客户端开发。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.跨平台兼容性: Qt框架支持多种操作系…

Leetcode127.单词接龙

https://leetcode.cn/problems/word-ladder/description/?envTypestudy-plan-v2&envIdtop-interview-150 文章目录 题目描述解题思路代码-BFS解题思路二——双向BFS代码 题目描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 …

2024.05.08作业

登陆部分代码 /登陆槽函数 void Widget::btn_clicked() {if(edit1->text()"Admin" && edit2->text()"123456"){//登陆成功对话框QMessageBox box(QMessageBox::Information,"信息对话框","登陆成功",QMessageBox::Ok,t…

制冷机组喷液冷却与经济器的介绍

在制冷机组中,喷液冷却与经济器两者虽同可以为提升制冷系统效率与性能,经济器是一种特殊的换热器,主要用于制冷系统中,以提高系统的效率和性能。通常安装在制冷机组的冷凝器之后、膨胀阀之前的位置,确保在制冷剂流向蒸…

hadoop学习---基于Hive的教育平台数据仓库分析案例(三)

衔接第一部分,第一部分请点击:基于Hive的教育平台数据仓库分析案例(一) 衔接第二部分,第二部分请点击:基于Hive的教育平台数据仓库分析案例(二) 学生出勤模块(全量分析)&#xff1a…

生产制造中刀具管理系统,帮助工厂不再频繁换刀

一、刀具管理的定义与重要性 刀具管理是指对生产过程中使用的各种刀具进行计划、采购、存储、分配、使用、监控、维修和报废等全过程的管理。刀具作为制造过程中的直接工具,其性能、质量和使用效率直接影响产品的加工精度、表面质量和生产效率。因此,建…

算法学习(6)-最短路径

目录 Floyd-Warshall算法 Dijkstra算法 Bellman-Ford算法 Bellman-Ford的队列优化 最短路径算法对比分析 Floyd-Warshall算法 现在回到问题:如何求任意两点之间的最短路径呢? 通过之前的学习, 我们知道通过深度或广度优先搜索可以求出两…

【 npm详解:从入门到精通】

文章目录 npm详解:从入门到精通1. [npm](https://www.npmjs.com/)的安装2. npm的基础用法2.1 初始化项目2.2 安装依赖2.3 卸载依赖2.4 更新依赖 3. npm的高级用法3.1 运行脚本3.2 使用npm scope3.3 使用npm link 4. npm资源5. 使用npm进行依赖树分析和可视化6. npm进…

使用Nuxt.js实现服务端渲染(SSR)

Nuxt.js 是一个基于 Vue.js 的框架,它提供了服务器端渲染(SSR)和静态站点生成(SSG)的能力,使开发者能够轻松地构建高效、优雅的前端应用。Nuxt.js 集成了许多开箱即用的功能和工具,帮助开发者快…

天诚人脸物联网锁+网约房管理系统为智慧酒店、民宿管理赋能

随着互联网技术的发展,“网约房”逐渐步入受众视野,在改变旅客入住模式和生活方式的同时,为旅客旅游住宿创造了新的选择,也为拥有冗余房间资源的房东提供了新的营收路径。但是,网约房的管理问题频发,需要数…

springcloud alibaba微服务框架涉及的技术

一、微服务架构中核心模块及其使用技术总览 二、各模块详细说明 1、注册中心 该模块主要功能为 自动提供服务的注册与发现,集中式管理服务,让 服务调用端发现服务,让服务提供端注册服务,倘若没有注册中心,那客户端就…

Navicat导出表结构到Excel或Word

文章目录 sql语句复制到excel复制到Word sql语句 SELECTcols.COLUMN_NAME AS 字段,cols.COLUMN_TYPE AS 数据类型,IF(pks.CONSTRAINT_TYPE PRIMARY KEY, YES, NO) AS 是否为主键,IF(idxs.INDEX_NAME IS NOT NULL, YES, NO) AS 是否为索引,cols.IS_NULLABLE AS 是否为空,cols.…

小巧设备,大能量:探索口袋中的远程控制神器

在这个科技日新月异的时代,我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机,你是否也有遇到过需要远程操作自己某一台手机的场景呢?今天,我要向大家推荐一款神奇的手机远程操作神器,让你可以随时随地…

未授权访问:MongoDB未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬总结好的文章: 这里附上大佬…

【Chrome实用命令笔记】

文章目录 Chrome实用命令笔记1、chrome基本介绍2. 打开开发者工具(DevTools)方法一:快捷键方法二:右键菜单方法三:浏览器设置 2. 开发者工具面板Elements面板Console面板Sources面板Network面板Performance面板Memory面…

HTML Audio标签src使用base64字符

源码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>Audio src base64</title> </head> <body><audio controls><source src"data:audio/mp3;base64,//OIxAAAAAAAAAA…

SpringBoot:SpringBoot:实战项目TILAS智能学习辅助系统1.3

登录认证 需求:输入登录请求服务器判断用户的用户名和密码 //控制层 PostMapping("/login")public Result login(RequestBody Emp emp);Overridepublic Result login(Emp emp) {Emp emp1 empService.selectLogin(emp);if(emp1 null){System.out.println("用…

虚拟化技术 使用Vsphere Client管理ESXi服务器系统

使用Vsphere Client管理ESXi服务器系统 一、实验目的与要求 1.掌握使用vSphere Client管理ESXi主机 2.掌握将CentOS的安装介质ISO上传到ESXi存储 3.掌握在VMware ESXi中创建虚拟机 4.掌握在所创建的虚拟机中安装CentOS6.5操作系统 5.掌握给CentOS6.5安装VMware Tools 6.掌…

uniapp0基础编写安卓原生插件之编写安卓页面在uniapp上显示(摄像头调用)

前言 如果你对安卓插件开发部分不熟悉你可以先看uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件 效果 开始 dcloud_uniplugins.json {"nativePlugins": [{"hooksClass": "","plugins": [{&…