在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5400|回复: 10

[求助] 小白求助一个有关axi访问ddr地址空间的问题

[复制链接]
发表于 2021-2-24 15:40:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在axi协议里面都是按字节来进行寻址,一次transaction传输的数据个数由burst length、burst size这些来决定,并以byte计,最后由slave通过首地址根据burst type进行计算。
但是针对ddr颗粒来说,假设是我用4个x8颗粒组成一个数据位宽为32bit的rank。由于rank里面的颗粒共用一组地址和一根片选信号,那对于rank的操作对于4个颗粒来说都是同时的,所以一次寻址rank会吐出32bit的数据,那岂不是1次对ddr rank的寻址是得到了32bit的数据?
这里小白我就有点奇怪了,axi总线这里一个地址对应1byte,而ddr rank吃进去一个地址对应的是4byte,控制器是怎么处理的呢?还是说我理解存在问题?
发表于 2021-2-24 15:51:23 | 显示全部楼层
axi 32bit地址,0x0,0x4,0x8.
 楼主| 发表于 2021-2-24 15:57:48 | 显示全部楼层


A1985 发表于 2021-2-24 15:51
axi 32bit地址,0x0,0x4,0x8.


意思是,axi的master这边发的transaction,如果不考虑unalighed的情况,尽量按4B对齐这样来发地址吗?
发表于 2021-2-24 17:30:50 | 显示全部楼层


leine 发表于 2021-2-24 15:57
意思是,axi的master这边发的transaction,如果不考虑unalighed的情况,尽量按4B对齐这样来发地址吗?
...


不同的DDR对burst有要求,不只是4B这么简单,如果DDR是只32-bit,这个BL8,就是burst length=8, 那么每个burst至少需要32B。而且还要考虑你的ECC的设计。而且DDR的特性决定了最好就是要burst长一点,如果老是小包,那么都不够切换read write和band的。这个在设计DDR的时候一定要考虑好。

回到你的问题,如果master的burst length小于要求的burst长度,例如32B,那么需要先读后写,就是RMW(read-modify-write).
如果你买的DDR controller的IP,那么你去文档看看有没有这个feature,可能他已经帮你做好了。


发表于 2021-4-8 17:35:33 | 显示全部楼层
axi总线里面不是说一个地址对应一个byte,而是每输出一个地址到总线上,总会有对应的数据出来,至于这个数据是几个byte,这个几个byte中有几个是有效的,与设置的burst size等有关。
发表于 2021-4-9 22:30:55 | 显示全部楼层
axi总线的读写操作,一般不会直接操作ddr。
一般是axi总线把读写请求发送到ddr控制器,ddr控制器再把axi发来的读/写操作,转换成对ddr bank的操作。

ddr控制器是一个比较麻烦的模块,一般做系统设计的,不会去关心ddr控制器的实现细节。
发表于 2021-4-10 13:02:33 | 显示全部楼层
32byte存储一般都是字对齐,地址低2位默认为0;axi-data数据线那个bytes有效,不是有个字节有效控制信号吗。如果在字对齐格式下,就是按字(32个字节)为存储单元寻址的情况,数据没有字对齐存储,就会取两次了。
发表于 2021-5-25 20:05:41 | 显示全部楼层
对于BL8模式的 DDR 每个读写操作的数据量是 datawidth * 8 , 例如两个X16颗粒拼成的 32BITDDR,每次列操作BURST数据量是32字节;
对于AXI客户接口的每个请求操作数据量,由axi_data_width、length及size有关;
若AXI请求块比DDR BURST大的话,控制器需要把每个AXI请求数据分为连续地址的几个DDR请求,
若AXI请求块比DDR BURST小的话,控制器一般DDRburst按照最小块来写,也可以用掩码,但对性能没有影响
AXI地址需要根据块大小在低位进行补零。
发表于 2021-5-26 09:30:17 | 显示全部楼层
mark。。。。。。。。
发表于 2023-7-26 15:43:21 | 显示全部楼层


smarthb 发表于 2021-4-8 17:35
axi总线里面不是说一个地址对应一个byte,而是每输出一个地址到总线上,总会有对应的数据出来,至于这个数 ...


比如起始地址是0x00,size是6,burst=1,也就是一次传64个byte,那传完后地址范围0x00~0x64 不就是存的64byte数据吗?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 13:07 , Processed in 0.020621 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表