AMBA总线学习(1)
(1)AMBA总线简介
1)AMBA常用的系统总线:AHB,ASB,APB,AXI总线
(资料图片仅供参考)
AHB:高级高速总线
ASB:高级系统总线
APB:高级外设总线
2)一个Soc和外部的外设不可能每一个外设都和Soc建立一个地址线和数据线
3)总线:可以理解成一种高速公路,Soc只需要定义一下接口,所有的外设都可以使用这条总线接口
4)添加外设的时候不需要和Soc添加地址线和数据线
5)当外设使用总线和Soc传输数据的时候,其对总线在这个时间段有占用期
AHB总线:(高速总线)
(1)最多支持16个总线主设备,AHB接入的都是高速总线。支持突发传输
(2)上升沿触发(电容充电快,上升沿触发的时候建立时间和保持时间好控制)
(3)主机可以有多个设备(CPU、DMA、DSP),但不能同时访问总线
(4)高速存储器、AHBAPB桥是最常见的AHB丛机
APB总线:(慢速总线)
(1)搭载低速外设(UART、SPI、IIC、Timer),接口很简单,不支持突发传输
(2)上升沿触发,原理和AHB总线一致,低功耗,作为AHB总线的二级总线
(3)APB只有丛机(UART、SPI、IIC、Timer),主机都是AHB的桥接器
(2)AHB总线总体结构
1)主机的高4bit数据,反应的AHB主机的ID号,最大支持16个AHB主机
2)使用仲裁器处理不同主机的请求,当某一个主机被授予权重之后,数据选择器选择对应的AHB主机地址和AHB主机数据。选择到的地址与数据,同时传输给所有的AHB从机
3)仲裁器控制数据选择器选择到主机地址HADDR之后,通过HADDR的pages数据,输入给译码器,生成对应的从机选择,S_HSELx信号拉高之后,对应的从机就被选择。
4)即仲裁器控制选择哪一个主机,得到HADDR,又可以从HADDR的数据中,通过译码器得到HSELx控制对应的从机
5)同样,读取数据的时候,HADDR也可以控制读取数据选择器,将对应从机的读取数据读取到主机。
(2)AHB总线信号
全局信号:HCLK,HRESETn
写数据信号:
AHB主机信号
AXI/AHB/APB的总线地址都是32bit,
1)输出给数据选择器
O_HADDR[31:0]:31位的总线地址
O_HWDATA[31:0]:[1023:0]最大
O_HSIZE[2:0]:和AXI作用类似
O_HTRANS[1:0]:不连续,连续,空闲和忙(传输模式)
O_HWRITE:高表示不写数据,低表示读数据
O_HBURST:突发类型,四个/八个/十六个/增量/回环传输
O_HPROT:保护控制
2)从机输入
I_HRDATA[31:0]:[1023:0]最大
I_HRESP[1:0]:传输响应给传输状态提供了附加信息。提供四种不同的响应:OKEY、ERROR、RETRY和SPLIT。
I_HREADY:为高时表示总线上的传输已经完成。在扩展传输时该信号可能会被拉低。
3)和仲裁器交互
O_HBUSREQx:主机发送仲裁请求
O_HLOCKx:主机锁定优先级信号
I_HGRANTx:仲裁器授予输入信号
仲裁器信号
1)和AHB主机交互
I_HBUSREQx:主机发送仲裁请求
I_HLOCKx:主机锁定优先级信号
O_HGRANTx:仲裁器授予输入信号
2)每一个主机输入进来的地址信号与数据信号,选择其中一组输出
I_HADDRx[31:0]:31位的总线地址
I_HWDATAx[31:0]:[1023:0]最大
I_HSIZEx[2:0]:和AXI作用类似
I_HTRANSx[1:0]:不连续,连续,空闲和忙(传输模式)
I_HWRITEx:高表示不写数据,低表示读数据
I_HBURSTx:突发类型,四个/八个/十六个/增量/回环传输
//以下信号输出给从机
O_HADDR:
O_HWDATA:
O_HSIZE[2:0]:
O_HTRANS[1:0]:
O_HWRITE:
O_HBURST:
3)每一个从机输入进来的数据信号和有效信号,选择其中一组输出
I_HRDATAx[31:0]
I_HREADY
I_HRESP[1:0]
O_HRDATAx[31:0]
O_HREADY
O_HRESP[1:0]
4)根据仲裁器内部的仲裁结果,将选中哪一个AHB主机的ID输出
O_HMASTER[3:0]
O_HMASTLOCK
译码器信号
O_HSELx:每个AHB从机都有自己独立的从机选择信号并且用该信号来表示当前传输是否是打算送给选中的从机。该信号是地址总线的简单组合译码。
写地址和写数据由仲裁其控制选中哪一个
AHB从机结构
(3)AHB总线信号传输时序
1)仲裁器授予主机访问总线权力
2)任何访问操作都需要HREADY信号高的时候才能继续操作
3)总线移交时序,总线具体的时序移交需要看HMASTER是否改变。
4)当检测到HGRANT信号改变时,即准备移交总线权,只有当HMASTER改变,总线才移交完成。
5)AHB传输模式:
1,AHB的传输属于先输出地址,再输出数据,输出数据的过程中需要HREADY信号为高电平
主机在HCLK的上升沿之后将地址和控制信号驱动到总线上
然后在时钟的下一个上升沿从机采样地址和控制信息
在从机采样了地址和控制信号后能够开始驱动适当的响应
并且该响应被总线主机在第三个时钟的上升沿采样。
一般来说HREADY信号拉低,其地址信号也不改变,数据滞后地址太久
2,多重数据传输
传输三个无关的地址A,B,C的数据,其中B地址的数据存在等待状态,会造成C的地址扩展
AHB传输数据模式:空闲/忙/非连续/连续
连续传输的地址是和前一个地址有关的/非连续传输和前一个地址无关
地址忙的状态的时候,数据端是不需要传输数据的
AHB突发传输模式:
AMBA总线支持4拍,8拍和16拍的突发传输。
AHB的突发长度不可以超过1KB
AXI4的突发长度不可以超过4KB
四拍回环突发传输,如果单个数据位宽为4字节,那么数据会在16字节处回环
四拍增量突发传输,如果单个数据位宽为4字节,即连续突发16个字节的数据为止
同样的八拍增量突发和回环突发,其地址也是看是否在32字节出回头
下面的增量突发的数据位宽是半字,16bit