[ARM入门]

[经验] 如何选择内存芯片?

[复制链接]
548|0
手机看帖
扫描二维码
随时随地手机跟帖
潜力变实力|  楼主 | 2020-9-8 16:07 | 显示全部楼层 |阅读模式
首先要讲一个概念:Rank。内存控制器host端往往有一定的数据位宽,比如现在常用的计算机系统处理器都是64位,其中所集成的内存控制其接口也是64位。而内存芯片的位宽通常为4位/8位/16位,要达到64位,必须把多个内存芯片组合在一起。比如是8位内存芯片,则必须要8个内存芯片组合在一起才能跟host端64位接口匹配。这样的host端总线位宽相匹配的多个内存芯片的组合就是一个Rank。
回到开始的关于内存芯片选型的讨论,下面以具体例子进行讲解。

例子1:如果你的嵌入式系统设计需要256MByte的内存(注意这里是Byte不是bit),控制处理器芯片内存接口数据是8位的,Rank选择信号有两个CS0#/CS1#。这种应用应当选什么样的内存芯片呢?
  分析: 由于处理器端的数据位是8位,内存芯片的数据位应避免大过处理器端的数据位。所以选择的内存芯片是8位或4位。
  如果要选择4位的内存芯片:
  由于有两根Rank选择信号,可以支持最大2个Rank。处理器端的数据位是8位,而内存芯片也是4位,就是说每个Rank可支持2个芯片(处理器端的数据位/内存芯片数据位=2),两个Rank可以支持4个芯片。每个芯片容量是256MB x 8/4 = 512Mb,也就是说应该选512Mb/4位(32Mx4x4banks)的内存芯片。
  也可以选择1个Rank,这样也就可以用总共2个内存芯片,每个芯片容量是256MB x 8/2 = 1Gb。也就是说应该选1Gb/4位(64Mx4x4banks)的内存芯片
  如果要选择8位的内存芯片:
  由于有两根Rank选择信号,可以支持最大2个Rank。处理器端的数据位是8位,而内存芯片也是8位,就是说每个Rank只能支持1个芯片(处理器端的数据位/内存芯片数据位=1),两个Rank可以支持2个芯片。每个芯片容量是256MB x 8/2 = 1Gb,也就是说应该选1Gb/8位(32Mx8x4banks)的内存芯片
  当然也可以用1个Rank,也只能用一个内存芯片,其容量较大2Gb/8,不知到能不能找到这样的芯片。

例子2: 最近也给很多朋友分享过一个实际的ddr2/800的内存条设计原理图,其框图如下。从该框图可以看出:
  
  1.该内存条有两个rank分别连接到CS0# 和CS1#两个rank选择信号。
  2.每个rank有8个内存芯片连接到内存数据总线。
  3.每个内存芯片是512M/8Bit,其存储容量是4Gbit。
  4.该内存条的设计的内存容量是多少?
  4Gbit X 8(8 芯片/rank) X 2 (rank) = 64 Gbit,也就是8GB
  内存芯片的选择除了计算其容量,数据位数等参数外,还的看其它的一些特性要求,比如控制处理器端支持什么内存技术(DDR,DDR2, ddr3?),内存芯片也要与之匹配。还有比如电路板空间的大小。用上面的例子1来说,如果电路板上没空间放4颗内存芯片,只能放2颗,那么就只能选1Gb/4位或1Gb/8位的芯片了。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

211

主题

1124

帖子

9

粉丝