DDR3 SO-DIMM 内存条硬件总结(一)

最近在使用fpga读写DDR3,板子上的DDR3有两种形式与fpga相连,一种是直接用ddr3内存颗粒,另一种是通过内存条的形式与fpga相连。这里我们正好记录下和ddr3相关的知识,先从DDR3 SO-DIMM 内存条开始。
1.先看内存条的版本
从JEDEC下载的标准书中,看到RAW Card被分为A-F六个版本,各个版本之间的差异在表格中可以清楚看出来。
在这里插入图片描述
差异主要在:条上内存颗粒数量、内存颗粒的位宽、内存条的Rank。

这个版本的意思其实是内存条的不同组织形式,每个版本的特征与将来PCB布局布线、和内存条的频率时序都有关系,设计之初就要确定好。
2.再看看内存条的金手指引出定义
在这里插入图片描述

CK[1:0]、CK[1:0]、CKE[1:0]:时钟输入与使能,6;(反向线用下划线代替)
RAS、CAS:行列选通线, 2;                       WE:写使能,1;
DQ[63:0]:数据输入输出,64;                       A[9:0]、A11、A[15:13]:地址输入线,14;
DM[7:0]:数据掩码线,8;                               DQS[7:0]、DQS[7:0]: 数据选通线,16;
BA[2:0]:SDRAM Bank地址线,3;               S[1:0]:芯片选择,2;
A10/AP:地址输入/自动预充电,1;              A12/BC :地址输入/突发传输,1;
SCL、SDA、SA[1:0]、VDDSPD:SPD和TS电源线、寻址和IIC通信线,5;
ODT[1:0]:终端电阻控制线,2;                    RESET:复位引脚,1;
EVENT:温度事件引脚,1;                           Vtt:端接电压,1;
VDD/VSS:核心和IO电源,2;                     VREFDQ/VREFCA:输入输出参考,2;
TEST、NC:保留,未接,3;

3、内存颗粒分类
内存颗粒可以简单分为78-ball FBGA封装的 和 96-ball FBGA封装的两类,差异主要是数据位宽不同,前者x8,后者x16。
4、SPD数据定义
内存条上存在一个EEPROM存储芯片(The Serial Presence Detect ,SPD),容量通常为128B或256B,用于存储改内存条的一些基础信息。主板需要这些信息进行正确的配置,以便正常使用内存条。存储芯片中各字节存储的信息如下表所示。
在这里插入图片描述
在这里插入图片描述
5、内存条标签
在这里插入图片描述

例:ggggg eRxff PC3-wwwwwm-aa-bb-ccd
            ggggg = Module total capacity, in bytes256MB, 512MB, 1GB, 2GB, 4GB, etc.
            eR = Number of ranks of memory installed : 1R = 1 rank of DDR3 SDRAM installed
                                                                                          2R = 2 ranks
                                                                                          4R = 4 ranks
            xff = Device organization (bit width) of DDR3 SDRAMs used on this assembly
                                                                                x4 = x4 organization (4 DQ lines per SDRAM)
                                                                                x8 = x8 organization
                                                                                x16 = x16 organization
            wwwww = Module bandwidth in MB/s : 6400 = 6.40 GB/s (PC3-800 SDRAMs, 8 byte primary data bus)
                                                                      8500 = 8.53 GB/s (PC3-1066 SDRAMs, 8 byte primary data bus)
                                                                      10600 = 10.66 GB/s (PC3-1333 SDRAMs, 8 byte primary data bus)
                                                                      12800 = 12.80 GB/s (PC3-1600 SDRAMs, 8 byte primary data bus)
            m = Module Type  :E = Unbuffered DIMM ("UDIMM"), with ECC (x72 bit module data bus)
                                               F = Fully Buffered DIMM ("FB-DIMM")
                                               M = Micro-DIMM
                                               R = Registered DIMM ("RDIMM")
                                               S = Small Outline DIMM ("SO-DIMM")
                                               U = Unbuffered DIMM ("UDIMM"), no ECC (x64 bit module data bus)
            aa = DDR3 SDRAM CAS Latency in clocks at maximum operating frequency
            bb = JEDEC SPD Revision Encoding and Additions level used on this DIMM
            cc = Reference design file used for this design (if applicable)
            d = Revision number of the reference design used

6.DDR3芯片的容量计算方法,我们找个镁光的芯片看看
在这里插入图片描述
在这里插入图片描述
我们就用256M16来看。行地址【14:0】共有15位,2的15次方=32k,再看列地址【9:0】共有10位,2的10次方=1024,所以每bank有32k1k=32M, 共有8个bank,所以328=256M.看看手册总容量为4Gb,这里意思是4Gbit,我们计算的256M,是按组织形式16位的,如果换算为bit则,25616=4Gb.这里就说清楚了存储容量的计算。
7.DDR3芯片的使用,一般情况下我们并不会单独的使用一颗ddr芯片,而是会把他级联起来如何连起来我们看图:
在这里插入图片描述
在这里插入图片描述
可以看出我们使用了4颗ddr3芯片,他们是怎么相连的呢?简单的说就是把地址相同的位连在一起,数据线依次排列,单片位16位,4片的话就扩位展为64位。相当于一颗位宽为64位的DDR3芯片,其余的信号怎么连我们后面再继续分析。
8.DDR3 SO-DIMM内存条的接口定义如下图:
在这里插入图片描述
后续需要补充的我们随后继续添加

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 12:56:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 12:56:04       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 12:56:04       58 阅读
  4. Python语言-面向对象

    2024-07-12 12:56:04       69 阅读

热门阅读

  1. Vim 编辑文件时中文乱码的解决方法

    2024-07-12 12:56:04       18 阅读
  2. vim删除多行

    2024-07-12 12:56:04       25 阅读
  3. 嵌入式裸机开发与 Linux 开发

    2024-07-12 12:56:04       21 阅读
  4. 机器学习-分类器-总结

    2024-07-12 12:56:04       18 阅读
  5. Git-如何基于某个tag创建一个新分支

    2024-07-12 12:56:04       27 阅读
  6. 【Linux】Vim 使用教程

    2024-07-12 12:56:04       17 阅读
  7. Hive中的数据类型和存储格式总结

    2024-07-12 12:56:04       21 阅读
  8. modern C++:闭包与匿名函数

    2024-07-12 12:56:04       23 阅读
  9. 前缀,中缀,后缀表达式

    2024-07-12 12:56:04       22 阅读
  10. 笔记:如何使用Microsoft.Extensions.Options

    2024-07-12 12:56:04       30 阅读
  11. socket编程(1)

    2024-07-12 12:56:04       30 阅读
  12. stm32flash一键ISP烧录单片机

    2024-07-12 12:56:04       20 阅读