DDR3 SDRAM分析

以镁光的MT41K2G4、MT41K1G8、MT41K512M16为例说明

一、地址构成

地址构成如表1所示,主要包括Row address、Bank address、Column address三组地址,表中2 Gig x 4、1 Gig x 8、512 Meg x 16分别对应于MT41K2G4、MT41K1G8、MT41K512M16三款DDR3 SDRAM,这三款芯片容量大小均为8Gbit。

表1 地址构成
Parameter2 Gig x 41 Gig x 8512 Meg x 16
Configuration256 Meg x 4 x 8 banks128 Meg x 8 x 8 banks64 Meg x 16 x 8 banks
Refresh count8K8K8K
Row address64K (A[15:0])64K (A[15:0])64K (A[15:0])
Bank address8 (BA[2:0])8 (BA[2:0])8 (BA[2:0])
Column address4K (A[13,11, 9:0])2K (A[11,9:0])1K (A[9:0])
Page size2KB2KB2KB

下面以MT41K512M16为例进行分析。在手册中可以看到该芯片的结构示意图,如图1所示,在图中左侧可以看到有A[15:0]和BA[2:0]两组地址线,地址线的对应关系在表1中有说明,Row address与Column address共用A[15:0]地址线,在不同的时间分别输入这两组地址。

图1 MT41K512M16结构示意图

二、寻址方式 (存储结构)

寻址方式通过输入的地址信号,定位到SDRAM中的某一个存储单元,从而可以进行读写操作,因此分析寻址方式,同时也就是分析其存储结构。

放大分析图1左下角有关寻址的部分,如图2所示,可以看到输入的地址信号有三条走向,分别对应Row、Bank、Column三组地址,位宽也与三组地址相一致。

图2 寻址方式

Bank address

首先是Bank地址,每个SDRAM具有8个Bank,由3位Bank地址可以寻址。由图中可以看到,每个Bank容量大小为65536\times128\times128=1Gbit。Bank内的寻址由Row、Column寻址,因此每个Bank可以理解为由许多最小存储单元组成的二维平面。

Row address(行地址)

Bank内寻址,先是行地址,16位宽,具有2^16=65536个单元的寻址能力,对应于bank内部的65536个行,每个行内有128\times128=16384=16Kbit的容量。

Column address(列地址)

Bank内列地址与行地址寻址方式有所不同。

按常理分析,10位宽的地址,本应有2^10=1024个单元的寻址能力,然后每个最小单元存储位宽16bit,总共1024\times16=16384=16Kbit,正好与行地址中的分析结论一致,许多地方在分析SDRAM存储容量时也是这样分析的,但是实际上这样是有问题的。

如下图所示,我们可以看到实际上10位的地址只有高7位用于寻址,低3位另有他用。高7位实际的列寻址能力为2^7=128,对应每个最小存储单元(Cell)具有128bit的存储容量;低3位则用于突发模式的选择设置。

三、预加载(Prefetch)与突发(Burst)

预加载(Prefetch)

预加载是DDR提出的技术,DDR在外部时钟(芯片IO)的上下沿同时进行数据存取,而内部时钟(芯片存储单元)仅在上升沿进行数据存取,因此提出了2n-bit预加载,n为芯片IO宽度,最小存储单元(Cell)位宽为芯片IO位宽的两倍,解决时钟带来的数据量不平衡问题,而SDR中没有双沿传输,也就没有预加载的技术,Cell的位宽就是芯片IO的位宽。(Cell的位宽也是每个Cell的存储容量)

DDR2时代,外部时钟是内部时钟的两倍,并且仍然采用上下沿传输数据,因此采用了4n-bit预加载,Cell位宽为芯片IO宽度的4倍;而DDR3和DDR4外部时钟为内部时钟四倍,采用8n-bit预加载,Cell位宽为芯片IO宽度的8倍。通过预加载的技术,可以使Cell的频率较低的情况下获得较高的数据带宽。

突发(Burst)

突发是指连续进行数据传输,突发长度(Burst Length,BL)是指连续数据传输的长度。

上面预加载中我们提到DDR3采用8n-bit预加载,内部Cell每次传输的数据为IO宽度的8倍,因此DDR3的BL常常为8,也有长度为4的(BC 4),此时通常是另外4次传输不发生或认为无效。

DDR2采用4n-bit预加载,BL有4或8两种,为8的时候相当于每次发生两个4n-bit预加载。

四、Column address(列地址)剩余问题

再说上面列地址中残余的两个问题:

  1. 低3位列地址的作用?
  2. 为什么每个Cell具有128位?

上述中以MT41K512M16为例说明,芯片IO位宽为16,DDR3具有8n-bit的预加载,所以内部Cell的宽度就是16\times8=128bit。

如下图所示,芯片内部左侧区域时钟为内部时钟,数据宽度为128位,右侧时钟为外部时钟,数据宽度为16位。左侧1次时钟上升沿传输128位的数据,提供右侧4次时钟上下沿共8次16位数据的传输。

当给出一个地址时,可以传输这个地址对应Cell的128位数据到FIFO,再通过4次时钟上下沿的8次数据传输到外部,也就完成了BL=8的一次突发传输。而芯片IO的8次传输,从128位到16位,需要一个8路选择器,来决定这128bit的输出顺序,列地址的低3位参与了这个选择顺序的过程。

突发传输的顺序由Burst Order与Burst Type来决定,如下图所示

Burst Order即为低3位列地址 ,而Burst Type则由芯片的Mode Register0(MR0)来决定,MR0具体说明如下图。

通常我们不需要关心MR0的设置,通过设置列地址设置Burst Order为000即可,此时突发读写均为顺序操作Cell空间。

五、容量计算

在了解地址构成与寻址方式后,来计算芯片容量:

8(bank) * 65536(row) * 128(column) * 128bit(mem cell) = 8Gbit

对应芯片型号MT41K512M16中:

512(M) * 16(data width) = 8Gbit

512M即为8(bank) * 65536(row) * 128(column) * 8(burst length),为一颗芯片中可以操作的芯片IO数据位宽的数量。

因此MT41K2G4、MT41K1G8、MT41K512M16即为三种容量大小一致、数据位宽不同的SDRAM。

六、Vivado DDR3控制器(MIG IP核)

关于IP核的具体使用可以参考两位大佬的博客

Xilinx FPGA平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了_子墨祭的博客-优快云博客_fpga外接ddr3硬件设计方案https://blog.youkuaiyun.com/m0_52840978/article/details/121191410快速上手Xilinx DDR3 IP核----汇总篇(直达链接)_孤独的单刀的博客-优快云博客https://wuzhikai.blog.youkuaiyun.com/article/details/121841813我这里提两个小点

芯片选型

MT41K512M16芯片在MIG IP核中没有型号,作为替代可以选择MT41K512M8作为替换,MT41K512M16也是由两个MT41K512M8组成的,仅需在选择数据位宽时选择正确的数据位宽即可。比如我的板卡连接了4片MT41K512M16组成64位宽的DDR3空间,可以如下图选择。

接口信号

关于写DDR时MIG IP核的app_wdf_end信号设置,该信号表示的是当前给控制器的是DDR突发写的最后一个数据。其与MIG IP核设置中的PHY时钟(即芯片IO时钟)和控制器时钟(用户使用时钟)比例的设置有关,如下图所示,芯片IO为上下沿同时传输数据,控制器为单沿传输数据。芯片IO时钟设置较高时,该比值仅支持4:1,较低时可以选择4:1或2:1。

设置为4:1

  • 用户从控制器收发的时钟与DDR内部存储单元核心时钟一致
  • app_wdf_data为128(16*8)位,与DDR内部存储单元BL=8的突发操作数据量一致

因此写DDR存储时,每一个发送到控制器的有效数据app_wdf_data均为当前BL=8突发的第一个数据,同时也是最后一个数据,此时app_wdf_end 信号与app_wdf_wren信号同步,如下图所示

设置为2:1

  • 控制器工作时钟为DDR内部存储单元核心时钟的两倍
  • 因为第一点,为平衡数据传输量,app_wdf_data变为64(16*4)位,通过两次传输数据到控制器,完成一次DDR内部存储单元核心所需的数据量(也即 DDR内部存储单元BL=8的突发操作数据量16*8=128位)

此时发送的第一个有效数据app_wdf_data为当前突发的前4个16位数据,第二个数据app_wdf_data为当前突发的后4个16位数据,因此此时app_wdf_end 信号应该在第二个数据时拉高,与app_wdf_wren 信号关系如下图所示:

app_wdf_***中wdf即为write data fifo

参考资料 

DDR3 MIG 核中没有MT41K512M16**-107型号怎么处理? (xilinx.com)

DDR3 SDRAM IP 的写时序 | 电子创新网赛灵思社区 (eetrend.com)

DDR扫盲——关于Prefetch与Burst的深入讨论-Felix-电子技术应用

8Gb: x4, x8, x16 DDR3L SDRAM (digikey.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值