AHB 总线协议(1)

 

AHB Feature

时序传输Feature:

最简单的是一次无等待的简单传输。在第一个HCLK的时钟周期,Master释放了address(HADDR)和control信号,这里的control信号指的是读或者写。紧接着在第二个时钟边沿到来之前,Master将地址和控制信号发出,在边沿时刻,Slave采样(sample)了address和control信号。如果control是一个read信号,那么slave需要在下一个上升沿到来之前,将Master访问地址的data写入到HRDATA上。如果control是一个write信号,那么slave需要在下一个上升沿到来时,采样data。读写的前提都是HREADY信号为1,即Slave已经处于ready状态。

但很多情况下slave无法在一个clk内做出反应,就可以将HREADY延时拉高,等两个周期。HREADY被拉高的同时,就意味着slave需要将数据写出到HRDATA上。

Slave shouldn't insert more than 16 wait cycles!!!

在上面简单的传输模型中,发送或者读取一组数据至少要两个clk,这样的效率是比较低的。在实际的AHB的传输中使用了pipeline(流水线)的技术来提高传输效率

 

和简单模型一样,第一拍写address,第二拍读/写数据。不同点在于在第二拍读写数据的同时,Master将下次要读/写的地址写在了HADDR上,也就意味着在每个clk到来时,Master需要读/写上次地址的数据,并且把下次要读/写数据的地址写出。slave也类似,也需要在一个周期内都或者写上次地址的数据,并且读取下次即将读写的地址。如果slave不需要wait等待的话,那么就能达到每个cycle都读/写一组数据,等价于一拍一个数。   

在这种传输模式下,还有一个问题,就是等待时间可能很久,这也会降低传输的效率。

下面介绍Burst transfer

Burst transfer由HBURST信号来控制,Burst 传输有几种模式:

signle transfer 就是我们前面所提到的,单个地址对应的单个data。

INCR incrementing transfer with unspecified length。就是未指定长度的增量传输,没有设定具体要传输的总长度,在传输时地址是自动增加的模式,INCR不能传输超过1kbyte。

4/8/16-beat 连续传输 4/8/16拍的模式

Slave在已知传输模式的情况下,就可以提前准备数据,减少等待的时间,提高传输效率。

在传输过程中,对于slave没有准备好数据时,可以通过拉低HREADY来告知Master自己的状态,同样当Mater处于busy状态时,可以通过HTRANS来体现。

HBURST和HTRANS都由Master来控制,Master必须保证两者的一致

HADDR,HTRANS,HWRITE,HSIZE,HBURST,HWDATA由Master控制

HRDATA,HRESP由Slave控制

HSELx由decoder产生,用于片选

INCR模式中的传输地址加一是由传输数据大小决定的,即HSIZE,当data为half word时,每次增加的地址为2。当data为word时,每次增加的地址为4。

Wrapping模式地址是回环的,当到达地址边界时,就会回退到。定义如下。Wrapping 模式主要用于CPU填充cache

INCR8 Burst 传输:

注意第一个周期为NSEQ

WRAP8 Burst 传输:

Master可以通过控制HTRANS为NONSEQ来开始一次新的burst传输

当需要跨越1k的传输边界时,直接开始一次新的传输就可以继续传输

 

RETRY的传输需要在中间加入IDLE。

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值