Xilinx DDR3 —— MIG IP核的配置(APP接口)
作者:互联网
1. 打开IP Catalog然后搜索mig,如下图所示:
2. 如下图所示,首先是确认工程的信息,主要是芯片信息和编译环境的信息,如果没什么问题,直接点击“Next”。
3. 如下图所示,选择“Create Design”,在“Component Name”一栏设置该 IP 元件的名称,这里取默认软件的名称,再往下选择控制器数量,默认为“1”即可。最后关于 AXI4 接口,因为本工程不去使用AXI4 接口,所以不勾选。配置完成点击“Next”。
4. 如下图所示,该页主要是选择可以兼容的芯片,本工程默认不勾选,即不需要兼容其他的 FPGA芯片。配置完成点击“Next”。
5. 如下图所示,因为我们要用 DDR3 芯片,所以选择第一个选项“DDR3 SDRAM”,配置完成后点击“Next”。
6. 如下图所示,从这页开始,就开始正式配置MIG IP 核的各个参数了。
- Clock Period:DDR3 物理芯片使用的运行时钟,ddr芯片会以这个时钟采数据。这个参数的范围和 FPGA 的芯片类型以及具体类型的速度等级有关。我这里选择2500ps,对应 400M。注意这个时钟是 MIG IP 核产生,并输出给 DDR3物理芯片使用的,该时钟与DDR3 芯片具体的运行带宽相关。若DDR3 芯片的数据位宽总共为16位,则由于双沿触发的影响,运行带宽可达到12.8Gb/s(800M*16bit)。
- PHY to Controller Clock Ratio: DDR3 物理芯片运行时钟和 MIG IP核产生的用户端时钟(ui_clk)之比, 可以理解为(ddr3的工作时钟频率:用户时钟频率) = (4:1),一般有 4:1 和 2:1 两个选项。由于 DDR 芯片的运行时钟是400Mhz,因此 MIG IP 核的用户时钟(ui_clk)就是 100Mhz。一般来说高速传输的场合选择4:1,要求低延时的场合选择 2:1。只有当 DDR3 时钟低于 350M 才有 4:1 和 2:1 两个选项,否则默认为4:1。
- VCCAUX_IO: FPGA 高性能 bank(High Performance bank)的供电电压。它的设置取决于 MIG控制器运行的周期/频率。当用户让控制器工作在最快频率的时候,系统会默认为 1.8V。
- Memory Type: DDR3 储存器类型选择。默认选择 Component。
- Memory Part: DDR3 芯片的具体型号。本次选择 MT41J128M16XX-125,这个型号其实和实际硬件原理图上的型号可以不同的,只要用户的 DDR3 芯片容量和位宽一致即可。以上为例代表这一片ddr的位宽为16,总容量为128Mb x 16bit =256MB。
- Memory Voltage:DDR3 芯片的电压选择,由芯片决定,芯片手册上有。
- Data Width: 数据位宽选择,这里选择 16。
- ECC: ECC 校验使能,数据位宽为 72 位的时候才能使用。
- Data Mask: 数据屏蔽管脚使能。勾选它才会产生屏蔽信号。
- Number of Bank Machines: Bank Machine 的数量是用来对具体的每个或某几个来单独控制的,选择多了控制效率就会高,相应的占用的资源也多。若DDR3 芯片是八个 bank,这里选择 4 个,则平均一个 Bank Machine 控制两个BANK。
- ORDERING: 该信号用来决定 MIG 控制器是否可以对它收到的指令进行重新排序,选择 Normal 则允许,Strict 则禁止。本实验选择 Normal,从而获得更高效率。
7.上面的配置好之后,点击“NEXT”按钮,进入如下界面:
- Input Clock Period: MIG IP 核的系统输入时钟周期,该输入时钟是由 FPGA 内部产生的,即MIG IP 核的工作时钟。
- Read Burst Type and Length: 突发类型选择,突发类型有顺序突发和交叉突发两种,本次选择顺序突发(Sequential),其突发长度固定为 8。
- Output Driver Impdance Control: 输出阻抗控制。本次选择 RZQ/7。
- RTT: 终结电阻,可进行动态控制。本次选择 RZQ/4。
- Controller Chip Select Pin: 片选管脚引出使能。本实验选择 enable,表示把片选信号cs#引出来,由外部控制。
- BANK_ROW_COLUMN: 寻址方式选择。本实验选择第二种,即 BANK-ROW-COLUMN 的形式,这是一种最常规的 DDR3寻址方式,即要指定某个地址,先指定 bank,再指定行,最后指定列,这样就确定了一个具体地址。一般来说这样寻址方式有利于降低功耗,但是读写性能(效率)上不如“ROW_BANK_COLUMN”。
8.上面的配置好之后,点击“NEXT”按钮,进入如下界面:
- System Clock: MIG IP核的输入时钟。本次选择“No Buffer”, 是因为IP核的输入系统时钟是单端时钟,是由内部的MMCM产生的,MMCM所产生的时钟默认添加了buffer。
- Reference Clock: MIG IP 核参考时钟。同样选择“No Buffer”,将由时钟模块生成。
- System Reset Polarity: 复位有效电平选择。本次选择“ACTIVE LOW”低电平有效。
- Debug Signals Control: 该选项用于控制 MIG IP 核是否把一些调试信号引出来,它会自动添加到 ILA,这些信号包括一些 DDR3 芯片的校准状态信息。本实验选择选择“OFF”,不需要让 IP 核生产各种调试信号。
- Sample Data Depth: 采样深度选择。当“Debug Signals Control”选择“OFF”时,所有采样深度是不可选的。
- Internal Vref: 内部参考管脚,表示将某些参考管脚当成普通的输入管脚来用。若 IO资源较为紧张,可以选择“ON”,把参考管脚当做普通的输入管脚来用。
- IO Power Reduction: IO 管脚节省功耗设置。本次选择“ON”,即开启。
- XADC Instantiation: XADC 模块例化。使用 MIG IP 核运行的时候需要进行温度补偿,可以直接选择XADC模块的温度数据引到 MIG IP 核来使用,否则需要额外提供温度数据,所以本实验选择“Enable”。
9.继续点击“NEXT”按钮,界面如下图所示。
10.以上是高性能 bank 端接匹配阻抗的设置,这里不去改它,默认 50 欧姆即可。接下来点击“NEXT”按钮,界面如下图所示。
这里第一个选项是系统分配它认为的最合适的管脚(如果只是仿真,可以选择这个),第二个选项是由用户自己分配管脚。我这里只看仿真,固选择了第一个。
11.接下来一直点击next即可。
12.点击next即可。
13.点击next即可。
14.先点击accept,再点击next即可。
15.点击next即可。
16.点击generate即可。
17.点击generate生成MIG IP核。
18.等待综合完成后,如下图所示,右键选择Open IP Example Design,即可打开Xilinx官方提供的MIG IP核读写例程。
19.紧接着选择MIG IP核读写例程的存放路径 ,点击OK。
20.下图即为Xilinx官方提供的MIG IP核读写例程 ,点击Run Simulation进行仿真。
21.下图即为MIG IP仿真波形。(建议用modelsim仿真,vivado的仿真速度是真的慢)
22.我们只需关注UI端的这些信号。
23.首先观察写数据时的时序。
在init_calib_complete拉高后,即DDR初始化完成后,在第一根蓝线处,app_rdy为高,表示MIG IP核接收读写命令的准备完成,可以接收读写命令。此时app_en为高,app_cmd=0,app_addr=0表示写命令和地址被写入。与此同时app_wdf_rdy为高表明此时 IP 核数据接收处于准备完成状态,可以接收用户发过来的数据,在当前时钟拉高写使能(app_wdf_wren),给出写数据(app_wdf_data)。这样就可以成功向 IP 核写数据。这里有一个信号 app_wdf_mask,该信号用来屏蔽写入数据的,该信号为高则屏蔽相应的字节,该信号为 0 默认不屏蔽任何字节。
24.然后观察读数据时的时序。
在黄线处,app_rdy为高,表示MIG IP核接收读写命令的准备完成,可以接收读写命令。此时app_en为高,app_cmd=1表示读命令和读地址被写入。发出读命令后,只需等待数据有效信号(app_rd_data_valid)拉高,为高表明此时数据总线上的数据是有效的返回数据。通常在发出读命令一段时间后,有效读数据才能读出,如图中蓝线所示。
标签:芯片,DDR3,APP,MIG,选择,IP,时钟 来源: https://blog.csdn.net/weixin_43872190/article/details/122990129