AXI总线的一些知识
AXI-stream总线简介-LDD
本节介绍的AXI是个什么东西呢,它其实不属于Zynq,不属于Xilinx,而是属于ARM。它是ARM最新的总线接口,以前叫做AMBA,从3.0以后就称为AXI了。
Zynq是以ARM作为核心的,运行时也是第一个“醒”过来,然后找可执行代码,找到后进入FSBL(第一引导阶段),接着找配置逻辑部分的bit文件,找到后就叫醒PL按照bit中的方式运行,再接着找可执行代码,进入SSBL(第二引导阶段),这时就可以初始化操作系统的运行环境,引导像Linux这样的大型程序,随后将控制权交给Linux。Linux运行时可以跟PL进行数据交互。注意了,就在这时候,数据交互的通路,就是我们本节要讲的AXI总线。
说白了,AXI就是负责ARM与FPGA之间通信的专用数据通道。
ARM内部用硬件实现了AXI总线协议,包括9个物理接口,分别为AXI-GP0~AXI-GP3,AXI-HP0~AXI-HP3,AXI-ACP接口。如下图黄圈所示。
可以看到,只有两个AXI-GP是Master Port,即主机接口,其余7个口都是Slave Port(从机接口)。主机接口具有发起读写的权限,ARM可以利用两个AXI-GP主机接口主动访问PL逻辑,其实就是把PL映射到某个地址,读写PL寄存器如同在读写自己的存储器。其余从机接口就属于被动接口,接受来自PL的读写,逆来顺受。
这9个AXI接口性能也是不同的。GP接口是32位的低性能接口,理论带宽600MB/s,而HP和ACP接口为64位高性能接口,理论带宽1200MB/s。
有人会问,为什么高性能接口不做成主机接口呢?这样可以由ARM发起高速数据传输。答案是高性能接口根本不需要ARM CPU来负责数据搬移,真正的搬运工是位于PL中的DMA控制器。
位于PS端的ARM直接有硬件支持AXI接口,而PL则需要使用逻辑实现相应的AXI协议。Xilinx提供现成IP如AXI-DMA,AXI-GPIO,AXI-Datamover都实现了相应的接口,使用时直接从XPS的IP列表中添加即可实现相应的功能。
有时,用户需要开发自己定义的IP同PS进行通信,这时可以利用XPS向导生成对应的IP。xps中用户自定义IP核可以拥有AXI-Lite,AXI4,AXI-Stream,PLB和FSL这些接口。
后两种由于ARM这一端不支持,所以不用。
AXI-Lite具有轻量级,结构简单的特点,适合小批量数据、简单控制场合。不支持批量传输,读写时一次只能读写一个字(32bit)。
AXI4接口和AXI-Lite差不多,只是增加了一项功能就是批量传输,可以连续对一片地址进行一次性读写。
上面两种均采用内存映射控制方式,即ARM将用户自定义IP编入某一地址进行访问,读写时就像在读写自己的片内RAM,编程也很方便,开发难度较低。代价就是资源占用过多,需要额外的读地址线、写地址线、读数据线、写数据线、写应答线这些信号线。
另外一种AXI接口就是AXI-Stream,这是一种连续流接口,不需要地址线(很像FIFO,一直读或一直写就行)。对于这类IP,ARM不能通过上面的内存映射方式控制(FIFO根本没有地址的概念),必须有一个转换装置,例如AXI-DMA模块来实现内存映射到流式接口的转换。
AXI-Stream适用的场合有很多:视频流处理;通信协议转换;数字信号处理;无线通信等。其本质都是针对数值流构建的数据通路,从信源(例如ARM内存、DMA、无线接收前端等)到信宿(例如HDMI显示器、音频输出等)构建起连续的数据流。这种接口适合做实时信号处理。
有了上面的这些官方IP和向导生成的自定义IP,用户其实不需要对AXI时序了解太多(除非确实遇到问题),因为Xilinx已经将和AXI时序有关的细节都封装起来,用户只需要关注自己的逻辑实现即可
AXI4-Stream协议是一种用来连接需要交换数据的两个部件的标准接口,它可以用于连接一个产生数据的主机和一个接受数据的从机。当然它也可以用于连接多个主机和从机。该协议支持多种数据流使用相同共享总线集合,允许构建类似于路由、宽窄总线、窄宽总线等更为普遍的互联。AXI4-Stream接口的信号线定义如图1所示[1]。
比较重要的信号线有:
ACLK为时钟线,所有信号都在ACLK上升沿被采样;
ARESETn为复位线,低电平有效;
TVALID为主机数据同步线,为高表示主机准备好发送数据;
TREADY为从机数据同步线,为高表示从机准备好接收数据;这两根线完成了主机与从机的握手信号,一旦二者都变高有效,数据传输开始。
TDATA为数据线,主机发送,从机接收。
TKEEP为主机数据有效指示,为高代表对应的字节为有效字节,否则表示发送的为空字节。
TLAST为主机最后一个字指示,下一clk数据将无效,TVALID将变低。
TID,TDEST,TUSER均为多机通信时的信号,这里不涉及,不予考虑。
看到这里,可能大家都还对Stream没有一个直观的认识。其实Stream并不陌生,在我们学c++编程时,一定会包含<iostream>,这样就可以完成控制终端对程序的输入输出了。如果还是不够直观,想象一下连续不断的水流,永远向着一个方向以固定的速度输送的接口。以我们看视频为例,视频文件本来是保存在硬盘里的,怎么播放呢,不能一下子把整个文件都显示到屏幕上,而是以一定的速度,连续不断地输出到屏幕上(每秒30~60帧),这个过程就是流Stream接口完成的。
Xilinx提供的流式IP核有很多用途,可以实现音频流、视频流、数据流到内存或者相反方向的传输。有人问了,内存是PS控制的,怎么才能把PS里DDR2的内容以Stream形式发出去呢(例如以固定速度送往DA,完成信号发生器的设计)?答案就是利用AXI总线做转换。ZYNQ的PS部分是ARM CortexA9系列,支持AXI4,AXI-Lite总线。PL部分也有相应AXI总线接口,这样就能完成PS到PL的互联。仅仅这样还不够,需要PL部分实现流式转换,即AXI-Stream接口实现。Xilinx提供的从AXI到AXI-Stream转换的IP核有:AXI-DMA,AXI-Datamover,AXI-FIFO-MM2S以及AXI-VDMA等。这些IP核可以在XPS的IP Catalog窗口中看到。
AXI-DMA:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换;
AXI-FIFO-MM2S:实现从PS内存到PL通用传输通道AXI-GP到AXI-Stream的转换;
AXI-Datamover:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换,只不过这次是完全由PL控制的,PS是完全被动的;
AXI-VDMA:实现从PS内存到PL高速传输高速通道AXI-HP到AXI-Stream的转换,只不过是专门针对视频、图像等二维数据的。
除了上面的还有一个AXI-CDMAIP核,这个是由PL完成的将数据从内存的一个位置搬移到另一个位置,无需CPU来插手。这个和我们这里用的Stream没有关系,所以不表。
这里要和大家说明白一点,就是AXI总线和接口的区别。总线是一种标准化接口,由数据线、地址线、控制线等构成,具有一定的强制性。接口是其物理实现,即在硬件上的分配。在ZYNQ中,支持AXI-Lite,AXI4和AXI-Stream三种总线,但PS与PL之间的接口却只支持前两种,AXI-Stream只能在PL中实现,不能直接和PS相连,必须通过AXI-Lite或AXI4转接。PS与PL之间的物理接口有9个,包括4个AXI-GP接口和4个AXI-HP接口、1个AXI-ACP接口,均为内存映射型AXI接口。
上面的IP是完成总线协议转换,如果需要做某些处理(如变换、迭代、训练……),则需要生成一个自定义Stream类型IP,与上面的Stream接口连接起来,实现数据输入输出。用户的功能在自定义Stream类型IP中实现。
AXI总线的一些知识相关推荐
- 基于 PYNQ 的 AXI 总线主从控制编写(ddr3的读写)
菜鸟一枚,最近也学习了关于 AXI 总线的相关知识.基于 PYNQ 编写了一个简单的 AXI 主从控制(牵涉到 DDR3 的读写). 设计目的 设计出以下一个通过 AXI 总线连接的简单片上系统.包含 ...
- AXI总线学习(AXI34)
AXI总线学习 AXI协议的主要特征 主要结构 通道定义 读写地址通道 读数据通道 写数据通道 写操作回应信号 接口和互联 寄存器片 基本传输 Read burst Overlapping read ...
- AXI总线之AXI-LITE总线分析与实现
AXI是由ARM公司提供的一种总线协议,Xilinx从6系列的FPGA开始对AXI总线提供支持,现如今已经发展到AXI4这个版本.在Xilinx的ZYNQ系列中,AXI是经常用的一种接口.AXI有3个 ...
- AXI总线之AXI FULL总线分析与实现
一.AXI总线简介 AXI是AMBA中一个新的高性能协议.AXI技术丰富了现有的AMBA标准内容,满足超高性能和复杂的片上系统(Soc)设计的需求.AXI特点:单向通道体系结构.信息流只以单方向传输, ...
- AXI DMA测试-AXI总线最后一章
AXI DMA测试 增加一个AXIDMA章节,这部分内容是很多例程的基础,难度不大但是也不小,需要彻底理解整个运行机制. 图4‑61 测试框图 处理器通过M_AXI_GP0接口和AXI_DMA通信,以 ...
- AXI总线学习-------从零开始详细学-------------连载(8)读数据通中字节通路,narrow transfer
AXI总线学习连载(8) 鲁迅曾经说过: 学硬件,不是学哪里查哪里,有一些东西是必须系统的学的,不管是嵌入式还是FPGA,硬件学习的积累一定要是系统的. 我也曾经说过: 英文手册非常重要,这是学习硬件 ...
- ZYNQ AXI总线 PS与PL内部通信(用户自定义IP)
ZYNQ .AXI协议.PS与PL内部通信 三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映 ...
- AXI_01 《AXI总线系列文章》由来
笔者从学习ZYNQ开始接触AXI总线,绝大多数学习ZYNQ的资料中都是从定义一个简单的自定义IP核开始的,设计一个通过PS端ARM,写一段C代码通过AXI总线读写自定义IP核的寄存器,来完成LED流水 ...
- (13)ZYNQ AXI总线应用范围(学无止境)
0 AXI协议应用 ZYNQ FPGA中PL与PS交互接口为AXI接口,AXI接口按照协议分类,可以分为AXI4总线.AXI4-Lite.AXI4-Stream. 1 AXI4总线简介 (For hi ...
- (125)FPGA面试题-熟悉AXI总线吗,介绍AXI
1.1 FPGA面试题-熟悉AXI总线吗,介绍AXI 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-熟悉AXI总线吗,介绍AXI: 5)结束语. 1.1 ...
最新文章
- java 正则_认识正则表达式(Java语言基础)
- 创新课程管理系统数据库设计心得
- java 大数据处理一
- 数据仓库入门(实验7)部署分析服务数据库
- static_cast
- C#-利用Marshal类实现序列化
- linux oracle11g客户端安装
- 2.在窗口中添加按钮
- ACE网络编程思考(二)
- [USACO06DEC]The Fewest Coins G(混合背包)
- 为什么VS2019的解决方案资源管理器中的文件名和文件夹名里的下划线不显示?
- Scrach基本概念与操作
- iTop-4412 裸机程序(十七)- 按键介绍
- 使用windows远程桌面连接复制拷贝远程电脑上文件到本地的方法
- 美国大学本科计算机本科排名,2017美国大学计算机排名本科
- 二叉树的中序遍历,前序遍历,后序遍历
- 浅谈资金发展投资行业的发展路径
- 事务的概念以及事物的四大特性
- vol.132 《流浪地球》带火了中国科幻?(嘉宾:郑军)
- 华米的“脱米后遗症”
热门文章
- 电脑装机必备软件清单
- 13.设计模式--外观模式(Facade模式)
- 使用rmmod无法卸载驱动,强制卸除的两种方法
- java:换行符“\n”
- ogg是什么格式的文件后缀
- java判断字符是否为0_Java判断字符串是否为空
- rgb灯珠电路图_rgb led灯变色原理详解_RGB三基色LED变色程序
- 安装的时候出现SPSS中can not create java virtual machine问题怎么办
- 行政区划代码2020(SQL)--(上)
- 全网音乐下载,抖音热歌、无损音乐下载