DDR3的使用(一)XILINX MIGIP核里面的时钟结构

我们要在fpga上挂载了DDR3,要使用的话基本上要借助fpga厂家提供的ip核,我们这里使用xilinx的k7挂载了ddr3,所以要使用mig IP核。图示如下:
在这里插入图片描述
如图,1处为ddr3内存颗粒,2处为mig ip核,3处为用户编写模块,有了mig ip核后我们只需要与ip核进行数据交互,使用起来就很容易了。
1.我们看下ip核的结构,在ug586中可以找到:
在这里插入图片描述
可以看到有四处时钟,我们分别看下:
1.)200 MHZ IDELAYreference clock 这一个是参考时钟,手册中写到:
在这里插入图片描述
这里必须固定给一个200M的时钟。
2.)系统输入时钟,这里是只我们要提供给ip核的一个时钟,具体给多少,我们一会看ip的生成过程。
3.)Internal (FPGA) LogicClock 这个就是ui clock,就是ip核给到外部的逻辑时钟,我们使用这个时钟编写我们的逻辑模块。
4.)此处时钟要给到ddr3芯片,具体给多少,要关注两个,一个是fpga支持的时钟频率,另一个是ddr3芯片能跑到的时钟速率。
我们使用的fpga芯片为K7,我们看下手册ds182如下:
在这里插入图片描述可以看到,不同的速率等级,不同的VCCAUX_I0电压,和接不同的管脚,都会影响速率。其中管脚接在hp和接在hr上速率差一半。我们使用-1等级器件,接在hp上,所以速率为1600M,也就是时钟频率为800M.ddr3芯片速率如下:
在这里插入图片描述
可以看到不同的后缀代表不同的速度。
2.我们再vivado中打开ip catalog,生成ddr3ip核。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.往下,直接看controler options。
在这里插入图片描述
这里设置的参数就是 MIG 的PHY 接口对DDR3的时钟,也就是DDR3芯片实际跑的IO时钟频率,它由system clock(主时钟)倍频而来,最大频率不能超过DDR3 和MIG支持的最大频率中的最小值,如:我们的DDR3芯片最高支持933Mhz的IO时钟,我们使用的FPGA芯片的MIG最高只支持800Mhz的时钟,所以这里我们选择800Mhz(当然也可以选择比这个小)。下面有个4:1,说明MIG 输出到app接口上的时钟ui_clk 是 800M/4=200M ,即到时我们在写RTL逻辑代码时操作MIG核时,用的就是这个200M时钟。
在这里插入图片描述
memory type指的是内存的组织形式,下拉可以看到里面有内存条选项,有笔记本内存条,也有台式机内存条,根据实际情况选择。其余的内容我们先不管,这里只先讨论和时钟相关的选项。
4.Memory Options
在这里插入图片描述
这里主要指的是输入给ip核的时钟,即红圈2处的时钟。
在这里插入图片描述
5.上图红圈2处的时钟是由锁相环生成的,所以不需要buff如下图红圈1处,红圈2处指的是上图1处时钟的来源,我们可以选择Use System Clock,这样就不需要另外给时钟了 :
在这里插入图片描述
6.通过上面的讲解我们初步明白了ip核的时钟结构和mig核中的对应关系和配置。接下来我们生成ip核代码看下:
在这里插入图片描述
红圈1处的差分时钟.ddr3 ck n.ddr3_ck p提供给DDR3芯片使用,频率为我们设定的800M,红圈2处的ui clk为ip核给我们的时钟,频率为200M,红圈3处的.sys clk i为我们提供给IP核的时钟,我们上面设置为200M,这个时钟一般由外部差分晶振提供,进入fpga中转为单端时钟提供给mig ip核。由于上面设置Reference Clock用sys clk,所以不用另外设置。
在这里插入图片描述
到这里,我们就基本上把ddr3的ip时钟关系讲清楚了,后面哪里没有涉及到的会继续补充。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值