首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

APB总线说明

APB总线说明

APB属于AMBA 3 协议系列,它提供了一个低功耗的接口,并降低了接口的复杂性,APB接口用在低宽带和不需要高性能的外围设备上。APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB外围设备的设计流程,每个传输至少耗用两个周期。

一、接口时序说明:

1、写传输的无等待状态:

2、写传输的等待状态:

3、下面用 代码的testbench来描述下APB_WRITE这个场景:
task apb_write ( input [21:0 ] addr, input [32-1:0] data );

repeat (10) @(posedge apb_clk);

@(posedge apb_clk);

apb_PWRITE = 1`b1 ;

apb_PADDR = addr ;

apb_PWDATA = data ;

apb_PSEL = 1`b1 ;

apb_PENABLE = 1`b0 ;

@(posedge apb_clk);

apb_PENABLE = 1`b1 ;

while ( (apb_PREADY == 1’b0) && (clk_cnt_wr != 4’hf)) begin

@(posedge apb_clk);

clk_cnt_wr = clk_cnt_wr + 1 ;

end

clk_cnt_wr = 0 ;

@(posedge apb_clk);

apb_PENABLE = 1`b0 ;

endtask

4、读传输的无等待状态:

5、读传输的有等待状态:

6、下面用 代码的testbench来描述下APB_READ这个场景:

task apb_read ( input [21:0 ] addr, ouput [32-1:0] data );

repeat (10) @(posedge apb_clk);

@(posedge apb_clk);

apb_PWRITE = 1`b0 ;

apb_PADDR = addr ;

apb_PSEL = 1`b1 ;

apb_PENABLE = 1`b0 ;

@(posedge apb_clk);

apb_PENABLE = 1`b1 ;

while ( (apb_PREADY == 1’b0) && (clk_cnt_rd != 4’hf)) begin

@(posedge apb_clk);

clk_cnt_rd = clk_cnt_rd + 1 ;

end

clk_cnt_rd = 0 ;

data = apb_PRDATA ;

apb_PSEL = 1’b0 ;

apb_PENABLE = 1`b0 ;

endtask
返回列表