AMBA总线协议-AHB协议的其他要点

1.提前终止burst传输的两种情况: 

slave error:保持两个周期为idle,这两个周期是不是slave回应error的两个周期??

是的,但是这种情况仅仅存在于遇到error后关闭这个burst传输的情况。

主要分为两类,第一类是slave回应一个非okay状态,比如error、retrty、split,还有一种的互联结构。

slave回应error后是由谁能保证总线使用权的切换,是arbiter吗?还是说mater重新发?

这两种情况都是可以的,对于这种关闭burst传输的情况,需要ahb把回应error的两拍都变为idle。

2.分段传输和重传之间的区别:

(1)retrty需要等时间更久一点(2)对arbiter的行为差异,retry不改变原因优先级,split需要arbiter改变总线使用权,并且优先级也会改变,无论是retry还是split,master采样到后都需要终止该burst传输。

重传的时序图理解**

3.lock传输:

仲裁器允许mater执行lock传输以确保最后一笔传输不会有retry或error响应?

在lock传输的最后一次的地址阶段,master就应该拉低hlock信号;

hlock信号至少在lock传输的地址阶段的至少前一个周期拉高,以便arbiter能够在地址阶段开始时采样到hlock信号;

仲裁器会授予主设备在lock传输周期之后(通过观察hlock信号)的一个额外的周期,保证最后一笔数据的data phase执行完毕才会授予另一个设备;

4.default slave没有定义地址空间的slave,地址1kb对齐?和axi的4kb有什么区别?

仅仅是范围大小的问题,和地址高位译码无关。

5.hprot信号(注意和apb的信号进行对比)

 

 ahb-apb中协议转化:

	assign pprot_nxt[0] =  HPROT[1];  // (0) Normal, (1) Privileged
	assign pprot_nxt[1] = ~HPROT[0];  // (0) Data, (1) Instruction

6.关于error response

error需要多个周期的时候是不是相当于在前面插入hready为低的状态,但是需要保证hresp回应okay??? 

(1)这个error是针对a的error吗?

是的

(2)T1-T2的hready拉低是因为什么?

仅仅是因为slave在接收到a地址后可以拉低hready并且回应okay以保证自己有充分的时间确定是否回应error。

(3)B的hresp第一个周期为什么能回应okay?

总线默认给一个okay

(4)t1-t3之间的htrans怎么给?

根据是否继续这个burst传输,均是seq的话表示需要继续这个burst传输,而对于中断这个burst传输的情况需要error的两拍均给idle(t1-t2阶段可以都是seq);

(5)t4-t5的htrans是不是给noseq?

是的,表示新的传输开始

(6)t3-t5的的地址怎么给?

t3-t4地址无所谓,可以保持,t4-t5根据是否重传可以是新地址也可以是重传地址

(7)t3-t5的hwdata怎么给?

保持不变

注意error操作可以有两种处理情况,无论是error还是retry/split在error的第二拍htrans均为idle。

这种burst打断在ahb中是支持的,但在axi中不支持。

 三种响应的对比:

7.关于arbiter的相关信息:

(1)lock传输中:对于arbiter来说,会在成功授权某个master(对于定长传输的时候是hgrant和hready同时为高,而对于不定长的传输过程中还需要加一个hbusreq信号为高)的下一拍把hmater和hmasterlock信号给出,保证和地址阶段对齐

(2)arbiter在总线切换使用权的时候需要注意:

某一个master的hgrant是在倒数第二个数据的地址信息给到总线上后就能拉低

hmater信号是在最后一个数据的地址信息放到总线上就能变

数据信息正好和下一个burst传输的地址阶段对齐

这样操作保证整体数据都是pipline起来的

(3)几种传输情况:有等待/无等待/切换优先权

 

 仲裁器是通过htrans/hburst确定倒数第二拍的地址阶段,那么他是如何对不定长的数据进行传输切换的呢?

不定长必须要等到数据全部传输完以后才可以进行hgrant等信号的操作。

8.最后一次传输的data phase阶段收到错误响应该如何处理???

9.需要注意hwstrb和pstrb,这两个信号仅仅是在写操作过程中有作用,并且需要注意在ahb2apb转化的过程中如果位宽不是32位需要根据数据位选择正确的hwstrb

 

 

另外需要注意ahb协议中master和slave位宽不一致的情况:

 一个data实际上是有两个消耗周期的

10.SPLIT/RETRY:在SPLIT 响应或RETRY 响应之后的IDLE 传输中,应该在总线上给出什么地址?

其实在这个传输周期中,总线上是什么地址信号并没有什么影响。被选择的不应该有任何行为,并且必须给出零等待的OKAY 响应。

在许多情况下,主设备保持地址信号不变将会更简单,地址信号保持主设备想要进行的下一次传输的地址不变,并只在下一次传输返回那个因为SPLIT 或是RETRY 响应而必须重新进行的传输的地址上。

在一些设计上,主设备可能是在IDLE 传输周期中返回到那个需要重传的地址上,这个当然也是完全可以接受的。

11.slave发给arbiter的HSPLITx 信号只能在给出slave回应SPLIT 响应之后才可以被拉高,不可以同一拍拉高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值