APB总线

AMBA AHB用于高性能、高时钟频率的系统模块;AMBA APB则用于低功耗外设

一般的系统会选择AHB/ASB+APB的总线架构,下图是一个典型的AMBA系统 :

用下图所示状态图可以表示APB总线传输过程中的状态转换关系:

状态说明:

 

IDLE :空闲状态,总线大部分时间处于此状态;

SETUP :对应外设的psel信号被断言,表明对应外设即将有传输要求,总线进入SETUP状态。总线在SETUP状态保持一个周期,并总是在下一个时钟上升沿进入ENABLE状态;

ENABLE :penable信号被断言,地址、写、选择信号在SETUP进入ENABLE过程中保持不变。ENABLE状态持续一个周期,如果之后没有进一步的传输要求,总线返回到IDLE。如果紧跟另一个传输,则进入SETUP状态,进行第2次传输;

写传输 

P代表APB总线定义的信号,主要包括PCLK、PADDR、PWRITE、PWDATA、PSEL、PENABLE等;

PWRITE=1表示写传输; 

如图所示,一次传输过程中,psel保持两个周期不变,且在此期间,paddr、pwrite也保持不变,penable在psel有效的第2个周期有效。为了降低功耗,地址信号和写信号将在传输后不再改变,直到发生下一次传输。协议仅要求使能信号有个规则的跳变,背靠背传输情况下,选择和写信号可能有小跳变。

写逻辑推荐写法:

assign wr = psel & pwrite & (penable);
always @(posedge pclk or negege present)
begin
    if(!presetn)
    begin
        REG_A <= 32’h0;
    end
    else if(wr & paddr = REG_A_ID)
    begin
        REG_A <= pwdata;
    End
end

读传输 

PWRITE=0表示读传输; 

读传输时各信号的时序和写时一样,在读传输中,从机必须在ENABLE周期提供数据,数据在ENABLE末尾的时钟上升沿被采样;

assign rd = psel & (~pwrite) & (~penable) ;
always @(*)
begin
    if(rd)            //setup 
    begin
        case(paddr)
        REG_A_ID    : prdatanxt = REG_A;
        REG_B_ID    : prdatanxt = REG_B;
        ……
        default        : prdatanxt = 32’h0;
        endcase
    end
    else
    begin
        prdatanxt = 32’h0;
    end
end
always @(posedge pclk or negege present)
begin
    if(!presetn)
    begin
        prdata <= 32’h0;
    end
    else    begin
        prdata <=prdatanxt;
    End
end

 

### APB总线协议及芯片设计中的应用 APB(Advanced Peripheral Bus)是AMBA(Advanced Microcontroller Bus Architecture)的一部分,主要用于低速外设的连接。其设计目标是简化低功耗、低性能需求的外设接口[^1]。 #### 1. APB总线的基本概念 APB是一种单主设备(Single Master)总线结构,其中唯一的主设备是APB桥(APB Bridge)。APB桥负责将来自高速总线(如AHB或AXI)的信号转换为适合低速外设使用的信号格式[^1]。由于APB总线的设计目标是支持低速外设,因此它不需要复杂的仲裁机制和高性能传输能力。 #### 2. APB总线的工作原理 APB总线的工作基于一个简单的读写协议,主要包括以下几个阶段: - **Setup Phase**:在这一阶段,主设备(APB桥)向从设备发送地址和控制信号。 - **Access Phase**:在这一阶段,数据被传输到从设备(写操作)或从从设备读取数据(读操作)。 APB总线的时序相对简单,通常只需要一个时钟周期完成一次访问。这种设计减少了硬件复杂度,并降低了功耗。 #### 3. APB总线在芯片设计中的应用 在现代SoC(System on Chip)设计中,APB总线广泛用于连接各种低速外设,例如UART、I2C控制器、SPI控制器、GPIO模块等。这些外设通常对带宽要求较低,但需要稳定的接口以确保可靠通信[^1]。 通过使用APB总线,SoC设计可以显著降低系统复杂性,同时优化功耗。此外,由于APB总线的架构简单,它还可以减少设计和验证的时间成本。 #### 4. 示例代码:APB总线的简单仿真模型 以下是一个简单的Verilog代码示例,展示如何实现一个基本的APB从设备: ```verilog module apb_slave ( input wire clk, input wire reset_n, input wire [31:0] paddr, input wire penable, input wire psel, input wire pwrite, input wire [31:0] pwdata, output reg [31:0] prdata, output reg pready ); always @(posedge clk or negedge reset_n) begin if (!reset_n) begin pready <= 1'b0; prdata <= 32'h0; end else begin if (psel && !penable) begin pready <= 1'b0; // Setup phase end else if (psel && penable) begin if (pwrite) begin // Write operation // Handle write data based on paddr end else begin // Read operation prdata <= 32'hDEADBEEF; // Example read data end pready <= 1'b1; // Access phase complete end end end endmodule ``` 此代码展示了APB从设备的基本行为,包括地址解码、读写操作以及`pready`信号的生成。 ### 总结 APB总线作为AMBA架构的一部分,以其简单性和低功耗特性,在现代SoC设计中扮演着重要角色。通过APB桥与高速总线的连接,APB总线能够高效地管理低速外设,从而优化系统的整体性能和功耗。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值