FPGA DDR3实战(二):手把手教你仿真DDR3(MIG IP核)

《FPGA DDR3权威指南》系列导航
   

      《FPGA DDR3权威指南》系列旨在从零到一带你彻底掌握DDR3设计精髓关注我,你可以:

  1. 系统学习,避免知识碎片化。
  2. 获得更新提醒,不错过任何一篇干货

本篇是该系列的第二篇内容

       上一篇:FPGA DDR3实战(一):详解Xilinx MIG IP核配置_mig ip核轻松配置ddr3-优快云博客

       下一篇:FPGA DDR3实战(三):使用AXI VIP作为主设备进行DDR3工程级仿真-优快云博客


一:引言

       在上一篇《FPGA DDR3实战(一):详解Xilinx MIG IP核配置》中,我们成功配置并生成了一个MIG IP核。然而,直接将未经充分验证的逻辑下载到板卡上是极其危险的——时序违例、初始化失败等问题轻则导致功能异常,重则损坏硬件。

       本篇将为你解锁FPGA开发的“安全区”:通过仿真,在不依赖硬件的情况下,深入观察MIG IP核的初始化过程、读写时序,并验证用户逻辑的正确性。 我们将使用Vivado自带的仿真工具,一步步搭建一个DDR3仿真环境。

二、仿真环境搭建:获取DDR3仿真模型

这是仿真成功的第一步!

1 .Open IP Example Design

      按照之前的配置生成好IP核之后,右键点击Open IP Example Design(我这个是在BlockDesign中添加的IP核,所以界面是这样子的,大家直接使用IP Catalog添加的,右键打开也是一样的,但是使用DDR3还是建议大家在BlockDesign中进行添加,因为AXI总线如果自己去接信号比较麻烦,放在BlockDesign里面直接接线会比较方便一些)

之后会打开这样一个工程,这个是xilinx自带的一个仿真工程

2  Run Simulation

      点击Run Simulation我们可以跑一下

会打开如下仿真界面

三:关键时序分析

     我们从左侧,选择我们要看的IP核,右键 Add to Wave Window,就可以打开mig的时序

如下图所示,我们可以看到几个关键信号

Mmcm_locked:拉高说明时钟输入正常

Init_calib_Complete:拉高说明DDR初始化已经完成,可以进行正常的数据传输

这也是咱们硬件调试的时候两个关键信号,最好可以直接接到一个LED灯上,显示DDR的状态。

DDR初始化完成之后,我们在AXI4总线上可以看到如下数据传输。

       展开之后可以看到,第一笔是在0x0000_0000地址上写了3笔0x5a5aa5a5………的数据,为什么这里写的是3笔?因为这是burst传输,awlen配置为2,所以传输数据为awlen+1个

      写完之后,接着就读了一次地址0x0000_0000, 读出来的值也是0x5a5aa5a5………,读写一致,即此地址的DDR3读写正常

       其实初学者理解到此就可以的,只要保证通过AXI4写入的DDR3的数据与从DDR3读取的数据一致就可以了,如果要深究可以看到,如下,通过AXI4写入DDR3的数据转成了如下总线形式,传给了硬件的DDR3颗粒,这里如果有需要详细了解的也可以给我留言,但其实一般也不用了解这些。

【精髓】:关键仿真波形观测要点

在仿真波形窗口中,添加并观察以下关键信号组,这能让你清晰地把握整个数据传输过程:

  • 初始化状态ui_clkui_clk_sync_rstinit_calib_complete

  • AXI写通道S_AXI_AW*S_AXI_W*S_AXI_B*。重点观察VALID/READY握手。

  • AXI读通道S_AXI_AR*S_AXI_R*。重点观察VALID/READY握手以及RLAST信号。

  • DDR3颗粒接口ddr3_dqddr3_addrddr3_ba等,可以直观看到底层命令和数据的流动。

  • 仿真速度:DDR3仿真模型非常复杂,仿真速度很慢,大家务必耐心等待。

总结

        通过本篇的学习,你已经掌握了在“软环境”中验证DDR3的基础功能。但xilinx自带仿真我们也可以看出,写地址其实是随机的,很难去覆盖所有的地址空间,FPGA DDR3实战(三):使用AXI VIP作为主设备进行DDR3工程级仿真会给大家再讲到如果使用AXI_VIP搭建DDR3仿真环境,这样的仿真就会更贴近于咱们实际工程使用,欢迎大家在评论区留言,多多点赞关注,您的互动是我前进的动力!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA_小田老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值