在之前的文章中我们讲述了AHB协议的分割传输机制,它使得从机可以决定一次传输是否继续进行,以防止 传输的执行将占据大量的时钟周期,有效提高了总线的公平性与效率问题,本文中我们将一次性学习完AHB最后的内容,包括有复位,数据总线的位宽和接口设备等。
一种能提高总线带宽,而不用提高操作频率的方法是使片上总线的数据通道更宽。金属层的增加和大容量片上存储模块(例如嵌入式 DRAM)的使用都是更宽片上总线使用的推动因素。
指定一个固定宽度的总线,将意味着在大多数场合下总线宽度在应用中并不是最佳的。因此允许可变总线宽度的途径已经被采纳。但是,必须确保模块在设计中高移植性。
协议允许 AHB 数据总线可以是 8、16、32、64、128、256、512 或者 1024 位宽。然而,建议使用中最低的总线宽度为 32 位,并且预计最大 256 位宽的总线将适合几乎所有应用。
对读和写传输而言,接收模块都必须从总线上正确的字节通道选择数据。但是,并不要求将数据复制到所有字节通道上。
下图表示了一个原始设计为32位数据总线运行的从机模块是如何轻松的被转换到运行在较宽的 64 位总线上的。这仅需要增加外部逻辑,而不需要修改任何内部设计。因此,该技术也可以用在难以设计的宏单元上。
下图表示了一个在窄总线上实现宽从机的例子。同样,只需要外部逻辑。因此,通过简单的修改,初步的设计或者导入的模块就可以工作在不同宽度的数据总线上了。
在 AMBA 系统中 AHB 总线主机有最复杂的总线接口。典型的一个 AMBA 系统设计者应该使用预先设计的总线主机。因此,就不需要关注总线主机接口的细节。
AMBA 系统中仲裁器的角色是控制哪个主机访问总线。每个总线主机有一个请求(REQUEST)/授予(GRANT)接口连到仲裁器,并且仲裁器使用一个优先权分配方案来决定哪个总线主机是当前请求总线的主机中优先级最高的。
每个主机也可以产生用来表示主机请求独占总线访问的 HLOCKx 信号。优先级方案的细节并没有规定而是由应用决定的。仲裁器使用其他信号(无论是 AMBA的还是非 AMBA 的)来改变使用中的优先级方案都是可取的。
AMBA 系统中译码器被用来执行集中的地址译码功能,通过使它们独立于系统的存储器映射,可以提高外设的移植性。
至此我们就结束了AHB部分的全部内容,本文讲述了AHB的复位,数据总线位宽,包括有如何在宽总线实现窄从设备和如何在窄总线实现宽从设备。最后展现了AHB各类接口设备。当然学习AMBA AHB仅仅通过这一系列的文章是不够的,但是还是希望能够过这个系类帮助刚刚入门的朋友有一个基本的概念,笔者也在不断学习的过程中。