首页 > 其他分享 >AHB协议理解2--AHBMatrix项目

AHB协议理解2--AHBMatrix项目

时间:2023-07-01 19:00:23浏览次数:38  
标签:AHB 字节 -- AHBMatrix 传输 地址 存放 byte

1.AHB协议中的burst传输

bit、byte、word的联系
1byte = 8bit
1word = 2byte = 16bit

 

 注意:定长的burst传输期间,一直拉高HBUSREQx信号,目的是为了增加1次burst传输。不然仲裁器要根据仲裁算法把总线授权切换给其他主机了

 

2.(重中之重)AHB协议支持word和半字的读写,表现在haddr的低两位或低一位为0,那么如何理解AHB协议中的对齐?

重点:在计算机中,一个地址,代表一个字节byte
1bit 位
8bits byte字节
16bits 半字
32bits 字

注意:一个地址对应一个byte,要存半字,就需要连着的两个地址,所以地址最低位就需要是0(为1的地址一同分配了)

 

【实例1】
存储实际上还是1个地址存8比特的,打个比方,若burst size是16比特,你每次地址偏移是2,实际上01地址存了8比特,02地址存了8比特
如果进行半字传输:
第1次半字传输,从地址0x00开始写入,那么地址0x00存放一个字节,地址0x01存放一个字节。
第2次半字传输,从地址0x02开始写入,地址0x02存放一个字节,地址0x03存放一个字节。
第3次半字传输,从地址0x04开始写入,地址0x04存放一个字节,地址0x05存放一个字节。
依次类推,每次半字传输的起始地址都是要间隔为2。低两位地址addr[1:0](也就是我理解的偏移地址)始终是0和2来回变化
【实例2】
如果进行burst size 32传输:
第1次word传输,从地址0x00开始写入,那么地址0x00存放一个字节,地址0x01存放一个字节,地址0x02存放一个字节,地址0x03存放一个字节。
第2次word传输,从地址0x04开始写入,那么地址0x04存放一个字节,地址0x05存放一个字节,地址0x06存放一个字节,地址0x07存放一个字节。
...
就是说当我们按照word去读写ram的时候,地址增长只能是4byte(32位)的倍数,也就是说地址是4、8、12(C)这样的数,你把这样的数写下来就会发现,最低两位是0(比如说4写成100,低两位就是0)
1 个地址对应1 byte,32 bit 是 4 byte。地址数值加1,挪动一下就过去了8个bit(也就是一个byte),所以想要存储32bit(4byte),拿就要按照4的倍数增长

依次类推,每次字传输的起始地址都是要间隔为4。低两位地址addr[1:0] (也就是我理解的偏移地址) 始终是0

 

标签:AHB,字节,--,AHBMatrix,传输,地址,存放,byte
From: https://www.cnblogs.com/yphasaki/p/17519724.html

相关文章

  • 每周进度报告6.26~7.1
    6.26周一:七点到十点半:学车(科二),十点半十一点:坐车回家,十一点到下午三点:锻炼(俯卧撑),吃饭(忘了),娱乐(CSgo,看番剧,视频),午休,下午三点到六点:看B站自学java(大概学4到7节),六点到十点:吃晚饭,娱乐(CSgo,看视频),写pta作业(团体程序设计天梯赛大概写一到三道)6.27周二:七点到十点半:学车(科二),十点半十一点:坐车......
  • 如何每天工作14个小时,同时获得精神休息和变得有创造力?
    分享者MattMochary是CEO教练,辅导过很多顶级公司的创始人,如OpenAI,Notion,Reddit,Coinbase,Robinhood,YC等。​他辅导的大多数CEO都是每天工作14小时,如果他们有配偶和孩子,会再花几个小时与他们联系。其余的时间,他们都在睡觉,但永远也睡不够。 这种生活方式的代价是,没有留......
  • 微服务设计:分解单块系统
    限界上下文就是一个非常好的接缝,因为它的定义就是组织内高内聚和低耦合的边界。数据库是所有杂乱依赖的源头打破外键关系,把外键约束从数据库转移到代码中实现。这也就意味着,我们可能需要实现跨服务的一致性检查,或者周期性触发清理数据的任务。表结构分离后,对于原先的某个动作而......
  • 7680*4320 eDP 黑白屏点亮方案
    产品型号:L180M-EDP  应用:7680*4320eDP黑白屏点亮与老化    ......
  • AtCoder Beginner Contest 307(E,F,G)
    AtCoderBeginnerContest307(E,F,G)E(dp)E这个题大意就是我们需要组成一个长度为\(n\)的数组,满足两个相邻的数字不可以相等,其中,\(a_1\)和\(a_n\)也是相邻的,我们可以选择的数字为\(0\)到\(m-1\),问最后有多少种不同的组成方式满足以上条件。题目大意很简单,就是有点难想,如果\(a......
  • 第一周总结
    第一天:6月26日早上七点起床准备早餐,等我弟吃完饭后送他上学,回来之后先是收拾了下屋子,然后和同学打了一会儿游戏。等到十点钟后出门去接我弟上学,回来的时候买了今天中午要吃的菜,回到家后开始准备今天的午饭,吃完饭后刷锅,中午打开黑马程序员看了两节课后就睡觉了,等到下午三点左右就......
  • 关于编译器(转)
    原文:https://blog.csdn.net/wuhenyouyuyouyu/article/details/104669179/ 全部的语言编译器都拥有共通的中介架构:1.一个前端,用于解析匹配此语言的源代码,这个前端会产生一个抽象语法树;2.将此语法树翻译成为GCC的寄存器传递语言(registertransferlanguage)的后端。编译器......
  • 10进制转换36进制
    deftransform36(n):res=[]whilen:res.append(n%36)n=n//36out=[]forrrinres[::-1]:if0<=rr<=9:out.append(str(rr))else:out.append(chr(rr+ord('a')-1......
  • plecs C script、prode、子系统、闭合导线画线、数据导出的简单使用
    数据导出: 闭合线画线:单击该线,按住右键即可画线。probe模块:可以将元器件拖拽进去,即可获取该元器件的相关信号输出,这样可以省去在元器件外加电压电流表等。子系统:选中要创建子系统的元器件,右键即可创建子系统。 如下输入输出接口,包括信号,电气接口即可实现子系统信号的输......
  • 数组的隐式交集
    问题:在另一个表中引用“=轮休!$B$2:$G$5="休"”结果却不正确解决:公式本身没有问题,但是在输入的时候,组合键不应使用<Ctrl+Enter>,而是<Ctrl+Shift+Enter>,三键的结果才是数组。补充:<Ctrl+Enter>相当于复制,是在单元格中批量录入相同内容的组合键。此处使用了绝对引用,理论上......