Xilinx FPGA平台DDR3设计详解(二):DDR SDRAM组成与工作过程
本文主要介绍一下DDR SDRAM的基本组成以及工作过程,方便大家更好的理解和掌握DDR的控制与读写。
一、DDR SDRAM的基本组成
1、SDRAM的基本单元
SDRAM的基本单元是一个CMOS晶体管和一个电容组成的电路。
晶体管最上面的一端,称作栅极,通过加上电压或取消电压,可以控制CMOS晶体管的开和关,进而控制流入小电容的电流。
小电容可以存储电荷,有电荷时表示存储1bit的1,无电荷时表示存储1bit的0。
当要写入存储1bit的1时,在R/W端加上高电压,并在栅极端加高电压保持一段时间后断开,即可写入。
当要写入存储1bit的1时,在R/W端接地,并在栅极端加高电压保持一段时间后断开,即可写入。

2、存储阵列
为了存储大量信息,需要将基本单元构成存储阵列,如下图所示:

word line表示字线,对应行,连接是每个单元的栅极。
bit line表示位线,对应列,连接的是每个单元的R/W端。
存储阵列读写数据时,当某一行的字线上通电后,这一行就打开了,通过控制位线上的电压变化,就能读取存储信息或写入数据。
读取数据时由于电容很小,所以读取数据时,产生的电压波动也很小,要经过sense amplifier进行放大,另外在读取位线上的数据后,小电容上的电荷会发生了改变,这会丢失原本的信息,是一种破坏性读出。
3、SDRAM动态刷新
为什么SDRAM要做动态刷新?
SDRAM基本单元的小电容的电容值很小,存储电荷不多,而CMOS晶体管有“电流泄漏”问题,即使字线不打开,小电容也会缓慢损失电荷,慢慢的信息就丢失了。
这就需要定时将电容的旧值重新向小电容写入数据,也就是动态刷新电容。
动态刷新电容如何实现的?
这里简单介绍一下,存储阵列中放大器可以暂存信息。
每个单元行,每隔一段时间,放大器暂存好信息后,就立刻将信息写回电容。
二、SDRAM读写过程

1、SDRAM读数据
-
激活命令:在向SDRAM发送读命令之前,必须先打开指定块中的指定行,并将其复制到行缓冲器中。这个操作由激活命令(ACTIVE)完成,激活命令通过片选信号(CS)、块地址信号(BA)和行地址信号(A)来确定要激活的块和行。激活命令还需要一个行地址选通信号(RAS),用来选通行地址。
-
读命令:在激活命令之后,需要等待一定的时间间隔(tRCD),才能发送读命令(READ)。读命令通过列地址信号(A)来确定要读取的列,并通过列地址选通信号(CAS)来选通列地址。读命令还需要一个写使能信号(WE),用来指示读操作。
-
数据输出:在读命令之后,还需要等待一定的时间间隔(tCL),才能从数据总线上获取数据。这个时间间隔被称为CAS等待时间或读取潜伏期,是指提供一个列地址与接收到相关数据之间的间隔。数据输出可以是单个或突发的,突发长度由模式寄存器设置。
-
预充电命令:在读操作完成后,需要对打开的行进行预充电操作,以恢复其电荷状态。这个操作由预充电命令(PRECHARGE)完成,预充电命令通过片选信号(CS)、块地址信号(BA)和预充电信号(A10)来确定要预充电的块和行。预充电命令还需要一个行地址选通信号(RAS)和一个列地址选通信号(CAS),用来指示预充电操作。
2、SDRAM读数据
-
激活命令:在向SDRAM发送写命令之前,必须先打开指定块中的指定行,并将其复制到行缓冲器中。这个操作由激活命令(ACTIVE)完成,激活命令通过片选信号(CS)、块地址信号(BA)和行地址信号(A)来确定要激活的块和行。激活命令还需要一个行地址选通信号(RAS),用来选通行地址。
-
写命令:在激活命令之后,需要等待一定的时间间隔(tRCD),才能发送写命令(WRITE)。写命令通过列地址信号(A)来确定要写入的列,并通过列地址选通信号(CAS)来选通列地址。写命令还需要一个写使能信号(WE),用来指示写操作。
-
数据输入:在写命令之后,可以立即从数据总线上输入数据。数据输入可以是单个或突发的,突发长度由模式寄存器设置。
-
预充电命令:在写操作完成后,需要对打开的行进行预充电操作,以恢复其电荷状态。这个操作由预充电命令(PRECHARGE)完成,预充电命令通过片选信号(CS)、块地址信号(BA)和预充电信号(A10)来确定要预充电的块和行。预充电命令还需要一个行地址选通信号(RAS)和一个列地址选通信号(CAS),用来指示预充电操作。
3、突发读写模式
SDRAM的burst突发模式是指当SDRAM接收到一个读或写命令后,不需要再次寻址,而是按照预设的长度和顺序连续地传输数据。这样可以节省寻址时间,提高数据传输效率。
突发长度(burst length)和突发类型(burst type)可以通过模式寄存器(mode register)来设置。突发长度(burst length)是指每次突发传输的数据量,一般有1、2、4、8和全页(fullpage)五种选择。全页指的是打开行中剩余的所有列地址。突发长度越大,传输速度越快,但也会占用总线时间越长,影响其他设备的访问。突发类型(burst type)是指每次突发传输的数据顺序,一般有顺序(sequential)和交替(interleave)两种选择。
顺序指的是按照列地址从低到高或从高到低的顺序传输数据,速度较快。
交替指的是按照列地址以某种规律跳跃地传输数据,速度较慢。
不同的突发类型对应不同的应用场景,一般来说,顺序适合于连续访问相邻地址的情况,交替适合于随机访问不连续地址的情况。
4、bank并行和内存交错
让一个 chip 内的不同 bank 并行工作,提升读写效率。
连续向不同的 bank 发送读取指令,同一时间内很多 bank 都在并行工作,比如第一个 bank 可能在输出,第二个 bank 可能在放大电压,第三个 bank 可能在开启单元行。这样当第一个 bank 突发输出完毕,第二个 bank 刚好可以输出,当第二个 bank 猝发输出完毕,第三个 bank 刚好可以输出。
这种通过“ bank 间并行”实现“连续泵出数据”的方法,就是所谓的“内存交错”。

本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦
本文由FPGA入门到精通原创,有任何问题,都可以在评论区和我交流哦
您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。
相关文章:
Xilinx FPGA平台DDR3设计详解(二):DDR SDRAM组成与工作过程
本文主要介绍一下DDR SDRAM的基本组成以及工作过程,方便大家更好的理解和掌握DDR的控制与读写。 一、DDR SDRAM的基本组成 1、SDRAM的基本单元 SDRAM的基本单元是一个CMOS晶体管和一个电容组成的电路。 晶体管最上面的一端,称作栅极,通过…...
ios(swiftui) 属性包装器详解
目录 1. State 2. Binding 3. ObservedObject 和Published 4. StateObject 5. EnvironmentObject和Environment 6. AppStorage 在 SwiftUI 中,属性包装器用于增强和管理视图的状态,以及处理视图与数据模型之间的绑定和交互。下面是一些常见…...
【智能家居】面向对象编程OOP和设计模式(工厂模式)
面向对象编程 类和对象 面向对象编程和面向过程编程区别 设计模式 软件设计模式按类型分 工厂模式 面向对象编程 面向对象编程(Object-Oriented Programming,OOP)是一种程序设计范式,其中程序被组织成对象的集合,每…...
Docker安装Memcached+Python调用
简介:Memcached是一个通用的分布式内存缓存系统。它通常用于通过在RAM中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取外部数据源(如数据库或API)的次数。Memcached的API提供了一个分布在多台机器上的非常大的哈希表。…...
网页开发 HTML
目录 HTML概述 HTML结构 HTML标签语法 基本标签 标题标签 换行标签 段落标签 文本格式化标签 特殊符号 div和span标签 超链接标签 锚点 img标签 列表标签 表格标签 表单标签 HTML概述 HTML,即超文本标记语言(HyperText Markup Language …...
SHAP(五):使用 XGBoost 进行人口普查收入分类
SHAP(五):使用 XGBoost 进行人口普查收入分类 本笔记本演示了如何使用 XGBoost 预测个人年收入超过 5 万美元的概率。 它使用标准 UCI 成人收入数据集。 要下载此笔记本的副本,请访问 github。 XGBoost 等梯度增强机方法对于具有…...
LeetCode 8 字符串转整数
题目描述 字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格检查下一…...
前缀和 LeetCode1423. 可获得的最大点数
几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整数数组 cardPoi…...
探索意义的深度:自然语言处理中的语义相似性
一、说明 语义相似度,反应出计算机对相同内容,不同表达的识别能力。因而识别范围至少是个句子,最大范围就是文章,其研究方法有所区别。本文将按照目前高手的研究成绩,作为谈资介绍给诸位。 二、语义相似度简介 自然语言…...
WT2605-24SS高品质录音语音芯片:实时输出、不保存本地,引领音频技术新潮流
随着科技的快速发展,高品质音频技术成为了现代社会不可或缺的一部分。在这个追求高品质、高效率的时代,唯创知音推出的WT2605-24SS高品质录音芯片,以其独特的功能和卓越的性能,引领着音频技术的新潮流。 首先,WT2605-…...
Git 合并冲突解决步骤
Git 合并冲突解决步骤 1. 找到并打开冲突文件 定位到发生冲突的文件。可以通过 Git 的命令行输出找到这些文件。例如: pom.xmlsrc/main/java/com/zzm/config/SecurityConfig.javasrc/main/java/com/zzm/service/chat/UserConversationsServiceImpl.javasrc/main/…...
Windows核心编程 注册表
目录 注册表概述 打开关闭注册表 创建删除子健 查询写入删除键值 子健和键值的枚举 常用注册表操作 注册表概述 注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心"数据库",也可以说是一个非常巨大的树状分层结构的…...
【算法专题】二分查找
二分查找 二分查找1. 二分查找2. 在排序数组中查找元素的第一和最后一个位置3. 搜索插入位置4. x 的平方根5. 山脉数组的峰顶索引6. 寻找峰值7. 寻找旋转排序数组中的最小值8. 点名 二分查找 1. 二分查找 题目链接 -> Leetcode -704.二分查找 Leetcode -704.二分查找 题…...
中国消费电子行业发展趋势及消费者需求洞察|徐礼昭
一、引言 近年来,随着科技的飞速发展,消费电子行业面临着前所未有的挑战与机遇。本文将从行业发展趋势、消费者需求洞察以及企业数字化转型的方向和动作三个方面,对消费电子行业进行深入剖析。 二、消费电子行业发展趋势 5G技术的普及和应…...
UE学习C++(1)创建actor
创建新C类 在 虚幻编辑器 中,点击 文件(File) 下拉菜单,然后选择 新建C类...(New C Class...) 命令: 此时将显示 选择父类(Choose Parent Class) 菜单。可以选择要扩展的…...
【CTA认证】Android8实现android6以下的应用运行时也要申请权限
需求 CTA入网认证,要求低版本比如Android6以下的应用,运行时,也需要有运行时权限(Runtime Permission)功能,不能默认就取到权限,必须人工在设置中打开才可。 环境 Android 8 实现 frameworks 修改思路是所有APP都…...
gRPC Java、Go、PHP使用例子
文章目录 1、Protocol Buffers定义接口1.1、编写接口服务1.2、Protobuf基础数据类型 2、服务器端实现2.1、生成gRPC服务类2.2、Java服务器端实现 3、java、go、php客户端实现3.1、Java客户端实现3.2、Go客户端实现3.3、PHP客户端实现 本文例子是在Window平台测试,Ja…...
前端知识笔记(十九)———px,em,rem,vw,vh之间的区别
一,px(像素):像素是屏幕上显示的最小单位,它是固定的,不随页面缩放而改变大小。在响应式设计中,使用像素单位可能会导致布局在不同屏幕尺寸上显示不一致。例如:现在在你电脑上一个字…...
docker部署frp穿透内网
文章目录 (1)部署frps服务器(2)部署frpc客户端(3)重启与访问frp(4)配置nginx反向代理 (1)部署frps服务器 docker安装参考文档:docker基本知识 1…...
使用pytorch从零开始实现迷你GPT
生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
