AMBA总线协议(10)——APB

一、前言

        在之前的文章中,我们详细地介绍了AHB的相关内容,在这篇文章里我们会开始APB总线的学习,由于APB总线协议的内容真的非常少(手册才34页,比起那些动辄成百上千页的手册来说真的太友好啦),我们会在这一篇文章中全部讲完。

文章合集:AMBA总线协议(0)——目录与传送门

二、什么是APB总线

         APB 的全称:Advanced Peripheral Bus。
        AMBA 中的 APB 总线主要用在低速且低功率消耗的外设,且可针对外设作功率消耗及复杂接口的优化。
        在 APB 总线中,唯一的主机为 APB bridge(APB桥),其它一些低速和低功率的外设皆为 从机。因此, APB 总线不需要有一个像 AHB 一样的仲裁器及其它复杂的线路,也就是说 APB 总线的整个架构较 AHB 简单许多。
        为了使APB容易被整合进大部分的设计流程中, APB规定所有信号必须在时钟上升沿触发时进行传递。这样的设计方式可改善高速电路的效率,且 EDA 对这种设计方式的处理技术较为成熟,也容易实现,例如在静态时序分析及可测性设计的考虑。全部的数据和信号都在上升沿触发来进行传递的设计方式,在以周期为基底的仿真器中也能有较好的模拟表现;除此之外,一般特定应用集成电路链接库(ASIC library)在上升沿触发的反向器设计通常有较佳的表现,也就是说使用集成电路链接库的设计者将得到较好的电路效能。
        APB还具有如下的优点:   
        (1)在高频操作时性能得到提高;
        (2)性能独立于时钟的占空比;
        (3)静态通过使用单时钟边沿简化了静态时序分析;
        (4)自动测试插件无需特别考虑因素;
        (5)许多特定用途集成电路(ASIC)库有较好的上升沿寄存器选择;
        (6)便于与基于周期的仿真器集成。
        APB 的这些改变也使得它简化了到新的高级高性能总线(AHB)的接口。

三、APB 传输

1、APB 写传输

        APB写传输包括两种类型:无等待状态写传输和有等待状态写传输:

1.1 无等待状态写传输

AMBA总线协议(10)——APB_第1张图片

         在时钟上升沿后,改变地址、数据、写信号和选择信号

        (1)T1周期:写传输开始于地址总线信号 PADDR、写数据信号 PWDATA、访问方向信号 PWRITE 和选择信号 PSEL。这些信号在 PCLK 的上升沿寄存。T1 周期称为写传输的建立周期。

        (2)T2周期:在 PCLK 的上升沿寄存使能信号 PENABLE 和准备信号 PREADY。

        ① 当确认时,使能信号 PENABLE 表示传输访问周期的开始。

        ② 当确认时,准备信号 PREADY 表示在 PCLK 的下一个上升沿从设备可以完成传输。

        (3)地址总线信号 PADDR、写数据信号 PWDATA 和控制信号一直保持有效,直到在 T3周期完成传输后,结束访问周期。

        (4)在输出结束后,使能信号 PENABLE 变成无效。选择信号 PSEL 也变成无效,除非相同的外设立即开始下一个传输,这些信号才重新有效。

1.2 有等待状态写传输

AMBA总线协议(10)——APB_第2张图片

        上图说明了从设备如何使用准备信号 PREADY 扩展传输。在访问周期,当使能信号 PENABLE 为高时,可以通过拉低准备信号 PREADY 来扩展传输。

        下面这些信号保持不变:

        (1)地址信号,PADDR

        (2)访问方向信号,PWRITE 

        (3)选择信号,PSEL

        (4)使能信号,PENABLE

        (5)写数据信号,PWDATA

        (6)写选通信号,PSTRB

        (7)保护类型信号,PPROT

        当使能信号 PENABLE 为低时,准备信号 PREADY 可以为任意值。确保外部器件使用两个固定的周期来使使能信号 PREADY 为高。

注意:建议在传输后不要立即更改地址和写信号,而是保持稳定,直到发生另一次访问。这降低了功耗。

2、APB 读传输

        APB 读传输包括无等待状态读传输和有等待状态读传输:

2.1 无等待状态读传输

AMBA总线协议(10)——APB_第3张图片

        上图显示了无等待状态读传输。图中给出了地址信号 PADDR、访问方向信号 PWRITE、选择信号 PSEL 和使能信号 PENABLE 的。在读传输结束以前,从设备必须主动提供数据。

2.2 有等待状态读传输

        下图展示了PREADY信号如何扩展传输。如果在访问阶段PREADY被驱动为低,则传输被扩展。该协议确保以下内容在其他周期中保持不变:

        (1)地址信号:PADDR

        (2)访问方向信号:PWRITE

        (3)选择信号:PSEL

        (4)使能信号:PENABLE

        (5)保护类型信号:PPROT

AMBA总线协议(10)——APB_第4张图片

3、错误传输 

        在传输过程中,可以使用 PSLVERR 信号表示 APB 传输的错误条件。在读和写的交易过程中,可能发生错误条件。

        在一个 APB 传输中的最后一个周期,当PSEL、PENABLE和PREADY信号都为高时,PSLVERR信号才是有效的。

        当外设接收到一个错误的交易时,外设的状态可能发生改变。当接收到一个错误时,写交易并不意味着没有更新外设内的寄存器;当接收到一个错误时,读交易能够返回无效的数据。对于一个读错误,并不要求外设将数据总线驱动为0 。

3.1 读传输和写传输的错误响应

(1)读传输错误

AMBA总线协议(10)——APB_第5张图片

(2)写传输错误 

AMBA总线协议(10)——APB_第6张图片

 3.2 PSLVERR 映射

(1)从 AXI 到 APB

        将一个 APB 错误映射到 RRESP/BRESP = SLVERR,通过PSLVERR 映射到 RRESP[1] 信号(用于读)和 BRESP[1] 信号(用于写)来实现该映射。

(2)从 AHB 到 APB

        用于读和写,将 PSLVERR 信号映射到 HRESP = SLVERR,通过将 PSLVERR 信号映射到AHB 信号 HRESP[0]来实现该映射。

四、操作状态

AMBA总线协议(10)——APB_第7张图片

 1、IDLE(初始状态)

        表示空闲,这是默认的APB状态。

2、SETUP(建立状态)

        表示建立。当请求传输时,总线进入 SETUP状态,设置选择 PSELx。总线仅在 SETUP 状态停留一个时钟周期,并在下一个时钟周期进入 ACCESS状态。

3、ACCESS(访问状态)

        表示访问,这里多提一句,这是AMBA 3 的协议,在AMBA 2 中这个状态为ENABLE状态,所以如果看到 ENABLE 状态,这是因为使用的是AMBA 2的文档。在ACCESS 状态中使能信号 PENABLE 置为1。在从 SETUP 状态到 ACCESS 状态转变的过程中,地址信号、写信号、选择信号和写数据信号保持不变。是否从 ACCESS 状态退出,由器件的准备信号 PREADY 控制。

(1)如果准备信号 PREADY为低,保持 ACCESS 不变。

(2)如果准备信号 PREADY为高,则退出 ACCESS 状态。如果此时没有其他传输请求,总线返回 IDLE 状态,否则进入 SETUP状态。

五、总结

        在本文中,我们介绍了 AMBA APB 协议,分别介绍了APB传输(读传输,写参数,错误传输),其中读写又可以分别分成有等待状态和无等待状态,最后介绍了APB的操作状态。APB相对于AHB来说会简单很多,但是也是非常有用的。至此我们已经介绍了APB和AHB,接下来还有本系列最后的AXI协议,也是本系列最重要的部分。(毕竟笔者是学FPGA的,前者只是用于Soc,但AXI哪里都有)

你可能感兴趣的:(AMBA总线协议,fpga开发,arm开发,fpga,硬件架构,arm)