Xilinx DDR4 MIG 的调试

news2024/11/15 11:13:35

平台:Vivado2021.1

芯片:xcku115-flva1517-2-i (active)

语言:VerilogHDL

参考文件:pg150.下载地址

pg150-ultrascale-memory-ip.pdf • 查看器 • AMD 自适应计算文档门户 (xilinx.com)

DDR4介绍

DDR4,即第四代双倍数据率同步动态随机存储器SDRAM。前面我们学习过DDR3,DDR2。那么DDR4相比他们又提升在哪里呢?

新建BD工程:此部分为搭建PCIE控制DDR4的工程。

关于xilinx的DDR4的IP核,我们用户可以使用两种方式建立,第一种就是使用XILINX提供的标准的用户侧接口,也就是我们所熟悉的User interface。如下所示。

还有一种就是直接使用AXI接口的DDR控制器,使用AXI模式下的DDR4接口,我们不需要熟悉复杂的DDR4协议。也不需要使用用户侧接口来自己搭建。在 XILINX提供的BD原理图中我们可以直接调用IP核,然后选择一键连接就可以将整个系统搭建完毕。

如上图所示,我们使用一个标准的PCIE+DDR的存储模式。我们知道PCIE的XDMAIP核拥有三个接口,分别是AXI_MM,AXI_LITE,AXI_STREAM模式。其每一个接口也代表了不同的使用方法,比如我们AXI_MM接口,他拥有完整的AXI4协议。AXI协议包含读地址,读数据,写地址,写数据,写响应这几种。所以往往我们使用该接口来区分数据通道或者带有数据存储如BRAM,DDR等。而AXI_LITE就是AXI协议的基础版,对于PCIE来说我们一般用它来实现点到点的读写功能。而AXI_STREAM模式就是只包含数据流的AXI总线,由于该总线不含地址,所以速度上也是会快一点,我们往往用该总线传说不包含地址的数据流。例如FIFO等。

上图中我们在AXI_MM分别连接了DDR4的IP核,与内部存储的BRAM。而AXI_LITE上可以忽略掉。

本文章主要介绍DDR4IP核的配置和PCIE加DDR4的功能验证。

关于PCIE的设置。

这里选择GEN3*8模式,采用100mhz的参考时钟,使用AXI_MM接口,AXI数据位宽为256bit。

关于地址分配。

使用64位AXI地址。

C000_0000上挂BRAM。

8000_0000上挂DDR4。

测试的过程也很简单通过DMA模式向DDR4IP上写入数据和读出数据。

关于DDR4的IP核,在Ultra系列上DDR4的IP核与以往的DDR3DDR2的配置有一定的差异。

关于我们使用的这款DDR4内存条,根据其数据手册,DDR4支持的最高频率为1200MHZ,使用上下边沿传输数据也就是2400MHZ。这里我们来简单算一算DDR4的速率,这里我们使用一片,即数据位宽为16bit。所以理论上的数据率为2400MHZ*16bit=4800MB/S。如果使用内存模组最高可以达到64bit的数据位宽, 这时理论上的数据率为2400mhz*64bit=19200MB/S。速度还是相当的给力的。这里还需要关注一个地方,我们选择接口速率为1.2GHZ的时候,这里的参考时钟我们看到可以选择的范围为200.08mhz,而我们实际使用的参考时钟是200mhz的,这里我们实际测试下来并不会影响数据收发。

接下来四DDR4型号选择,这里要和你们原理图上的硬件型号相对应。关于数据位宽,如果原理图上设置的一组几片就选择多少。我们这里只使用了一片,就设置为16位。前面提到过64bit的数据位宽,按照这里就是使用了四片DDR,他们级联起来就是64bit的数据位宽。后面的突发位宽这里可以保持默认。

AXI选项页

AXI数据位宽支持选择。我们选择32位。

时钟配置界面

可以看到你的参考时钟和你第一页配置的一致。

高级选项

默认就好

I/O Planning and Design Checklist Tab

默认就好。

这里我们就新建好了。

工程测试。

由于我们是通过PCIE直连DDR4的模式。我们可以直接使用xilinx提供的测试函数取读写DDR4的数据。

在下载成功后,会自带的有个这个界面。我们在此界面上可以看到绿色的CAI PASS。表明DDR4初始化成功。此外在调试的过程中,会存在很多问题在此界面中。可以看到DDR4初始化到哪一个步骤下失败。从而取考虑硬件上的设计错误。

使用PCIE 下发数据。

分别测试了向0x8000_0000写入数据。(即向DDR4写入)

从0x8000_0000读出数据。(即从DDR4读出)

写入了4K的bin文件。后读出。数据一致。表明读写正常。

DDR4的测试完成,是不是发现xilinx把这些IP做的越来越简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1111064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隐藏Zotero批注图标(便利贴)

使用Zotero看文献做批注的时候,会出现图上类似于便利贴的图标,容易遮挡字体。 在"编辑"中选择"首选项","翻译"中去掉勾选"自动翻译批注"。 就好了

python二次开发Solidworks:扫描

在新零件文档中创建一个圆形草图和两条线段草图,并将它们插入到模型中。接着,选中圆形草图作为扫描轮廓,并选中两条线段草图并将它们分组为一个对象。最后,使用特征管理器的InsertProtrusionSwept4方法创建扫描特征。 import win…

gson如何序列化子类

需求 目前有一个需求,不同对象有一些公共属性,分别也有一些不同的属性。对方传过来的json字符串中,把这些对象组成了一个数组返回过来的。这样该如何反序列化呢? 举例 定义Person类、Student类、Worker类; Data To…

【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型

【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型 SKRR这是Gustau Camps-Valls等人在“用深度结构核回归检索物理参数”中提出的结构核岭回归(SKRR)方法。 参考文献: Camps-Valls,Retrieval of Physical Pa…

期中考核复现(web)

1z_upload 进到这个页面里面还是挺懵的,什么也不知道 点添加书籍之后发现变成了sql 师兄给了源码,看了之后找到了他的限制函数 但是肯定要先登录才可以 登录还是用bp爆破 最后得到账号密码是admin/admin12345 进来之后就可以看到那个文件上传的地方 上…

RabbitMQ入门到实战教程,MQ消息中间件,消息队列实战

消息队列是目前最常见的微服务中间件之一,而RabbitMq在全球范围内的使用率也是名列前茅。它以稳定性强、并发高、低时延的特点深受广大企业开发者的喜爱。然而市面上一致缺乏一个专门的RabbitMQ课程,所以这套课程应运而生。 微服务一旦拆分,必…

【Bug】【内存相关】偶然发现一个内存溢出Bug复盘

一、问题 跑自动化用例的时候,uat-sg环境,发现SGW经常会返回 502 Bad Gateway响应 二、原因 经过SRE和BE Dev共同排查,502 是从ALB-- > 后端服务 后端服务无法响应导致,ALB会直接给客户端返回502。 服务端:由于c…

C# Winform编程(6)高级控件

C# Winform编程(6)高级控件 RadioButton(单选框)PictureBox(图像框)TabControl(选项卡)ProgressBar(进度条)TrackBar(滑动条)ImageList(图像列表控件)ToolBar…

29栈与队列——优先队列

目录 LeetCode之路——347. 前 K 个高频元素 分析 优先队列 简单示例 运行结果 源码简析 LeetCode之路——347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: num…

一剑破万法:noexcept与C++异常导致的coredump

作为C/C程序员,最不想见到的就是coredump。导致coredump的原因有很多,今天我来谈一下其中一种十分常见的原因,那就是由于C异常没有被catch导致的coredump。 从一篇知乎文章讲起 先看一位知友的文章: C11 std::thread异常coredu…

[ROS2系列] ORBBEC(奥比中光)AstraPro相机在ROS2进行rtabmap 3D建图

目录 背景: 一、驱动AstraPro摄像头 二、安装rtabmap error1:缺包 三、尝试 四、参数讲解 五、运行 error2: Did not receive data since 5 seconds! 六、效果​编辑 error4: 背景: 1、设备:pc;jeston agx …

使用kyuubi查询出现集群单节点cpu飙升问题

问题现象: 单节点cpu飙升 初步定位原因是: 业务人在查询操作时,表被锁表,查询不出结果,就反复执行,导致堆积,并kyuubi又是高并发操作。 (当一些操作在共享锁阻塞期间积压时,这些操…

Leetcode 349 两个数组的交集 (*哈希数组,*HashSet,*HashMap)

Leetcode 349 两个数组的交集 (*哈希数组,*HashSet,*HashMap) 解法1 [用数组构建hashmap] 😋HashSet and .HashMap1.HashSet2.HashMap 解法2 [使用HashSet]⭐️ 解法1 [用数组构建hashmap] 😋 自己的笨比方…

【ES实战】ES主副分片数据不一致分析

ES主副分片数据不一致分析 文章目录 ES主副分片数据不一致分析问题描述问题重现问题分析修复方案 问题描述 在请求索引中的某一条数据时,时而查询有结果,时而无结果。两种情况交替出现。 问题重现 通过对问题数据的点查,确实重现了该现象 …

CSDN 操作

CSDN的目录界面,会随着浏览器界面的大小而变化,分布在左边位置或者右边位置。 目录界面在右: 目录界面在左: 按键Ctrl, 滑动鼠标滚轮,就可以放大或者缩小界面。

Intelijj使用Gitee团队开发

初始化项目到Gitee服务器 成功标识: 添加团队成员 点击管理——仓库成员设置——开发者 2.添加仓库成员 (最多不超过5人) 3.通过链接或者二维码邀请新成员,或者可以自己手动添加新成员并提交 多人项目仓库创建完成 通…

有什么小程序可以下载视频号的视频?

​最近有一些朋友问我,【视频号下载助手】和【视频下载bot】小程序,有什么作用? 首先视频号下载助手是协助用户进行下载的,但由于下载要符合平台规定,我们就将视频下载助手与视频下载bot小程序想结合的模式&#xff0…

盛水最多的容器

题目: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你…

uniapp高德地图ios 使用uni.chooseLocation选取位置显示没有搜索到相关数据

uniapp云打包后,高德地图ios选取位置显示“ 对不起,没有搜索到相关数据” 详细问题描述 废话不多说,直接上图 解决方案 1.打开高德地图开发平台 2.重新创建key 3.获取云打包时的ios报名作为安全码 4.使用生成的高德key更改manifest.json里…

vue项目使用highlight.js 代码高亮插件,并给它添加行数

效果图: 1. 首先封装highlight.js,在main中引入即可使用,./utils/highlight.js 是我的目录 改成自己的; // main中引入语法高亮配置 import Highlight from ./utils/highlight Vue.use(Highlight) 封装: import Vue from vue im…