AXI_02 AXI4总线简介(协议、时序)

本篇文章内容在各大资料上都可找到,内容摘自专业书籍,这里作为该系列文章的原理篇。

由于该系列文章阅读有顺序性,所以请跳转至该系列文章第一篇从头开始阅读,并按照文章末尾指示按顺序阅读,否则会云里雾里,传送门在此:   https://blog.youkuaiyun.com/qq_33486907/article/details/88289714  《AXI_01 《AXI总线系列文章》由来

目录

1 简介

2 AXI总线

2.1  三种AXI总线

2.2 三种AXI接口

2.3 AXI协议

2.3.1 AXI握手协议

2.3.2 AXI突发读时序

2.3.3 AXI突发式写的时序

2.3.4 AXI_LITE的读写时序

2.3.5 AXI4-Stream的时序


1 简介

自XILINX针对7系列FPGA、SOC推出VIVADO开发环境后,使得FPGA开发更加趋于使用现有IP核进行工程搭建和验证,减少代码编写的工作量,尤其是在ZYNQ的使用中体现的更为明显。

VIVADO开发环境中几乎所有的IP核都支持AXI总线,IP核接口得以标准化。FPGA工程师只需要学习好AXI总线,几乎就掌握了所有IP核接口的使用方法。这样的标准化也使得可以更快和更方便的搭建系统进行验证,这一点相对于ISE是巨大的进步;

某些偏向定制的功能,VIVADO开发环境中并没有定义好的IP核,这时可能需要FPGA工程师自研,如何将自研逻辑快速的融入到系统中,使用VIVADO的设计理念,就是对自研逻辑进行标准化,使用AXI总线作为接口,同时VIVADO也为用户提供了相应的工具。

2 AXI总线

AXI (Advanced eXtensible Interface) 本是由ARM公司提出的一种总线协议, Xilinx从 6 系列的 FPGA 开始对 AXI 总线提供支持,目前使用 AXI4 版本。

2.1  三种AXI总线

(1)AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输;

(2)AXI4-Lite:(For simple, low-throughput memory-mapped communication )是一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。

(3)AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输模式。

 

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-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。

https://i-blog.csdnimg.cn/blog_migrate/6263eba619f5266b92cd595234c42cfd.png

 

https://i-blog.csdnimg.cn/blog_migrate/be8880f7a280bc33b38670ae8e9456b8.png

2.2 三种AXI接口

(1)AXI-GP接口(4个):是通用的AXI接口,包括两个32位主设备接口和两个32位从设备接口,用过该接口可以访问PS中的片内外设。

(2)AXI-HP接口(4个):是高性能/带宽的标准的接口,PL模块作为主设备连接(从下图中箭头可以看出)。主要用于PL访问PS上的存储器(DDR和On-Chip RAM)

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

 

https://i-blog.csdnimg.cn/blog_migrate/bc7eabd5483955e5150d735f4f7324f5.png

2.3 AXI协议

协议的制定是要建立在总线构成之上的。因此说AXI4,AXI4-Lite,AXI4-Stream都是AXI4协议。AXI总线协议的两端可以分为分为主(master)、从(slave)两端,他们之间一般需要通过一个AXI Interconnect相连接,作用是提供将一个或多个AXI主设备连接到一个或多个AXI从设备的一种交换机制。

AXI Interconnect的主要作用是,当存在多个主机以及从机器时,AXI Interconnect负责将它们联系并管理起来。由于AXI支持乱序发送,乱序发送需要主机的ID信号支撑,而不同的主机发送的ID可能相同,而AXI Interconnect解决了这一问题,他会对不同主机的ID信号进行处理让ID变得唯一。

                                                      

AXI协议将读地址通道,读数据通道,写地址通道,写数据通道,写响应通道分开,各自通道都有自己的握手协议。每个通道互不干扰却又彼此依赖。这是AXI高效的原因之一。

2.3.1 AXI握手协议

AXI4 所采用的是一种 READY,VALID 握手通信机制,简单来说主从双方进行数据通信前,有一个握手的过程。传输源产生 VLAID 信号来指明何时数据或控制信息有效。

而目地源产生READY信号来指明已经准备好接受数据或控制信息。 传输发生在VALID和 READY信号同时为高的时候。如下图中的实例:

                         https://i-blog.csdnimg.cn/blog_migrate/088ac760675b64bec3e8c75d14d50ac6.png

2.3.2 AXI突发读时序

           https://i-blog.csdnimg.cn/blog_migrate/10c1265356f546c6d6eb02c81770b32f.png

       当地址出现在地址总线后,传输的数据将出现在读数据通道上。设备保持VALID 为低直到读数据有效。为了表明一次突发式读写的完成,设备用 RLAST 信号来表示最后一个被传输的数据。

2.3.3 AXI突发式写的时序

            https://i-blog.csdnimg.cn/blog_migrate/7e1552a9e5a052763ed0908fd41fa4e0.png

主机发送地址和控制信息到写地址通道中,然后主机发送每一个写数据到写数据通道中。当主机发送最后一个数据时,WLAST 信号就变为高。当设备接收完所有数据之后他将一个写响应发送回主机来表明写事务完成。

2.3.4 AXI_LITE的读写时序

AXI_LITE的数据读写时序与AXI突发时序相同,只是每次只传输一个数据而已;

2.3.5 AXI4-Stream的时序

面向数据流的传输方式,省略的地址通道,其余时序与AXI突发时序相同;

不要急着跑,干货在后面,下一篇文章传送门在此:

AXI_03 AXI_LITE_SLAVE_IP核设计与验证》 

https://blog.youkuaiyun.com/qq_33486907/article/details/88298008

### Zynq Linux AXI DMA Driver Development Tutorial For developing a Linux driver for the AXI DMA on the Zynq platform, one must integrate hardware design with software components effectively. The process involves configuring the PetaLinux environment to support custom hardware IPs and ensuring that these are correctly recognized by the operating system. The creation of a compatible Linux image tailored to work alongside specific PL (Programmable Logic) designs is essential[^1]. This requires modifying device tree source files where changing `compatible` properties can enable generic UIO drivers provided within standard kernels without needing proprietary code modifications[^2]. To proceed further into practical implementation: #### Setting Up Environment Ensure all necessary tools such as Vivado HLS or SDK along with Petalinux SDKs are installed properly according to official guidelines available at Xilinx's website[^3]. #### Device Tree Configuration Modify DTS file entries related to your AXI_DMA module so they match what has been synthesized inside FPGA fabric while setting up interrupts appropriately using `generic-uio`. ```bash // Example modification in dts file &axi_dma_0 { status = "okay"; compatible = "generic-uio"; // Enable use of generic uio_pdrv_genirq driver }; ``` This configuration allows leveraging built-in kernel features instead of writing complex low-level handlers from scratch when dealing with data transfers between memory regions via direct access methods supported natively through VDMA interfaces mentioned elsewhere[^4]. #### Writing User Space Application Code With everything set up correctly, applications running under user space will interact seamlessly over `/dev/uioX` devices created automatically upon booting once corresponding nodes appear after loading modules dynamically during runtime initialization phases handled internally by OS itself. By following this approach, developers gain flexibility in handling high-speed peripheral communications efficiently across heterogeneous architectures like those found in modern SoCs based around ARM cores paired together programmable fabrics offered by FPGAs.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特FPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值