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

2024-05-10 22:36

本文主要是介绍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延迟写地址时序

 

 

这篇关于AXI4写时序在AXI Block RAM (BRAM) IP核中的应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977750

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

AI行业应用(不定期更新)

ChatPDF 可以让你上传一个 PDF 文件,然后针对这个 PDF 进行小结和提问。你可以把各种各样你要研究的分析报告交给它,快速获取到想要知道的信息。https://www.chatpdf.com/

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景