AHB---数据总线

1. 数据总线

为了实现AHB系统,需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位,但这可以根据数据总线宽度进行更改。 数据总线包含以下部分:

  • HWDATA
  • HRDATA
  • Endianness(字节序)

1.1 HWDATA

在写传输期间,master驱动写数据总线。如果传输被延长,则master必须保持HREADY为高时的data valid,直到传输完成。

对于比总线宽度窄的传输,例如在32位总线上的16位传输,master只需要驱动相应的字节通道。slave从正确的字节通道中选择写数据。

1.2 HRDATA

在读传输期间,相应的slave驱动读数据总线。如果slave通过保持HREADY为低来延长读传输,那么slave只需要在传输的最后一个周期提供HREADY为高时的valid data。

对于比总线宽度窄的传输,slave只需要在有效的字节通道上提供valid data。master从正确的字节通道中选择数据。

当传输以OKAY响应完成时,slave需要提供valid data。错误响应(ERROR responses)不需要有效的读数据。

2. 字节序(Endianness)

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

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

  • BE8:字节不变大端序(Byte-invariant big-endian)。一个字节访问(8位)使用的是与相同地址上的小端序访问相同的数据总线位。
  • BE32:字不变大端序(Word-invariant big-endian)。一个字访问(32位)使用的最显著(MS)字节和最不显著(LS)字节与相同地址上的小端序访问相同的数据总线位。

以下一组方程定义了小端序、字节不变大端序和字不变大端序访问所使用的数据位。

方程使用以下变量:

  • 地址(address):传输的地址。
  • 数据总线字节(Data_Bus_Bytes):8位数据总线字节通道的数量。
  • INT(x):x的向下取整整数值。

2.1 小端序

当一个小端序组件访问一个字节时,以下方程显示了使用哪些数据总线位:

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

数据传输在 DATA[(8 × Byte_Lane) + 7 : (8 × Byte_Lane)]

当较大的小端序传输发生时,数据以这样的方式传输:

  • 最低有效(LS)字节传输到传输地址。
  • 递增的字节传输到顺序递增的地址。

2.2 字节不变大端序

当一个字节不变大端序组件访问一个字节时,以下方程显示了使用哪些数据总线位:

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

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

注意:方程与小端序的方程相同。因为大端序和小端序访问对于字节传输是相同的,所以这些传输使用了“字节不变”这个术语。

当较大的字节不变大端序传输发生时,数据以这样的方式传输:

  • 最高有效(MS)字节传输到传输地址。
  • 递减的字节传输到顺序递增的地址。

注意:这是字节不变大端序和小端序组件之间的关键区别。

2.3 字不变大端序

当一个字不变大端序组件访问一个字节时,以下方程显示了使用哪些数据总线位: Address_offset = Address - (INT(Address / Data_Bus_Bytes)) x Data_bus_Bytes 

Word_offset = (INT(Address_offset / 4)) x 4

Byte_offset = Address_offset - Word_offset 

数据传输在 DATA[(8 x (word_offset + 3 - Byte_offset)) + 7 : 8 x (word_offset + 3 - Byte_offset)]

对于32位总线,Word_offset总是0,因此方程简化为:

DATA[(8 x (3 - Byte_offset)) + 7 : 8 x (3 - Byte_offset)]

注意 这表明了字不变大端序和小端序组件之间的一个关键区别。字不变大端序组件传输一个字节量时使用的是与小端序和字节不变大端序组件不同的数据总线位。

对于使用字不变大端序的半字和字传输,数据以这样的方式传输:

  • 最高有效字节传输到传输地址。
  • 递减的字节传输到顺序递增的地址。

对于使用字不变大端序的大于一个字的传输,数据被分割成字大小的块:

  • 最高的字传输到传输地址。
  • 递减的字传输到递增的地址。

32位的数据总线可以扩展用于更宽的数据总线实现。

具有小于数据总线宽度的突发传输的每个突发拍中有不同的有效字节通道。

表6-1和表6-2显示了在小端序或字节不变大端序系统中32位总线上的有效字节通道。在这两种情况下,有效字节通道是相同的,但最高有效字节和最低有效字节的位置不同。

表6-3显示了在字不变大端序系统中32位总线上的有效字节通道。 

2.4 字节不变性

使用字节不变大端序数据结构简化了在单一内存空间中访问混合字节序数据结构的过程。

采用字节不变大端序和小端序意味着,对于数据结构中的任何多字节元素:

  • 无论数据的字节序如何,该元素使用的是相同的连续字节的内存。
  • 字节序决定了字节在内存中的顺序,也就是说,它决定了内存中的第一个字节是元素的最高有效(MS)字节还是最低有效(LS)字节。
  • 任何给定地址的字节传输都会通过相同的数据总线将八位数据传输到相同的地址位置,而不管该字节所属的任何数据元素的字节序如何。

图6-1 展示了一个要求字节不变访问的数据结构示例。在这个示例中,头部字段使用小端序排列,而数据负载使用大端序排列。

在这个结构中,例如,Count 是一个小端序的两字节元素,这意味着它的最低地址是它的最低有效(LS)字节。 使用字节不变性确保了对数据负载进行大端序访问不会破坏小端序元素。

3.数据总线宽度

提高总线带宽的一种方法是增加片上总线的数据路径宽度,而不增加操作频率。增加的金属层和使用大型片上存储块(如嵌入式DRAM)是促进使用更宽片上总线的因素。

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

该协议允许数据总线宽度为8、16、32、64、128、256、512或1024位。然而,建议至少使用32位的总线宽度。对于几乎所有应用来说,256位的最大总线宽度已经足够。

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

3.1 在宽总线上实现窄slave 

图6-2展示了如何将原本设计为使用32位数据总线的slave模块转换为在64位总线上操作。这只需要添加外部逻辑,而不需要任何内部设计更改,因此该技术适用于硬宏单元。

对于输出,当将窄总线转换为更宽的总线时,可以做以下之一:

  • 如图6-2所示,在宽总线的两半复制数据。
  • 使用额外的逻辑确保只有相应的一半总线被更改。这可以减少功耗。

slave只能接受与其自然接口一样宽的传输。如果master尝试进行的传输宽度超出slave支持的范围,那么slave可以使用错误传输响应。

3.2 在窄总线上实现宽slave

通过使用外部逻辑,可以调整预设计或导入的slave以适应更窄的数据总线。图6-3 展示了在窄总线上实现宽slave的方式。

 

3.3 在宽总线上实现master

master可以通过类似的方式修改,以便在比原设计更宽的总线上工作,即通过:

  • 多路复用输入总线。
  • 复制输出总线。

注意 除非在master中包含了某种机制来限制master尝试的传输宽度,否则master不能在比原设计更窄的总线上工作。master决不能尝试传输宽度(由HSIZE指示)比它连接的数据总线宽度更大的传输。

### 回答1: ARM3 AHB-Lite总线协议是一种面向片内的总线协议,主要用于连接处理器和各种外设的高性能总线。以下是关于ARM3 AHB-Lite总线协议的一些详细说明: 1. 总线结构:AHB-Lite总线由多个总线工作主体组成,其中包括主处理器、外设、存储器等。这些主体通过总线连接,并可以进行读取和写入操作。 2. 总线访问:ARM3 AHB-Lite总线采用了基于请求-应答的访问机制。外设和处理器可以发出读写请求,总线控制器处理这些请求并向请求方提供相应的读写信息。 3. 宽度和速度:AHB-Lite总线具有可配置的数据总线宽度,可以从8位到1024位。总线速度可以根据系统需求进行调整,以满足不同的应用场景。 4. 总线优先级:AHB-Lite总线支持不同主体之间的总线优先级。当多个主体同时请求总线时,总线控制器将根据优先级设置来确定哪个请求会被优先服务。 5. 总线提供的功能:AHB-Lite总线协议提供了多种功能,如单次和重复传输、突发传输、保留和释放等。这些功能可以高效地执行数据的读取和写入操作。 6. 错误处理:AHB-Lite总线具有丰富的错误处理机制,可以检测和处理访问时可能出现的错误,如地址错误、传输错误等,保障数据的可靠性。 总的来说,ARM3 AHB-Lite总线协议是一种高性能、灵活可配置的总线协议,适用于各种应用场景。它可以有效地连接处理器和外设,实现数据的读取和写入操作,并提供了丰富的功能和错误处理机制,以满足不同应用需求。 ### 回答2: AHB-Lite总线协议是一种用于系统级集成电路(SoC)设计中的总线协议AHB-Lite在ARM公司的AMBA(高级Microcontroller总线架构)规范中定义,作为AMBA总线系列的一部分,为SoC中的模块之间提供快速、高效的通信机制。 AHB-Lite总线协议具有以下特点: 1. 简化的总线结构:AHB-Lite采用万能主/从模式,即同一个模块可以既作为主设备又作为从设备,简化了总线结构的复杂性。 2. 高效的数据传输:AHB-Lite支持高带宽和低延迟的数据传输,在SoC中提供了高性能的通信机制。 3. 分级优先级:AHB-Lite采用基于优先级的访问控制,可以分配不同的优先级给不同的模块,以确保关键任务的优先执行。 4. 突发传输:AHB-Lite支持突发传输,能够在连续的总线周期内传输一系列数据,提高了数据传输效率。 5. 低功耗操作:AHB-Lite可以通过流水线操作和低功耗模式来减少能量消耗,提高系统的功耗效率。 总之,AHB-Lite总线协议是一种灵活、高效、可靠的总线协议,广泛应用于ARM架构的SoC设计中,为多个模块提供了可靠的通信机制,有助于提高系统的性能和可靠性。 ### 回答3: ARM3 AHB-Lite是一种用于高性能系统-on-chip (SoC)设计的总线协议。该协议由ARM公司开发,用于连接处理器、内存和外设等各种功能单元,并提供高效的数据传输和控制。 AHB-Lite协议采用了面向事务的设计方法,以提供灵活性、可伸缩性和可扩展性。它支持多个主设备和多个从设备,并且能够在这些设备之间进行高效的数据和控制信号传输。 此外,ARM3 AHB-Lite协议还具有以下特点: 1. 性能优化:AHB-Lite协议支持负责解码的硬件逻辑,以最小化主设备的延迟并提高总线效率。此外,该协议还支持存储器和缓存一致性机制,以提供更高的数据传输速度。 2. 灵活性和可伸缩性:AHB-Lite协议允许设计师根据系统的需求添加或移除总线主从设备。它还支持总线宽度的动态调整,以适应不同的设备和数据传输需求。 3. 低功耗设计:AHB-Lite协议通过提供低功耗模式和空闲状态管理来优化能源消耗。它可以根据需要主动控制总线请求和访问,以减少功耗。 总之,ARM3 AHB-Lite总线协议是一种在SoC设计中广泛应用的高性能、灵活和可伸缩的总线协议。它为多个主从设备之间的数据传输和控制提供了一种有效的解决方案,并具有优化性能和功耗的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值