以镁光的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。
Parameter | 2 Gig x 4 | 1 Gig x 8 | 512 Meg x 16 |
---|---|---|---|
Configuration | 256 Meg x 4 x 8 banks | 128 Meg x 8 x 8 banks | 64 Meg x 16 x 8 banks |
Refresh count | 8K | 8K | 8K |
Row address | 64K (A[15:0]) | 64K (A[15:0]) | 64K (A[15:0]) |
Bank address | 8 (BA[2:0]) | 8 (BA[2:0]) | 8 (BA[2:0]) |
Column address | 4K (A[13,11, 9:0]) | 2K (A[11,9:0]) | 1K (A[9:0]) |
Page size | 2KB | 2KB | 2KB |
下面以MT41K512M16为例进行分析。在手册中可以看到该芯片的结构示意图,如图1所示,在图中左侧可以看到有A[15:0]和BA[2:0]两组地址线,地址线的对应关系在表1中有说明,Row address与Column address共用A[15:0]地址线,在不同的时间分别输入这两组地址。

二、寻址方式 (存储结构)
寻址方式通过输入的地址信号,定位到SDRAM中的某一个存储单元,从而可以进行读写操作,因此分析寻址方式,同时也就是分析其存储结构。
放大分析图1左下角有关寻址的部分,如图2所示,可以看到输入的地址信号有三条走向,分别对应Row、Bank、Column三组地址,位宽也与三组地址相一致。

Bank address
首先是Bank地址,每个SDRAM具有8个Bank,由3位Bank地址可以寻址。由图中可以看到,每个Bank容量大小为65536128
128=1Gbit。Bank内的寻址由Row、Column寻址,因此每个Bank可以理解为由许多最小存储单元组成的二维平面。
Row address(行地址)
Bank内寻址,先是行地址,16位宽,具有2^16=65536个单元的寻址能力,对应于bank内部的65536个行,每个行内有128128=16384=16Kbit的容量。
Column address(列地址)
Bank内列地址与行地址寻址方式有所不同。
按常理分析,10位宽的地址,本应有2^10=1024个单元的寻址能力,然后每个最小单元存储位宽16bit,总共102416=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(列地址)剩余问题
再说上面列地址中残余的两个问题:
- 低3位列地址的作用?
- 为什么每个Cell具有128位?
上述中以MT41K512M16为例说明,芯片IO位宽为16,DDR3具有8n-bit的预加载,所以内部Cell的宽度就是168=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)