系统级芯片设计的门数越来越高,在很多情况下,系统设计与系统性能受集成到芯片中不同模块之间互连的复杂性所限制。在解决复杂的芯片互连设计中Amba总线得到广泛的应用,新的Amba规范使其成为一种具有接口模块的互连体系,有效地解决芯片复杂的互连设计困难。
在系统级芯片设计中,Amba总线已经得到广泛的应用,常常用在基于ARM处理器内核的应用中。该总线在芯片模块互连中逐渐成熟,将从根本上改变SoC互连设计的方法。
Amba总线2.0规范于1999年出台,该规范引入的先进高性能总线(AHB)是目前Amba实现的主要形式。AHB的关键是对接口和互连均进行定义,目的是在任何工艺条件下实现接口和互连的最大带宽。由于AHB的相互连接之一是采用传统的带有主模块和从模块的共享总线,目前接口已与互连功能分离,这对芯片上模块之间的互连具有重要意义。Amba已不再仅仅是一种总线,而是一种带有接口模块的互连体系。
去年出现的AHB-Lite,定义了一种没有多主总线功能的纯AHB接口子集,这一点对于AHB-Lite很关键。在该规范中只采用了原来AHB的部分内容,主要是最初AHB规范中的仲裁协议。那些仲裁协议与解码器、多路器等互连元件一起简化了系统互连设计。
该规范一直是对外开放的,利用许可条款,设计工程师可以免费开发他们自己的Amba接口,使用AHB-Lite将使设计过程具有很高的可靠性和可测性。AHB-Lite是一种接口定义,允许IP组件的设计工程师使用简单的接口规范,而不用考虑将各组件连接在一起的互连细节(见图1)。
利用AHB-Lite可以建立基本系统,该系统仅有一个带有一个地址源、可以控制并写入数据的主总线模块,这样可以省去多个主从多路器。其结果是没有HBUSREQx输出或HGRANTx输入,即使像最初的AHB接口有这种输入和输出,HBUSREQx将被断开,HGRANTx将连接到高电平。需要的只是OKAY和ERROR响应,并不再支持拆分(split)或重试响应,这意味着主模块也不需要HRESP[1]输入。
唯一保留的仲裁类信号是来自主模块的HLOCK输出。如果主模块有一个HLOCK输出,则需要重新调整时序以产生HMASTLOCK信号。由于主模块可能会向多端口从模块进行传输,此时需要知道访问锁定状态,因此这种锁定信号仍然需要。
到目前为止,大多数的AHB从模块都与AHB-Lite完全兼容。唯一不兼容情况发生在从模块使用拆分或重试响应选项的时候。在这种情况下,在从模块周围加一个标准的预先设计的封套(wrapper)以禁止这些响应选项。
链接策略
AHB和AHB-Lite之间的关键差别在于,不论是主模块还是从模块,后者都可以通过各种互连策略链接,在芯片设计中获得最大带宽。这样,RTL设计工程师就可以将精力放在开发系统拓扑结构和性能以及模块的内容上,而不是总线接口模块的重复开发。
此方法还使用了一组验证工具和测试平台,使得在设计过程中日益重要的模块验证更加容易。
AHB分层结构互连的第一层是简单的点对点链接,需要32位地址总线和一个宽度从8位到1,024位可变的数据总线,把主AHB-Lite模块的输出传输到从AHB-Lite接口模块的输入。
结果证明,嵌入式系统设计的重要部分可以使用这个简单的方法,例如,不用一种充分利用的总线就可以将微处理器或数字信号处理器与存储器子系统链接。在这种链接中,利用AHB-Lite接口也可以用标准的验证与测试工具来加快该部分的设计。
对于大多数的模块只是个单纯的主模块,比如微处理器内核;而有些模块只是一个从模块,比如存储器模块;另外还有一些模块同时具有这两种属性,例如,直接存储器存取(DMA)在被编程时是从模块,但在系统内传输数据时必须是主模块。
这样的模块有两个AHB-Lite接口:一个主接口,用于连接系统总线或其它互连结构;一个从接口,直接连接或者通过总线连接到控制处理器。在传统的总线中使用AHB-Lite时,要求链接一个仲裁模块到控制器以控制各种主模块对总线的访问。虽然仲裁规范是Amba总线规范的一部分,但它使用的算法由RTL设计工程师决定,两个最常用的是“固定优先级”与“循环制”。
其它问题产生在当一个主模块将总线控制交给另外一个主模块时产生错误响应,要明确该出错信息产生在第一个主模块而不是第二个。ARM公司最近发布的Amba设计工具包(ADK)里有通用Amba总线组件模板,可以辅助设计。通过使用诸如ADK中提供的“Bus Master Design”之类的模板,开发人员可以避免处理详细的边角情况。
确保组件的设计满足所有的边角情况只是该过程的一部分,还必须开发出用于检查的所有可能情形的测试条件。
ARM公司的Amba兼容测试平台(ACT)包含了由信号组合而产生的测试条件,比如在设计中可能用不到的总线“允许-重试-错误”信号,但当总线采用了AHB接口的第三方模块或其它模块时,该信号就非常重要。ACT也包括了如在字串的第一个和最后一个传送的错误响应等情况,再次简化测试并确保接口实现符合Amba规范。ACT包括Amba信号协议检测器,但也可以集成非Amba信号,并具有一个独立于HDL的测试平台。
总线上最多可有16个主模块和任意多个从模块,如果从模块数目大于16,则需要再加一个层结构。在开发AHB- AHB桥之类的模块来处理这种大型系统的同时,一种新的分层方法已在开发之中,随着系统级芯片复杂性的增加,这种新方法有望扮演越来越重要的角色。
简化过程
互连体系的第三层为RTL设计工程师提供了发挥空间。在该层中采用了多重逻辑层(multiple logical layer)和预先设计的互连结构来简化设计。AHB的多层版本通过多路器模块网络提供了从任一AHB主模块到AHB从模块的连接,从而不再需要中央仲裁器(如图2所示)。同时还避免了延迟和总线竞争,唯一的竞争发生在两个主模块同时与同一个从模块连接的时候。这与传统的总线结构上的总线竞争完全不同,在传统总线中产生这种竞争会占用几十个时钟周期。
这意味着互连可以被当作另外一个AHB组件,在单个单元中集成了仲裁器、解码器和多路器,大大简化了复杂系统的设计和布局。
Amba设计工具包中以RTL形式提供的互连矩阵能处理具有多达8个主模块和8个单端口从模块,地址和数据总线的带宽为32位。主模块发送出地址,互连矩阵将数据从从模块发送回来。
如图3所示,可将系统进行分割,将需要从主模块进行局部以及全局访问分开。多功能外设,如DMA模块,可以一边连到主模块接口,另外一边连到从模块端口,或者从另外一个主模块直接连接到这个从模块端口,结合点到点与多层方法。
同样地,如图4所示,一个双端口从模块在需要访问所有的主模块单元时,可以使用互连模块的两个从端口,或者直接连接到相关的主模块单元。
这样在门数上需要折衷,在互连矩阵上的两个附加端口需要增加几千个门。在设计中特定的点也获得了很高的带宽,允许系统的时钟频率降低,从而提高效率与可靠性。当前的并行数据总线宽度是32位,由于门预算的原因,其带宽无法增加到64位或128位,甚至更高,必须增加多路器的规模来弥补。这一点非常重要。许多片上总线是从印刷电路板发展而来,其目的是降低器件的引脚数。而在ASIC设计中,两者不再相关,总线带宽仅由门预算决定。
多层AHB实现与AHB-Lite接口源于同一个内部应用,一旦仲裁与总线逻辑在互连中消失,功能模块接口将极大简化,并既适合于点对点链接也适合于连接到互连矩阵。
随着一个互连矩阵的输出变成下一个的输入,这个过程实际上就像一个桥或一系列桥,根据性能要求和门预算来链接系统的不同部分。
因此,作为初期系统级芯片设计“粘结剂”的总线结构正在进化为一种更复杂的、带有可以被简单验证接口的标准组件。这样,RTL设计工程师就可以为获得最佳性能而将精力集中到系统的整个拓扑结构和系统内部关键模块的具体实现上。
作者:Bruce Mathewson
Amba技术专家
Jonathan Morris
Amba行销主管
ARM公司