AHB-APB总线协议
文章目录
一、AHB-APB总线介绍
AHB(Advanced High-performance Bus)高速总线,接高速master,APB(Advanced Peripheral Bus)外设总线,用来接低速slave,一个master可以有多个slave,AHB和APB之间通过一个AHB2APB桥转接。AHB总线强大之处在于它可以将微控制器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线控制器,以及各种AHB接口的控制器等连接起来构成一个独立的完整SOC系统。
二、AHB总线设备
AHB主要有四个模块:主设备AHB master、从设备AHB slave、仲裁器arbiter、译码器decoder
AHB与APB通过AHB2APB桥进行信号传输,AHB总线互联如下图
1、AHB主设备(master)
初始化一次读/写操作
在同一时刻只能允许一个主设备使用总线
可接多个外设如DMA、DSP、CPU、片上RAM等
2、AHB从设备(slave)
响应一次读/写操作
通过地址映射来选择使用哪一个从设备,且仅有选中的从设备响应地址/控制信号
接外部存储器控制器、APB桥、UART接口
3、AHB仲裁器(arbiter)
允许某一个主设备控制总线
4、AHB译码器(decoder)
通过地址译码来决定选择哪一个从设备
5、AHB2APB桥(bridge)
可以锁存所有地址、数据、控制信号
通过二级译码来产生APB从设备选择信号
三、基本AHB信号及传输过程
1、AHB接口信号
AHB接口如下图:
HCLK:总线时钟
HRESETn:总线复位,低电平有效
HADDR[31:0]:32位系统地址总线
HWDATA[31:0]:写数据总线,从主设备到从设备
HRDATA[31:0]:读数据总线,从从设备到主设备
HTRANS[1:0]:指出当前传输类型
HSIZE[2:0]:指出传输大小
HBURST[2:0]:指出传输burst类型
HRESP[1:0]:从设备发给主设备的总线传输状态
HREADY:为1从设备指出传输结束,为0从设备需延长传输周期
HSELx:选择从设备
2、APB接口信号
3、AHB 仲裁器信号
4、地址译码
·由地址译码器来提供选择信号
·且一个从设备应至少占用1kb存储空间
·在从设备中需要一个额外的缺省从设备来映射其他的存储地址
地址译码框图如下:
5、传输过程
传输类型由HTRANS信号指出,分四种类型:
IDLE、BUSY、NONSEQ、SEQ
IDLE:主设备占用总线,但没进行传输,两次burst传输中间主设备可发IDLE
BUSY:主设备占用总线,但在burst传输过程中还没有准备好下一次传输,一次burst传输中间主设备可发BUSY
NOSEQ:表明一次单个数据的传输或一次burst传输的第一个数据,地址和控制信号与上一次传输无关
SEQ:表面burst传输下来的数据,地址和上一次传输地址相关
AHB在传输过程中分两个传输阶段,第一个阶段为地址周期(AD),第二个阶段为数据周期(DP)。地址周期只有一个有效周期,数据周期由HBURST信号决定需要几个有效周期。传输过程中先传输有效地址周期,后传输有效数据周期。AHB协议后一次突发传输必须在前次传输完成才能进行。
附:总线协议实现(AHB_Lite)
这里放一个笔者实现的AHB_Lite总线协议,设计实现请参考文档:AHB_Lite总线协议及实现
链接: https://blog.csdn.net/yueqiu693/article/details/119849052.