在Artix7下测试并仿真DDR3模块

Ref:UG586

  1. 框图

 

时钟说明:

  1. DDR3的时钟为400M,来源于DDR3 IP核分配。
  2. DDR3 IP核的时钟为200M,来源于晶振通过PLL分频得到。
  3. 用户时钟(Ctrl)为100M,来源于DDR3 IP核分配。

 

Ctrl为用户编辑模块,主要功能就是简化MIG_IP核的用户接口以及配置成用户所需要的端口信号。

先介绍下DDR3的接口:

ddr_addr                 DDR3的行列地址

  ddr_ba                DDR3的bank地址

  ddr_cas_n ddr_ras_n ddr_we_n      命令控制

  ddr_ck ddr_ck_n            差分时钟

  ddr_dm               数据输入屏蔽

  ddr_o_dt             片上终端使能,用于使能和禁止片内终端电阻

  ddr_reset_n             DDR3复位

  ddr_dqs ddr_dqs_n          数据同步信号

  ddr_dq               传输数据

然后就是用户接口:

注:时钟比例为4:1,突发长度为8.

  1. 1 a7_ddr3_wr

A7_ddr3_wr框图

信号说明:

信号

方向

说明

Ui_clk

i

100M时钟,由MIG_IP提供。

A7_wr_start

i

开始写标志,1个脉冲信号。拉高代表ddr3写开始。

A7_wr_bl

i

写0-64个128bit的数据。

A7_wr_init_addr

i

写ddr3的初始地址。

App_rdy

i

读写请求。

A7_wdf_rdy

i

写请求。

A7_wr_data

i

写数据。

A7_wr_mark

i

写数据过滤。

A7_ddr3_信号时序图

开始写的时候,我们需要给一个A7_wr_start的脉冲信号,告诉FPGA开始写,并同时给出写突发长度a7_wr_bl和写初始地址a7_wr_init_addr。随后拉高写标志wr_flag,表示写正在进行。其他信号可在时序图分析,不在叙述。

  1. 2 a7_ddr3_rd

A7_ddr3_rd读

读ddr3和写ddr3类似,都需要一个flag来启动FPGA。

读出来的数据会伴随一个valid信号,我们可以把这个信号当成数据写使能把数据存到fifo中。

 

 

DDR3读时序

1.3 仿真

1.3.1 逻辑仿真

逻辑仿真的时候我们需要把DDR3的sv文件添加到tb文件里面。

这样就相当于ddr3控制器和ddr3硬件连接了。

DDR3在工作之前会进行初始化。当信号init_calib_complete信号拉高的时候代表ddr3初始化成功。

在tb文件里面设置往ddr3里写的数为:从0开始,然后每8bit+1.如图所示。然后看读出来的数据对不对。

如图,读出来的数据和写进去的数据一样,说明成功。

 

条件有限,时间有限,硬件就不测试了。

 

欢迎各位一起学习讨论,

博主QQ:1435197677

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值