本文适用于DDR内存大小计算以及MIG核配置。
DDR型号为 MT41K256M16TW-107
图2.1.1
图2.1.2
此片DDR行地址位宽为[14:0],列地址位宽为[9:0],BANK位宽为[2:0],数据16位
那么此片DDR
一个BANK的地址大小:2^15*2^10=32Mb
内存地址大小:2^15*2^10*2^3=256Mb
内存大小:2^15*2^10*2^3*16=4Gb=512MB
在DDR型号MT41K256M16TW-107中我们可以看到256M就是内存地址大小,16是数据位宽,107是速度等级,对应的速度是1866M
MIG 核配置界面如下
选的是AXI4接口,app用户接口忘记咋用了...
图2.1.3
1:Clock_Period:选择MIG工作的时钟,最大为933M,因为是双沿采样,所以实际工作频率为1866M,也就是图2.1.2中的频率,第一次调试的话我一般会选择400M,测试没问题的话,速度可以往上提高
2:ui_clk:4:1:MIG输出的工作时钟ui_clk(写逻辑的时钟)为Clock_Period(400M)/4=100M,这个比例可以修改
3:DDR的型号MT41K256M16TW-107
4:根据DDR的型号选择数据位宽为16bit,如果在设计中需要两片及多片级联使用,需要按实际情况进行更改(两片就选32,以此类推,最大是72)
5:这里的bank_number不是DDR内部的BANK,它是MIG核做平衡的一个逻辑,所以建议不要修改,默认即可
图2.1.4
这里的位宽指的是MIG核逻辑接口的位宽,根据图2.1.3里的位宽会有稍许的变化,这里我选常用的32bit
图2.1.5
此处的频率是输入给MIG核的系统时钟:clk_sys_i:200M(此处建议200M)
clk_ref_i:参考时钟只能是200M(手册中有写)
图2.1.6
这两个时钟分别是系统时钟和参考时钟是单端的还是差分的,因为这两个时钟我是用PLL输出的,所以在这里选择no buffer,如果你选择的时钟是板子上的差分时钟,那么你就要选择差分就可以了
因为MIG的clk_ref_i时钟是固定的200M,图2.1.5中的clk_sys_i为200M,那么这个界面中的 Reference clk就可以选择使用系统时钟,这样就少一个时钟接口,直接给200M就行啦
后面的管脚约束就是对应板子上的管脚就可以了,然后生成IP核
这样,我们的MIG就配置OK了,下一步我们开始调用MIG核,进行读写驱动