AMBA:AXI/AHB/APB学习笔记

AMBA总线:各模块之间的连接

advanced microcontroller bus architecture高级微控制器总线架构
在这里插入图片描述

AHB

Advanced High-performance Bus 高级高性能总线

AHB总线用于高性能,高时钟工作频率模块。AHB在AMBA架构中为系统的高性能运行起到了基石作用。AHB为高性能处理器,片上内存,片外内存提供接口,同时桥接慢速外设。高速总线,高性能,数据传输,
多总线主设备控制器,(最多16个)
burst传输(一串数据,效率更高),分步传输。
支持多种高性能总线主控制器

特性:

a 突发连续传输
b 分步传输
c 支持多个主控制器、单周期内主控制器处理
d 单时钟边沿操作
e 非三态操作
f 支持8bits,16位,32位,64位,128位总线带宽
g 支持字节,半字节和字的传输。
h 二级流水线pipeline操作(一个地址周期,一个数据周期)
i 上升沿触发操作
j 会造成性能瓶颈

APB能干的AHB都能干,但是AHB能干的APB不一定能干。新设计一般用AHB。

AHB总线通过DMA和DSP,允许在总线上存在一个或多个主控制器。虽然APB总线上可以挂接慢速外设,但是也允许在AHB上挂接一些慢速外设作为从设备,不过它们通常还是挂接在APB总线上。

AHB总线通常设计时包含以下几个设备:

组成部分:

a AHB主控制器master:主控制器可以通过地址和控制信息,可以进行初始化,读,写操作。在同一时间,总线上只能有一个主控制器。初始化一次读/写操作(发起人)。
CPU、DMA、DSP、LCDC可以作为master。产生地址、数据,获取读的数据。
b AHB从设备slave:从设备通常是指在其地址空间内,响应主控制器发出的读写控制操作的被动设备。通过操作的成功与否反馈给其主控制器,完成数据的传输控制。每个slave都有地址的map。通过地址映射来选择使用哪个从设备。Slave=HSEL(必要条件)&hready
包括有外部存储器控制器EMI,APB bridge、、

c AHB仲裁器arbiter:仲裁器根据用户的配置,确保在总线上同一时间只允许有一个主控制器拥有总线控制权限。AHB总线上只能有一个仲裁器。在AMBA协议中没有定义仲裁算法(排序)。对master请求做仲裁,选择master行为发送到slave。
Master发送一个request信号给arbiter,arbiter同意会发送一个GNT,才可以使用总线。

d AHB译码器decoder:译码器解析在总线上传输的地址和控制信息。AHB总线上只能有一个译码器。通过地址译码来决定选择哪一个从设备
在这里插入图片描述
HRSETn加n 表示低电平有效。等于0的时候reset,等于1的时候不会reset。
HADDR[31:0] 32位系统地址总线
HWDATA[31:0] 写数据总线,从主设备写到从设备。一次写4个byte。0 4 8 C
HTRANS是指当前传输的状态:NONSEQ(开始新的写或读,和之前的地址无关)、SEQ(和之前的地址连续)、IDLE、BUSY(addr data是无效的)
HWRITE=1是写,=0是read
HSIZE[2:0]是bus width传输的大小,000的时候是8bits,001是16bits,010是32bits
有多少个slave就有多少个HSELx(选中的那个拉高,其他的不会拉高)
HSEL:由AHB decoder通过地址映射给出。相当于查找表
HRESP(slave output)从设备发送给主设备的总线传输状态:OKAY、ERROR、RETRY(不影响master优先级)、SPLIT(arbiter把master的优先级降低)
HREADY 高电平:从设备指出传输结束,低:从设备需延长传输周期。最多等待16个cycle。短时间无法响应就拉低,长时间无法响应发送retry。
HBURST[2:0]共有八种类型。0的话一次只传输一个,可以地址累加的运行,效率更高
=0:SINGLE,=1:INCR地址累加(看hsize是多少,若hsize=2,每次传输4个byte,上一次的传输地址+4;若hsize=0,每次传输1个byte,地址+1),INCR 4 beat指的是累加4次byte该burst结束,INCR 8 beat,INCR 16 beat。Wrapping回环:如果起始地址是倍数,可以整除,和INCR没有区别。如4beat的4byte,16byte=0x10,碰到0x10的倍数就要回弹。
Burst传输不能超过1kb(1x210,10 000 000 000;0x400)的边界。在1k的边界重启一次burst,HTRANS为NONSEQ模式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Retry不影响优先级(轮流的策略)。
在这里插入图片描述
三态0,1,Z
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每个Master都有一个HBUSREQx,有几个Master就有几个HBUSREQ。
HLOCKx直到做完这次传输再放开。
每个HGRANTx对应一个HBUSREQx,如果某一个master发了HBUSRE后,又HGRANT回来了,才可以把总线拿到手,去控制总线。
HMASTER指现在正在操作的是哪一个总线。最多16个master
HMASTLOCK表示同意master发出的HLOCK信号,同意锁定总线,直到传输完成。
HSPLITx的x表示用的哪一个slave,[15:0]16bit表示master。假设x=2,表示slave 2发出,假设[15:0]=2,0…010代表master1,master1来要求slave2响应命令,这次split掉,影响了master1的优先级。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过5个寄存器就能控制DMA。
Dma也可以做master帮助cpu做数据搬移,cpu剩下的时间可以做更复杂的运算。别的IP都是做slave。 地址=base_addr + offset(基地址加偏移)
在这里插入图片描述
在这里插入图片描述
查询模式的工作原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AXI

只需要首地址,传输地址和数据都保持valid和ready同时为高时有效。
为AMBA3.0
ACLK全局时钟信号,ARESETn全局复位信号,低电平有效
五个channel:写地址,写数据,写响应,读地址,读数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
设备可以在ARVALID出现的时候再给出ARREADY信号,也可以先给出ARREADY信号,再等待ARVALID信号。
但是设备必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。
在这里插入图片描述
等待信号AWVALID或WVALID信号有效或者两个信号都有效之后再给出AWREADY/WREADY信号。

读数据必须总是跟在与其数据相关联的地址之后,写响应必须在跟其相关联的写事务的最后出现。

AXI总线介绍:https://max.book118.com/html/2017/0526/109191708.shtm

APB

1.低速总线,低功耗(clock慢了翻转少了),
2.接口简单,
3.在bridge中锁存地址信号和控制信号(缓存一下再转换发出来,转换成APB的master型号发出)
4.适用于多种外设
5.上升沿触发

组成部分:
1.AHB2APB Bridge
可以锁存所有的地址、数据和控制信号。
进行二级译码来产生APB从设备选择信号。
2.APB总线上的所有其他模块都是APB从设备 APB Slave
作为AHB的slave,在APB这端的话做master

E课网:
如果A发出一个Valid,能收到的话B回复ready,将其拉高。不能收到将ready拉低。只有valid和ready同时拉高数据才能有效传输。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
AHB给出一个地址,一级一级往下找。二级译码
在这里插入图片描述
PENABLE比PSEL晚一拍拉高。APB最快每2个cycle才能读/写一个数据。将大范围的地址翻译成小范围的地址,将AHB的时序转换为APB的时序,同时产生PSEL信号,对读的data做一个选择到HRDATA上去。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
HREADY = PSEL & PENABLE
在这里插入图片描述
基于CPU读取APB上外设的寄存器需要3个周期,对于AHB上的slave需要2个周期。
HREADY读就是为低,写就是为高。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CPU接受到中断信号,等有空去看IP的状态寄存器,才能看到是什么请求。作为slave不能直接给cpu写数据,只能写中断让CPU主动读slave
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值