AXI4-Lite协议简明学习笔记

接口/总线/驱动

1139人已加入

描述

AXI4协议是ARM的AMBA总线协议重要部分,ARM介绍AXI4总线协议是一种性能高,带宽高,延迟低的总线协议。而XDMA中,利用BAR0实现上位机通过PCIE往FPGA配置寄存器的操作,对应总线协议是AXI4-Lite,AXI4总线协议的简化版。

通过学习AXI4-Lite总线协议内容,一方面为AXI4,AXI4-Stream总线协议打基础;另一方面为后续的BAR0空间内容做铺垫。

本文主要讲解AXI-Lite总线协议,文中会使用XDMA的部分内容作为例子。

ARM7

XDMA BAR设置

勾选PCIe to AXI Lite Master Interface,默认选择1MB的空间大小;通过这个选项,在上位机的配合下,就可以通过PCIE向FPGA进行读写寄存器的操作。

这里选择AXI4-Lite协议的内容自然是因为AXI4-Lite协议适合在读写寄存器的模式下使用。原因主要有:

1.相对于AXI4,AXI4-Stream来说,控制信号少了许多,控制逻辑简单

2.读写寄存器操作数据量小,每次操作只会传输一次数据,AXI4,AXI4-Stream不适合这种模式,AXI4-Lite协议正适合。

这些特性非常适合传输寄存器操作,因为每次读写寄存器值时,传输的数据量很小,不需要灵活多变的总线协议,也不需要太过复杂的控制逻辑就可以实现。

ARM7

AXI4 Lite信号定义

AXI协议中,读写分为5个通道;分别为写地址通道,写数据通道,写响应通道,读地址通道,读数据通道,总线两端分主机和从机,主机向从机读写数据;

GLOBAL信号(ACLK,ARESETn):全局时钟ACLK和复位ARESETn信号不必多说,读写操作都在这两个全局信号的控制下进行。复位信号低有效期间,主机必须保持ARVALID,AWVALID,WVALID低;从机保持RVALID,BVALID低。

握手信号(xVALID,xREADY):AXI协议中使用握手信号保证主从机数据有效;写地址和数据时,VALID信号表示主机可以写入有效的数据,READY信号表示从机做好准备接收数据;读数据和返回写响应时,READY信号表示主机做好准备接收数据,VALID信号表示从机可以输出有效的数据;注意,只有VALID和对应的READY信号都为高时,传输数据才会进行。

读写地址信号(AxADDR,AxPROT):仔细想想,读数据的地址和写数据的地址其实都是主机确定的,所以读写地址也相当于主机向从机写入地址数据。等待握手成功,从机就会接收主机写入的数据并做下一步操作。AWPROT和ARPORT信号指示访问的优先级和安全等级,以及是否为数据访问或指令访问,感觉用处不大;

ARM7

AxPROT协议内容

AXI4协议为了满足多种类型处理器的总线需求,使用AxPROT满足更多更复杂的功能;注意,除非你确定需要传输指令,否则建议AxPORT[2]为低。

写数据信号(WDATA,WSTRB):为了简化数据发送过程,AXI4-Lite总线的数据宽度只能选择32位或64位;为了兼顾更低位宽的数据传输,AXI4-Lite总线使用WSTRB指明传输数据的有效位数,每一位对应WDATA数据的8位数据,所以WSTRB只可能是8或16位。最低位LSB为高,代表WDATA[7:0]数据有效,以此类推;从机可以根据WSTRB丢弃无效的数据位。等待握手成功,从机就会接收主机写入的数据,并与之前接收的写地址数据组合起来,传入后续数据处理模块做处理。

读数据和响应信号(RDATA,xRESP):主机接收读地址数据后,找到地址对应的数据后,与主机完成握手,将数据传输完毕后,RRESP会显示相应的数值代表对应的读取数据情况。

ARM7

xRESP协议内容

AXI4-Lite协议没有EXOKAY的响应。主机接收到RRESP后,能够判断数据是否可靠。'10','11'为从机错误,解码错误;

读响应与写响应不同的是,写响应只会在全部数据写入后,给主机返回一个写响应BRESP,但读响应是不断地伴随着读取数据的输出而更新的。

但AXI4-Lite协议中,一次传输过程只能写入一次数据,读取一次数据,所以两个信号也就没有差别了。

纵观整个协议,最重要的就是信号的握手。

ARM7

握手信号

不管接收方是否做好准备,发送方输出数据有效时,就会拉高VALID信号;也就是说READY信号是否拉高都不会影响VALID信号拉高与否,两者只有同时为高,传输才有效;因此,有三种握手机制,

ARM7

VALID先拉高,而后READY拉高

ARM7

READY拉高,后续VALID拉高

ARM7

同时拉高

5个通道的通信都需要握手之后才能有效地进行。其次就是信号的响应,写响应和读响应,两个信号保证读写的可靠性。最后就是写数据的选通信号WSTRB和读写的AxPORT信号,满足更多的个性化需求。

ARM7

XDMA AXI4-Lite接口

明白AXI4-Lite协议后,就可以根据协议内容,与XDMA进行通信,利用“xdma_rw.exe user read 0 –l 4”等指令,从而实现上位机通过PCIe向FPGA传输寄存器配置的功能。

这里使用了BAR0空间实现了这个功能,那么BAR0在PCIe中是什么,功能如何?该怎么样写后续处理模块,使FPGA可以正确处理XDMA的AXI4-Lite协议。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分