哪个网站可以做社工试题,中国核工业第五建设有限公司校招,网站如何管理,创建全国文明城市的意义1. 数据总线
为了实现AHB系统#xff0c;需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位#xff0c;但这可以根据数据总线宽度进行更改。 数据总线包含以下部分#xff1a;
HWDATAHRDATAEndianness#xff08;字节序#xff09;
1.1 HWDATA
在写传输…1. 数据总线
为了实现AHB系统需要独立的读写数据总线。虽然推荐的最小数据总线宽度被指定为32位但这可以根据数据总线宽度进行更改。 数据总线包含以下部分
HWDATAHRDATAEndianness字节序
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_Bytes8位数据总线字节通道的数量。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指示比它连接的数据总线宽度更大的传输。