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

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值