DDR3:使用流程

一.  配置过程

1>首先找到IP核

Ddr的时钟iostandard_xlinx


2>选择兼容的片子,这个ddr兼容K7系列的三个片子

Ddr的时钟iostandard_FPGA_02


3>选择ddr3

Ddr的时钟iostandard_FPGA_03


4>配置工作时钟部分

       配置时钟前我们先了解一下ddr3的ip核的时钟关系,如下图,共三个时钟。Ip核心的工作时钟和参考时钟,必须直接连在电路板上,不可由IP核分频得到。

IP核的工作时钟常用频率:50M/200M(不必再选参考时钟)

Ddr的时钟iostandard_Ddr的时钟iostandard_04

Ddr的时钟iostandard_ddr_05



①:通过周期调整DDR3工作时钟


②: 4:1和2:1部分,是选择用户的工作时钟


4:1 表示在DDR3工作时钟400M情况下用户时钟为100M


2:1 表示在DDR3工作时钟400M的情况下用户时钟为200M


③:选择DDR3器件型号


④:选择数据的位宽,需要根据器件而定,比如64M*16bit=128M的ddr3芯片,挂两片的位宽就是32bit


Ddr的时钟iostandard_xlinx_06


⑤:表示数据掩膜,与keep线类似。


⑥:DDR3的bank数量


5>配置IP核时钟


Ddr的时钟iostandard_FPGA_07


①表示:IP核的工作时钟,常用时钟50M、200M(可以不选择参考时钟) 必须直连板子


②表示:数据顺序


③表示:地址类型


6>继续配置时钟


Ddr的时钟iostandard_数据_08


①选择系统时钟的输入方式:单端or差分


②选择参考时钟,如果选择200M系统时钟,可以不选参考时钟直接使用系统时钟作为参考时钟


③选择复位高低有效


7>该配置引脚了


Ddr的时钟iostandard_Ddr的时钟iostandard_09


8>配置引脚



分别为:信号名称(由原理图决定)/bank号/Byte号/引脚号/然后校对一下


Ddr的时钟iostandard_xlinx_10


分配参考时钟引脚

二.  ip核引脚说明

引脚名称

引脚方向

备注

ddr3_addr

output

 

ddr3_ba

output

 

ddr3_cas_n

output

 

ddr3_ck_n

output

 

ddr3_ck_p

output

 

ddr3_cke

output

 

ddr3_ras_n

output

 

ddr3_reset_n

output

复位状态信号

ddr3_we_n

output

 

ddr3_dq

inout

 

ddr3_dqs_n

inout

 

ddr3_dqs_p

inout

 

init_calib_complete

output

初始化完成信号

ddr3_cs_n

output

 

ddr3_dm

output

 

ddr3_odt

output

 

 

 

 

app_addr

input

要操作地址每次step为8

app_cmd

Input

写000读001

app_en

Input

使能信号

app_wdf_data

input

写入的数据【255:0】

app_wdf_end

input

last

app_wdf_wren

input

写使能

app_rd_data

output

读出的数据【255:0】

app_rd_data_end

output

最后一行一个上升沿last

app_rd_data_valid

output

读有效

app_rdy

output

 

app_wdf_rdy

output

 

app_sr_req

input

赋0

app_ref_req

input

赋0

app_zq_req

input

赋0

app_sr_active

Output

 

app_ref_ack

Output

 

app_zq_ack

Output

 

ui_clk

output

Usr的always时钟

ui_clk_sync_rst

output

Usr的复位信号

app_wdf_mask

input

Keep信号

 

 

 

sys_clk_i

input

直连板子时钟

clk_ref_i

input

直连板子时钟

sys_rst

input

直连板子系统复位

 

 

 

 

 

 

三.时序分析

1>写时序:在app_rdy与app_wdf_ready都拉高后,便可以进行操作。下达写数据cmd拉一个app_en同时输入写入的数据和地址,值得注意的是:DDR允许写使能信号落后cmd两个时钟后期之内。但是还是建议写的数据和地址都在一个周期之内




Ddr的时钟iostandard_数据_11



2>读时序

先下达读命令,同时拉高一个app_en和addr。然后就等着有效信号等着读数据。下几个周期的指令,回几个周期的数据。

Ddr的时钟iostandard_ddr_12

四.效果

做了一个往AADR0写入全F的数据,再读出的程序。效果如下:

Ddr的时钟iostandard_数据_13