AXI总线的一些知识.docx

上传人:b****5 文档编号:29207592 上传时间:2023-07-21 格式:DOCX 页数:10 大小:296.56KB
下载 相关 举报
AXI总线的一些知识.docx_第1页
第1页 / 共10页
AXI总线的一些知识.docx_第2页
第2页 / 共10页
AXI总线的一些知识.docx_第3页
第3页 / 共10页
AXI总线的一些知识.docx_第4页
第4页 / 共10页
AXI总线的一些知识.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

AXI总线的一些知识.docx

《AXI总线的一些知识.docx》由会员分享,可在线阅读,更多相关《AXI总线的一些知识.docx(10页珍藏版)》请在冰豆网上搜索。

AXI总线的一些知识.docx

AXI总线的一些知识

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是MasterPort,即主机接口,其余7个口都是SlavePort(从机接口)。

主机接口具有发起读写的权限,ARM可以利用两个AXI-GP主机接口主动访问PL逻辑,其实就是把PL映射到某个地址,读写PL寄存器如同在读写自己的存储器。

其余从机接口就属于被动接口,接受来自PL的读写,逆来顺受。

这9个AXI接口性能也是不同的。

GP接口是32位的低性能接口,理论带宽600MB/s,而HP和ACP接口为64位高性能接口,理论带宽1200MB/s。

有人会问,为什么高性能接口不做成主机接口呢?

这样可以由ARM发起高速数据传输。

答案是高性能接口根本不需要ARMCPU来负责数据搬移,真正的搬运工是位于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++编程时,一定会包含,这样就可以完成控制终端对程序的输入输出了。

如果还是不够直观,想象一下连续不断的水流,永远向着一个方向以固定的速度输送的接口。

以我们看视频为例,视频文件本来是保存在硬盘里的,怎么播放呢,不能一下子把整个文件都显示到屏幕上,而是以一定的速度,连续不断地输出到屏幕上(每秒30~60帧),这个过程就是流Stream接口完成的。

Xilinx提供的流式IP核有很多用途,可以实现音频流、视频流、数据流到内存或者相反方向的传输。

有人问了,内存是PS控制的,怎么才能把PS里DDR2的内容以Stream形式发出去呢(例如以固定速度送往DA,完成信号发生器的设计)?

答案就是利用AXI总线做转换。

ZYNQ的PS部分是ARMCortexA9系列,支持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的IPCatalog窗口中看到。

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中实现。

---------------------

作者:

GoUpToTheSky

来源:

CSDN

原文:

版权声明:

本文为博主原创文章,转载请附上博文链接!

ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议。

其中三种AXI总线分别为:

AXI4:

(Forhigh-performancememory-mappedrequirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输;

AXI4-Lite:

(Forsimple,low-throughputmemory-mappedcommunication)是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。

AXI4-Stream:

(Forhigh-speedstreamingdata.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。

说AXI4总线和AXI4-Lite总线具有相同的组成部分:

(1)读地址通道,包含ARVALID,ARADDR,ARREADY信号;

(2)读数据通道,包含RVALID,RDATA,RREADY,RRESP信号;

(3)写地址通道,包含AWVALID,AWADDR,AWREADY信号;

(4)写数据通道,包含WVALID,WDATA,WSTRB,WREADY信号;

(5)写应答通道,包含BVALID,BRESP,BREADY信号;

(6)系统通道,包含:

ACLK,ARESETN信号。

AXI4总线和AXI4-Lite总线的信号也有他的命名特点:

读地址信号都是以AR开头(A:

address;R:

read)

写地址信号都是以AW开头(A:

address;W:

write)

读数据信号都是以R开头(R:

read)

写数据信号都是以W开头(W:

write)

应答型号都是以B开头(B:

back(answerback))

而AXI4-Stream总线的组成有:

(1)ACLK信号:

总线时钟,上升沿有效;

(2)ARESETN信号:

总线复位,低电平有效

(3)TREADY信号:

从机告诉主机做好传输准备;

(4)TDATA信号:

数据,可选宽度32,64,128,256bit

(5)TSTRB信号:

每一bit对应TDATA的一个有效字节,宽度为TDATA/8

(6)TLAST信号:

主机告诉从机该次传输为突发传输的结尾;

(7)TVALID信号:

主机告诉从机数据本次传输有效;

(8)TUSER信号:

用户定义信号,宽度为128bit。

对于AXI4-Stream总线命名而言,除了总线时钟和总线复位,其他的信号线都是以T字母开头,后面跟上一个有意义的单词,看清这一点后,能帮助读者记忆每个信号线的意义。

如TVALID=T+单词Valid(有效)。

AXI接口介绍

三种AXI接口分别是:

AXI-GP接口(4个):

是通用的AXI接口,包括两个32位主设备接口和两个32位从设备接口,用该接口可以访问PS中的片内外设。

(AXI4)

AXI-HP接口(4个):

是高性能/带宽的标准的接口,PL模块作为主设备连接(从下图中箭头可以看出)。

(AXI4-Lite)

          主要用于PL访问PS上的存储器(DDR和On-ChipRAM)

AXI-ACP接口(1个)(AXI4-Stream):

是ARM多核架构下定义的一种接口,中文翻译为加速器一致性端口,用来管理DMA(directmemoryaccess)之类的不带缓存的AXI外设,PS端是Slave接口。

我们可以双击查看ZYNQ的IP核的内部配置,就能发现上述的三种接口。

(从图中可以看出,右边一个,下方有两个)

AXI协议概述

讲到协议不可能说是撇开总线单讲协议,因为协议的制定也是要建立在总线构成之上的。

虽然说AXI4,AXI4-Lite,AXI4-Stream都是AXI4协议,但是各自细节上还是不同的。

总的来说,AXI总线协议的两端可以分为分为主(master)、从(slave)两端,他们之间一般需要通过一个AXIInterconnect相连接,作用是提供将一个或多个AXI主设备连接到一个或多个AXI从设备的一种交换机制。

当我们添加了zynq以及带AXI的IP后再进行自动连线时vivado会自动帮我们添加上这个IP。

AXIInterconnect的主要作用是,当存在多个主机以及从机器时,AXIInterconnect负责将它们联系并管理起来。

由于AXI支持乱序发送,乱序发送需要主机的ID信号支撑,而不同的主机发送的ID可能相同,而AXIInterconnect解决了这一问题,他会对不同主机的ID信号进行处理让ID变得唯一。

AXI协议将读地址通道,读数据通道,写地址通道,写数据通道,写响应通道分开,各自通道都有自己的握手协议。

每个通道互不干扰却又彼此依赖。

这也是AXI高效的原因之一。

AXI协议之握手协议

AXI4所采用的是一种READY,VALID握手通信机制,简单来说主从双方进行数据通信前,有一个握手的过程。

当接收到READY信号后,再进行数据交互。

如下图所示:

需要强调的是,AXI的五个通道,每个通道都有握手机制,接下来我们就来分析一下AXI-Lite的源码来更深入的了解AXI机制。

ZYNQ_AXI总线

文章目录

ZYNQ_AXI总线

AcceleratorCoherencyPort,AXI_ACP(加速一致性接口)

HighPerformance,AXI_HP

GeneralPort,AXI_GP

axi_interconnect

channelprotocol

summary

AXI(AdvancedextensibleInterface)总线是连通PS(programmablesystem)和PL(programmablelogic)的一个总线协议,最终的形式就相当于PL块作为一个ipcore挂载在AXI总线上,然后由PS调用

 

AcceleratorCoherencyPort,AXI_ACP(加速一致性接口)

CSDN_ACP

多核架构下定义的一种接口,用于管理DMA(directmemoryaccess)之类不带缓存的AXI外设

PS端是Slave接口,一通道

HighPerformance,AXI_HP

CNBLOG_AXI

高性能/带宽的AXI3.0标准接口,

PL模块作为主设备连接。

主要用于PL访问PS上的存储器(DDR和On-ChipRAM)

4通道,作为从机端

GeneralPort,AXI_GP

AXI_XILINX

通用AXI接口,总共4个,两主两从

可以布一般的外设(低速)

axi_interconnect

IP_CORE_DATA_SHEET

GREAT_TECH

互联矩阵,相当于时分复用M个axi通道来挂载更多的外设

握手协议就是一个三态输出门(可以回想数电书,哈哈哈哈哈哈哈哈)

channelprotocol

以下图片来源于黑金zynq教学

 

summary

用于赶项目进度,看了的资料就不整理成blog了,但是会保存在blog里面,后面跑通了再回头补全吧,其它博客或者官方说明文件都写得很好,我的博客只有寥寥几个字感性认识一下而已,没啥价值,还是读别人的东西比较好(毕竟赶时间嘛)

所以zynq中总共9个物理接口GP接口是32位的低性能接口,理论带宽600MB/s,而HP和ACP接口为64位高性能接口,理论带宽1200MB/s。

有人会问,为什么高性能接口不做成主机接口呢?

这样可以由ARM发起高速数据传输。

答案是高性能接口根本不需要ARMCPU发起负责数据搬移,真正的搬运工是位于PL中的DMA控制器。

---------------------

作者:

hhhhorrible

来源:

CSDN

原文:

版权声明:

本文为博主原创文章,转载请附上博文链接!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1