目录
一、DDR3 IP核简介
二、DDR3 IP核调用
在千兆以太网通信中用到了DDR3控制器,但是并没有对其做相关介绍。这次准备重新整理一下DDR3控制相关知识,复习巩固一下。
一、DDR3 IP核简介
MIG IP核(Memory Interface Generator)是Xilinx提供的IP核,专门用于处理存储器接口的生成和管理。它的主要功能是简化和优化FPGA与外部存储器(如DDR SDRAM)之间的数据传输和通信。
需要说明的是,DDR3 IP是软核,因此需要占用逻辑资源,在FPGA选型时需要注意。
二、DDR3 IP核调用
本项目使用的Vivado软件版本为2020.2。在新建的工程中,打开IP catalog,搜索memory,找到MIG选项,双击打开。
进入IP调取界面,在这里显示有选用的芯片型号、开发环境等信息。
点击Next,这一页可以自己定义IP核名字,选则控制器数量。这里我们将IP核命名为mig_7serise_0,控制器数量为1。最后的选项选择是否使能AXI,我们这里不勾选。
点击Next,进入芯片选择界面。如果有使用到的芯片型号可以选择,没有不用管。直接下一步。
这里我们选择控制器类型为DDR3。
继续Next,进入IP核参数设置页面。
Clock Period:设置DDR3 的工作频率。这里我们选择2500ps,即400M。
PHY to Controller Clock Ratio:物理芯片运行时钟和 MIG IP 核的用户端( FPGA)的时钟之比,这里默认4:1。这个时钟就是之后代码中的ui_clk。
Memory Type:选择DDR3芯片的信号,若选项中没有对应的芯片类型,可以在Creat Custom Part中自定义芯片参数。
Memory Voltage:是 DDR3 芯片的电压选择,本实验选 1.5V。
Data Width:数据位宽选择,由于我们使用的开发板上有两片DDR3组成32bit存储器,所以这里选择 32。
这里计算一下DDR3的理论带宽=400 * 2 *32 = 25.6Gbps(400指PHY时钟,2指DDR,32指数据位宽),考虑半双工情况下带宽为一半。
点击Next,进入下一个memory参数设置页面。
Input Clock Period:MIG控制器输入时钟周期,这里我们选择5000ps(200M)。这个值每次重新打开IP时会自己变为2500ps,很奇怪。
Read Burst Type and Length:突发类型。选择顺序突发,这里有介绍:突发长度为8。
Memory Address Mapping Selection:寻址方式。这里我们选择第二种:先指定 bank,再指定行,最后指定列。
Output Driver Impdance Control是阻抗设计相关选;RTT是终结电阻选项;Controller Chip Select Pin是片选管脚引出使能。本项目中这些选项默认即可。
点击Next,设置系统时钟和参考时钟。
System Clock: MIG IP 核系统时钟,准确地说应该是上一步设置的时钟的属性。系统时钟有 single_ended、deferential 和 no buffer 三种, single_ended 为来源于引脚的单端时钟, deferential为差分时钟, no buffer 为来源于 FPGA 内部的时钟。这里我们选择 no buffer。
Reference Clock: MIG IP 核参考时钟。参考时钟有 single_ended、 deferential 、 no bufferuse和system clock四种。这里我们选择system clock。
本界面其他现行默认即可。
点击Next,选择DDR3终端电阻为50欧姆(默认):
点击Next,进入如下界面。在这里选择第二项,导入约束文件。
点击Next,选择Read XDC/UFC,打开约束文件。
之后点击Validate,验证约束文件有效。
点击Next,进入以下界面,默认即可。
点击Next,这个界面是对创建的IP核的总结。
点击Next,勾选Accrcpt。
点击Next,最后点击Generate,生成IP核。