专栏首页数字IC小站AXI中wrap边界的计算

AXI中wrap边界的计算

在AXI中,主要是三种猝发模式,FIXED,INCR,WRAP。前两种比较容易理解,第三种的边界计算如下。

WRAP猝发类似于INCR猝发。在WRAP中,地址将根据SiZE递增,但是达到地址上限时,地址将换到地址下限。 在WRAP地址计算过程中有两个注意事项,

  1. 计算WRAP的地址上限
  2. 低位地址回旋到WRAP

WRAP突发有限制:

  • 起始地址必须与每次传输的大小对齐
  • 突发长度必须为2、4、8或16个传输

计算方式如下:

地址下界:

地址上界:

Ex1:

AxADDR = 0x04, AxLEN = 3, AxSIZE = 2, AxBURST = 3。

Start_Address = 0x04 Burst_Length = 4 Number_Bytes = 2^2=4 因此地址下界 = (0x04/(4x4)) x (4x4) = 0 地址上界 = 0 + (4 x 4) = 16

Address_0 = 4 Address_1 = Address_0 + Number_Bytes = 4 + 4 = 8 Address_2 = Address_1 + Number_Bytes = 8 + 4 = 12 Address_3 = Address_2 + Number_Bytes = 12 + 4 = 16

因为上界为16,因此地址Address_3 = 0。

因此地址为4,8,12,0。

Ex2:

AxADDR = 0x38, AxLEN = 3, AxSIZE = 2, AxBURST = 3。 Start_Address = 0x38 Burst_Length = 4 Number_Bytes = 2^2=4 因此地址下界 = (0x38/(4x4)) x (4x4) = 0x30 地址上界 = 0x30 + (4 x 4) = 0x40

Address_0 = 0x38 Address_1 = Address_0 + Number_Bytes = 0x38 + 0x4 = 0x3C Address_2 = Address_1 + Number_Bytes = 0x3C + 0x4 = 0x40 因为Address_2 == 0x40, 达到上边界,因此Address_2 = 0x30 Address_3 = Address_2 + Number_Bytes = 0x30 + 0x4 = 0x34 因此地址为 0x38, 0x3C, 0x30, 0x34。

Ex3:

AxADDR = 0x34, AxLEN = 7, AxSIZE = 2, AxBURST = 3。 Start_Address = 0x34 Burst_Length = 8 Number_Bytes = 2^2=4

因此地址下界 = (0x34/(4x8)) x (4x8) = 0x20 地址上界 = 0x20 + (4 x 8) = 0x40

Address_0 = 0x34 Address_1 = Address_0 + Number_Bytes = 0x34 + 4 = 0x38 Address_2 = Address_1 + Number_Bytes = 0x38 + 4 = 0x3C Address_3 = Address_2 + Number_Bytes = 0x3C + 4 = 0x40 因为Address_3 == 0x40,达到上边界,因此 Address_3 = 0x20 Address_4 = Address_3 + Number_Bytes = 0x20 + 4 = 0x24 Address_5 = Address_4 + Number_Bytes = 0x24 + 4 = 0x28 Address_6 = Address_5 + Number_Bytes = 0x28 + 4 = 0x2C Address_7 = Address_6 + Number_Bytes = 0x2C + 4 = 0x30 因此地址为 0x34, 0x38, 0x3C, 0x20, 0x24, 0x28, 0x2C, 0x30

End

本文分享自微信公众号 - 数字IC小站(c9897968),作者:Eternity233

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SystemVerilog中的callback(回调)

    在第二次systemverilog实验中,我看到有同学用到了callback函数,今天就是简单讲讲这个方法。

    数字IC小站
  • SystemVerilog中Assertions

    ● 如果一个在模拟中被检查的属性(property)不像我们期望的那样表现,那么这个断言失败。

    数字IC小站
  • Flash中XIP模式

    XIP:eXecute In Place,即芯片内执行,指应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。所谓片内执行并不是说程序在存储器...

    数字IC小站
  • Cordova+React+Ant.design项目搭建

    治电小白菜
  • 提醒!比特币千万不要碰!?

    IT派 - {技术青年圈} 持续关注互联网、大数据、人工智能领域 2017年的12月,对币圈来说是一个疯狂的月份,对比特币,疯狂更甚。 ? 结束了11月8千美...

    IT派
  • Hive Analytics Functions row_number rank over partition by

    在做数据分析是,会统计用户访问app不同页面的开始时间,理论上同一个用户访问不同页面的开始时间应该不同。为了排查app端是否存在bug,用到row_num...

    大数据工程师-公子
  • 2017-07-20#Hive Analytics Functions : row_number rank over

    在做数据分析是,会统计用户访问app不同页面的开始时间,理论上同一个用户访问不同页面的开始时间应该不同。为了排查app端是否存在bug,用到row_number...

    大数据工程师-公子
  • 现在都在谈的「产业互联网」,究竟是什么?

    ? 随着数字化进程,移动互联网逐渐开始向下半场的产业互联网转移。今天,企点君就来和大家聊聊『产业互联网』的那些事儿。 ? 产业互联网在实践中,有四个概念与之密...

    腾讯企点
  • Git 和 GitHub:从入门到实践2 Git 和 GitHub 基础配置

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-git-and-github-2/ind...

    mafeifan
  • Docker搭建比特币测试网络

    1.2 安装RPC支持库kapitalize kapitalize的源码:https://github.com/shamoons/Kapitalize

    foochane

扫码关注云+社区

领取腾讯云代金券