1.APB2框架
APB是一种低功耗、低速度外设总线,主要用于连接外围设备和低速外设,如定时器、GPIO(通用输入输出)、串口控制器等。因其低功耗和相对简单的设计,适合于对性能要求不高的外设连接。
在实际的SOC架构中,APB往往就以以下形式出现:
AHB总线负责核心的CPU、DMA等需要高频高带宽的模块,APB总线负责TIMER、WDT、外设等对速度需求较低、功耗较小的设备。由于不同的定位,APB架构相较AHB来说也简单了不少,最大的不同体现在APB仅有一个master(AHBLite也是),因此省去了对多个master进行仲裁的arbiter模块。APB整体模块的逻辑和信号也更为简单清晰,要做到能将master、slave部分的输入输出清晰地在脑子中构建出来:
图源自:AMBA总线—APB总线协议详解_amba总线apb-CSDN博客
APB的状态机转换图为:
2.APB3,APB4
以上介绍的均为APB2协议,后来又推出了APB3和APB4,在原协议基础上增加了一些信号使得整体更加完善。
2.1APB3
相较APB2,加入了PREADY和PSLVERR。这两个信号很好理解:slave通过PREADY信号直接告诉master现在slave已经READY了,可以接受读写操作,如果此时不READY,那么master就要wait直到PREADY拉高,类似于AHB协议中的HREADY信号。PSLVERR则是提供了Slave反馈给master error response功能,但它只会在传输的最后一拍有效,低电平表示无误,高电平表示有误。
2.2APB4
APB3的基础上,APB4又加入了两个信号:PSTRB、PPORT。PSTRB提供了写数据总线上的稀疏传输功能。每一位PSTRB对应写数据总线上的1byte。32bit信号需要4位PSTRB。也就是说假如0-23位bit都为0,PSTRB就会置为1000.
PPORT是一个3位宽的信号,内容表示如下:
3.question
1.状态机进入setup后下一拍就会进入enable,好像PENABLE信号没有存在的必要?
对于时序电路来说确实如此,PENABLE不是必需,但对于组合电路需要PENABLE指示处于setup状态还是enable状态,类似打拍时的边沿检测。
setup = !penable&&psel
enable = penable &&pesl
2.APB4协议中为什么需要PPORT信号?
对于CPU而言,可以工作在用户模式下也可以工作在特权模式下,可以工作在安全模式或非安全模式下。因为系统现在越来越复杂,一些外设也要求只能在安全模式下或者特权模式下访问。所以PPROT信号主要就是为了表示当前的这个访问是否安全,从而和整个系统的security保持一致。
3.使用中具体该选择哪个APB协议?
APB2没有PREADY,也就是slave必须要及时响应,但是使用APB的模块基本都是慢速设备,有可能无法及时响应,因此APB2被淘汰了,很少使用。
APB3适用于以AHB2,AHB-lite为基础的bus系统,这些系统中没有安全模式选通模式一说,因此没必要使用APB4。
APB4适用于以AHB5,AXI为基础的bus系统中,因为他们都有安全模式,而且AXI是支持write选通的,所以这时候选择APB4比较好。
4.APB时钟频率一般是多少?
APB一般情况下都是对寄存器的访问,或者接触一些慢速的外设SPI,I2C,WDT时才会使用,所以完全没必要使用很快的频率,一般在5MHz到50MHz之间,当然具体还要取决于应用场景。APB的外设一般挂在AHB2APB,或者AXI2APB的bridge上,AHB/AXI的的频率较高,一般情况下,APB时钟频率是AHB/AXI时钟频率的n分频。
具体定义芯片spec时,需要确定外设的带宽,然后再确定APB的时钟频率。外设中传输最快的是全双工的SPI。以32bit总线举例,如果SPI达到32mbps的速度,此时APB时钟频率则不能低过1Mhz,显然要达到这样的时钟频率还是非常容易。
标签:AHB,APB4,总线,master,APB,AMBA,外设 From: https://blog.csdn.net/zangzangbupei/article/details/139727627