《AXI总线仲裁器的设计与实现》分析了 ARM AMBA3.0片上总线体系中 AXI 协议规范的关键特性,提出一个基于 AXI 协议的总线仲裁器的具体实现方案,并对设计进行了仿真验证,仿真结果表明了设计的正确性。
主要描述了针对 3 个以下主设备和1个从设备的总线仲裁器,具有标准的 AXI总线接口,采用改进的轮询仲裁策略,满足多个设备公平拥有总线使用权的情况。
文章目录
1.1 AXI 总线仲裁器概述
1.2 轮询仲裁方案
轮询方式将总线依次供各处理机使用,需要考虑的是总线有几个通道需要仲裁,几个总线通道是否互相独立?
有限状态机分为idle、1、2、3四个状态,复位时进入idle态。sta=1时通道为master1使用,依此类推;当三个master都没有发出请求时,进入idle态,按照 master发出请求的先后顺序,可以从 idle 直接跳入最先发出请求的状态,如三个 master 同时发出请求,则首先进入状态1;状态1结束时,首先检测master2的请求信号,如master2无请求,则检测master3是否发出请求;与 master1 类似,如当前状态为2,master2利用通道传输完成后, 首先检测master3的请求信号,然后检测 master1的请求信号;另外如某段时间内有且仅有一个master请求占用总线通道,则状态机保持在相应状态,即通道持续为该设备使用。
各个通道相互独立,但是在Slave应该按照先后顺序依次输出。
1.3 模块划分
根据通道独立性, AXI arbiter需要对3个master的五个通道分别进行仲裁, 因此,设计分为5个主要模块,包括写传输的写地址、写数据、写响应三个模块,及读传输的读地址、读数据两个模块。其中,写地址、写数据、读地址三个模块中的有限状态机轮询方案进行设计,写响应和读数据模块可根据 ID 号判断将 slave 发出的数据返回给对应的master。
1.3.1 写地址模块设计
一个MASTER发出awvalid时,接收到awready才允许切换别的MASTER, 共用一个S_AWREADY。
1.3.2 写数据模块设计
与写地址类似,注意顺序。伪代码判断条件如下:
wd1_begin = wvalid1; M1_wd_end = wvalid1&wready1&wlast1;
1.3.3 写响应模块设计
根据 slave 发送的 BID 信号就可以判断将 BRESP 信号传回给哪个 master。不需要状态机。
1.3.4 读通道设计
读地址与写地址类似,读数据与写响应模块类似。
1.4 读数据传输模型
3 个 master 都有传输时,读地址通道的仿真波形。
ar_sta为读地址通道的状态,可以看出值在1,2,3中转换,表示 master1,master2,master3发出的读信息传输经过arbiter轮询仲裁在读地址通道上传输。
参考文档
【1】石蓉,黄秋元,陈慧. AXI总线仲裁器的设计与实现[EB/OL]. 北京:中国科技论文在线 [2011-04-27]. http://www.paper.edu.cn/releasepaper/content/201104-686.
论文下载地址:http://www.paper.edu.cn/releasepaper/downFile/original/NUDGQFyQMRTVMIxeQNgeQeQ