lattice DDR3 IP核使用调试分享
本文为明德扬原创文章,转载请注明出处!
本文以一个案例的形式来介绍lattice DDR3 IP核的生成及调用过程,同时介绍各个接口信号的功能作用:
一、建立Lattice工程
1、首先,新建一个工程“lattice_ddr3”:

其中器件选择的是ECP5U系列LFE5U-45F-CABGA381芯片,Lattice的工程后缀是.ldf文件。进入工程界面后,添加模块文件:右键点击Input Files --Add--New File--Verilog Files即可添加。

2、添加了工程文件后,需要设置一个顶层,右键点击impl1,选择Set Top-Level unit,在弹出的窗口中设置顶层文件的名称,综合软件选择系统自带的Lattice LSE。

二、顶层文件设计
顶层文件中,需要包含输入输出信号,其中系统的输入是时钟clk和复位信号rst_n,输出是FPGA向DDR3的输出信号,信号的流程图如下所示:

其中,IP核控制模块Mem_burst中是双端口的输入输出,输入信号有顶层中产生的输入和IP核返回的输入信号;输出有IP核输出到Mem_burst的信号和控制模块输出到顶层的信号。
三、模块信号功能介绍:
DDR3 IP核的调用主要有两部分模块,分别是控制模块和IP核接口模块,其对应的各信号列表如下:
1、控制模块的信号功能列表如下所示:
信号名
|
位宽
|
I/O
|
功能
|
clk
|
1
|
I
|
工作时钟,由IP核输出时钟sclk提供
|
rst_n
|
1
|
I
|
复位信号,低电平有效
|
rd_burst_req
|
1
|
I
|
外部输入读请求信号
|
wr_burst_req
|
1
|
I
|
外部输入写请求信号
|
rd_burst_addr
|
28
|
I
|
外部输入读请求地址
|
wr_burst_addr
|
28
|
I
|
外部输入写请求地址
|
rd_burst_data_valid
|
1
|
O
|
控制模块读出到外部的有效数据
|
wr_burst_data_req
|
1
|
O
|