1、1 基于 AMBA 的微控制器结构基于 AMBA的微控制器典型地由一个高性能系统中枢总线(AHB 或者 ASB)组成,能够支持外部存储器带宽,包括 CPU片上存储器和其他直接数据存取(DMA)设备。这条总线为上述单元之间大多数的传输提供高带宽接口。在这条高性能总线上也有一个桥接器以连接低带宽的 APB,而在 APB上连接着大多数的系统外设。图 1 基于 AMBA的典型微控制器1.1 AHB 总线架构H b u r s t e q 1M a s t e r 1M a s t e r 2A r b i t e rH g r a n t 1H b u r s t e q 2H g r a n t 2
2、H m a s t e r 3 : 0 A H B d e c o d e rH a d d r 3 1 : 0 H s e l 1H s e l 2H a d d r 1 3 1 : 0 H w d a t a 1 3 1 : 0 H c o n t r o l 1M U X M 2 SH a d d r 2 3 1 : 0 H w d a t a 2 3 1 : 0 H c o n t r o l 2H w d a t a 3 1 : 0 S l a v e 1H a d d r 3 1 : 0 H w d a t a 3 1 : 0 A P B B r i d g eH w d a t
3、a 3 1 : 0 H a d d r 3 1 : 0 H s e l 1H s e l 2H a d d r 3 1 : 0 H r d a t a 1 3 1 : 0 H r d a t a 2 3 1 : 0 H r e a d y 1H r e a d y 2M U X S 2 MH r d a t a 3 1 : 0 H r e s p 1 1 : 0 H r e s p 2 1 : 0 H m a s t e r 2 : 0 H r d a t a 3 1 : 0 H r d a t a 3 1 : 0 H r e a d yH r e s p 1 : 0 图 2 AHB 结构框图
4、AHB系统设计包括以下的成分: AHB主机 总线主机能够通过提供地址和控制信息发起读写操作。任何时候只允许一个总线主机处于有效状态并能使用总线。 AHB从机总线从机在给定的地址空间范围内响应读写操作。总线从机将成功、失败或者等待数据传输的信号返回给有效的主机。 AHB仲裁器总线仲裁器确保每次只有一个总线主机被允许发起数据传输。即使仲裁协议已经固定,任何一种仲裁算法,比如最高优先级或者公平访问都能根据应用要求而得到执行。 地址、写数据总线多路选择器地址、写数据总线多路选择器根据 Hmaster总线仲裁结果进行主机地址、写数据的选通输出。 AHB译码器AHB译码器用来对每次传输进行地址译码并且在传
5、输中包含一个从机选择信号。所有 AHB执行都必须仅要求有一个中央译码器,从而进行从机的选通。 读数据、响应总线多路选择器读数据、响应总线多路选择器根据 Hsel信号从机选通信号,进行读数据和响应信号的选通输出。 APB桥APB桥是 AMBA APB中的唯一总线主机。另外,APB 桥也是 AHB总线中的一个从机。其实现 AHB总线到 APB总线的转换。1.2 本设计支持模式 Hburst中支持单一传输、未定长度增量突发、定长增量突发,不支持回环突发模式。 Hresp不支持 Retry、Split 模式。 仲裁中,不支持未定长增量突发提前终止。 传输数据大小支持字节、半字、字传输。 不支持保护控制
6、 Hprot3:0。 不支持锁定传输 Hlock。1.3 可配置参数表 1 AHB 可配置参数可配置参数 说明ARM_SIZE 传输数据位宽ARM_BURST 传输模式ARM_INCRNUM 非定长突发长度MASTER0_2 Master地址SLAVE0_2 Slave地址PSLAVE0_2 Pslave地址注:Haddr31:28,AHB slave 地址。Haddr27:24,APB slave 地址。2 AMBA AHB 总线分模块2.1 AHB 总线 Wrapper表 2 AHB Master 写 Wrapper接口信号名 方向 作用Clk 输入 提供 AHB时钟Arm_reqx 输入
7、 Master请求总线信号Arm_en 输出 总线授予,请求主机发送地址数据Arm_wdata 输入 提供传输数据Arm_addr 输入 传输地址Arm_write 输入 对/写请求信号注:Arm_addr 和 Arm_data相位相同。表 3 AHB Slave Wrapper 接口信号名 方向 作用Ram_addr 输出 Slave与外部的地址Ram_wdata 输出 Slave与外部的写数据Ram_write 输出 Slave与外部的写使能Ram_read 输出 Slave与外部的读使能Ram_rdata 输入 Slave与外部的读数据注:Ram_addr 和 Ram_wdata相位相同
8、。Ram_rdata 晚于 Ram_addr一个时钟周期。2.2 AHB 主机典型的一个 AMBA系统设计者应该使用预先设计的总线主机因此就不需要关注总线主机接口的细节。图 3 AHB 主机接口图 4 AHB 主机传输时序AHB主机状态跳转流程: 主机模块设计中,主要包括以下几个状态:空闲 Idle,总线请求 Req,非连续传输 Nonseq,连续传输 Seq,非定长突发 Nonfix。 主机在 Req状态向 Arbiter进行总线请求,在收到 Arbiter的Hgrantx信号,且当前 Hready为高时跳转到 Nonseq进行 Single数据传输; 在 Nonseq状态下判断 Burst
9、模式,如为定长突发,跳转至 Seq,若为非定长突发,跳转至 Nonfix; Seq下进行突发长度计数,计够则跳转 Idle,Seq 下地址输出对Hready进行判断,当采样到 Hready为高时,进行地址的自加,在 Seq下不需进行总线请求; Nonseq下进行非定长突发传输,Nonseq 下地址的自加需要判断Hready和 Hgrantx_reg需要一直进行总线请求。注:AHB 总线上地址和数据遵从流水线传输,数据晚于地址一个时钟周期。在地址输出之后的一个周期,如果 Hready为高,则进行数据的输出。注:在对 APB bridge进行读操作时,因为 Haddr有效后第二个时钟才会有数据输出
10、,和 AHB下第一个时钟输出数据不一致,故需要特别考虑。注:在突发模式下进行计数时,应在 Hready为高时进行计数加 1.注:在状态跳转中需要判断 Hready信号,因为总线上地址和数据的跳变需要在 Hready为高时才能进行。 传输类型 Htrans1:0实例图 5 传输类型 Htrans1:0实例 突发操作 Hburst2:0图 6 四拍增量突发图 7 未定长度的突发图中表示两个突发:两个传输在地址 0x20处开始,半字传输地址增加为 2;三个字传输在地址 0x5C,字传输地址增加为 4。 从机可以通过 Hready信号可以延长数据。当该信号为低时导致在传输中插入等待状态同时允许从机有额
11、外的时间提供或者采样数据。 在传输中从机通过响应信号来表示状态,Hresp1:0:OKAY: OKAY响应用来表示传输进展正常且当 Hready变高时表示传输成功完成。ERROR: ERROR响应表示一个传输错误并且传输失败。 传输大小 Hsize2:0传输大小被用来和 Hburst2:0信号一起决定回环突发的地址边界。 地址译码从机只能在 Hready信号为高时采样地址和控制信号以及 Hselx,Hselx 为高表示当前传输已经完成。能够分配给单个从机的最小地址空间是 1KB,所有总线主机必须被设计为不能执行超过 1KB地址边界的增量传输,因此确保了一个突发决不能超过地址译码的边界。图 8 地址译码2.3 AHB 从机从机使用一个来自译码器的 Hselx选择信号以确认何时响应总线主机。所有传输要求的其他信号,例如地址和控制信息,将有总线主机产生。图 9 AHB 从机接口