on-chip-bus(二):APB总线详解——什么是有等待传输和无等待传输?读操作和写操作的细节差异

1.概述

        APB(Advanced Peripheral Bus,先进外设接口)是AMBA3协议家族的一部分。它提供了一种低成本的接口,在优化最低功耗的同时降低了接口复杂度。由APB Bridge和APB上的从设备两部分组成,主要用于读带宽的外设。

        为了让APB外设易于集成到任何设计流程中,APB规定所有信号必须在时钟上升沿触发时进行传递。

        APB可以与AMBA的AHB与AXI进行接口拓展,可以使用APB来提供对外设的访问。AHB/AXI与APB之间通过Bridge进行连接。

2.APB总线传输

(1)信号描述

(2)APB的状态机

(图片来源:《AMBA3 APB Protocol v1.0 Specification》)

状态说明:

        IDLE:APB的默认状态

        SETUP: 建立状态。当有数据需要进行传输时,就会进入建立状态。在此状态下,选择信号PSELx会在时钟的上升沿被拉高,同时使能信号PENABLE保持低电平。该状态在保持一个时钟周期后,在下一个时钟的上升沿,状态机无条件由此状态跳转至ACCESS状态。

         ACCESS:访问状态。该状态下,使能信号PENABLE被拉高,同时地址信号PADDR、写信号PWRITE以及选择信号PSEL保持稳定。若是有等待传输,则在等待信号PREADY=0时不会开始数据的传输,直到PREADY=1时数据才会开始传输。

(3)写操作

        ①无等待的写传输(Write transfer with no wait states

              

         当时钟上升沿到来时,地址信号PADDR、写信号PWRITE以及选择信号PSEL同时被拉高。数据传输的第一个周期称为建立阶段(setup phase)。下一个时钟的上升沿,使能信号 PENABLE被拉高。此时进入访问阶段(access phase),在此阶段,地址信号、数据和控制信号保持有效。数据的传输在此周期结束时完成。

        使能信号PENABLE在传输结束时拉低。选择信号PSELx也会被拉低,除非同一设备在这笔传输之后又立即有另一笔数据要传输。

        ②有等待的写传输(Write transfer with wait states

 

         与无等待传输不同,加入了PREADY信号。在使能信号PENABLE有效时,若PREADY为低,数据就不会开始传输,直到PREADY被拉高才开始传输。相当于将数据写入的时间延迟了n个周期,n为PREADY为低的周期数。

        写操作时,在某个时钟上升沿时PADDR、PWRITE和PSEL同时被拉高。在这的下一个周期的上升沿,PENABLE也会被拉高。不同的是,无等待传输会在PENABLE被拉高是立即开始传输,而等待传输则需要等到PREADY被拉高后才开始传输。

(4)读操作

        ①无等待的读传输(Read transfer with no wait states

         与无等待的写传输类似,只是在第一个时钟上升沿是PWRITE拉低,表示进行的是读传输。

需要注意的是,slave必须在读传输结束之前提供数据。

        ②有等待的读传输(Read transfer with wait states

 

         同有等待的写传输,PWRITE拉低,不再赘述。注意有一个细节,在进行有等待的写操作的时候,在第一个时钟周期,给出地址PADDR,并且将写信号PWRITE和选择信号PSEL拉高的同时,就要把要写入slave的数据准备好,只是要等到slave的PREADY信号拉高后才会被写入;而在有等待的读操作时,由于是从slave中读出数据,所以当使能信号PENABLE为高的同时,若PREADY为低电平,表示此时的slave还没有准备好将这个数据读出(可能正在进行写入操作),必须等到PREADY为高电平的时候,Data才会给出。如下图所示。

 

         综上,可以看出有等待传输与无等待传输的差别在于是否有从设备发出的PREADY信号来控制数据传输的启动。无等待传输时,一笔数据在两个时钟周期就能传输完毕;而有等待传输时,一笔数据的传输需要额外等待PREADY为0的周期数。

       

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值