AXI总线之AXI FULL总线分析与实现
一、AXI总线简介
AXI是AMBA中一个新的高性能协议。AXI技术丰富了现有的AMBA标准内容,满足超高性能和复杂的片上系统(Soc)设计的需求。AXI特点:单向通道体系结构。信息流只以单方向传输,简化时钟域间的桥接,减少门数量。当信号经过复杂的片上系统时,减少延时。支持多项数据交换。通过并行执行猝发操作,极大提高了数据吞吐能力,可在短时间内完成任务,在满足高性能要求的同时,又减少了功耗。独立的地址和数据通道。地址和数据通道分开,能对每一个通道进行单独优化,可以根据需要控制时序通道,将时钟频率提高到最高,并将延时降到最低。
二、AXI总线中的读写通道
AXI总线共有5个通道分别是read address channel、read data channel、write address channel、write data channel、write response channel。每一个通道都是单方向的。可以将这5个通道划分为读事务和写事务。每一个事务都有地址和控制信息在地址通道中,用来描述被传输数据的性质。每个通道都有VALID和READY握手机制。信息源通过VALID信号指示通道中的数据和控制信息什么时候有效。目的源用READY信号表示什么时候可以接收数据。读数据和写数据通道都包括一个LAST信号,用来指明一个事务传输的最后一个地址。需要注意的是读事务没有读应答通道,而写事务才有写应答通道。写事务操作时,主机可以根据读数据通道返回的数据这一过程,判断出主机对从机的操作有响应。读事务操作时,主机要对从机写地址和写数据,如果没有写应答通道反馈应答信息,主机无法判断出对从机是否操作成功。
读事务结构如下:
写事务结构如下:
三、AXI总线中的握手机制
上面已经讲了AXI总线中的握手信号是VALID和READY信号。当VALID和READY信号同时为高时,握手即为成功,根据双方握手动作的时刻可以分为以下三种情况:
(1)VALID先拉高,然后READY再拉高
(2)READY先拉高,然后VALID再拉高
(3)VALID和READY信号同时拉高
由于通道之间的流程顺序,它们的握手信号也存在这一定的顺序性,读写事务传输过程中声明了握手信号的顺序,在了解这两个信号顺序之前,先知道以下两个标志的意义:
单箭头:被指向的信号可在箭头起始端的信号有效前或后变为有效状态
双箭头:被指向的信号可在箭头起始端的信号有效后变为有效状态
上图可以看到,ARVALID和ARREADY信号并没有指定信号变化顺序,而RVALID信号需要在ARVALID和ARREADY信号有效后才能变为有效状态,RVALID和RREADY信号也没有指定信号变化顺序。读数据操作要在读地址操作之后才能执行,读数据通道和读地址通道没有先后顺序。
写事务过程分两部分,一个是写信息,另一个是写应答。写应答信号有效前,必须要求写地址通道和写数据通道完成握手,并且写数据通道的握手是在WLAST信号有效下的握手。而写地址通道的信号和写数据通道的信号之间没有先后顺序。
三、AXI总线中AXI-FULL的应用示例
在ZYNQ芯片中,通常使用AXI4总线实现PS与PL之间的数据交互。我们可以利用AXI总线在PL端快速存取DDR中的数据,而PS端可以用DMA的方式存取DDR中的数据,这种方式存取速度块,不占用CUP运行时间。从DMA控制器与外设的数据流向图可以看到,DMA可以对DDR存储器进行读写,对PL的存储器进行读写,对片上RAM进行读写。本次只用到对DDR的读写控制。从PL与DDR控制器的数据流向图可以看到,PL端通过AXI HP接口可以存取DDR中的数据。AXI HP接口采用AXI4总线的方式,可在PL端构造AXI4总线对DDR进行存取操作。
XILINX公司提供了AXI总线的解决方案,用户可以根据自身需求调用自定义IP来创建AXI4 IP。本文在官方提供的AXI4 IP基础上,根据自身需求修改了各个通道实现过程的代码使得该IP更具灵活性。创建自定义AXI4 IP过程如下图所示(部分次要步骤省略,只示出关键步骤图片)。
修改M00_AXI模块代码,让读地址通道、读数据通道、写地址通道和写数据通道都采用一段式状态机的方式实现(可借鉴官方提供的读写代码进行修改),而写应答通道采用简单的always语句块的方式实现。修改后的axi full ip如下图所示。图中start_write_DDR_flag和start_read_DDR_flag分别是开始写DDR和开始读DDR的触发标志信号,stop_write_DDR_flag和stop_read_DDR_flag分别是写完DDR和读完DDR的标志信号,WR_LEN和RD_LEN分别是写DDR的长度和读DDR的长度。
Axi full ip建好后,可以搭建一个回环工程来验证该IP的正确性。回环工程整个数据流走向:ARM产生原始数据->ARM的数据通过DMA搬运到DDR->axi full ip读取DDR中的数据->将数据写到RAM->读取RAM中的数据-> axi full ip把数据写到DDR中->通过DMA搬运将DDR中的数据送到ARM->利用串口打印出来。
整个工程的原理框图如下所示,其中1处是用来给WR_LEN和RD_LEN确定读写长度,2处用来产生start_write_DDR_flag和start_read_DDR_flag信号,3处是将stop_write_DDR_flag和stop_read_DDR_flag作为硬中断信号给ARM使用。
SDK软件部分主函数如下图所示。
四、板级测试结果
读地址通道和读数据通道时序图如下:
写地址通道、写数据通道和写应答通道时序图如下:
串口打印出来的数据
关注【FPGA Geeker】公众号或者识别下方二维码,获取更多FPGA相关方面的知识。
AXI总线之AXI FULL总线分析与实现相关推荐
- AMBA总线协议的学习-AHB,ASB,APB三种总线以及AXI接口
一.AMBA概述 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance B ...
- CAN总线多节点通信异常分析及解决
CAN总线多节点通信异常分析及解决 一.CAN物理层特征 CAN收发器的作用是负责逻辑电平和信号电平之间的转换.即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换 ...
- 总线控制内部eep_CAN总线在新能源汽车中的通信网络设计及应用分析
从事汽车相关行业的小伙伴们,都知道CAN总线,它是当今汽车各电控单元之间通信的总线标准,现在几乎所有的汽车厂家都选择使用CAN总线通信.CAN总线起初便是基于BOSCH公司为了解决汽车的电子控制单元增 ...
- 【AXI】解读AXI协议事务属性(Transaction Attributes)
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...
- AMBA总线协议 之 APB总线协议
AMBA总线协议概念: AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有 ...
- 【AXI】解读AXI协议双向握手机制的原理
解读AXI协议双向握手机制的原理 一.写在前面 二.AXI 双向握手机制简介 2.1 信号列表 2.2 双向握手目的 2.3 握手过程 2.3.1 CASE1(READY信号先于VALID信号改变) ...
- 10 计算机组成原理第六章 总线 总线的概念与分类 总线性能指标 总线仲裁 总线操作和定时 总线标准
文章目录 1 总线的概念与分类 1.1总线的定义 1.2 总线的特点 1.3 总线的特性 1.4 总线的分类 1.4.1 串行总线与并行总线 1.4.2 按总线功能分类 1.5 系统总线的结构 1.6 ...
- spi总线 上层调用_spi总线的mmc卡驱动调试总结 | 学步园
这周调试挂载在spi总线sd卡驱动,总结一下 因为这个涉及到2个驱动,spi总线驱动和sd卡驱动,sd卡设备挂载在spi总线上并不像设备挂载在i2c总线上, i2c总线提供设备挂载需要的借口函数att ...
- AXI 基础第 2 讲 - 使用 AXI Verification IP (AXI VIP) 对 AXI 接口进行仿真
注:本文转自赛灵思中文社区论坛,源文链接在此.本文原作者为XILINX工程师. 以下为个人译文,仅供参考,如有疏漏之处,还请不吝赐教. 本篇 AXI 基础系列博文将介绍可用于对 AXI 接口进行仿真的 ...
最新文章
- MOSES | 分子生成模型的基准平台
- javascript json和json字符串互转
- linux u盘内容乱码,Linux挂载U盘,中文显示为乱码
- 大数据时代的“找油利器”
- 蓝桥杯 - 垒骰子(动态规划+矩阵快速幂优化)
- (一)Windows环境下汇编编程读书笔记
- win系统如何连接共享服务器,window7 pro 访问局域网内共享服务器
- Autodesk Flame 2022 for Mac - 高级三维视觉特效合成软件
- Java成神之路——volatile是什么?
- mac地址随机变化的解决方法(安卓手机通用)不用ROOT
- 【Xamarin】MonoTouch - iOS 使用 UIImagePickerController 打开图片库和相机选择图片修改头像...
- 深入理解require与require_once与include以及include_once的区别
- android md5加密工具下载,md5校验工具下载
- 解决ASUS P5GC-MX/1333声卡驱动不能正常安装的问题
- 按蚂蚁金服面试不过,就因为不会RPC服务超时排查思路?
- 《信号与系统》自然/受迫响应、零输入/零状态响应及系统初始状态
- 策略迭代与值迭代的区别
- RLC元件上电压,电流关系
- mysql 2509错误解决方法
- 模拟/数字混合信号的电路板布局布线注意事项