Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1413084
  • 博文数量: 1334
  • 博客积分: 645
  • 博客等级: 上士
  • 技术积分: 5762
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-25 16:56
文章分类

全部博文(1334)

文章存档

2014年(108)

2013年(1059)

2012年(169)

分类: LINUX

2013-07-02 09:55:37

原文地址:DDR配置备忘录 作者:leonwang202

物理内存条可以有一个或两个Memory Module (SIMM封装或DIMM封装)
每个Memory Module可以有很多个bank
每个bank可以看成一很大的表格,有行数、列数
表格中每个单元就是一个存储单元,与数据线位宽有关

----------------------------------- 华丽的分割线 ---------------------------------------


以我们开发板的1G内存条为例,查datasheet,其参数为:

DIMM封装
bank数:4
[ROW_BITS]:13   行数 1<<13
[COL_BITS]:11   列数 1<<11
数据线位宽:64bit


内存条空间大小: 1<<13 * 1<<11  * 64  * 4   * 2  =  1<<33 bit = 1<<30 Byte = 1G Byte
                 行数    列数   位宽  bank  DIMM


做驱动的注意:在uboot中配置DDR Controller时,ROW_BITS、COL_BITS 需要配置
             每个Memory Module的基址,大小也要配置的


----------------------------------------- 华丽的分割线 --------------------------------------

DDR时序简图

行地址  列地址  DATA  DATA  ...

1.行地址就是物理页号,列地址看做offset:
   一个物理页大小 = 1<<列数 * 数据线位宽 , 如 1<<11 * 64 = 1<<17 bits = 16 Bytes

2.用于读写操作的DATA,一个DATA就是数据线位宽,如 64bit

3.DATA的个数就是brust值,影响性能,一般DDR Controller可调
若brust值太大,如前面一个DATA就完事了,后面的DATA还是要占时序的,虽然那时已是无效值
若brust值太小,同样的数据量,需要发出更多次的列地址,来完成读写

----------------------------------------- 华丽的分割线 --------------------------------------

DDR 的频率分为 数据频率 和 时钟频率
因为DDR会在时钟的上升沿和下降沿各采一次数据,所以他们的频率有以下关系:
数据频率 = 时钟频率 * 2

举个例子
DDR clock: 266 MHz (532 Mhz data rate)
阅读(380) | 评论(0) | 转发(0) |
0

上一篇:AM335x SPL(三)

下一篇:内核驱动框架

给主人留下些什么吧!~~