嵌入式硬件-Xilinx FPGA DDR4 接口配置基础(PG150)

news2024/11/15 10:08:15

1. 简介

1.1 DDR4 SDRAM 控制器主要特点

  • 支持8到80位接口宽度的组件(支持 RDIMM、LRDIMM、UDIMM 和 SODIMM)
    • 最大组件限制为9,此限制仅适用于组件,不适用于 DIMM。
  • 密度支持
    • 最高支持 32 GB 的组件密度,64 GB 的 LRDIMM,128 GB 的 RDIMM,16 GB 的 SODIMM 和16 GB 的 UDIMM。
    • 其他内存设备支持的密度可通过自定义部件选择获得支持。
  • AXI4从属接口
    • 注意:基于 x4 的组件接口不支持 AXI4,而基于 x4 的 RDIMM 和 LRDIMM 支持 AXI4。
  • 支持 x4、x8 和 x16 组件
  • DDR4 RDIMM、SODIMM、LRDIMM 和 UDIMM 的双槽支持
  • 8字节突发支持
  • 支持9到24个列地址脉冲(CAS)延迟(CL)
  • ODT支持
  • 3DS RDIMM 和 LRDIMM 支持
  • 3DS 组件支持
  • 支持9到18个 CAS 写延迟周期
  • Verilog 源代码交付
  • 4:1 内存到 FPGA 逻辑接口时钟比率
  • 开放、封闭和基于事务的预充电控制器策略
  • 通过Vivado硬件管理器提供接口校准和训练信息
  • 非 AXI4 72位接口的可选纠错码(ECC)支持
  • 不支持写操作的 CRC
  • 不支持地址/命令总线的2T定时

1.1.1 RDIMM, LRDIMM, UDIMM, SODIMM

DIMM(Dual In-line Memory Module)

DIMM,双列直插内存模块,一种常见的计算机内存模块。它是一块小型电路板,上面装有多个 DDR 芯片。DIMM 插入计算机主板上的相应插槽中,允许根据需要更改计算机的内存配置。与早期的 SIMM(Single In-line Memory Module,单列直插内存模块)不同,DIMM 的两侧有独立的电气接触点,能够提供更宽的数据通道(64 位),从而提高了数据传输效率。

RDIMM(Registered DIMM)

Registered DIMM 是一种带有寄存器的双列直插内存模块。寄存器位于 CPU 和 DRAM 芯片之间,用于缓冲数据传输信号,从而提高传输效率和稳定性。通常用于需要高稳定性和大容量内存的企业级服务器和高端计算机系统。

LRDIMM(Load-Reduced DIMM)

Load-Reduced DIMM 是一种降低负载的双列直插内存模块。与 RDIMM 不同,LRDIMM 使用内存缓冲芯片而不是寄存器来减少主板上的电力负载,这允许系统安装更多的内存模块,从而增加总内存容量,同时还能保持较高的数据传输速率。LRDIMM 非常适合需要极大内存容量的应用,如大型数据库、数据分析和高性能计算。

UDIMM(Unbuffered DIMM)

Unbuffered DIMM 是一种不带缓冲的双列直插内存模块。UDIMM 直接与系统的内存控制器交互,通常用于台式机和笔记本电脑。由于没有缓冲,UDIMM 的延迟较低,但支持的内存容量较小。

SODIMM (Small Outline DIMM)

Small Outline DIMM 是一种小型双列直插内存模块,主要用于笔记本电脑和其他空间有限的设备。SODIMM 的体积约为常规 DIMM 的一半,但性能和容量与全尺寸 DIMM 相似。

1.1.2 组件(Component)

组件(Component)指的是单个 DRAM 芯片。这些芯片是构成内存模块(如 DIMM)的基本单元。每个组件都有特定的容量和特性,它们共同决定了整个内存模块的性能和容量。

以下是一些关键点:

1)容量(Density)

  • 组件的容量通常以千兆位(Gb)为单位。例如,一个 8Gb 的 DRAM 组件可以存储 8 千兆位的数据。

2)位宽(Width)

  • 组件的位宽决定了每次数据传输的位数。常见的位宽有 x4、x8 和 x16,他们每次传输 4 位、8 位或 16 位数据。

3)组织(Organization)

  • 组件的组织方式描述了其内部结构,例如 8Gb x8 组件表示这个组件有 8Gb 的容量,每次传输 8 位数据。

4)速度(Speed)

  • 组件的速度通常以数据传输率(如 3200 MT/s)表示,决定了数据传输的快慢。

5)电压(Voltage)

  • 不同代的 DDR 组件工作在不同的电压下,DDR4 通常工作在 1.2V,而 DDR3 工作在 1.5V。

1.1.3 Bank / Rank

如果控制器数据位宽为 64bits,那么 CPU 每次操作内存数据为 64bits,如果组件是 8bits,那么就需要 8 个组件凑在一起,他们组成一组,称为一个 Rank。

1.1.4 模式寄存器

1.1.5 其他

DDR Bus Efficiency

指的是数据总线在传输数据时的效率。它衡量的是在给定时间内,数据总线实际传输的数据量与其理论最大传输能力的比率。高效的DDR总线意味着在最少的总线转换操作下,能够保持最高的数据传输效率。

内存控制器

内存控制器(MC)旨在从用户界面(UI)块接收读取、写入和读取-修改-写入事务,并以低延迟高效地将它们发送到内存,满足所有DRAM协议和时序要求,同时使用最少的FPGA资源。该控制器使用DRAM到系统时钟比率为4:1运行,每个系统时钟周期可以发出一个激活(Activate)、一个列地址选择(CAS)和一个预充电(Precharge)命令。
该控制器支持开放页策略,并且可以在具有高空间局部性的工作负载中实现非常高的效率。该控制器还支持封闭页策略,并具有重新排序事务以有效调度具有更随机地址模式的工作负载的能力。该控制器还允许通过UI控制信号对低级功能进行一定程度的控制,例如按事务基础上的自动预充电(AutoPrecharge),以及可以用于确定何时发出DRAM刷新命令的信号。

内存初始化和校准序列

在系统复位取消后,PHY首先执行一些必要的内部校准步骤。

PHY运行内置自检(BISC)。BISC用于在校准完成后计算用于电压和温度跟踪的内部偏移。
在完成BISC后,校准逻辑执行内存所需的上电初始化序列。
随后进行写入和读取数据路径的多个阶段的时序校准。
校准完成后,PHY计算内部偏移,用于电压和温度跟踪。
PHY指示校准已完成,控制器开始向内存发出命令。

1.2 DDR4 主要参数解释

1.2.1 VDD / VPP

2. 配置界面

2.1 Memory Part

MT40A512M16HA-075E, 8Gb, Row=16, Column=10, Bank=2, Bank Group=1, Ranks=1, StackHeight=1

重要提示:

应该使用DBI,通过将所有DQ总线上的“0”重复单个突发长度= 8(BL8)读取访问,并在每个BL8读取突发之间插入空闲(NOP/DESELECT),如图1-2所示。启用DBI功能有效地减轻过多的电源噪音。如果DBI不可用,则在数据到达内存控制器之前,在应用中对数据进行编码以消除所有“0”突发,也是减轻电源噪音的同样有效方法。对于缺少DM/DBI引脚的基于x4的RDIMM/LRDIMM接口,通过用于这些拓扑结构的ODT设置来减轻电源噪音。对于比16位更宽的基于x4的组件接口,建议使用数据编码方法。

区分数据总线宽度和突发长度的概念:

数据总线宽度:这是指存储器接口一次能并行传输数据的位数。例如,64位宽的数据总线每个传输周期可以传输64位(或8字节)数据。

突发长度:这指的是在一次突发操作中连续传输的数据块的大小,通常以字节为单位。突发长度可以是任何数值,但通常是内存接口宽度的整数倍。

对于64位宽的存储器接口,如果支持8字节突发,那么在理论上,每个传输周期可以完成一次完整的突发传输。

综上所述,8字节突发对于64位宽的存储器接口而言,确实是基本的操作单位,每个周期可以完成一次突发传输。但在不同的设计和应用需求下,可能会有不同的突发长度设置来优化性能。

4. 总结

5. 参考资料

  • 《UltraScale Architecture-Based FPGAs Memory IP Product Guide (PG150)》

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

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

相关文章

步步精慕尼黑上海电子展完美收官,感恩所有相遇,期待下次再会

2024年7月11日至13日,慕尼黑上海电子展圆满落幕,步步精科技(以下简称步步精)在此次展会上取得了丰硕的成果。作为连接器行业的重要制造商,步步精携带其最新产品和连接器技术方案亮相展会,吸引了大量参观者的…

【HarmonyOS】HarmonyOS NEXT学习日记:六、渲染控制、样式结构重用

【HarmonyOS】HarmonyOS NEXT学习日记:六、渲染控制、样式&结构重用 渲染控制包含了条件渲染和循环渲染,所谓条件渲染,即更具状态不同,选择性的渲染不同的组件。 而循环渲染则是用于列表之内的、多个重复元素组成的结构中。 …

RK3568笔记四十二:OLED 屏幕驱动(模拟I2C)

若该文为原创文章,转载请注明原文出处。 本篇记录使用GPIO模拟I2C驱动OLED屏幕,显示界面效果如下。 主要流程是,修改设备树,使用普通IO口,驱动模拟I2C方式,应用程直接传输数据控制。 1、修改设备 2、编写…

Go语言 Import导入

本文主要介绍Go语言import导入使用时注意事项和功能实现示例。 目录 Import 创建功能文件夹 加法 减法 主函数 优化导入的包名 .引入方法 总结 Import 创建功能文件夹 做一个计算器来演示,首先创建test文件夹。 加法 在test文件夹中创建add文件夹&#xff…

数据预处理在建模中的重要性与常见方法(三):特征工程篇

数据预处理在建模中的重要性与常见方法(三):特征工程篇 特征工程是数据预处理中至关重要的一步,通过构建、转换和选择最能代表数据特性的特征,以提高模型的性能和准确性。常见的特征工程方法包括特征选择、特征提取和特…

前端-模拟请求数据mook第三方插件 json-server的使用

大纲 第一步下载第二配置mook的数据源第三配置启动命令第四运行模拟服务第五测试接口如果要进行更复杂的操作 第一步下载 npm install json-server -D"devDependencies": {"json-server": "^1.0.0-beta.1"}第二配置mook的数据源 在项目的根目录…

某指挥调度系统功能展示(下)

照片管理 拍照是普通执勤巡检中很常用的信息记录功能。 通过此功能可以看到设备本地拍摄的照片,此平台分成了两部分: 一部分是设备上的,需要设备在线才可以访问;支持上传到平台,并且在设备端有相应的选择&#xff0…

人、智能、机器人……

在遥远的未来之城,智能时代如同晨曦般照亮了每一个角落,万物互联,机器智能与人类智慧交织成一幅前所未有的图景。这座城市,既是科技的盛宴,也是人性与情感深刻反思的舞台。 寓言:《智光与心影》 在智能之…

Linux性能分析之-CPU篇

开发车载软件app,除了常用Android操作系统外,还可能是基于Linux系统开发。对于web应用基本也都部署在Linux系统上,所以,进行系统性能分析,很大情况下都是对Linux系统进行性能分析。此篇博客将重点介绍如果收集CPU相关指…

GPT-4o mini是什么?

今天,全网都知道 OpenAI 发现货了! GPT-4o mini 取代 GPT 3.5,从此坐上正主之位。 从官网信息来看,OpenAI 最新推出的 GPT-4o mini 重新定义了 AI 成本效益的标准,其性能优于前代模型 GPT-3.5 Turbo,且成本…

SpringBoot系列—4.SpringBoot 整合Mybatis、MP(MyBatis-Plus)

SpringBoot系列—1.IDEA搭建SpringBoot框架 SpringBoot系列—2.SpringBoot拦截器篇 SpringBoot系列—3.SpringBoot Redis篇 SpringBoot系列—4.SpringBoot 整合Mybatis、MP(MyBatis-Plus) SpringBoot系列—5.SpringBoot 整合Mybatis-Plus分页 **1.pom.xm…

设计模式-Git-其他

目录 设计模式? 创建型模式 单例模式? 啥情况需要单例模式 实现单例模式的关键点? 常见的单例模式实现? 01、饿汉式如何实现单例? 02、懒汉式如何实现单例? 03、双重检查锁定如何实现单例&#xff…

【扩散模型(五)】IP-Adapter 源码详解3-推理代码

系列文章目录 【扩散模型(一)】中介绍了 Stable Diffusion 可以被理解为重建分支(reconstruction branch)和条件分支(condition branch)【扩散模型(二)】IP-Adapter 从条件分支的视…

前端JS特效第48集:terseBanner焦点图轮播插件

terseBanner焦点图轮播插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatibl…

python每日学习:异常处理

python每日学习8&#xff1a;异常处理 Python中的错误可以分为两种&#xff1a;语法错误和异常 语法错误(Syntax errors) &#xff1a;代码编译时的错误&#xff0c;不符合Python语言规则的代码会停止编译并返回 错误信息。 缺少起始符号或结尾符号(括号、引号等)。 缩进错误…

算法篇 滑动窗口 leetCode 30 串联所有单词的子串

串联所有单词的子串 1.题目描述2.题目解释2.1 原理解释2.2 文字分析 3.代码演示 1.题目描述 2.题目解释 2.1 原理解释 2.2 文字分析 3.代码演示

移动硬盘在苹果电脑上使用后在windows中无法读取 Win和Mac的硬盘怎么通用

在日益普及的跨平台工作环境中&#xff0c;苹果电脑与Windows PC之间的数据交换成为日常需求。然而&#xff0c;用户常面临一个困扰&#xff1a;为何苹果电脑的硬盘能在macOS下流畅运行&#xff0c;却在Windows系统中变得“水土不服”&#xff1f;这一问题核心在于硬盘格式的不…

mac docker no space left on device

mac 上 docker 拉取镜像报错 Error response from daemon: write /var/lib/docker/tmp/docker-export-3995807640/b8464f52498789c4ebbc063d508f04e8d2586567fbffa475e3cd9afd3c5a7cf2/layer.tar: no space left on device解决&#xff1a; 增加 docker 虚拟磁盘大小。如下图

Echarts + 低代码 :可视化如何赋能企业的创新之路?

Echarts最新技术资源&#xff08;建议收藏&#xff09; https://gcdn.grapecity.com.cn/forum.php?modviewthread&tid149493&highlightecharts 前言 数据驱动已经成为企业决策和业务优化的关键所在&#xff0c;在数字化时代&#xff0c;高效的数据分析与可视化呈现是…

多类支持向量机损失(SVM损失)

(SVM) 损失。SVM 损失的设置是&#xff0c;SVM“希望”每个图像的正确类别的得分比错误类别高出一定幅度Δ。 即假设有一个分数集合s[13,−7,11] 如果y0为真实值&#xff0c;超参数为10&#xff0c;则该损失值为 超参数是指在机器学习算法的训练过程中需要设置的参数&#xf…