APB协议深入解读:psel/penable可以一直拉高?

1. apb传输三个阶段

(1) IDLE:空闲状态(默认),该阶段没有数据传输,psel, penable均为0(默认值)

(2) SETUP:进行传输时,首先进入SETUP状态;psel 信号在此期间拉高;SETUP阶段仅保持一个周期,并在下个周期的上升沿进入ENABLE阶段。

(3) ENABLE:进入ENABLE阶段时(clk上升沿)penable被拉高;在ENABLE阶段里进行数据传输,addresswritepsel wdata 信号必须保持稳定;数据传输完成后,在下个周期的上升沿penable信号拉低,ENABLE阶段结束,并进入下一阶段(IDLESETUP阶段,注* IDLE阶段时psel须拉低,SETUP阶段psel继续为高);ENABLE阶段可保持一个(APB2)或多个周期(APB3,增加了握手信号pready),即penable信号可以拉高一个或多个周期。

2. 读写传输

问题:1. APB读写传输时,psel是否可以一直拉高?

           2. APB读写传输时,penable是否可以一直拉高?

           3. 连续传输数据?(AXI/AHB burst to APB?)

           4. 是否可以在ENABLE阶段进行多次连续传输?(地址/数据/读写可变?)

(1). SETUP阶段开始上升沿addresswrite,和 wdata可以改变,ENABLE阶段这些信号须保持稳定

(2). penabletransfer结束后拉低。(表明penable不能在不同transfer之间一直拉高)

(3). psel 可以在不同transfer之间一直拉高(须在同一slave设备,如连续读写)。跨slave时,psel须与penable同时拉低进入IDLE阶段。

(4). 读传输与写传输基本一致,需要注意的是,slave须在ENABLE阶段提供读数据rdata

以上协议表明:

(1) APB在数据传输时,psel可以一直拉高,如对同一slave的连续读写;而penabletransfer结束后拉低,说明penable不能在不同transfer之间一直拉高。换句话说,APB连续数据传输时,有两种方式:

IDLESETUPENABLEIDLESETUPENABLE。。。

IDLESETUPENABLESETUPENABLE。。。。(psel持续拉高)

(2) 同样地,也不可以在ENABLE阶段进行多次数据传输,因为每次数据传输结束后penable拉低(即使可以,地址/数据等一些信号在ENABLE阶段是要求稳定的,相当于重复操作数据传输,没意义)

3 AHB to APB()

列举一些APB连续数据传输的场景:AHB burst传输转到APB传输

由于AHB是流水线传输,APB传输没有流水线概念,因此AHB需要hready反压AHBmaster以延长传输周期来匹配APB的传输周期。

AHB burst传输的第一笔transferaddr1)不需要hready反压master,因为ABPSETUP阶段就需要准备好addrwdata等信号,所以需要等待AHBaddrwdata准备好才行,而AHB流水线传输的第一笔transfer并没有起到流水作用(第一笔传输的信号需要两个周期才能准备好:地址阶段,数据阶段),因此,APB须在T3 clk开始进入SETUP阶段。

而余下的transfer需要hready反压masterAHB),是由于AHB的流水线传输起作用了,即一个周期可以获得addrwdata信号(如,data2T5时刻获得,而addr2早在T3时刻以获得),而APB需要经过SETUPENABLE两个阶段(如图,2个周期)才能把数据传输出去,因此需要AHBAPB保持传输周期一致,AHB需要hready反压。

很明显,APB连续写的情况下,psel一直拉高,而penable没有一直拉高

4 AHB to APB()

列举一些APB连续数据传输的场景:AHB burst传输转到APB传输

AHB burst 传输转APB传输,与AHB burst 传输基本一致,唯一不同点是读第一笔transfer需要等待一个周期,因为读数据只需要准备地址信号就可以,APBT2时刻就可以采样到addr1的信号,由于APBENABLE阶段把addr1送出去,因此第一笔transfer需要等待一个周期。

5 AHB to APB(读写连续)

1. T1时刻,AHB发送写地址addr1APB要把写传输发送出去需要等待data1才可以,因此APBT3时刻收到AHB发出的data1APBT3时刻有了addr1data1并进入SETUP阶段,在T5时刻APB才将T1时刻发送的写传输执行完毕。

2. APBT5时刻执行完addr1的写传输后并立即执行addr2的读传输,T7时刻APB将读data2传送给AHB master,至此,读传输执行完毕。hready也进行了相对应的反压。

3. APBpselT7~T8时刻拉低是由于APB需要等待一个周期,在T8时刻才能采样到addr3的写数据data3,并进入SETUP阶段。(需要注意的是,协议中介绍,SETUP阶段只保持一个周期,就进入ENABLE阶段)

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值