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

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

Single Write

图1是一个关于32位宽度的BRAM(Block RAM)的单次写入操作的例子。这个例子展示了如何向地址0x1000h的BRAM写入数据,其中C_S_AXI_BASEADDR被设置为0xA000 0000,并且C_S_AXI_HIGHADDR允许超过4k的可寻址BRAM空间。

a97ba0f3caf44b56868ddf13e4eb1ff0.png

图1  AXI单次写事务时序图

在AXI BRAM Controller的操作中,有几个关键点需要注意:

(1)AWREADY信号

AXI BRAM Controller通常会在总线上保持AWREADY信号断言(即置高),以便在S_AXI_AWVALID和S_AXI_AWREADY信号都被断言的时钟周期内捕获地址。一旦写地址流水线(通常有两个深度)满了,从设备(slave)AXI BRAM Controller就会否定(即置低)AWREADY信号。

(2)写数据通道

同样的原则也适用于写数据通道。当数据正在写入块RAM的流水线满时,AXI BRAM Controller会否定WREADY信号。这种情况可能在AXI BRAM Controller正在处理先前的burst写数据操作时发生。

(3)ECC(Error Correction Code)

当在全数据宽度的BRAM写传输中启用ECC时,事务的时序与C_ECC = 0(即ECC被禁用)时相同。这是因为ECC的处理通常在内部进行,对外部接口的时序影响很小或没有影响。ECC通常用于检测和纠正数据在传输或存储过程中可能出现的错误。

在AXI协议中,写数据通道(W通道)上的数据确实有可能在写地址通道(AW通道)上的地址信息之前到达AXI BRAM Controller。然而,在这种情况下,AXI BRAM Controller不会立即启动写事务(即它会忽略这些数据),直到写地址通道上有了有效的地址信息供AXI BRAM Controller接受。

2 Write Burst

图2展示了一个AXI写突发(burst)操作的时序示例,该操作向32位BRAM写入四个字。在地址写通道握手阶段,它传达了突发类型为INCR(递增),突发长度为4个数据传输(AWLEN = 0011b)。写突发操作利用了AXI数据总线的所有字节通道(AWSIZE = 010b)向块RAM传输数据。图3中显示的写突发操作被设置为从BRAM地址0x1000h开始,前提是C_S_AXI_BASEADDR设计参数被设置为0xA0000000,并且C_S_AXI_HIGHADDR允许的地址空间大于4k的可寻址块RAM。

0fd7c569f08e444b91c5e655ccb0ec73.png

图2 AXI突发写时序图

在AXI写事务中,从设备(slave)不会等待写数据通道上的WVALID信号被断言后再断言写地址通道上的AWREADY信号。这种情况可能会导致死锁条件,并且是不被允许的。AXI协议要求写地址通道(AW通道)和写数据通道(W通道)之间的握手必须正确进行,以确保数据被写入正确的地址,并且不会被错误地丢弃或覆盖。

在正常的AXI写操作中,主设备(master)首先通过AW通道发送写地址和突发信息(如突发类型和长度)。从设备在接收到这些信息并准备好接受数据后,会断言AWREADY信号。一旦AWREADY信号被断言,主设备就可以开始通过W通道发送数据。数据通过W通道传输时,主设备会断言WVALID信号,而从设备在准备好接收数据时会断言WREADY信号。只有当WVALID和WREADY信号在同一时钟周期内都被断言时,数据才会被传输。

如果从设备不等待WVALID信号被断言就断言AWREADY信号,那么主设备可能会在没有准备好发送数据的情况下开始通过W通道发送数据,这可能导致数据丢失或写入错误的地址。因此,AXI协议要求从设备必须等待WVALID信号被断言后再断言WREADY信号,以确保数据的正确传输。

3 Narrow Write Bursting

图3展示了AXI BRAM Controller支持窄突发(narrow burst)操作的示例。窄突发是指主设备以小于BRAM数据宽度的数据大小进行突发传输。如果突发类型(AWBURST)被设置为INCR(递增)或WRAP(环绕),那么每个数据节拍(data beat)在AXI总线到BRAM接口的有效数据会进行旋转。AXI BRAM Controller会处理AXI上的每个数据节拍,作为对应到块RAM的数据节拍,无论有效字节通道的大小如何。

69a75fe1dc824505819720b678896200.png

图3  AXI 窄突发写时序

在这种情况下,AXI WSTRB(Write Strobe,写选通)信号会被转换为BRAM的写使能(write enable)信号。只有当BRAM地址遇到全地址(数据)宽度边界时,才会进行递增,这是由于进行了窄突发写入块RAM。

在图3中,以一个32位BRAM为例,AXI主设备请求的是一个半字(halfword,即16位)突发,包含4个数据节拍。AWSIZE被设置为001b,这表示每次突发传输的数据大小是半字。在这种设置下,BRAM Controller会将每个16位的数据节拍映射到BRAM的适当位置,并且只在遇到32位边界时才会递增BRAM地址。这意味着尽管突发操作是以16位为单位进行的,但BRAM地址的更新是以32位为单位的。

Unaligned Write Bursting

AXI BRAM Controller支持非对齐突发传输。非对齐突发传输发生在例如32位字突发大小不是从与字内存位置匹配的地址边界开始时。起始内存地址允许不是0x0h、0x4h、0x8h等。

图4所示的例子说明了一个非对齐的字突发传输,该传输包含4个数据节拍,从地址偏移量0x1002h开始(假设C_S_AXI_BASEADDR被设置为0xA000 0000,并且C_S_AXI_HIGHADDR允许超过4k的可寻址内存)。相关的时序关系如图5所示。

5a2b49acf1624d60b08f29bed9b9a87b.png

图4 AXI非对齐突发写传输

非对齐地址对应于写端口的BRAM_WE信号,以反映有效的字节通道。

在非对齐突发传输中,AXI BRAM Controller需要能够处理从非字边界开始的突发传输。也就是说,如果突发传输的起始地址不是字地址的整数倍(即不是0x0h、0x4h、0x8h等),那么传输的数据可能需要跨越多个内存位置。

AXI BRAM Controller通过检查每个数据节拍的字节使能(byte enable)或写选通(write strobe)信号来确定哪些字节是有效的,并将这些数据正确地写入BRAM。在写操作中,BRAM_WE信号用于指示哪些字节通道是活动的,并且应该被写入数据。

3a4f94480db34464a11132df981263c9.png

图5 AXI非对齐突发写时序

5 ECC Write Burst

图6展示了一个AXI写突发操作的两个数据节拍的时序。

由于需要执行读-修改-写序列以正确更新块RAM中的ECC(错误检查和纠正)校验位,所以存在额外的延迟。

b3c62f0f553b4ef985118290dadb1ebc.png

图6  带ECC的AXI写突发

6 Write Pipeline

AXI BRAM Controller IP核支持两个活动的写操作,它可以同时接收两个写地址请求(通过写地址通道AW),但数据(通过写数据通道W)需要按照地址的顺序来传输。当写地址流水线已满时,控制器会通过否定AWREADY信号来通知总线。只有当第一个流水线操作完成后,新的写传输才可以发生(这通过AWREADY信号的断言来指示)。

AXI BRAM Controller不支持写数据的交织。在写数据通道上的数据必须与写地址通道上呈现的地址(对于该数据)顺序相同。

写数据通道通过断言WREADY信号来响应写传输。当写数据通道没有因前一个事务而忙碌时,AXI BRAM Controller会接受数据。它还支持在AWVALID和AWREADY之前提前断言WREADY到WVALID,以便在地址验证之前就开始准备接收数据。

当写地址(通过写地址通道AW)有效并被AXI BRAM Controller接收时,Controller可以在同一个时钟周期内从写数据通道(W)接收数据。写地址和相应的写数据可以在连续的时钟周期内几乎同时到达,只要Controller准备好(通过WREADY信号指示)并且遵循AXI协议的时序要求。

WREADY信号是AXI BRAM Controller中用于指示接收端何时准备好接收写数据的一个信号。当WREADY被断言(即设置为高电平或逻辑真)时,发送端(如AXI Interconnect或其他AXI主设备)知道它可以在下一个时钟周期发送写数据(通过WVALID信号和WDATA总线)。

AXI BRAM Controller确保BREADY信号(用于指示接收端准备好接收从BRAM读取的数据)不会在WVALID和WREADY之前被断言。这是为了确保在数据被写入BRAM之前,任何潜在的读取操作都不会开始。这有助于防止数据冲突和不一致,并确保系统的正确性和可靠性。

图7展示了AXI BRAM Controller中写地址的流水线能力。这个示例说明了AXI BRAM Controller从AXI Interconnect看到写数据通道上的间隙时的情况。

593b859eb572447a84a2088cbb110c54.png

图7  AXI流水线突发写传输

AXI BRAM Controller确实支持连续数据流下的背靠背(back-to-back)突发写操作,这是AXI协议的一个重要特性,可以显著提高数据传输的效率和吞吐量。

当AXI Interconnect为AXI BRAM Controller提供连续的数据流时,两个流水线化的突发写操作之间在BRAM接口上没有空闲的时钟周期,即数据可以连续不断地写入BRAM,而无需等待前一个操作完成。

图8展示了四个数据节拍(data beats)的背靠背流水线化突发写操作的时序。

为了实现AXI BRAM Controller写端口的100% BRAM接口利用率,需要满足以下条件:

● 没有单个写突发

● 写突发必须大于两个数据节拍

● 写突发操作必须是INCR或WRAP突发类型

c14f6709a25641eba90904fef4785475.png

图8 AXI背靠背写突发时序

7 Delayed Write Address

在接收到有效的写地址之前,会对写数据进行节流(throttle)的行为。具体来说,这意味着在接收到下一个有效的写地址之前的一个数据节拍(data beat)之后,AXI BRAM Controller会暂停接受新的写数据。

在双端口模式下,当ECC(错误检查和纠正)功能被禁用时,AXI BRAM Controller会接收提前的WVALID和WDATA信号。这允许在写地址到达之前就开始准备写数据,从而提高了数据传输的效率。即使在这种情况下,写数据也不会在接收到有效的写地址之前被写入BRAM。

ad8bdb9452f443cba3114cea408a8c2e.png

图9 AXI延迟写地址时序

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[ 视频号]代替用户发布视频api

使用接口,替代用户使用设备直接发布视频api 接口地址: http://接口地址/api/v2 先调用登录接口,进行账号登录 登录二维码接口入参: {"appId": "","proxyIp": "","regionId"…

springcloud整合网关(springcloud-gateway)

pom引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 服务注册 --><dependency><groupId>com.alibaba.cloud</groupId&…

postman工具使用

一、配置每个接口都有公共的请求头 1.1 新建一个collect集合 my test 1.2 在pre-request script 输入配置 pm.request.addHeader("uid:24011"); pm.request.addHeader("version:2.0.0"); pm.request.addHeader("timezone:8"); pm.request.ad…

Redis 实战之监视器

监视器 成为监视器向监视器发送命令信息总结 成为监视器 发送MONITOR 命令可以让一个普通客户端变为一个监视器&#xff0c; 该命令的实现原理可以用以下伪代码来实现&#xff1a; def MONITOR():# 打开客户端的监视器标志client.flags | REDIS_MONITOR# 将客户端添加到服务器…

基于微信小程序的校园二手交易平台设计与实现(论文+源码)_kaic

基于微信小程序的校园二手交易平台 设计与实现 摘 要 随着绿色低碳消费和循环经济的理念越来越深入人心,大学生二手商品市场发展迅猛&#xff0c;而大部分二手交易平台运输方式与收售方式对于大学生用户群体并不适用&#xff0c;所以急需一款针对大学生二手商品交易的软件&…

【千帆平台】使用AppBuilder零代码创建应用,然后通过OpenAPI方式调用应用

欢迎来到《小5讲堂》 这是《千帆平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 前言创建API密钥调用文档调用说明API服务域名通信协议字符编码公…

视频号小店保证金,服务费,手续费是多少?货款结算周期多长?

大家好&#xff0c;我是电商糖果 随着视频号小店越来越火&#xff0c;很多商家都想入驻小店。 入驻之前大家对视频号的收费问题都比较好奇。 糖果2022年就开始做店的了&#xff0c;对小店的保证金&#xff0c;服务费的&#xff0c;手续费&#xff0c;货款结算周期都非常了解…

Windows使用Miniconda3安装python、环境配置以及conda常用命令

Windows使用Miniconda3安装python以及conda常用命令 这是学习使用python的第一篇文章&#xff0c;这将是一个关于python学习和使用的一个系列文章的开始&#xff0c;有兴趣的可以给个关注持续获取更新内容。 Miniconda3是什么&#xff1f; Miniconda3是一个轻量级的Anaconda发…

【双曲几何-05 庞加莱模型】庞加来上半平面模型的几何属性

文章目录 一、说明二、双曲几何的上半平面模型三、距离问题四、弧长微分五、面积问题六、python实现 一、说明 我们知道&#xff0c;双曲几何的著名模型有四种&#xff1a;微分解析模型、庞加莱盘、庞加莱半平面、克莱因盘。庞加莱圆盘模型是表示双曲几何的一种方法&#xff0c…

【Linux】Centos7配置JDK

1.启动虚拟机、Xshell、Xftp 2.在Xshell中新建一个会话&#xff0c;用于连接到虚拟机中 3.因为虚拟机里自带有JDK&#xff0c;所以需要先卸载自带的JDK 3.1.查询已安装的 jdk 列表 rpm -qa | grep jdk3.2.将查询到的全部删除 yum -y remove XXX&#xff08;上面查询到的 j…

【机器学习300问】82、RMSprop梯度下降优化算法的原理是什么?

RMSprop&#xff0c;全称Root Mean Square Propagation&#xff0c;中文名称“均方根传播”算法。让我来举个例子给大家介绍一下它的原理&#xff01; 一、通过举例来感性认识 建议你第一次看下面的例子时忽略小括号里的内容&#xff0c;在看完本文当你对RMSprop有了一定理解时…

豆芽机置入语音芯片WTN6040-8S:开启智能生活新篇章,让豆芽制作更便捷有趣

豆芽机的开发背景&#xff1a; 豆芽作为一种营养丰富、味道鲜美的食品&#xff0c;深受广大消费者的喜爱。然而&#xff0c;传统的豆芽生产过程繁琐&#xff0c;需要耗费大量的时间和人力&#xff0c;且存在生产效率低、质量不稳定等问题。随着人们生活节奏的加快和对健康饮食的…

K8s源码分析(一)-K8s调度框架及调度器初始化介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 文章目录 调度框架介绍K8s scheduler 介绍K8s scheduler的初始化Cobra介绍K8s scheduler中初始化的源代码解析 调度框架介绍 这是官方对于v1.27调度框架的介绍文档&#xff1a;https://v1-27.docs.kubernetes.io/docs/…

地球行星UE5和UE4

地球行星&#xff0c;包含多种地球风格&#xff0c;可蓝图控制自转和停止&#xff0c;可材质自转. 支持版本4.21-5.4版本 下载位置&#xff1a;https://mbd.pub/o/bread/ZpWZm5lv b站工坊&#xff1a;https://gf.bilibili.com/item/detail/1105582041 _______________________…

Java学习【类与对象】

类和对象 开始我们就不讲那些把大象放冰箱需要几步来引入面向对象的例子了&#xff0c;直接上干货。 在Java中&#xff0c;类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态&#xff0c;而方法则用于描述事物可以做的事情。对象也…

批量无人值守设备运维如何轻松搞定,设备授权和分组很关键

如今数字化时代&#xff0c;很多企业的一线业务依托无人值守的智能终端设备展开&#xff0c;这类设备的广泛使用可以帮助企业以较小的成本铺开大规模的业务&#xff0c;比如现在随处可见的智能售货机&#xff0c;商场的各类智能互动终端等等。 这类设备整体上可以降低业务开展…

注册测绘师历年真题及答案解析

点赞、留言、关注“地知通”公众号&#xff0c;免费获取注册测绘师历年真题及答案解析学习材料。 声明&#xff1a;转载此文不为商业用途。文字和图片版权归原作者所有&#xff0c;若有来源标注错误或侵犯了您的合法权益&#xff0c;请与我们联系&#xff0c;我们将及时处理&am…

RegExp魔法阵与Cookie记忆宫殿:JavaScript 中的秘密宝藏

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f506;RegExp &#x1f3b2; 1 什么是正则表达式 &#x1f3b2;2 创建…

Android11 InputDispatcher 分发事件流程分析

在 Android11 InputReader分析 一文中分析到&#xff0c;InputReader将数据放入iq队列后&#xff0c;唤醒InputDispatcher线程&#xff0c;执行InputDispatcher的dispatchOnce方法 //frameworks\native\services\inputflinger\dispatcher\InputDispatcher.cpp void InputDispa…

【MQTT】MQTT协议和相关概念介绍

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…
最新文章