Xilinx FPGA平台DDR3设计详解(一):DDR SDRAM系统框架
DDR SDRAM(双倍速率同步动态随机存储器)是一种内存技术,它可以在时钟信号的上升沿和下降沿都传输数据,从而提高数据传输的速率。DDR SDRAM已经发展了多代,包括DDR、DDR2、DDR3、DDR4和DDR5,每一代都有不同的特性和性能。DDR SDRAM系统包含DDR控制器、DDR PHY和DRAM存储颗粒,下面开始分别介绍这三个部分。

一、DDR 控制器
DDR控制器是连接CPU和DDR SDRAM的桥梁,负责生成控制信号来管理读写操作。控制器需要实现命令队列重排序、银行管理、功率管理等功能。
内存控制器接收来自于一个或者多个请求,由仲裁器来决定这些请求的优先级,生成对应的命令序列放置在内存控制器中的队列池(Queue pool)中,内存控制器依次执行队列池的命令,并将逻辑地址转化为物理地址,再经由PHY驱动DRAM的物理IO口。
1、Arbitration CMD priority(仲裁器)
仲裁读写请求的优先级,根据优先级进行处理,从而确定如何向控制器发出请求的顺序。
2、DDR SDRAM Control (控制器)
接受来自仲裁器的命令,并形成一个命令队列。
这个命令队列通过重排算法来决定命令的放置顺序,常用的规则有:地址碰撞、源碰撞、数据碰撞、命令类型和优先级,这样来确定命令插入到命令队列的位置。
当命令进入命令队列后,控制器的选择逻辑扫描命令队列中的命令,优先执行高优先级的命令。
如果较高优先级的命令未准备好,则较低优先级的命令可以先于这个未准备好的高优先级命令运行。
3、Transaction Processing(执行器)
用于处理命令队列中的命令,支持重排命令,以使DRAM的读写带宽吞吐达到最大化。
二、DDR PHY
DDR PHY是连接DDR DRAM颗粒和DDR Controller的桥梁,负责把DDR Controller发过来的数据转换成符合DDR协议的信号,并发送到DDR颗粒。另一方面,它也负责把DRAM发过来的数据转换成符合DFI协议的信号并发送给内存控制器。
具体来说,DDR PHY具有以下功能:
1、初始化
DDR PHY负责进行初始化,包括training等过程,确保DDR颗粒能够正常工作。
2、数据传输
DDR PHY将DDR Controller发送的数据转换为符合DDR协议的信号,并将这些信号发送到DDR颗粒。同时,它也将DRAM发送的数据转换为符合DFI协议的信号,并将这些信号发送给内存控制器。
3、寄存器管理
DDR PHY提供了一些寄存器,用于配置和管理DDR颗粒的参数,如时序、电压等。
错误检测与处理:DDR PHY还负责进行错误检测和处理,确保数据传输的正确性。
DDR PHY和DDR controller统称为DDR IP,他们保证了SoC和DRAM之间的数据传输。
三、DDR DRAM颗粒
DDR DRAM颗粒是DDR系统中的存储单元,每个单元由一个电容和晶体管组成,用来存储一个bit的数据。
1、DDR PHY到DDR内存颗粒的层次关系
channel->DIMM->rank->chip->bank->row/column组成的memory array

2、详细解释
(1)Channel
一个通道对应一个DDR控制器,每个通道拥有一组地址线、控制线和数据线。
(2)DIMM
主板上的一个内存插槽,一个channel可以包含多个DIMM。
(3)Rank
一组可以被一个内存通道同时访问的芯片组合称作一个rank,一个rank中的每个芯片都共用内存通道提供的地址线、控制线和数据线,同时每个芯片都提供一组输出线,这些输出线组合起来就是内存条的输出线。
简单理解,rank是一组内存芯片集合,一个Rank的内存总位宽等于芯片位宽*芯片数, 64bit的位宽,即表示一般每个芯片位宽是8bit,然后内存条每面8个芯片,那么每面就构成了一个Rank,这两面的Rank通过一根地址线来区分当前要访问的是哪一面。
同一个Rank中所有的芯片协作来读取一个地址(1个Rank,8个芯片*8bit=64bit),这个地址的不同bit,每8个一组分散在这个Rank上的不同芯片上。设计Rank的原因是为了减少每个芯片的位宽(在CPU总位宽确定的前提下,比如64bit),降低复杂度。
(4)Chip
表示内存条上的一个芯片,由多个bank组成,大多数是4bit/8bit/16bit,多个chip做成一个rank,配合完成一次访问的位宽。
(5)Bank
这是一个逻辑上的概念。一个bank可以分散到多个chip上,一个chip也可以包含多个bank。
(6)Row、Column组成的memory array
可以简单的理解bank为一个二维bit类型的数组。每个bank对应一个bit,8个bank组成8bit的数据。
四、总结
DDR技术从最初的DDR1到当前的DDR5,通过不断提升时钟频率、传输速率和带宽等指标,大幅度改进了内存性能。DDR系统由控制器、PHY和DRAM存储单元组成,控制器负责命令调度,PHY负责信号转换,三者协同工作完成内存的读写操作。
DDR的层次结构也变得更加复杂,从channel到rank再到bank,需要各个层次的协作才能完成一次内存访问。
DDR技术的进步与计算系统性能的提升是同步的,也使我们看到内存系统的重要性。未来DDR技术仍有很大的发展空间,将继续推动计算机性能的增强。
本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦
本文由FPGA入门到精通原创,有任何问题,都可以在评论区和我交流哦
您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。
相关文章:
Xilinx FPGA平台DDR3设计详解(一):DDR SDRAM系统框架
DDR SDRAM(双倍速率同步动态随机存储器)是一种内存技术,它可以在时钟信号的上升沿和下降沿都传输数据,从而提高数据传输的速率。DDR SDRAM已经发展了多代,包括DDR、DDR2、DDR3、DDR4和DDR5,每一代都有不同的…...
Spring Data JPA方法名命名规则
最近巩固一下JPA,网上看到这些资料,这里记录巩固一下。 一、Spring Data Jpa方法定义的规则 简单条件查询 简单条件查询:查询某一个实体类或者集合。 按照Spring Data的规范的规定,查询方法以find | read | get开头&…...
【Leetcode Sheet】Weekly Practice 15
Leetcode Test 2586 统计范围内的元音字符串数(11.7) 给你一个下标从 0 开始的字符串数组 words 和两个整数:left 和 right 。 如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个 元音字符串 ,其中元音字母是 a、e、i、o、u…...
人力资源社会保障部办公厅关于推行专业技术人员职业资格电子证书的通知
(人社厅发〔2021〕97号) 各省、自治区、直辖市及新疆生产建设兵团人力资源社会保障厅(局),中共海南省委人才发展局,国务院有关部门、直属机构人事部门,有关协会、学会: 为贯彻落实…...
什么是光电耦合器?如何选择型号及种类
光电耦合器(英文缩写为OC)亦称光电隔离器,简称光耦;以光为媒介传输电信号;它对输入、输出电信号有良好的隔离作用,是目前种类最多、用途最广的光电器件之一;所以,它在各种电路中得到广泛的应用。 光耦合器…...
hive里因为列名用了关键字导致建表失败
代码 现象 ParseException line 6:4 cannot recognize input near percent String COMMENT in column name or primary key or foreign key 23/11/13 11:52:57 ERROR org.apache.hadoop.hive.ql.Driver: FAILED: ParseException line 6:4 cannot recognize input near percent …...
MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00‘ for column
使用navicat导入数据时报错: MySQL 报错 incorrect datetime value ‘0000-00-00 00:00:00’ for column 这是因为当前的MySQL不支持datetime为0的情况。 MySQL报incorrect datetime value ‘0000-00-00 00:00:00’ for column错误原因,是由于在MySQL5.7…...
Jira Data Center(非集群)升级操作
一、升级准备 Jira 管理界面执行升级检查下载升级包,使用原操作方式相同的方式安装。我这里原来的版本是通过./atlassian-jira-software-9.11.2-x64.bin安装的,接下来下载atlassian-jira-software-9.11.3-x64.bin的安装文件停止 Jira,bin/st…...
Spring IOC - BeanDefinition解析
1. BeanDefinition的属性 BeanDefinition作为接口定义了属性的get、set方法。这些属性基本定义在其直接实现类AbstractBeanDefinition中,各属性的含义如下表所示: 类型 名称 含义 常量 SCOPE_DEFAULT 默认作用域:单例模式 AUT…...
ds前后台博客系统
源码私信或者公众号java大师获取 博客简介:本博客采用Spring Boot LayUI做为基础,进行的博客系统开发,与bootvue相比,更为适合开发简单的系统,并且更容易上手,简单!高效!更易上手&a…...
算法leetcode|88. 合并两个有序数组(rust重拳出击)
文章目录 88. 合并两个有序数组:样例 1:样例 2:样例 3:提示: 分析:题解:rust:go:c:python:java: 88. 合并两个有序数组: …...
GoLong的学习之路,进阶,语法之并发(并发错误处理)补充并发三部曲
这篇文章主要讲的是如何去处理并发的错误。 在Go语言中十分便捷地开启goroutine去并发地执行任务,但是如何有效的处理并发过程中的错误则是一个很棘手的问题。 文章目录 recovererrgroup recover 哦对,似乎没写错误处理的文章。后面补上。 首先&…...
猪酒店房价采集
<?php // 设置代理 $proxy_host jshk.com.cn;// 创建一个cURL资源 $ch curl_init();// 设置代理 curl_setopt($ch, CURLOPT_PROXY, $proxy_host.:.$proxy_port);// 连接URL curl_setopt($ch, CURLOPT_URL, "http://www.zujia.com/");// 发送请求并获取HTML文档…...
Java基础知识第四讲:Java 基础 - 深入理解泛型机制
Java 基础 - 深入理解泛型机制 背景:Java泛型这个特性是从JDK 1.5才开始加入的,为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”࿰…...
ceph-deploy bclinux aarch64 ceph 14.2.10【2】vdbench rbd 块设备rbd 测试失败
上篇 ceph-deploy bclinux aarch64 ceph 14.2.10-CSDN博客 安装vdbench 下载vdbench 下载页面 Vdbench Downloads (oracle.com) 包下载 需要账号登录,在弹出层点击同意才能继续下载 用户手册 https://download.oracle.com/otn/utilities_drivers/vdbench/vdb…...
split_train_val
# coding:utf-8 import os import random import argparse parser argparse.ArgumentParser() # xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下 parser.add_argument(--xml_path, defaultdata_door_white/xml/train, typestr, helpinput xm…...
Linux Mint 21.3 将搭载 Cinnamon 6.0 和实验性 Wayland 支持
导读Wayland 会话可能在 Linux Mint 23 系列中成为默认选项,预计将在 2026 年实现。 Linux Mint 项目今天在他们的每月新闻通讯中 宣布,他们已经开始着手在未来的 Linux Mint 发行版中实施 Wayland 会话,最初将在 Linux Mint 21.3 中提供。 …...
名师助阵龙讯旷腾PWmat+半导体缺陷培训暨半导体缺陷计算大赛
半导体缺陷计算大赛 选拔赛截止日期:11月23日 参与杭州线下培训直接跳过选拔赛 大赛亮点 线上免费培训、线下限时领取免费名额 线下杭州培训可直通决赛,跳过选拔赛 线上培训有3次机会参与考试进入决赛 已购/未购用户均可参加、无身份限定 使用Mc…...
Kotlin与Java写法的变更
目录 获取类的Java Class属性 类型检查 for循环 switch语句 if判断 获取类的Java Class属性 //Java Intent intent new Intent(this, MainActivity.class);//Kotlin val intent Intent(this, MainActivity::class.java) 类型检查 //Java apple instanceof Fruit !(app…...
京东数据软件系统:京东销量和销额数据在哪里看?
京东平台店铺众多,行业同行也数不胜数,若想要在平台中更好的运营店铺,品牌需要做好数据分析。下面结合鲸参谋电商数据分析平台这一数据分析工具,我们来看一看品牌在做数据分析时需要注重哪些数据维度。 *行业数据 京东商家通过鲸…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
