AHB协议详细介绍/时序/信号名

AHB学习总结

总线概述

作者:阿锋聊数字

AMBA的AHB总线是一个高性能总线,它可以包括masters, interconnects 和 slaves 。

它主要支持:

  1. 突发传输
  2. 单时钟边沿操作
  3. 非三态的
  4. 数据位宽可配置,64, 128, 256, 512, 和 1024 bits

多数的AHB Slave设备包括,memory设备、外部memory接口和高性能外设。如果你想连接低速设备,可以考虑使用低速总线,例如APB总线。

AHB总线还支持多Master的设计,你可以使用interconnect组件连接多个主,interconnect组件提供了仲裁器和路由机制。

​ 下图举例了一个一主三从的互联结构,图中未展示所有信号。

在这里插入图片描述

Master

在这里插入图片描述

Slave

在这里插入图片描述

信号描述

传输

基本传输

带读写等待的传输,下图中master 发起的

AHB(Advanced High-performance Bus)协议是AMBA总线架构中的一部分,专为高性能、高带宽系统设计。其时序特性是理解其工作原理和优化系统性能的关键。 ### AHB协议时序特性 #### 1. 传输阶段 AHB协议的传输分为两个主要阶段:地址阶段(Address Phase)和数据阶段(Data Phase)。地址阶段用于传输地址和控制信号,数据阶段则用于传输实际数据。地址阶段的信号包括HADDR(地址信号)、HWRITE(传输方向)、HTRANS(传输类型)等,而数据阶段则包括HWDATA(写数据)或HRDATA(读数据)以及HWSTRB(写选通信号)等[^3]。 在地址阶段,Master(主设备)会在一个时钟周期内发出地址和控制信号,包括传输类型(HTRANS)和传输方向(HWRITE)。如果Slave(从设备)需要更多时间来处理该传输,可以通过HREADYOUT信号拉低以插入等待状态,从而延长数据阶段的开始时间。在此期间,Master的传输类型和地址信号不能随意更改,只能在特定条件下进行调整[^4]。 #### 2. 传输类型(HTRANS) HTRANS信号用于指示当前传输的类型,它是一个2位信号,包含以下几种类型: - **IDLE**:表示总线处于空闲状态,不进行任何有效传输。 - **BUSY**:表示当前传输正在进行,但尚未准备好下一个传输。 - **NONSEQUENTIAL**:表示当前传输是独立的,不与之前的传输相关。 - **SEQUENTIAL**:表示当前传输是上一次传输的延续,通常用于突发传输(Burst Transfer)。 在突发传输中,SEQUENTIAL类型的传输用于连续访问多个地址的数据,从而提高传输效率。这种模式在访问连续存储区域(如缓存或内存块)时特别有用。 #### 3. 等待状态(HREADYOUT) HREADYOUT信号由Slave发出,用于指示当前传输是否已完成。如果Slave无法在当前时钟周期内完成数据传输,它可以将HREADYOUT拉低,表示需要插入等待状态。此时,Master必须保持地址和控制信号不变,直到HREADYOUT被拉高,表示Slave已经准备好进行数据传输。 等待状态的引入使得AHB协议能够适应不同速度的Slave设备,从而保证系统的稳定性。同时,它也增加了传输的延迟,因此在设计系统时需要权衡Slave的响应速度与整体性能。 #### 4. 数据阶段 在数据阶段,Master和Slave之间进行数据交换。对于写操作,数据通过HWDATA信号传输,而HWSTRB信号用于指示哪些字节是有效的。例如,如果HWDATA为32位宽,则HWSTRB为4位,每一位对应一个字节的有效性。 对于读操作,数据通过HRDATA信号传输。与写操作类似,读操作也需要HREADYOUT信号来控制传输的完成时间。如果Slave需要更多时间来准备读取数据,它可以拉低HREADYOUT以插入等待状态。 #### 5. 突发传输(Burst Transfer) 突发传输是AHB协议的一个重要特性,允许在一个传输周期内连续访问多个地址的数据。突发传输通常使用SEQUENTIAL类型的HTRANS信号,表示当前传输是上一次传输的延续。突发传输可以显著提高数据传输的效率,特别是在访问连续存储区域时。 突发传输的长度可以是固定长度(如4拍、8拍等)或可变长度,具体取决于Slave的支持能力。在突发传输过程中,Master必须确保地址的连续性,并且在每次传输中保持传输方向不变。 #### 6. 时钟同步 AHB协议是完全同步的,所有的信号传输都依赖于系统时钟。地址阶段和数据阶段的信号都必须在时钟的上升沿进行采样,确保信号的稳定性和可靠性。这种同步机制简化了时序设计,但也要求所有设备都必须严格遵守时钟周期的限制。 ### 示例代码:AHB协议的基本时序模拟 以下是一个简单的AHB协议时序模拟代码,展示了地址阶段和数据阶段的基本流程: ```verilog module ahb_sequential_transfer( input HCLK, input HRESETn, output reg [31:0] HADDR, output reg HWRITE, output reg [1:0] HTRANS, output reg [31:0] HWDATA, input HREADYOUT, output reg HSEL ); always @(posedge HCLK or negedge HRESETn) begin if (!HRESETn) begin HADDR <= 32'h0; HWRITE <= 1'b0; HTRANS <= 2'b00; // IDLE HWDATA <= 32'h0; HSEL <= 1'b0; end else begin case (HTRANS) 2'b00: begin // IDLE HSEL <= 1'b1; HADDR <= 32'h1000_0000; HWRITE <= 1'b1; HTRANS <= 2'b11; // SEQUENTIAL HWDATA <= 32'hDEAD_BEEF; end 2'b11: begin // SEQUENTIAL if (HREADYOUT) begin HADDR <= HADDR + 4; HWDATA <= HWDATA + 1; end end default: begin HTRANS <= 2'b00; // IDLE end endcase end end endmodule ``` 这段Verilog代码模拟了一个简单的AHB协议传输过程,展示了如何从IDLE状态进入SEQUENTIAL状态,并在每个时钟周期内更新地址和数据。当HREADYOUT信号为高电平时,表示Slave已经准备好进行下一次传输,地址和数据会被更新;否则,地址和数据保持不变,直到HREADYOUT变为高电平。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值