Altera DDR3 IP核配置及仿真

DDR作为常用IP,一般用于数据缓存,平滑带宽。本文以Altera DDR3 IP核为例,讲述其IP核配置、仿真及需要注意的时序要求,欢迎各位探讨、研究、拍砖。

 

FPGA器件型号:Cyclone5

DDR型号     :MICRON MT41K256M16HA

Quartus版本  :Quartus Prime 16.1 Standard Edition

 

1 IP核配置

(1)PHY Settings

Altera DDR3 IP核配置及仿真_第1张图片

 

Speed Grade:速度等级,和FPGA芯片有关。

Memory clock frequency:给DDR的时钟频率。

Achieved memory clock frequency:PLL生成的驱动外部DDR的实际频率(memory clock)。

PLL reference clock frequency:FPGA时钟引脚输入的时钟,供给DDR的PLL使用的时钟频率(关键设置);

Rate on Avalon-MM interfere:(关键设置)

Full——用户侧逻辑部分数据位宽x2,速度/2,达到了降频的目的;

Half——用户侧逻辑部分数据位宽x4,速度/4,达到了降频的目的;

Achieved local clock frequency:PLL生成的驱动本地接口的实际频率(AFI clock);

Additional address and command clock phase:是否允许地址、控制信号有相位的移动(是否需要设计待确认,默认不设置);

Supply voltage:提供电压,和DDR3芯片有关;

PLL sharing mode:指是否与IP核外部的PLL公用,如果公用的话会有相应的引脚从IP核引出——一般No sharing,不共用。

DLL sharing mode,OCT sharing mode同上。

 

(2)Memory Parameters和Memory Timing

Altera DDR3 IP核配置及仿真_第2张图片

对于Memory Parameters和Memory Timing,当在IP核配置页面左方library中,选定DDR型号(如本文MICRON MT41K256M16HA),点击Apply,即实现具体DDR器件和参数匹配,无需再设置,如下图。

Altera DDR3 IP核配置及仿真_第3张图片

(3)Board Settings

Altera DDR3 IP核配置及仿真_第4张图片

Board Settings:Use Altera’s default settings,保持默认即可。

(4)Controller Settings

Altera DDR3 IP核配置及仿真_第5张图片

 

Maximum Avalon-MM burst length:设定Avalon-MM总线的最大突发长度;

 

Local-to-memory address mapping:CHIP-ROW-BANK-COL,Avalon-MM地址映射方式,涉及到DDR的读写效率(Xilinx MIG IP Core映射为ROW-COL-BANK时,效率最高)。

Altera DDR3 IP核配置及仿真_第6张图片

Command queue look-ahead depth:有效范围1~16,较大值会提高Bank管理的效率,但也会占用更多的资源;

 

Enable reordering:勾选,会提高控制器效率;

 

Starvation limit for each command:指定等待命令执行前能够执行的命令数,有效范围1~64。

 

若想提高控制器效率,就从调节efficiency选项下参数着手。

(5)Diagnostics

Altera DDR3 IP核配置及仿真_第7张图片

Diagnostics:仿真相关参数设置,Auto-calibration mode:Skip calibration,跳过校验,其他保持默认即可。

 

IP核参数配置完成,点击生成IP即可。

 

2 IP核仿真

(1)打开Quartus,点击File → Open Project,打开刚才生成的仿真文件:generate_sim_example_design.qpf

(2)选择Tools → Tcl Scripts,点击generate_sim_verilog_example_design.tcl,click "Run"即可。

(3)打开modelsim,切换目录:xxx/simulation/verilog/mentor

(4)敲tcl命令:do run.do即可。

 

3 Tips:

(1)对于写传输,要在avl_ready有效时,avl_burstbegin,avl_addr,avl_write_req,avl_wdata,avl_be信号才有效;

(2)avl_burstbegin为突发传输起始标志位(读、写突发共用),不受avl_ready的影响,在发起一次读或写操作,只需保持一个clk有效,并且不管avl_ready状态如何;

(3)但是,对于读或写请求,avl_write_req,avl_read_req,每次发读写请求时,必须保证avl_ready是有效状态,读写请求才能被DDR控制器接收;

(4)对于写请求avl_write_req,必须保持到写数据完成,才能拉低;

(5)对于读请求avl_read_req,只需在avl_ready有效时,将读请求发出去即可,不用一直有效;

(6)avl_size为突发读写的最大数据量,可以在IP核中设置,可以设置为最大值,之后在逻辑中灵活配置;

(7)avl_addr为突发传输的首地址,所以每次突发传输,只需给出其首地址,随后地址自动递增。

                 欢迎关注我的微信公众号:FPGA干货架

                                                                   

 

你可能感兴趣的:(FPGA)