《Multi-layer AHB中BusMatrix的设计》由会员分享,可在线阅读,更多相关《Multi-layer AHB中BusMatrix的设计(5页珍藏版)》请在金锄头文库上搜索。
1、多层次多层次 AHB 总线架构中总线架构中 BusMatrix 的设计和实现的设计和实现董巍,毛志刚,谢憬董巍,毛志刚,谢憬(上海交通大学微电子学院(上海交通大学微电子学院 上海上海 200240)摘要:摘要:本文简要介绍了 BusMatrix 在的多层次 AHB 系统中的作用,详细描述了 BusMatrix 的各个主要功能模块的设计思想,并给出了 RTL 级的具体实现。最后用相关工具对实现出 来的电路进行了性能和面积的评估,根据对结果的分析提出了下一阶段的改进思想。关键字:关键字:BusMatrix,输入模块,译码,输出模块,仲裁Design and Implementation of a
2、BusMatrix in Multi-layer AHBDONG Wei, MAO Zhi-gang,XIE Jing (Shanghai Jiaotong University School of Microelectronics Shanghai 200240)Abstract: In this paper, we present the advantage of BusMartrix in Multi-Layer AHB system. We describe the design of BusMatrix in details and implement the idea in reg
3、ister transfer level. At the last we analyze the circuit with EDA tools. According to the result, we propose the idea of enhanced design of BusMatrix.Key Word: BusMatrix, input module, decode, output module, arbitration1.1.引言引言当今的深亚微米制造工艺使得单片芯 片上可以集成上百亿的晶体管。这种高级 程度使得一个芯片上可以集成很多数量的 功能块,例如处理器,内存,接口和用户
4、 定义逻辑等。随着功能块的增加,不同模 块之间的通信已经成为系统性能的新的瓶 颈2。解决这一瓶颈的最简单的方法是使 用片上总线。然而对很多现存的总线架构 来说,一次只有一对主设备和从设备在发 送和接收数据,通信效率有待提高。本文 设计和实现是 ARM 的 BusMatrix,它是一 种高性能的片上总线。BusMatrix 用在多层 (Multi-Layer)AHB 系统中,通过 BusMatrix 多个主设备可以并行访问多个不 同的从设备。开关确定哪个主设备可以访 问哪个从设备,并安排它们之间的控制信 号和数据信号的通路1。 本文将详细介绍 BusMatrix 实现多个 AHB 主设备与多个
5、AHB 从设备的并行传 输的机制和具体配置。由于不同的系统需 要不同大小的 AHB BusMartrix,根据具体 应用,可以 BusMatrix 进行一定的配置来进行设计。2 2BusMatrix 的设计实现的设计实现我们把 BusMatrix 的功能分为三个部 分实现:输入模块,译码和输出模块4 , 它们在 BusMatrix 的相互关系如图 1 所示。输入输出 译码输出 仲裁输入输出 译码输出 仲裁输入端口输入端口共享 从设备共享 从设备图 1 BusMatrix 设计总体框图下面将对各个部分的设计思想进行详细描述。2.1 输入保持模块的设计输入保持模块的设计输入模块的主要功能是当传输不
6、能立 即到达合适的共享从设备时,保存来自输 入层的地址和控制信息。这是因为在 AHB 协议中地址阶段的持续时间是由从设备控 制的。如果目标共享从设备不可用, BusMatrix 不能延长当前传输的地址阶段, 所以保存相应的信息是必要的。输入模块 的主要框图如图 2 所示。 保持寄存器的输出由 Active 信号控制。 每个输出阶段产生一组 Active 信号,即每 个输入阶段一个 Active 信号。Active 信号 指示从一个给定的输入阶段来的地址/控制 信号正在传输到目标共享从设备3。 当一个传输到达输入模块,Active 有 效时,传输直接到达输出模块;否则将存 储在保持寄存器中。当保
7、持寄存器被装载 或直接通路空闲时,地址/控制信号路径上 的多路选择器选择将保持寄存器。DQENDQLoadRegAddress/control holding registerHSEL HTRANS HADDR HISZE HBUSRT HPROT HMASTELOCKHSEL HTRANSHREADYHREADYOUTHRESPReadyOut RespActiveHeldTranTransBusrtSel Addr Size Write Prot Mastlock图 2 输入模块基本框图HeldTran 用来指示输入模块已有一个 传输准备就绪,或从输入直接到输出,或 从保持寄存器到输出。H
8、eldTran 代表一个 有效的传输,它传输到输出模块,作为仲 裁机制的一根请求线。 输入模块的第二个主要的功能是为输入层产生 HREADYOUT 和 HRESP 信号, 它是这样实现的: 当一个传输已经发送到合适的输出, HREADYOUT 和 HRESP 信号会由输入模 块中对等的信号生成。 当一个传输存储到保持寄存器 HREADYOUT 信号被置为低来迟延这个传 输,HRESP 则指示 OKAY。 当输入模块没有被访问或对一个 IDLE 或 BUSY 传输,根据 AHB 协议6, HREADYOUT 置为高,HRESP 为 OKAY。 输入模块的最后一个功能如图 2 所示, 在输入模块的
9、输出,HTRANS 和 HBURST 路径有两个逻辑块。如果一个固定长度的 突发在完成之前被打断,这两个逻辑块用 来覆盖传输类型信息和突发信息。如果这 个发生了,突发信息被更改来指示 INCR 未定义长度的突发。如果一个约束突发已 经超越约束边界,传输类型信号将由 SEQ 改为 NONSEQ,或 BUSY 改为 IDLE。2.22.2 译码单元的具体实现译码单元的具体实现每一个输入模块都会有一个译码器, 用来确定需要来完成访问的输出3。因为 每个系统的地址映射是不同的,译码器的 主要功能根据要求的不同是可以改变的。 在这个设计中,它将输入的地址总线转化 成输出端口号 AddrOutPort,
10、。图 3 是译码 器的基本框图。 默认情况下,译码器提供给每个输出 端口的 196M 的地址空间, HADDR31:28用来确定需要的输出端口。在译码器中,AddrOutPort 用来显示当 前的地址和控制信号是传到哪个输出端口 的。DataOutPort 是用来指示上一个传输的 数据阶段使用的是哪个输出端口。 AddrOutPort 有两个路由功能。首先, 假定输入 Sel 信号为高,AddrOutPort 用来 确定哪个输出阶段选择信号必须被声明。 一次只有一个输出选择信号 Sel 被声明。 每个输出阶段有一个来自每个输入层的 Sel信号,输出阶段仲裁能够用这个信号来确 定哪个输入阶段必须
11、进行传输。 AddrOutPort 的第二个功能是将合适的 Active 信号送回输入阶段。Active 信号指 示输入端口的地址被传送到共享从设备, 所以这个传输不用在输入阶段保存。DQAddress DecodeReadyOut0 ReadyOut1ReadyOutXResp0 Resp1RespXRdata0 Rdata1RdataXAddrOutPortDataOutPortActive0 Active1ActiveXSel0 Sel1SelXSelActiveAddrReadyOutRespRdata图 3 译码器的主要功能当 HREADY 置为高时,每次地址阶段 结束,传输的数据阶
12、段即启动。这里使用 的 HREADY 而不是 HREADYOUT,因为 在某些情况下 HREADY 为高 HREADYOUT 信号可能为低(例如在保持 寄存器被装载时) ,DataOutPort 必须要进 行更新,只要 HREADY 为高,输出端口号 AddrOutPort 被转移到 DataOutPort 来指示 输出端口需要完成这次传输。 在译码器中 DataOutPort 之后将用来从 合适的输出阶段选择 HREADYOUT,HRESP,和 HRDATA 信 号,并将它们送回输入阶段。 如果一个输入层访问一个共享从设备 随后立即访问另一个从设备, DataOutPort 和 AddrOu
13、tPort 的值是不同的。2.32.3 输出选择模块的实现输出选择模块的实现每个输出模块提供到一个共享从设备 的访问。实际中可能有多个共享从设备连 接至一个输出阶段,但是对 BusMatrix 而言这并不重要,它能够把在同一端口的多 个共享从设备看作一个从设备3。 每个输出模块有两个主要功能: 它包含一个输出仲裁模块来决定哪个 输入阶段对共享从设备进行访问。 它包含一组路由多路选择器。 输出模块主要的多路选择器是地址/控 制信号多路选择器,直接由 AddrInPort 控 制。写数据多路选择器由数据阶段信号 DataInPort 控制。 地址/控制信号多路选择器后面还有一 个多路选择器,当没有
14、输入阶段被选中时, 由 NoPort 标志,所有的地址/控制信号将置 为无效。DQActive0Active1ActiveX1Addr0/Control0Addr0/Control1Addr0/ControlX0HSELM HTRANSM HADDRM HWRITEM HSIZEM HBURSTM HPROTM HMASTLOCKMHWDATAMHREADYMHREADYOUTMWdata0 Wdata1WdataXSelected1ReadyOutSel1Sel0SelXHeldTran0HeldTranXHeldTran1图 4 输出模块的实现策略输出模块的另外两个作用是产生 Active
15、 信号和为共享从设备产生 HREADY 信号。 Active 信号被送回输入模块指示哪个 输入正在与共享从设备通信。在任何时候 只有一个 Active 信号有效。 HREADY 信号在从设备被选中时由从 设备的 HREADYOUT 信号产生,其他情况 下它将被置为高。 输出仲裁的请求信号通过来自输入模 块的 HeldTran 和 Select 信号相与得到的。HeldTran 信号代表有一个传输准备发起, Select 信号代表这个传输的目标是这个特定 的输出阶段。 仲裁过程使用 HeldTran 信号而不是 HTRANS 是非常重要的,因为 HeldTran 信 号也包含了 HREADY 信
16、号在输入层为高。 这个之所以重要如果不这样,一个传输在 输入层上还没开始之前就已经可以与共享 从设备建立连接。 在输出仲裁模块,所有的 Request 信号 组合在一起决定在下个传输使用哪个输入。 仲裁过程有四个步骤: 1 如果 HMASTLOCK 有效,仍然选 择同一个输入。 2 如果 HMASTLOCK 无效,检查所 有不同的请求,从中选择最高优先级的 输入。 3 如果没有输入的访问请求且当前 选择的输入与从设备之间进行 Idle 传 输,也就是说 Sel 信号仍然有效,则仍 然选择同一个输入。 4 如果不属于上面的三种情况,则 NoPort 信号置为有效,表示没有输入 被选择,到从设备的地址/控制信号必 须置为无效状态。DQDQAddress DecodeReq0ReqXReq1HSELMHTRANSMHMASTLOCKNoPortAddrInPort图 5 输出仲裁模块不同的仲裁机制具有不同的系统特性, 即具有不同的访问延迟和总体的系统性能。从设备可以在以下的仲裁机制中转换:Fixed 仲裁:一个端口总是具有