APB总线总结和VIP使用
一、简介
APB(Advanced Peripheral Bus),外围总线。APB属于AMBA总线的一部分,它提供了一个低功耗的接口,并降低了接口的复杂性。主要用于低宽带和不需要高性能的外围设备上。APB的特点:
- APB非流水线结构,所有信号仅与时钟上升沿相关;
- 每个传输至少耗用两个周期;
- 总线的架构不像AHB支持多个主模块,在APB里面唯一的主模块是APB桥;
二、APB信号
信号 | 来源 | 描述 |
---|---|---|
PCLK | 时钟源 | 时钟 |
PRESETn | 系统总线 | 复位。APB复位信号低电平有效。该信号可以直接跟系统总线连接 |
PADDR | APB bridge | 地址。最大可以是32位,由外围总线桥驱动 |
PPROT | APB bridge | 保护类型。分为normal、privileged、secure protecteion |
PSELx | APB bridge | 选择信号 |
PENABLE | APB bridge | 使能信号 |
PWRITE | APB bridge | 读写信号。1写0读 |
PWDATA | APB bridge | 写入的数据。最高可以是32位 |
PSTRB | APB bridge | 写选通信号。只是那个字节为有效数据。PSTRB[n]对应PWDATA[(8n+7):(8n)]。读传输期间写选通信信号不能被激活。 |
PREADY | Slave interface | 准备好信号。Slave设备可以用该信号来扩展APB传输 |
PRDATA | Slave interface | 读取的数据。最高可以是32位 |
PSLVERR | Slave interface | 该信号表明传输失败。 |
三、APB传输
3.1 传输状态图
(1) 系统初始化为IDLE状态,此时没有任何的传输操作;
(2) 当有传输要进行的时候,PSELx=1,PENABLE=0,系统进入SETUP状态,同时在SETUP状态停留一个周期。等待PCLK的下一个上升沿时,进入下一个ENABLE状态;
(3)当系统进入ENABLE状态时,维持在之前SETUP状态的PADDR、PSEL、PWRITE不变,并将PENABLE置为1。同时传输也只会在ENABLE状态维持一个周期,在经过SETUP和ENABLE状态之后完成传输。如果后面没有传输进行,就会进入等待状态;如果有连续的传输,则进入SETUP状态。
3.2 写传输
写传输包含两种传输类型:无等待状态和有等待状态
3.2.1 无等待状态
T1:PADDR、PWDATA、PWRITE和PSELx在时钟上升沿开始改变,该时钟周期称为Setup phase;
T2:PENABLE和PREADY在上升沿使能;
PENABLE表明Access phase传输开始。
3.2.2 等待状态
在Access phase传输期间,当PENABLE为高的时候,传输可以通过将PREADY拉低来扩展传输,在此期间,PADDR、PWRITE、PSEL、PENABLE和PWDATA、PSTRB和PPROT信号保不变。
当PENABLE为低时,PREADY可以是任意值。
注:
建议在传输后不要立即更改地址和写信号,而是保持稳定,知道发生另一次访问。这可以降低功耗。
3.2.3 写数据字节选择
PSTRB[n]对应PWDATA[(8n+7):(8n)],如下图所示:
PSTRB[3:0]每bit对应写数据8bit,高有效;
注意:
在读操作的时候,PSTRB必须全部为0。
3.3 读传输
读传输类型包含两种传输类型:无等待状态和等待状态
3.3.1 无等待状态
3.3.2 等待状态
当PREADY为低的时候,以下信号保持不变:
PADDR、PWRITE、PSEL、PENABLE、PWDATA、PSTRB和PPROT
3.4 错误响应
在APB传输过程中PSLVERR信号表示错误响应。该错误响应可以发生写和读传输。
当PSEL、PENABLE和PREADY全部为高的时候,在APB传输的最后一个周期,PSLVERR信号才会被人误有效。
建议在不需要驱动的情况下,将PSLVERR信号拉低,即在PSEL、PENABLE、PREADY任何一个信号为低的时候,将PSLVERR信号拉低,但是这并不强制。
传输发生错误时,可能改变也可能不改变周围设备的状态。
3.4.1 写传输
3.4.2 读传输
四、APB VIP 安装和使用
4.1 APB VIP安装
Synopsys家APB VIP 安装流程如下:
% cd
% mkdir design_dir
% $DESIGNWATE_HOME/bin/dw_vip_setup -path ./design_dir -e amba_svt/tb_apb_st_uvm_basic_sys -svtb
安装完成之后,文件列表如下:
4.2 VIP的使用
vip安装完成之后,直接可以按照以下流程使用:
例如,run ts.directed_test.sv
gmake USE_SIMULATOR=vcsvlog directed_test WAVES=1
vip中的自带的makefile有点复杂,根据自己的习惯,重新写一个makefile:
运行random_wr_rd_test testcase之后,verdi打开该波形文件如下: