一、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总线分析与实现相关推荐

  1. AMBA总线协议的学习-AHB,ASB,APB三种总线以及AXI接口

    一.AMBA概述 AMBA (Advanced Microcontroller Bus Architecture) 高级处理器总线架构 AHB (Advanced High-performance B ...

  2. CAN总线多节点通信异常分析及解决

    CAN总线多节点通信异常分析及解决 一.CAN物理层特征 CAN收发器的作用是负责逻辑电平和信号电平之间的转换.即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换 ...

  3. 总线控制内部eep_CAN总线在新能源汽车中的通信网络设计及应用分析

    从事汽车相关行业的小伙伴们,都知道CAN总线,它是当今汽车各电控单元之间通信的总线标准,现在几乎所有的汽车厂家都选择使用CAN总线通信.CAN总线起初便是基于BOSCH公司为了解决汽车的电子控制单元增 ...

  4. 【AXI】解读AXI协议事务属性(Transaction Attributes)

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

  5. AMBA总线协议 之 APB总线协议

    AMBA总线协议概念: AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有 ...

  6. 【AXI】解读AXI协议双向握手机制的原理

    解读AXI协议双向握手机制的原理 一.写在前面 二.AXI 双向握手机制简介 2.1 信号列表 2.2 双向握手目的 2.3 握手过程 2.3.1 CASE1(READY信号先于VALID信号改变) ...

  7. 10 计算机组成原理第六章 总线 总线的概念与分类 总线性能指标 总线仲裁 总线操作和定时 总线标准

    文章目录 1 总线的概念与分类 1.1总线的定义 1.2 总线的特点 1.3 总线的特性 1.4 总线的分类 1.4.1 串行总线与并行总线 1.4.2 按总线功能分类 1.5 系统总线的结构 1.6 ...

  8. spi总线 上层调用_spi总线的mmc卡驱动调试总结 | 学步园

    这周调试挂载在spi总线sd卡驱动,总结一下 因为这个涉及到2个驱动,spi总线驱动和sd卡驱动,sd卡设备挂载在spi总线上并不像设备挂载在i2c总线上, i2c总线提供设备挂载需要的借口函数att ...

  9. AXI 基础第 2 讲 - 使用 AXI Verification IP (AXI VIP) 对 AXI 接口进行仿真

    注:本文转自赛灵思中文社区论坛,源文链接在此.本文原作者为XILINX工程师. 以下为个人译文,仅供参考,如有疏漏之处,还请不吝赐教. 本篇 AXI 基础系列博文将介绍可用于对 AXI 接口进行仿真的 ...

最新文章

  1. MOSES | 分子生成模型的基准平台
  2. javascript json和json字符串互转
  3. linux u盘内容乱码,Linux挂载U盘,中文显示为乱码
  4. 大数据时代的“找油利器”
  5. 蓝桥杯 - 垒骰子(动态规划+矩阵快速幂优化)
  6. (一)Windows环境下汇编编程读书笔记
  7. win系统如何连接共享服务器,window7 pro 访问局域网内共享服务器
  8. Autodesk Flame 2022 for Mac - 高级三维视觉特效合成软件
  9. Java成神之路——volatile是什么?
  10. mac地址随机变化的解决方法(安卓手机通用)不用ROOT
  11. 【Xamarin】MonoTouch - iOS 使用 UIImagePickerController 打开图片库和相机选择图片修改头像...
  12. 深入理解require与require_once与include以及include_once的区别
  13. android md5加密工具下载,md5校验工具下载
  14. 解决ASUS P5GC-MX/1333声卡驱动不能正常安装的问题
  15. 按蚂蚁金服面试不过,就因为不会RPC服务超时排查思路?
  16. 《信号与系统》自然/受迫响应、零输入/零状态响应及系统初始状态
  17. 策略迭代与值迭代的区别
  18. RLC元件上电压,电流关系
  19. mysql 2509错误解决方法
  20. 模拟/数字混合信号的电路板布局布线注意事项

热门文章

  1. 传统节日端午节PPT模板
  2. windows应急响应入侵排查思路
  3. ldr,str指令作用,详解
  4. Rust Web入门(六):服务器端web应用
  5. 信息过载的时代,程序员如何破局?
  6. 六十星系之32天机独坐丑未
  7. java 根据日期获取星座
  8. 中国PostgreSQL培训认证——特别篇
  9. pixhawk2.4.8(FMUV3)变砖拯救方法
  10. EMC防护--端口浪涌和防雷设计