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入门到精通原创,有任何问题,都可以在评论区和我交流哦

您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

css实现简单的抽奖动画效果和旋转效果,还有春联效果

使用css的animation和transform和transition可以实现简单的图片放大缩小,旋转,位移的效果,由此可以延伸的动画效果还是挺多的,比如图片慢慢放大,图片慢慢旋转并放大,图片慢慢变化位置等等, 抽奖…

mall电商项目(学习记录2)

运行mall-admin Java项目 需要安装Redis,需要安装mysql,同时需要运行其项目提供的mall.sql 运行mall-admin后端程序 安装完Redis、mysql、HeidiSQL(用于执行mall.sql,界面化操作高效直观)、IntelliJ IDEA 运行mall-…

《算法通关村——原来滑动窗口如此简单》

《算法通关村——原来滑动窗口如此简单》 基本思想 滑动窗口的思想非常简单,如下图所示,假如窗口的大小是3,当不断有新数据来时,我们会维护一个大小为3的一个区间,超过3的就将新的放入老的移走。 这个过程有点像火车…

如何开发互联网医院系统源码?互联网医院小程序开发全流程解析

互联网医院系统源码的开发以及互联网医院小程序的设计是关键环节,本文将为您详细解析开发全流程。 一、需求分析与规划 第一步,明确系统的功能模块。同时,规划系统的整体架构、技术栈,在这里需要想到系统的可扩展性和性能。 二…

千梦网创:熟悉抖音内容创作的切入方式

因为身边抖音网红的资源比较近,所以虽然一直没有露脸去做短视频运营,但是最近也是跟随朋友一起开始了短视频的学习之路。 在参观过一些“超级直播间”之后,我们敲定了未来的两个盈利方向,这两个方向可以将我们身边的资源极致利用…

xxl-job 分布式任务调度框架

文章目录 分布式任务调度XXL-Job 简介XXL-Job 环境搭建XXL-Job (源码说明)配置部署调度中心docker安装 Bean模式任务(方法形式)-入门案例任务详解任务详解-执行器任务详解-基础配置任务详解-调度配置任务详解-基础配置任务详解-阻塞处理策略任务详解-路由策略 路由策略路由策略…

网络和Linux网络_8(传输层)TCP协议_续(流量控制+滑动窗口+拥塞控制+紧急指针+listen第二个参数)

目录 1. 流量控制 2. 滑动窗口 2.1 滑动窗口概念 2.2 滑动窗口模型详解 高速重发控制(快重传) 3. 拥塞控制和拥塞窗口 4. 延迟应答 5. 捎带应答 6. 面向字节流 7. 粘包问题 8. 16位紧急指针 9. listen的第二个参数 10. TCP总结异常情况与UD…

【上海大学数字逻辑实验报告】三、组合电路(二)

一、实验目的 掌握8421码到余3码的转换。掌握2421码到格雷码的转换。进一步熟悉组合电路的分析和设计方法。学会使用Quartus II设计8421码到余3码的转换电路逻辑图。学会使用Quartus II设计2421码到格雷码的转换电路逻辑图。 二、实验原理 8421码是最常用的BCD码&#xff0c…

权限的树形列表展示——基于APEX FancyTree Select

select distinct (o.PERMISSION_ID) as id, --数据ido.PARENT_PERMISSION_ID as PARENT_ID, --父ido.PERMISSION_NAME as title, --显示的标题o.PERMISSION_ID as VALUE, --标题对应的值1 as TYPE,casewhen (select cou…

图解系列--功能追加协议,构建Web内容

功能追加协议 1.消除 HTTP 瓶颈的 SPDY 1.1.HTTP 的瓶颈 使用 HTTP 协议探知服务器上是否有内容更新,就必须频繁地从客户端到服务器端进行确认。如果服务器上没有内容更新,那么就会产生徒劳的通信。 若想在现有 Web 实现所需的功能,以下这些…

国产Type-C接口逻辑协议芯片:Type-C显示器芯片方案

产品介绍 双Type-C盲插选型: LDR6282 PD3.0认证协议芯片,USB-IF TID号:212 支持iic,USB转UART,CC升级方式,多年市场验证,显示器市场出货量,显示器大厂采用兼容性NO.1。采用QFN32 5…

【全栈开发】使用NestJS、Angular和Prisma 打造全栈Typescript开发

在开发Angular应用程序时,我非常喜欢Typescript。使用NestJS,您可以以与Angular非常相似的方式编写后端。 我偶然发现了这个库,发现它非常有趣,所以我想设置一个简单的测试项目。一般来说,我主要使用SQL数据库&#x…

嵌入式 C 语言中的全局变量问题

大家好,今天分享一篇关于嵌入式C编程中全局变量问题的文章。希望对大家有所启发。 嵌入式特别是单片机os-less的程序,最易范的错误是全局变量满天飞。 这个现象在早期汇编转型过来的程序员以及初学者中常见,这帮家伙几乎把全局变量当作函数形…

Spring Data Redis切换底层Jedis 和 Lettuce实现

1 简介 Spring Data Redis是 Spring Data 系列的一部分,它提供了Spring应用程序对Redis的轻松配置和使用。它不仅提供了对Redis操作的高级抽象,还支持Jedis和Lettuce两种连接方式。 可通过简单的配置就能连接Redis,并且可以切换Jedis和Lett…

基于PLC的采摘机械手系统(论文+源码)

1.系统设计 本次设计围绕基于PLC的采摘机械手系统进行设计, PLC即可编程控制器其是一种常见的微处理器,本次拟采用西门子是S7-200 PLC,一方面对整个设计从器件选型到I/O分配,图纸绘制等进行设计,另一方面还通过组态王…

【数据中台】开源项目(4)-BitSail

介绍 BitSail是字节跳动开源的基于分布式架构的高性能数据集成引擎, 支持多种异构数据源间的数据同步,并提供离线、实时、全量、增量场景下的全域数据集成解决方案,目前服务于字节内部几乎所有业务线,包括抖音、今日头条等,每天同…

elasticsearch 内网下如何以离线的方式上传任意的huggingFace上的NLP模型(国内闭坑指南)

es自2020年的8.x版本以来,就提供了机器学习的能力。我们可以使用es官方提供的工具eland,将hugging face上的NLP模型,上传到es集群中。利用es的机器学习模块,来运维部署管理模型。配合es的管道处理,来更加便捷的处理数据…

Java高级技术-单元测试

单元测试 Junit单元测试框架 Junit单元测试-快速入门 方法类 测试类 Junit框架的基本注解

Springboot自定义starter

一、start背景和简介 1.背景 工作中经常需要将多个springboot项目共同的非业务模块抽取出来,比如访问日志、维护请求上下文中的用户信息或者链路id等等。此次模拟的是请求中用户信息维护,方便整个请求中用户信息的取用。 2.作用 根据项目组的实际需求…

布隆过滤器,Redis之 bitmap,场景题【如果微博某个大V发了一条消息,怎么统计有多少人看过了】

学习文档 文章目录 一、什么是 Bitmap1-1、Bitmap 相关命令 二、Bitmap 和 Set 对比2-1、数据准备2-2、内存对比2-3、性能对比 三、布隆过滤器3-1、理论3-2、代码实现 四、Java中的 Hash 函数 最近面试时,遇到了一个场景题,面试官问如何统计一条微博大V的…