DDR SDRAM 学习笔记
一、基本知识
1.SDRAM
SDRAM : 即同步动态随机存储器(Synchronous Dynamic Random Access Memory), 同步是指其时钟频率与对应控制器(CPU/FPGA)的系统时钟频率相同,并且内部命令 的发送与数据传输都是以该时钟为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机指数据的读取和写入可以随机指定地址,而不是必须按照严格的线性次序变化。
SDRAM 使用电容的电荷存储特性存储数据,而 SRAM使用CMOS晶体管存储数据,这决定了SDRAM的运行功耗要远远低于SRAM。由于使用晶体管存储数据,要能够正确的存储一位数据,需要最少6个晶体管。因此,从芯片面积上来说,单片SRAM芯片的容量不可能做到很高。
2.发展
SDRAM从发展到现在已经经历了五代,分别是:
第一代:SDR SDRAM,
第二代:DDR SDRAM,
第三代:DDR2 SDRAM,
第四代:DDR3 SDRAM,
第五代:DDR4 SDRAM。
第一代SDRAM采用单端(Single-Ended)时钟信号,第二、三、四、五代由于工作频率比较快(100MHz以上称为高频时钟),所以采用可降低干扰的差分时钟信号作为同步时钟。
差分时钟的P线与N线电平相反,而外界影响对变化沿作用等同,故外界干扰可通过两根线的处理相互抵消:如图,数据在PN的变化沿交叉处传输,由图可知时钟的高电平周期和低电平周期长度达到一致,如果不用差分时钟,则长短不一;控制信号与地址信号则只在P线的上升沿与N线的下降沿交叉处采集,从而起到触发时钟校准的作用。
SDR SDRAM的时钟频率就是数据存储的频率,第一代内存用时钟频率命名,如pc100,pc133则表明时钟信号为100或133MHz,数据读写速率也为100或133MHz。之后的第二,三,四代DDR(Double Data Rate)内存则采用数据读写速率作为命名标准,并且在前面加上表示其DDR代数的符号,PC-即DDR,PC2=DDR2,PC3=DDR3。如PC2700是DDR333,其工作频率是333/2=166MHz,2700表示带宽为2.7G。
DDR 设备: 1. 功能上实现双速率 2. 增加了差分时钟线(clk,clk_n) 3. 电压等级 SSTL_25 2.5V) 4. 增加了数据线(DQ)的随路时钟(DQS,DQS_n) 5. 速度达到400M (Mbit/s)
DDR2 设备: 1. 电压等级进一步减低( SSTL_18 ) 2. 增加了 ODT(On-Die Termination) 3. 内部 4Bit 预读结构 4. 速度最高达到 1066 (Mbit/s)
DDR3设备:内部 8Bit 预读结构
3.关键时序
时序上,看数据与时钟的对齐位置:
4.应用
为什么要用DDR这些存储器?(高速大容量)
1.大容量需求:DDR3、DDR4和DDR5的最大容量可以达到64GB、128GB和2TB。
2.高速度需求:DDR3内存传输速率可以达到800Mhz-1600MHz,带宽可以达到12.8-16GB/s,更新代的可以更高。
可用于如图像处理等应用,作为数据缓存区。
5.新概念:预读取
由于存储器内部支持的最高读取速率是固定的(即内核时钟频率),且只能在上升沿/下降沿读取数据,不能双沿读取,想要提高数据通信带宽,只能通过预读取更高位宽的数据,然后用更高频率的时钟双沿分段送出这些预读取的数据来实现。比如:存储器内部支持的内核时钟最高读取速率是200M,接口数据引脚位宽为16bit,假设每周期读取16位数据,则存储器通信带宽为:200M * 16 =3600Mbit/s ; 对于双数据速率接口,我们要求时钟双沿都读取数据,假如此时接口时钟也为200MHz,那么一个周期就要处理32位数据,所以存储器应该预读取32位数据,此时接口通信带宽为200M * 16 * 2 = 7200 Mbit/s;当我想要提高通信带宽为14400Mbit/s时,即200M * 2 * 16 * 2 = 14400Mbit/s,这时候就需要用200M时钟预读取 2 * 2 * 16= 64 bit位宽的数据,然后用400M的时钟双沿送出即可(存储器内核200MHz时钟一周期单沿读出64bit数据,400MHz接口时钟双沿传输,则刚好能在一个200MHz时钟周期内送出 2*2*16 = 64 bit)。
也就是说,用高速时钟传输低速时钟存取的数据,相当于低速时钟一次性读取出高位宽的数据放在寄存器里,然后用高速时钟分段传输。
ddr3接口时钟频率较高,如400MHz等,而FPGA内部的时钟一般100MHz、200MHz就已经很高的了;为了建立FPGA与DDR3的通信,FPGA内部专门设计了一个转换的物理层PHY,通过选择ratio,如4:1,则可以实现ddr3接口时钟用400MHz,而FPGA内部时钟用100MHz,这样一来FPGA存取数据均用的是100MHz。一般来说,这个PHY会有FIFO来缓存转换。
6.学习方法
DDR与SDR SDRAM底层时序上的区别并不大,但我们一般使用用户接口(IP核)来控制,不自己写代码,因为要作很多优化。我们只需要例化IP核,然后根据需求进行简化封装即可。一般IP核会为我们提供用户接口,可以直接使用(部分IP核可提供AXI4接口,一般用于与NISO II 软核通信)。
一般来说,学习一个复杂的IP核,最直观的学习方式就是通过其仿真模型进行仿真,观察其工作时序,抓住需要重点关注的信号观察。在这里我们需要关注用户接口信号。
相关文章:

DDR SDRAM 学习笔记
一、基本知识 1.SDRAM SDRAM : 即同步动态随机存储器(Synchronous Dynamic Random Access Memory), 同步是指其时钟频率与对应控制器(CPU/FPGA)的系统时钟频率相同,并且内部命令 的发送与数据传输都是以该时钟为基准…...

RocketMQ(4.9.4)学习笔记 - 安装部署
单机部署: 官网文档地址: https://rocketmq.apache.org/zh/docs/4.x 参考文档: windows安装RocketMQ_rocketmq windows_book多得的博客-CSDN博客 下载地址: https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.…...

虚拟局域网
虚拟局域网(VLAN) VLAN建立于交换技术的基础之上 广播域(broadcast domain):其中任何一台设备发出的广播通信都能被该部分网络中的所有其他设备所接收,这部分网络就叫广播域利用以太网交换机可以很方便地实现虚拟局域网VLAN(Virtual LAN)对于一个主机和…...

【PG】PostgreSQL 预写日志(WAL)、checkpoint、LSN
目录 预写式日志(WAL) WAL概念 WAL的作用 WAL日志存放路径 WAL日志文件数量 WAL日志文件存储形式 WAL日志文件命名 WAL内容 检查点(checkpoint) 1 检查点概念 2 检查点作用 触发检查点 触发检查点之后数据库操作 设置合…...

一文了解VR全景拍摄设备如何选择,全景图片如何处理
引言: 在如今的数字化时代,虚拟现实(VR)技术不仅为我们的生活增添了许多乐趣,也为摄影领域带来了新的摄影方式,那么VR全景拍摄如何选择设备,全景图片又怎样处理呢? 一. VR全景拍摄设…...
Linux下docker安装mysql8.0
下载mysql8.0docker镜像 docker pull mysql:8.0 查看下载的docker镜像 docker images创建挂载目录 mkdir -p /data/mysql/conf mkdir -p /data/mysql/data mkdir -p /data/mysql/logs运行 docker run -p 3306:3306 --name mysql --restartalways --privilegedtrue \ -v /da…...
C++ std::make_unique和std::make_shared用法
std::make_unique 和 std::make_shared 是 C++11 引入的两个辅助函数,用于创建动态分配的智能指针 std::unique_ptr 和 std::shared_ptr,分别帮助避免了显式使用 new 和 delete,从而提高代码的安全性和可读性。 std::make_unique: #include <memory>int main() {// …...

【Redis】list列表
上一篇: String 类型 https://blog.csdn.net/m0_67930426/article/details/134362606?spm1001.2014.3001.5501 目录 Lpush LRange Rpush Lpop Rpop Lindex Ltrim Lset 列表不存在的情况 如果列表存在 Linsert 编辑 在………之前插入 在……后面插入…...

树莓派安装ubuntu系统
准备工作: 1.树莓派官方烧录工具,raspberry pi imager下载链接Raspberry Pi OS – Raspberry Pi 2.下载ubuntu镜像文件,下载链接Install Ubuntu on a Raspberry Pi | Ubuntu 打开imager软件,操作系统选择自定义镜像,…...

绩效管理系统有哪些?
绩效管理系统有哪些? 把绩效管理系统按照两大指标分类—— 按地域划分(主要看兼容性和稳定性)按照功能性质划分(主要看实用性和拓展性) 按照以上两个维度,我们可以简单把绩效管理系统分为4大不同类型——…...
Three.js学习记录
下载并安装...

CTFhub-RCE-远程包含
给咱一个phpinfo那么必然有他的道理 PHP的配置选项allow_url_include为ON的话,则include/require函数可以加载远程文件,这种漏洞被称为"远程文件包含漏洞(Remote File Inclusion RFI)"。 allow_url_fopen On 是否允许打开远程文件 allow_u…...

云流量回溯的重要性和应用
云流量回溯是指利用云计算和相关技术来分析网络流量、数据传输或应用程序操作的过程。这个过程包括了对数据包、通信模式和应用程序性能的审查和跟踪。本文将介绍云流量回溯重要性和应用! 1、网络安全: 云流量回溯是网络安全的重要组成部分。通过监测和回溯网络流量,…...
JVM之垃圾回收
1. 如何判断对象可以回收 1.1 引用计数法 引用计数法是一种内存管理技术,其中每个对象都有一个与之关联的引用计数。引用计数表示当前有多少个指针引用了该对象。当引用计数变为零时,表示没有指针再指向该对象,该对象可以被释放,…...

人工智能基础_机器学习026_L1正则化_套索回归权重衰减梯度下降公式_原理解读---人工智能工作笔记0066
然后我们继续来看套索回归,也就是线性回归,加上了一个L1正则化对吧,然后我们看这里 L1正则化的公式是第二个,然后第一个是原来的线性回归,然后 最后一行紫色的,是J= J0+L1 对吧,其实就是上面两个公式加起来 然后我们再去看绿色的 第一行,其实就是原来线性回归的梯度下降公式…...
ubuntu xrdp远程登录一直弹出Authentication required. System policy prevents WiFi scans
windows远程登录以后想要连接一下wifi,一定弹出Authentication required,关都关不掉,wifi也连不上。 使用以下方法后完美解决 sudo vi /etc/polkit-1/localauthority/50-local-d/network.pkla 加入如下内容: [Allow Wifi Scan…...

【Python】基础练习题_ 函数和代码复用
(1)编写一个函数,输入n为偶数时,调用函数求1/21/4…1/n,当输入n为奇数时,调用函数1/11/3…1/n。 def calculate_sum(n):total_sum 0if n % 2 0: # n为偶数for i in range(2, n1, 2):total_sum 1 / ielse: # n为奇…...
Java中的ClassLoader是什么?有哪些常见的ClassLoader?
在Java中,ClassLoader是一个抽象类,它的主要任务就是将class文件加载到JVM虚拟机中去以便程序可以正确运行。一般来说,Java程序在编写完成后是以.java的文件存在磁盘上,然后通过编译器将其编译成.class文件(字节码文件…...

vim批量多行缩进调整
网上其他教程: ctrl v 或者 v进行visual模式按方向键<,>调整光标位置选中缩进的行Shift > (或者 Shift < )进行左右缩进。 我只想说,乱七八糟,根本不管用 本文教程: 增加缩进…...

MATLAB|科研绘图|山脊图
效果图 山脊图介绍 山脊图(Ridge Plot),也被称为Joy Plot,是一种用于可视化数据分布的图表,特别是用于显示多个组的分布情况。在这种图表中,每个组的数据分布都通过平滑的密度曲线来表示,这些曲…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...

如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...