ahb2apb bridge验证项目笔记及面试心得

写在前面:ahb2apb bridge验证项目很多人都觉得很简单,看看视频就会了。但是没有真正去敲过代码,还是会有很多不清楚的地方,以下我会对这个项目比较重要的点进行归纳,也会对一些面试可能会问到的问题做一个总结,以及面试的一些技巧,仅供参考。

  • 提问1:2个单比特的ahb传输,不采用burst时,时序是怎么样的,apb呢?
  • 提问2:如何查看你的时钟分频验证是否成功?
  • 提问3:项目中遇到的问题,如何解决?
  • 提问4:ahb的ready信号怎么验?
  • 提问5:ahb和apb的monitor抓取的数据一样吗,为什么?
  • 提问6:项目的测试点有多少?
  • 提问7:怎么让uvm区分不同的case?
  • 提问8:burst传输和single传输的区别?
  • 提问9:apb的PSTRB信号怎么验?

1.APB协议

APB(Advanced Peripheral Bus) 作为高级外设总线是AMBA协议之一,也是最基本的总线协议。按照ARM官方定义,APB是一种低成本的接口协议,可以实现低功耗以及精简的接口设计,降低接口设计的复杂度

APB协议不支持流水线设计,它主要应用在低带宽设计需求的接口中,高性能带宽需求可以使用AXI总线。APB协议的实现与时钟沿对齐,以简化外设接口的设计。每次传输至少需要消耗两个时钟周期

在SOC设计中,apb一般作为IP的配置接口,包括低速外设如I2C,UART,I2S等,也包括DDR,PCIe,Ethernet等高速IP,可以方便的实现CPU对外设IP的寄存器配置。系统中一般会实现一个AXI2APB或者AHB2APB的转换桥将APB口挂载在系统上。

  • APB2协议主要定义了基本的总线接口,没有握手协议,只有基本的读写传输
  • APB3增加了PREADY,PSLVERR信号。PREADY用于表示APB传输的完成,可以实现slave的等待功能。PSLVERR用以指示slave的错误状态。
  • APB4增加了PPROT,PSTRB。PPROT信号实现安全和非安全的数据传输,可实现系统在不同安全属性的控制传输,保证系统的安全性。PSTRB信号用于实现部分数据的写操作,可以指示一笔传输中的一部分数据有效。
  • PPROT可实现APB传输的保护控制。PPROT[0]表示不同优先级的传输,可实现salve对不通优先级数据的特殊处理操作。PPROT[1]表示对不同安全属性的数据传输,对Secure和Non-secure的数据进行数据处理,Non-secure不能更改secure属性的区域。PPROT[2]用来指数此时传输是数据传输还是指令传输。APB的这个升级是集成的AHB与AXI的属性,也是为了更加符合现在系统设计的需求。

用状态机来表示APB的传输过程最为合适。 当有数据开始传输,PSELx信号拉高,进入到setup状态停留一个周期,接着在下一个时钟的上升沿进入到ACCESS,PENABLE被拉高,从setup到access状态,address等信号必须保持稳定。如果pready为1,表示已完成数据,可以跳到其他状态,如果后面有连续的数据,就跳到setup,没有就idle。

具体的apb的读写以及等待信号很简单,这里就不做啰嗦

2.AHB协议

AHB总线一开始主要是作为系统高速总线使用,适用于高性能,低功耗的系统设计。目前因为AXI总线作为高速总线的优势更加明显,AHB会用在相对低速的系统设计中。基本排序就是APB适用于低速设计,AXI适用于高速设计,AHB则介于两者之间。

AHB一开始主要面向系统级高带宽高性能的系统互联设计支持多master,多slave的互联模式。但是随着系统的发展,AHB更多用于支持简单的数据传输,因此后来对AHB协议做了简化设计,定义了AHB-Lite协议,简化之后的协议主要用在单master数据访问中,不需要支持split与retry,因为中间的多外设结构都可以通过互联方便的实现。

目前AHB协议多用在低性能需求的M型处理器中,也多用在片上memory或者一些低带宽需求定位外设接口设计。

本来ahb支持多master和多slave,所以有arbiter和decoder也需要我们分析,但是项目采用的AHB-Lite协议,所以不做考虑。

  • AHB特点:高性能,2级流水线操作,可支持多个总线主设备,支持burst传输(实质就是只发送一次地址)
  • burst传输:(实质就是只发送一次地址,一次发一串数据) 
  • 通常总线带宽是32bits,即可以读取4个地址的数据。对于传统single传输,需要在第一个地址周期发送ADDR = 0x50,便可以在第二个数据周期读取地址0x50/0x51/0x52/0x53组成的32位数据。再想读接下来的4个地址数据,需要再在第一个地址周期发送ADDR = 0x54,便可以在第二个数据周期读取地址0x54/0x55/0x56/0x57组成的32位数据。这样读取下来,一共花费了4拍。
  • 而Burst传输要想读取上述2个32位数据,需要在第一个地址周期发送ADDR = 0x50和INCR2(表示需要从0x50这个地址连着读2个32位数据),那么可以在第二个数据周期读取一个32位数据,在第三个数据周期再读取一个32为数据,一共花费了3拍。
  • 同理,多读N个数据,那就发送地址之外再发送INCR即可,一共需要N+1拍。
  • Burst分为回环(WRAP)(适用于Cache填充)和增量(INCR)
  • HTRANS的busy和HREADY区别在于busy情况下master需要给出下一拍的地址和控制信号,与上一拍相同,ready只需要延长信号传输到下一拍

ahb时序如下图所示

3.AHB2APB桥的功能

  1. 用于AHB主设备到APB的从设备的连接
  2. 完成AHB和APB协议的转换、以及异步数据的通信
  3. AHB2APB桥是AHB总线上的从设备,也是APB总线唯一一个主设备
  4. 对于写传输,驱动数据到apb总线上,对于读传输,驱动apb数据到系统总线上

 4.验证框架

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值