最近在使用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内存条的接口定义如下图:
9.后续需要补充的我们随后继续添加