AHB

AHB bus上面 一次完整的transfer可以分为两个阶段:

address phase 传送 address、control signal

data phase 传送 write/read data、response signal

 

在T1上升沿,Master给出了address和control

在T2上升沿,如果是写操作,Slave采样address和control,即从主设备写到从设备,体现为HWDATA上出现数据

在T3上升沿,如果是读操作,Master采样data,即从从设备读到主设备,体现将HRDATA上的数据送给Master

 

         T1       T2       T3

 

如果向从设备写数据的时候发现Slave没有准备好怎么办?

第一个时钟上升沿,主设备给出了address和control

第二个时钟上升沿,?把数据发送到HWDATA

第三个时钟上升沿,?发现HREADY为低,于是Master知道此时Slave是busy的,于是继续在HWDATA上面发送data

第四个时钟上升沿,HREADY依然为低,继续发送DATA

第五个时钟上升沿,HREADY为高,该写入从设备的就写入。同时对于HRDATA上的数据,该主设备读走就读走。

 

一拍数据一拍地址这样比较低效率。

 

 一次transfer需要两个phase,为了增加bus的性能,引入流水线:

slave一直在响应

 

 

 ------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 ------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 AHB上的control signal:

control选择器的输出信号会连接到Slave和Abiter(HTRANS HBURST)

control选择器的输入信号来自Master

 

 

 

 

 

 

传输类型举例 配合HTRANS\HBURST:

 

 

 第一个时钟周期,HTRANS根据协议规定发送NOSEQ

第二个时钟周期,假设HTRANS发送BUSY,表示主设备busy;HWDATA/HRDATA出现第一个地址的数据

第三个时钟周期,假设HTRANS发送SEQ,表示burst传输接下来的数据

因为采样到BUSY的原因,这一时钟周期的HWDATA/HRDATA出现第二个地址的数据是无效的

第四个时钟周期,假设HTRANS发送SEQ,表示burst传输接下来的数据;HWDATA/HRDATA出现第三个地址的数据

第五个时钟周期,假设HTRANS发送SEQ,表示burst传输接下来的数据;HWDATA/HRDATA出现第四个地址的数据

第六个时钟周期,因为在这一周期的时钟上升沿,HREADY为低,主设备知道从设备busy,于是延长HTRANS / HADDR / HWDATA / HRDATA

第七个时钟周期,HWDATA/HRDATA出现第五个地址的数据

 

 

 

 

 

 

 这个针对cpu,通知外设 的行为

 

 

 

 

 

 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

AHB BURST传输

 

 

 除了cpu(cache填充)之外很少有wrapping burst

 

 

 

 

每一个slave都会都到地址,但哪一个会做处理取决于HESL_

 

 

 

 

 

 

 

 

发现retry后 插idle

 

印第安序指大小端,本时序系统使用小印第安序

 

 

 

多个主设备的时候需要仲裁器:

 

 

 

 总线看到HGRANT,所以主设备开始传输地址和数据

 

 

因为HREADY为低所以执行了两拍

 

 

第一个周期主设备M1请求,第三个周期主设备M2请求,第五个时钟个周期HGRANT有个一交接;
但是要允许M1做一个收尾,HREADY下拉,允许M1再多传输一个时钟周期:

 

 

 

 

 

 

 

 

 

 spilt传输不讲 很少遇到

----------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 多层bus结构,好处是不同master对不同slave的访问可以并发进行:

 

 

AHB-Lite是AHB功能的子集,它规定总线上只有一个Master:

就不存在仲裁器,自然也没有hgrant和hmaster,使用类似上面buss的结构生成一个类似矩阵的结构

 

 

 

 

 

 

 

 

posted @ 2020-06-10 10:26  倒头呼呼  阅读(1076)  评论(0编辑  收藏  举报