AHB to APB Bridge验证项目
目录
3.3 AHB to APB sync-down bridge. 30
3.4 AHB to APB sync-down bridge 验证计划... 30
3.4.1 Metrics Driven Verification(指标驱动验证,MDV)... 30
3.4.2 AHB-to-APB Bridge 验证计划... 31
4.2 ahbl_master_agent环境搭建... 40
4.5.2 ahbl_mst_single_read32. 55
4.5.3 ahbl_mst_single_write32_apb_slv_nrdy. 55
4.5.5 ahbl_mst_burst_apb_slv_slverr 57
4.5.6 ahbl_mst_tight_transfer 57
4.6.2 ahbl_mst_single_read32_seq. 59
4.6.3 ahbl_mst_single_write32_seq. 59
4.6.4 ahbl_mst_tight_burst_seq. 60
第一章 APB协议
1.1 APB2协议
一个典型的APB总线架构如上图所示,APB协议是为了实现与外围低速、低功耗设备进行数据传输。在APB总线中,唯一的master是APB Bridge,其他的外围设备均为slave。
1.1.1 读操作
下图为APB的读操作,一共分为两拍:
T1时刻APB master将PSEL拉高,(PENABLE正常情况下此时为低),PWRITE拉低,APB master驱动PADDR。
T2时刻APB master将PENABLE拉高,APB slave采样PSEL、PENABLE、PADDR和PWRITE,如果满足写操作的时序要求,就驱动PRDATA(实际上只要在T3之前准备好即可)。
T3时刻APB master将PSEL和PENABLE都拉低(如果下面还要继续操作该slave,那PSEL也可以保持为高),并采样PRDATA,PADDR和PWRITE将保持(这是APB协议出于低功耗考虑要求的,减少额外的翻转,当下一个操作过来时这两个信号自然会变化)。
需要注意的是,通常片选信息包含在PADDR中。在RTL设计中会将不同的地址段对应到不同的slave,master发出一个地址,那么对应的slave的PSEL就会拉高。
1.1.2 写操作
下图为APB的写操作,过程和读操作非常类似,稍有区别的是APB master需要在T1时刻驱动PWDATA,并保持到写操作完成。
总的来说,APB的读写操作都需要两拍才能完成,通常将第一拍称为Setup phase,第二拍称为Access phase。
1.2 APB3协议
APB3相较于APB2新增了PREADY和PSLVERR两个信号。
1.2.1 PREADY信号
PREADY信号表示slave是否可以立即响应master要求的操作。PREADY为高表示slave可以响应,为低则表示还没准备好,master需要等待,并且在此期间master需要保持PADDR、PWRITE、PSEL和PENABLE。
举例说明:
T2时刻slave采样到PSEL=1、PENABLE=0,那么slave理应准备好对应的PRDATA,但slave无法立即准备好,于是把PREADY拉低,直到T4时刻PRDATA准备好,拉起PREADY。
T3时刻master采样到PREADY为低,于是保持PADDR、PWRITE、PSEL和PENABLE。直到T5时刻采样到PREADY为高,此时PRDATA有效,读数据完成,拉低PSEL和PENABLE。
1.2.2 PSLVERR信号
PREADY信号是让master进行等待,而PSLVERR信号则是通知master本次操作是否发生错误。PSLVERR信号只在传输的最后一拍有效,即PSEL、PENABLE和PREADY均为高时。当PSEL、PENABLE或PREADY为低时,建议将PSLVERR拉低,但这不是必需的。
需要知道的是,PSLVERR只是一个通知标识,它并不能阻止数据的读写,也就是说即使传输发生错误,数据也是会照样传过去,毕竟物理的连接是存在的,只不过master知道错误后,可以针对性的做出处理。
1.3 APB4协议
APB4相较于APB3增加了PPROT和PSTRB两个信号,其中PSTRB更常用些。
PPROT信号如上图所示,下面主要解释一下PRSTB信号。首先明确PRSTB信号只在写操作时有效,读操作时需要设置为4’b0000。PRSTB信号的出现是因为APB的写总线是32位的,但是有时候我们并不需要操作全部的位,并且需要保证不会误写了某些位,这时就需要PRSTB这样的信号。
它有4bit,每个bit对应8bit(1byte)写总线,为高则代表对应的byte上的数据是有效的,否则无效。
1.4 APB5协议
APB5相较于APB4增加了PWAKEUP信号和USER系列信号,USER系列是APB为用户提供的可定制的信号,一般情况下建议不使用USER信号。APB协议接口没有定义这些信号的功能,如果两个组件以不兼容的方式使用相同的USER信号,则会导致互操作性问题。
PWAKEUP用来指示本次传输是否有效,如果传输的时候PWAKEUP信号不使能,则slave会认为这一笔数据传输无效。设计上建议PWAKEUP先于PSEL一个周期拉高。也可以用PWAKEUP控制APB的时钟达到低功耗的目的。
第二章 AHB协议
2.1 版本说明
2.2 信号说明
2.2.1 简述
AHB总线的基本原理是采用主从结构,其中一个或多个主设备通过总线与一个或多个从设备通信。主设备可以是CPU、DMA控制器、图形处理器等高性能设备,从设备可以是存储器、外设控制器等低速设备。AHB总线采用了高度并行的传输模式和分时复用的地址和数据传输方式,从而实现了高带宽和低延迟的数据传输。
下图是 “多主从”的AHB总线结构,仲裁器、解码器、选择器以及互连线等通常称之为互连结构。这种结构的工作机制如下:
首先master会向仲裁器发送传输请求,仲裁器依据所设计的仲裁规则,选择合适的master获取总线访问的权限,之后master会将数据与控制信号发送到仲裁器,仲裁器通过地址解析判断对应的slave通路,然后将请求发送到对应的目的端。
同样响应的数据会通过Decoder解析,然后返回给对应的master。
通过这种多路复用的机制实现多对多的访问。但是这种结构有一个缺点就是一次能有一对maste与slave通信,无法实现多对多的同时通信,对于带宽需求比较大或者实时性要求较高的系统不太适合。
在本项目中,Bridge就是一个AHB slave,它在APB总线一侧是唯一的master,而在AHB一侧,它只是其中一个slave。
下图是“一主多从”的系统,从图中可以看到Decoder根据HADDR信号产生HSELx信号对slave进行片选,同时产生对多路选择器的控制信号,以选择哪个slave读出的数据。在多从机的系统中,唯一的、中央解码器和多路复用选择器是必须的。
2.2.2 全局信号
信号 |
信号源 |
描述 |
HCLK |
时钟源 |
总线时钟对所有的总线传输进行计时。所有的信号定时都与HCLK的上升沿有关。 |
HRESETn |
复位控制器 |
总线复位信号为低电平有效,复位系统和总线。这是唯一低电平有效的信号。 |
2.2.3 master信号
信号 |
接收方 |
描述 |
HADDR[31:0] |
Slave and decoder |
32位系统地址总线 |
HBURST[2:0] |
Slave |
burst类型指示传输是单个传输还是形成burst的一部分。 支持4、8和16拍的固定长度的burst。burst可以是递增的,也可以是wrap的。还支持增加未定义长度的burst。 |
HMASTLOCK |
Slave |
高电平时,表示当前传输是锁定序列的一部分。它与地址和控制信号具有相同的时序。 |
HPROT[3:0] |
Slave |
保护控制信号提供关于总线访问的附加信息,并指示应该如何在系统内处理访问。 信号指示传输是操作码提取还是数据访问,以及传输是特权模式访问还是用户模式访问。 |
HPROT[6:4] |
Slave |
添加扩展存储器类型的HPROT信号的3位扩展。 如果AHB5 EXTENDED_MEMORY_TYPE属性为True,则支持此信号扩展。 |
HSIZE[2:0] |
Slave |
指示传输的大小,通常为字节、半字或字。该协议允许更大的传输大小,最大可达1024位。 |
HNONSEC |
Slave and decoder |
指示当前传输为非安全传输或安全传输。 如果AHB5 SECURE_TRANSFERS属性为True,则支持此信号。 |
HEXCL |
Exclusive Access Monitor |
独占传输。表示传输是独占访问序列的一部分。 如果AHB5 EXCLUSIVE_TRANSFERS属性为True,则支持此信号。 |
HMASTER[3:0] |
Exclusive Access Monitor and slave |
主机标识符。如果主程序有多个独占能力的线程,则由主程序生成。 由互连修改以确保每个主设备被唯一标识。 如果AHB5 EXCLUSIVE_TRANSFERS属性为True,则支持此信号。 |
HTRANS[1:0] |
Slave |
表示当前传输的类型。可以是: • IDLE • BUSY • NONSEQUENTIAL • SEQUENTIAL |
HWDATA[31:0] |
Slave |
写入数据总线在写入操作期间将数据从主机传输到从机。建议的最小数据总线宽度为32位。但可以将其扩展以实现更高的带宽操作。 |
HWRITE |