想要自己学习MIG控制器已经很久了,刚开始学习的时候也是在网上到处搜索MIG控制器的资料,深知学习过程的不容易。因此本系列的教程一定会详细的写出关于MIG控制器的相关知识,方便大家一起学习。有问题的朋友可以在下方留言,一起学习和讨论。
关于DDR3的基本知识在这里我就不详细说了,只有在相关的地方会提上一嘴。本教程的目的只是教会大家如何使用MIG控制器,大家一定不要觉得MIG控制器有多难,其实很简单的,跟着我在心里默念“MIG就像BRAM一样简单”。确实哈,当你回过头来看,MIG控制器的使用基本和BRAM的使用方法很像。
话不多说了,那么这第一个系列,我就先交大家来例化一个MIG控制器。
VIVADO版本:2016.4
芯片:zynq7035
1、打开vivado,新建一个工程,工程路径和名字自己定。
2、点击左侧的“IP Catalog”。
3、输入“MIG”,搜索MIG控制器。
4、双击“MIG”控制器,对MIG控制器进行设置。
5、然后会出来一个MIG控制器编辑界面,如下。直接NEXT.
6、选择“Create Design”,然后Next。(Number of Controllers 指的是你要几个控制器,AXI4 Interface指的是MIG是AXI4接口的,其他的选项你不用了解了)
7、 这里问的是你要不要兼容其他芯片,这里不用兼容,直接Next。
8、 选择“DDR3 SDRAM”,然后Next
9、这个界面很重要,有很多东西需要理解。按照如下设置,其他不变,然后Next。
解释:1、这里的400MHz指的是在DDR3这个芯片里面实际跑的时钟频率
2、4:1,指的是 DDR3时钟频率 : MIG控制器给用户的时钟频率 = 4:1。也就是,如果你设置DDR3的工作频率是400MHz,那么MIG控制器会给你一个100MHz的用户时钟。那这个用户时钟拿来跟什么呢?这个用户时钟是用来作为读MIG控制器地址生成的时钟。
3、Components指的是DDR3的型号是元件类,而不是像笔记本那种的插条类。笔记本是SODIMMs。这里一共有四个选项。
4、这是DDR3芯片型号,根据你的DDR3芯片手册来选。
5、电压,根据你的DDR3芯片手册来选。
6、DDR3的物理位宽,这个需要根据你自己的芯片来选择。
10、按如下设置,这个页面的选项也很重要。
1、这里的Input Clock Period 指的是输入到MIG里面的时钟是400MHz
2、这里设置读写为顺序读写,并且burst的长度设置为8。注意界面的小字部分。
3、这个我也不太清楚。
11、这个界面也很重要。按照如下设置,然后Next.
第一个是系统时钟System Clock: No Buffer, 为甚么选No Buffer,我也不太清楚,有知道的朋友可以在评论区下留言。
第二个是参考时钟Reference Clock:No Buffer,为甚么选No Buffer,我也不太清楚,有知道的朋友可以在评论区下留言。
第三个是系统复位极性,是对MIG控制器复位。这里选择低电平复位。
第四个是不需要系统调试信号。所以第五个Sample Data Depth 就不可选了。
第七个IO Power Reduction 是指打开低功耗。
第八个是XADC补偿使能。
12、内部终端电阻设置50欧姆。然后Next.
13、选择DDR3芯片引脚。这些引脚可以在电路原理图上查到,但是这样配置芯片引脚会很慢的。选择第二个,然后Next
选择第二个,直接读取DDR3的引脚,这样就不用进行配置了。
14、选“Read XDC/UCF” 直接读取DDR3的引脚。然后再点“Validate”,验证已经选择的引脚是否正确。只有验证正确了才可以点击Next.
15、剩下的就一直Next,遇到Accept就Accept ,最后Generate。