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

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.mzph.cn/news/874233.shtml

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

相关文章

Transformer图文详解【Attention is all you need】

NLP-大语言模型学习系列目录 一、注意力机制基础——RNN,Seq2Seq等基础知识 二、注意力机制【Self-Attention,自注意力模型】 三、Transformer图文详解【Attention is all you need】 文章目录 NLP-大语言模型学习系列目录一、Transformer框架二、Encoder(1&#x…

第十四届蓝桥杯省赛C++B组I题【景区导游】题解(AC)

解题思路 题目已给出地图为一个 n n n 个点, n − 1 n-1 n−1 条路线的树。 对于计算树中任意两点的距离,我们可以使用 LCA 算法进行快速计算。 假设 a , b a, b a,b 的最近公共祖先为 c c c,那么 a , b a,b a,b 之间的距离为 d i s …

太速科技-基于XCVU9P+ C6678的8T8R的无线MIMO平台

基于XCVU9P C6678的8T8R的无线MIMO平台 一、板卡概述 板卡基于TI TMS320C6678 DSP和XCVU9P高性能FPGA,FPGA接入4片AD9361 无线射频,构建8输入8输出的无线MIMO平台,丰富的FPGA资源和8核DSP为算法验证和信号处理提供强大能力。 二…

python:本机摄像头目标检测实时推理(使用YOLOv8n模型)

本文将介绍如何使用本机摄像头进行目标检测实时推理的python代码。 文章目录 一、下载YOLO权重文件二、环境配置三、完整代码 一、下载YOLO权重文件 https://github.com/ultralytics/ultralytics?tabreadme-ov-file 拉到网页最下面,选择适合的模型,下…

【引领未来智造新纪元:量化机器人的革命性应用】

在日新月异的科技浪潮中,量化机器人正以其超凡的智慧与精准的操作,悄然改变着各行各业的生产面貌,成为推动产业升级、提升竞争力的关键力量。今天,让我们一同探索量化机器人在不同领域的广泛应用价值,见证它如何以科技…

sql注入的专项练习(含代码审计)

在做题之前先复习了数据库的增删改查,然后自己用本地的环境,在自己建的库里面进行了sql语句的测试,主要是回顾了一下sql注入联合注入查询的语句和sql注入的一般做题步骤。 1.获取当前数据库 2.获取数据库中的表 3.获取表中的字段名 一、sql…

饥荒dst联机服务器搭建基于Ubuntu

目录 一、服务器配置选择 二、项目 1、下载到服务器 2、解压 3、环境 4、启动面板 一、服务器配置选择 首先服务器配置需要2核心4G,4G内存森林加洞穴大概就占75% 之后进行服务器端口的开放: tcp:8082 tcp:8080 UDP:10888 UDP:10998 UDP:10999 共…

TiDB实践—索引加速+分布式执行框架创建索引提升70+倍

作者: 数据源的TiDB学习之路 原文来源: https://tidb.net/blog/92d348c2 背景介绍 TiDB 采用在线异步变更的方式执行 DDL 语句,从而实现 DDL 语句的执行不会阻塞其他会话中的 DML 语句。按照是否需要操作 DDL 目标对象所包括的数据来划分…

Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换

什么是管道(Pipe)? 在 Nest.js 中,管道(Pipelines) 是一种强大的功能,用于预处理进入控制器方法的请求数据,如请求体、查询参数、路径参数等。管道允许开发者在数据到达控制器方法之…

BGP协议的综合实验

目录 文章目录 一、题目 二、题目分析 题目需求 IP地址的划分 三、实验配置 IP地址配置 OSPF配置 检查OSPF配置: BGP配置 配置反射器 宣告1.1.1.1/8.8.8.8 查看结果 减少路由条目数量 配置GRE环境 提示:以下是本篇文章正文内容,下面案例可供…

yolo5图片视频、摄像头推理demo

yolo5图片、视频推理demo 图片 import torch# 加载预训练模型 model torch.hub.load(./yolo5, custom, pathyolov5s.pt, sourcelocal)# 加载图片 img 1.jpg# 进行推理 results model(img)# 解析结果 detections results.xyxy[0].cpu().numpy() # [x1, y1, x2, y2, confid…

【好玩的经典游戏】Docker环境下部署赛车小游戏

【好玩的经典游戏】Docker环境下部署赛车小游戏 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、构建容器镜像4.1 下…

全自动蛋托清洗机介绍:

全自动蛋托清洗机,作为现代蛋品处理设备的杰出代表,凭借其高效、智能、环保的特性,正逐步成为蛋品加工行业的得力助手。 这款清洗机采用了先进的自动化设计理念,从进料、清洗到出料,全程无需人工干预,极大…

C++:类与对象(下)

前言: 前言: 上一篇博客我们介绍了类与对象中的几类默认成员函数,这篇让我们继续来学习类与对象吧! 个人主页:Pianeers 文章专栏:C 如果有问题,欢迎评论区讨论! 希望能帮到大家&…

【数据脱敏】⭐️SpringBoot 整合 Jackson 实现隐私数据加密

目录 🍸前言 🍻一、Jackson 序列化库 🍺二、方案实践 2.1 环境准备 2.2 依赖引入 2.3 代码编写 💞️三、接口测试 🍹四、章末 🍸前言 小伙伴们大家好,最近也是很忙啊,上次的文章…

C++与VLC制作独属于你的动态壁纸背景

文章目录 前言效果展示为什么要做他如何实现他实现步骤获取桌面句柄代码获取桌面句柄libvlc_media_player_set_hwnd函数 动态壁纸代码 总结 前言 在当今的数字世界中,个性化和自定义化的体验越来越受到人们的欢迎。动态壁纸是其中一种很受欢迎的方式,它…

【教学类-70-01】20240722镜子花边(适配5CM圆镜)

背景需求 我想给孩子们做一个小圆镜,花边涂色,打洞,做一个项链样式 1、使用通义万相生成了“圆形镜子,有花边” 边缘细,黑色面积大的图片放到另外一个文件夹里(不用) 从性价比角度&#xff…

Qt窗口介绍

Qt窗口 一、Qt窗口二、菜单栏创建菜单栏在菜单栏中添加菜单创建菜单项在菜单项之间添加分割线综合练习 三、工具栏创建工具栏设置停靠位置设置浮动属性设置移动属性综合练习 四、状态栏状态栏的创建在状态栏中显示实时消息在状态栏显示永久的消息 五、浮动窗口浮动窗口的创建设…

Pytorch实现图像分类-水果数据集分类--深度学习大作业

目录 1.概述 2.设计 3.实现 4.实验 5.总结 1.概述 本次深度学习大作业,我使用AlexNet模型对"Fruits-360"数据集中的两部分水果和蔬菜图片进行分类 2.设计 模型设计:Alexnet网络 卷积层部分:构建了一系列卷积层、激活函数…

【等保测评】服务器——Windows server 2012 R2

文章目录 **身份鉴别****访问控制****安全审计****入侵防范****恶意代码防范****可信验证****测评常用命令** Windows服务器安全计算环境测评 测评对象:Windows server 2012 R2 身份鉴别 (高风险)应对登录的用户进行身份标识和鉴别&#x…