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

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

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

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

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

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

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

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


一:引言

       在上一篇《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仿真环境,这样的仿真就会更贴近于咱们实际工程使用,欢迎大家在评论区留言,多多点赞关注,您的互动是我前进的动力!!!

Read more

【CS创世SD NAND征文】为无人机打造可靠数据仓:工业级存储芯片CSNP32GCR01-AOW在飞控系统中的应用实践

【CS创世SD NAND征文】为无人机打造可靠数据仓:工业级存储芯片CSNP32GCR01-AOW在飞控系统中的应用实践

一、引言:无人机时代的数据存储挑战 在无人机(UAV)技术飞速发展的今天,其应用范畴早已突破消费级航拍的界限,深度渗透至测绘勘察、基础设施巡检、精准农业、安防监控乃至国防军事等工业级领域。每一次精准的自动巡航、每一帧高清图像的实时图传、每一条飞行轨迹的忠实记录,都离不开飞控系统这颗"大脑"的精密运算。然而,大脑的决策依赖于记忆与学习,而承担这一"记忆"任务的存储单元,其可靠性直接决定了飞行任务的成败与数据的价值。一次意外的数据丢失或存储故障,不仅可能导致珍贵的测绘数据付诸东流,造成重大的经济损失,甚至可能引发严重的飞行安全事故。因此,为无人机飞控系统选择一款高性能、高可靠的存储芯片,已成为行业设计中不可或缺的关键一环。 本文将围绕基于全志MR100主控平台与CS创世SD NAND(具体型号:CSNP32GCR01-AOW)构建的新一代无人机飞控存储方案,深入探讨工业级存储芯片如何为高端无人机赋予稳定、可靠的"数据生命线",助力无人机技术在各个领域发挥更大的价值。 二、应用产品介绍:无人机飞控系统——空中机器人的智能核心

AI助力FPGA开发:Vivado下载与智能编程实践

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 点击'项目生成'按钮,等待项目生成完整后预览效果 输入框内输入如下内容: 创建一个AI辅助FPGA开发的工具,支持自动生成Vivado项目配置代码,包括IP核集成、约束文件生成和仿真测试脚本。工具应能根据用户输入的硬件描述(如'需要实现一个UART通信模块')自动推荐最佳实践代码,并支持与Vivado无缝集成。提供错误检测和优化建议功能,帮助开发者快速定位问题。 作为一名FPGA开发者,我经常需要花费大量时间在Vivado的环境配置和代码调试上。最近我发现了一些AI辅助工具,可以显著提升开发效率,今天就和大家分享一下我的实践经验。 Vivado下载与基础配置 1. 首先需要从Xilinx官网下载Vivado设计套件。建议选择最新版本,因为AI工具通常对新版本的支持更好。下载时要特别注意选择适合自己操作系统的版本,Windows和Linux版本在功能上会有一些差异。 2. 安装过程中,建议选择"Vivado HL WebPACK&

基于Stable Diffusion的多模态图像生成与识别系统

基于Stable Diffusion的多模态图像生成与识别系统

引言 随着AI技术的快速发展,图像生成技术已经取得了突破性进展。Stable Diffusion作为当前最先进的扩散模型之一,能够根据文本描述生成高质量、多样化的图像。为了让更多用户能够便捷地使用这一技术,我开发了一款基于Stable Diffusion的多模态图像生成与识别工具,支持文字生图、图生图、局部重绘等多种功能,并提供了直观友好的Web界面。 项目概述 本项目是一个基于Stable Diffusion的多模态图像生成与识别工具,旨在为用户提供一个功能完整、操作简便、性能优良的图像生成平台。项目采用了模块化架构设计,支持多种图像生成模式,并提供了LoRA模型管理功能,允许用户扩展和定制生成效果。 项目特点 * 功能全面:支持文字生图、图生图、局部重绘等多种生成模式 * 易于扩展:支持LoRA模型上传和管理,允许用户定制生成风格 * 操作简便:提供直观友好的Web界面,无需专业知识即可快速上手 * 性能优良:支持GPU加速,生成速度快,内存占用低 * 安全可靠:实现了全面的安全策略,保护系统和用户数据 成果演示 核心功能介绍 1. 文字生图 文字生

【前端小站】HTML 标签:网页骨架,从空白到惊艳,全靠这些 HTML 标签搞事情

【前端小站】HTML 标签:网页骨架,从空白到惊艳,全靠这些 HTML 标签搞事情

半桔:个人主页  🔥 个人专栏: 《前端扫盲》《手撕面试算法》《C++从入门到入土》 🔖为什么有人总是赞美生活的丰富多彩?我想这是因为他们善于品尝生活中随时出现的意外。 -余华- 文章目录 * 前言 * 一. HTML结构 * 1.1 初始HTML标签 * 1.2 标签的层次 * 二. HTML文本标签 * 2.1 标题标签 * 2.2 段落标签 * 2.3 强调标签 * 2.3.1 加粗 * 2.3.2 倾斜 * 2.3.3 删除线 * 2.3.4 下划线 * 三. 媒体与交互标签 * 3.