AHB协议翻译(二)

4、总线互联

4.1.互联

互联组件提供系统中主从之间的连接。一主多从系统只需要使用解码器和多路复用器。一个多主系统需要总裁器和从不同主机到适当从机的路由器。这种路由是地址、控制和写入数据信息所必需的。本规范中没有提供用于多主机系统的不同办法的更多细节,例如单层互联或多层互联。

4.2地址译码

地址解码器为总线上的每个从机提供片选信号HSELx。片选信号是高阶地址信号的组合译码。为了避免复杂的译码逻辑,保证高速运行,建议采用简单的地址译码方案。当HREADY为高时,表示当前传输正在完成,从机只能对HSELx、地址和控制信号进行采样。在某些情况下,HSELx拉高但HREADY为低,要等传输完成再改变从机。

可以分配给一个slave的最小地址空间是1kb,并且地址区域的开始和结束必须在1kb的边界上。所有的主机都被设计成不会再1kb的地址边界上进行突发传输。这确保了突发传输不会跨越地址解码边界。。

4.2.1默认从机

如果系统设计不包含一个完全填充的内存映射,那么必须实现一个额外的默认从机,以便在访问不存在的地址位置时提供响应。

如果NONSEQUENTIAL或SEQUENTIAL尝试传输一个不存在的地址位置,由默认从机提供一个error响应。

IDLE或BUSY传输到不存在位置会导致零等待状态OK响应。

4.2.2多从机选择

一个从机允许拥有多个HSEL接口,每个HSEL信号对应高阶位的不同解码。

这允许一个从机拥有多个逻辑选择接口,每个接口在系统地址映射中具有不同的位置。逻辑接口可以分配的最小地址空间为1KB.这种方法不需要从机来支持地址解码来区分逻辑接口。

多个HSELx信号的典型用例是外设,它的主数据路径和控制寄存器位于地址映射中的不同位置。两个位置通过不同HSELx访问,而不需要从机进行地址译码。

4.3读取数据和响应的多路复用器

来自从机的任何响应数据都通过多路复用器传给主机。

如果支持exclusive传输,多路复用器还必须将HEXOKAY信号复用传给主机。

5、从机响应信号

5.1从机传输响应

主机开始传输后,从机控制传输的进行方式,主机在开始后不能取消传输。

从机提供一个响应,来指示访问时的传输状态,传输状态由HRESP信号提供。

HRESP RESPONSE 描述
0 OKAY 传输已成功完成或从机需要额外的周期才能完成请求,HREADYOUT信号指示传输是挂起还是完成。
1 ERROR 传输过程中发生错误,必须将错误情况通知主机,以便主机知道传输是否成功。在第二个周期中拉高HREADYOUT的时,需要双周期响应。

这意味着从机可以通过以下三种情况完成传输

  • 立即完成传输
  • 发出错误响应指示传输失败
  • 插入一个或多个等待周期,以便完成传输。

5.1.1传输完成

HREADYOUT拉高且HRESP为OKAY。

5.1.2传输等待

从机拉低HREADYOUT插入若干等待状态。然后传输以HREADYOUT拉高和HRESP为OKAY结束,以指示传输成功。

注意

一边来说,每个从设备在完成传输前必须有一个预先确定的最大等待状态数,这可以计算出访问总线的最大延迟。

建议从机不要插入超过16个等待状态,以放置任何单个访问锁定总线大量始终周期。但此建议不适合某些设备,比如串行boot ROM,此设备通常仅在系统启动期间访问,如果使用超过16个等待状态,也对系统性能影响忽略不计。

5.1.3错误响应

从机使用ERROR来指示当前传输某种形式的错误。通常这表示保护错误,比如尝试写入只读内存位置。

虽然可以在单个周期内给出OKAY响应,但是ERROR响应需要两个周期。为了启动ERROR响应,从设备要拉高HRESP指示错误,同时拉低HREADYOUT插入一个等待状态。在下一个周期中,HREADYOUT拉高结束传输,HRESP保持ERROR。

ERROR需要两个周期,是为了适应总线的流水线特性;当从机开始发出错误响应时,随后传输的地址已经到达了总线上。两个周期的目的是为了给主机提供足够的时间来取消下一次访问,并在下一次传输开始之间将HTRANS[1:0]驱动为IDLE。

如果从机需要两个以上的周期来提供ERROR,则可以在传输开始时插入额外的等待状态。在此期间HREADY拉低,且HRESP设置为OKAY。

如果从机提供ERROR响应,则主机可以取消突发中的剩余传输。然而,这不是一个严格要求,主设备继续传输突发中的剩余传输也是可以接受的。

6、数据总线

6.1数据总线

实现AHB系统需要单独的读写数据总线。尽管建议的最小数据总线宽度被指定为32位,但也可以按规定进行修改。

6.1.1HWDATA

主机在写传输期间驱动数据总线。如果传输被延长吗,那么主机必须保持数据有效直到传输完成。

对于比总线宽度更窄的传输,例如32位总线上的16位传输,主机只需驱动适当的字节通道,从机从正确的字节通道选取数据。

6.1.2HRDATA

在读操作期间,从机驱动HRDATA。如果从机通过拉低HREADY来扩展传输,则从机只需要在传输的最后一个周期中提供有效数据。

对于窄于总线宽度的传输,从设备只需要指出适当的字节通道,主机从正确的字节通道读取数据。

当传输完成并带有OKAY响应时,从机需要提供有效数据,ERROR响应不需要提供有效的读数据。

6.2字节顺序

AHB支持大端和小端系统,支持两种大端数据存储方法。

AHB5引入了Endian属性来定义支持哪种形式的大端访问

  • BE8:字节不变的大端。字节访问使用与小端访问相同地址相同的数据总线。
  • BE323:字不变的大端。字访问使用与小端法相同的地址和相同最高有效字节和最低有效字节的数据位。

下方方程规定小端、字节不变的大端和字不变的大端使用情况

  • address:传输地址
  • Data_Bus_Bytes:传输的字节数
  • INT(X):x四舍五入后的整数值

6.2.1小端

当小端模式访问一个字节时,以下等式确定使用哪些数据总线位

Byte_Lane = Address - (INT(Address/Data_bus_Bytes))×Data_Bus_Bytes

数据在DATA[(8×Byte_lane)+7:(8×Byte_lane)]

大发生数据量较大的小端传输时

  • 低有效位放在DATA位置
  • 高有效位放在顺序递增的地址

6.2.2字节不变的大端

Byte_Lane = Address –(INT(Address / Data_bus_Bytes)) × Data_Bus_Bytes

数据在DATA[(8×Byte_lane)+7:(8×Byte_lane)]

上述方程与小端传输相同,因为字节传输大端和小端访问是一样的。所以字节不变的大端传输是用于这些情况。

当发生数据量较大的大端传输时

  • 高有效位放在DATA位置
  • 低有效位放在顺序递增的地址

这是字节不变的大端与小端的主要区别

6.2.3字不变的大端

Address_Offset = Address –(INT(Address / Data_Bus_Bytes)) × Data_bus_Bytes

Word_Offset = (INT(Address_Offset / 4)) × 4

Byte_Offset = Address_Offset – Word_Offset

数据放在DATA[(8 × (Word_Offset + 3 – Byte_Offset)) + 7 : 8 × (Word_Offset + 3 – Byte_Offset)]

对于 32 位总线,Word_Offset 将始终为零,因此等式简化为

DATA[(8 × (3 – Byte_Offset)) + 7 : 8 × (3 – Byte_Offset)]

6.2.4字节不变性

字节不变的大端访问模式简化了在单个内存空间中访问混合段数据结构的过程

使用字节不变的大端和小端意味着,对于存储结构中的任何多字节元素

  • 无论数据的字节顺序如何,该元素都使用相同的连续字节内存
  • 字节序决定了这些字节在内存中的顺序,这意味着它决定了内存中的第一个字节是元素的MS还是LS
  • 到给定地址的任何字节传输都将同一数据线上的八位数据传到同一位置,而不管该自己所属于某一数据元素的字节序。

6.3数据总线位宽

在不增加时钟频率的情况下提高总线吞吐率的办法是使片上总线数据路径更宽。

指定固定宽度的总线意味着,在许多情况下,总线的宽度对于应用来说并不是最优解。因此,采用了一种方法,该方法可以实现总线宽度的灵活性,并仍能确保模块在设计之间具有高度可移植性。

该协议允许数据总线为 8、16、32、64、128、256、512 或 1024 位宽。但是,建议使用 32 位的最小总线宽度。 256 位的最大总线宽度足以满足几乎所有应用。

对于读写传输,接收模块必须从总线上正确的字节通道中选择数据。不需要跨所有字节通道复制数据。

6.4.1在宽总线上连接位宽较小的从机

下图展示如何将最初设计的32位从机挂在64位总线上,这只需要添加外部逻辑,而不需要内部修改。

对于输出

  • 32位数据复制一份成为64位
  • 使用额外的逻辑来确保只有适当的一半总线被改变,这会降低功耗。

从机只能接收小于等于其位宽的数据,如果主机尝试传输比从机支持的位宽更大的数据,那么从机可以回复错误响应。

6.4.2在窄总线上实现位宽较大的从机

通过使用外部逻辑,可以使预先设计的从机适应更小位宽的总线。

6.4.3在宽总线上实现主机

主机可以修改为比最初预期更宽的总线上工作,就像从机被修改为在更宽的总线上工作一样。

  • 输入进行多路复用处理
  • 输出进行复制扩展

主机不能在比最初预期更窄的总线上工作,除非主机中包含某种机制来限制主机尝试的传输宽度。主机绝不能尝试传输宽度(由 HSIZE 指示)比它连接的数据总线更宽的传输。

posted @   骑猪上树的少年  阅读(594)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
回到顶部
点击右上角即可分享
微信分享提示

目录导航