AMBA简述
AMBA(Advanced Microcontroller Bus Architecture)是ARM公司推出的一种开放式的总线标准,用于连接处理器、内存和外设模块,构建高性能、低功耗的嵌入式系统。
AMBA包括了多个总线协议,其中包括APB(Advanced Peripheral Bus)、AHB(Advanced High-performance Bus)和AXI(Advanced eXtensible Interface)。这些总线协议提供了不同级别的性能和功能,以满足不同类型的外设连接需求。
AMBA标准为SoC(System-on-Chip)设计提供了灵活性和可扩展性,使得不同厂商开发的处理器、外设和IP核能够在一个统一的系统互连框架中协同工作。通过遵循AMBA标准,设备之间的互连变得更加简单和可靠,同时也提供了一种通用的接口标准,降低了系统集成的复杂性。
除了总线协议之外,AMBA还定义了其他组件,比如AXI互连(AXI Interconnect)、AHB桥接器(AHB Bridge)等,来支持不同设备之间的连接和通信。
总的来说,AMBA作为一种开放式的总线标准,在嵌入式系统的设计和开发中起着非常重要的作用,帮助不同的硬件厂商和开发者更好地实现系统级集成和互连。
APB(Advanced Peripheral Bus)、AHB(Advanced High-performance Bus)和AXI(Advanced eXtensible Interface)是一些常见的总线协议,用于连接处理器核心与外设之间进行数据传输和控制。它们在不同的场景下有着不同的使用情况。
- APB(Advanced Peripheral Bus):
- 使用场景:APB总线通常用于连接相对简单的低带宽外设,如GPIO、、I2C等。这些外设通常具有较低的时钟频率要求和较小的数据传输量。
- AHB(Advanced High-performance Bus):
- 使用场景:AHB总线通常用于连接中等复杂度、中等带宽的外设,如DMA控制器、嵌入式存储器等。AHB总线支持高性能传输,适用于需要更高速数据传输和更复杂控制的外设。
- AXI(Advanced eXtensible Interface):
- 使用场景:AXI总线是最先进且最复杂的总线协议,提供了高性能、高可扩展性和高度灵活性。它广泛应用于大规模集成电路设计和高性能计算系统中。AXI总线适用于连接高带宽、高性能的外设,如图形处理器(GPU)、专用加速器、高速存储控制器等。
总体而言,APB总线适用于简单的低带宽外设,AHB总线适用于中等复杂度的中等带宽外设,而AXI总线则适用于高性能、高带宽的外设。选择合适的总线协议取决于外设的复杂性、带宽要求以及系统的性能需求
APB总线使用例子:
CPU Cluster->AXI->noc->APB->timer
以新思的timer为例,说明下常见的信号:
pclk:APB clock,也被称为系统时钟
presetn:APB reset,总线复位信号用于复位系统和设计软件接口上的总线。异步APB接口域重置。此信号只重置总线接口。DW_apb_timers不包含执行此同步的逻辑,因此必须从外部提供。
penable:用于指示总线上的从设备是否可以接收传输
psel:APB peripheral select.用于指示特定的外设是否被选中或激活。
pwrite:控制信号,用于指示数据传输的方向
pwdata:传输数据的信号线,当进行数据写入操作时,主设备将要写入的数据传输到 "PWDATA" 信号线上,以便传输到外设。外设可以读取这些数据并进行相应的处理。
pprot:用于指示数据传输的保护级别或权限,一般存在这个信号的IP都会有PROT_LEVEL寄存器
pstrb:通常与数据传输相关,用于指示在数据传输中哪些字节是有效的
pready:用于表示外设准备好接受或发送数据的信号
pslverr:APB3从属错误响应信号。当传入的事务没有必要的授权时,信号会发出错误。
AHB总线使用例子:
Cortex->AXI->noc->AXI->AXI2AHB->DMACFG
以新思的dma为例,说明下常见的ahb信号:
hclk:高性能时钟信号,用于同步所有 AHB 总线信号。
hresetn:高性能复位信号,用于对 AHB 总线上的所有设备进行同步复位。
haddr:高性能地址信号,用于指示当前数据传输的目标地址。
hsel:高性能片选信号,用于选择当前数据传输的目标设备。
htrans:高性能传输类型信号,用于指示当前数据传输的类型,例如读取或写入。
hport:高性能保护类型信号,用于指示当前数据传输的保护级别或权限。
hsize:高性能传输大小信号,用于指示当前数据传输的字节大小。
hburst:高性能传输突发信号,用于指示当前数据传输是否为突发传输。
hmastlock:高性能主锁定信号,用于指示当前数据传输是否需要主设备锁定总线。
hready:高性能就绪信号,用于指示当前目标设备是否已准备好进行数据传输。
hrdata:用于传输从目标设备读取的数据的信号
hwdata:用于传输要写入到目标设备的数据的信号
AXI总线使用例子:
Cortex->AXI->dma
以新思的dma为例,说明下常见的AXI信号:
下图为dma作为master interface signal:
aclk:AXI 总线的主时钟信号,用于同步总线上的所有操作
aresetn:复位信号,用于对 AXI 接口进行复位操作
awready:用于指示主设备是否准备好接收写地址信息
arready:用于指示主设备是否准备好接收读地址信息
awlen:表示写地址数据的长度
awaddr:用于传输写操作的地址信息
awburst:用于指示写操作的传输类型或突发传输的模式
awvaild:写操作地址的有效性。当 Aawvaild为高电平时,表示主设备正在发送有效的写操作地址信息