AHB2APB验证之pstrb与haddr、hsize之间关系的理解

在学习基于UVM框架的AHB2APB_bridge验证时,有关pstrb与haddr、hsize之间的关系困扰了我好久,其中让我难以理解的点包括:

1、对于ahbapb总线,它的数据位宽是32位(4字节时),那么当hsize是hword(2字节)时,为什么haddr每次是+2而不是+1?因为一个地址能存4字节,只要+1就完全能装下所有的数据了。

2、我最初理解的pstrb的稀疏数据传输功能是针对连接apb的外围设备,pstrb哪一位为高那么就把apb哪一字节的数传给外围设备,所以有疑问为什么别人在scoreboard里check时会将haddr和pstrb进行关联?因为在我的理解中apb数据总线上所有的数据都是有效的,外围设备需要哪一个字节就传哪个字节,和haddr根本都没有关系。

经过查阅各种资料,终于理顺了:

数据总线是32位位宽,就是4字节,所以每次传输必定是传32位,不过apb可以通过拉高pstrb的某些位来指定对应字节的有效性。(这点十分重要!!!我之前理解偏差的原因就在于想着hsize是hword就传2字节不就好了,然后才把pstrb的有效性作用的对象弄错了)


理解了这个后,接下来我难以理解的点是为什么hsize=hword时,数据一会是高2个字节有效,一会是低2个字节有效?①为什么不能统一是低字节有效呢?②地址和数据有效字节位置的变化是按照什么规律设置的?

对于这些问题,我理解的是虽然地址是32位的,但是一个地址只能存8位数据(1个字节),而数据总线是以4字节为位宽进行数据传输的,所以虽然我们在传输haddr时只传了首地址,但是总线上各个字节都对应着依次递增的地址,又因为只有四个字节,所以排列顺序就只需要看各个地址的低两位就能确定该地址的数据在哪一个位置。

为了加深理解,我画了以下的不同hsize和haddr对应的有效数据字节的图(灰色表示该数据字节无效,白色表示该数据字节有效):

1、当传输的类型是word时,说明数据的有效长度是4字节,所以pstrb的所有位均为高;

2、当传输的类型是hword时,说明数据的有效长度是2字节,当haddr的低两位为00,那么选低位的两个字节,当haddr的低两位为10,那么选高位的两个字节

3、当传输类型是byte时,说明数据的有效长度是1字节,地址低两位从00-11

 

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值