DDR Study - LPDDR Write and Training

参考来源:JESD209-4B,JESD209-4E
LPDDR Initial → LPDDR Write Leveling and DQ Training → LPDDR Read and Training → LPDDR Write and Training → LPDDR Clock Switch → PIM Technical

Write Command

基于JEDEC标准中可以看到Write Timing信息如下:
Write Timing

图中的相关参数信息解析如下:

  • WL - Write Latency,从CAS-2命令结束的第一个CLK上升沿T3开始,到对齐第一个有效DQS信号的CLK上升沿Ta3
  • tDQSS - Write场景下,第一个有效DQS信号和对应的CLK信号上升沿Ta3之间的skew,分为Min/Normal/Max三档,分别为0.75tCK(红线)/1tCK(黄线)/1.25tCK(蓝线)三个skew范围
  • tDQS2DQ - Write场景下,第一个有效DQS信号和第一个有效DQ信号之间的skew
  • tWPRE - Write场景下,DQS的前导时间段,用于产生稳定的DQS
  • tWPST - Write场景下,DQS的后导时间段,用于结束DQS的翻转
  • tDSS - Write场景下,DQS信号下降沿到下一个CK信号上升沿的时间,Setup Time
  • tDSH - Write场景下,DQS信号下降沿距离上一个CK信号上升沿的时间,Hold Time
  • tDQSL - Write场景下,DQS信号输出为低的时间宽度
  • tDQSH - Write场景下,DQS信号输出为高的时间宽度

而Command信息中的Write-1和CAS-2就是CA/CS Bus上给出的Write Command信号,首先基于JESD209-4B Table 95真值表内容来看这部分信息:
Truth Table

这里的缩写定义如下:

  • H - High Level
  • L - Low Level
  • BL - Burst Length,高低电平区分BL-32和BL-16
  • BA0/1/2 - Bank Address, 最高支持x8 Bank Width
  • V - 可以为High或者Low电平,但不可以为浮动电平信号
  • C - Column信息,其中Column[1:0]信号不在CA Bus传输,默认为0(也保证了Column地址永远32B对齐)
  • AP - Auto Pre-Charge开关信号

和Read类似,一次Write + CAS命令都需要在CS的High/Low Level两个不同电平状态下发送不同的内容,才能组成一次完整的Write命令。
相比Read,在CA信号的高低电平组合上发生了变化。

Write Training

Write Training中Delay主要也是聚焦在 DQS和CLK之间的skew + DQS和DQ之间的skew,也就是tDQSS + tDQS2DQ的Training。
JEDEC中对于这两个skew也有明确的限制:

SymbolMinMaxUnit
tDQSS0.751.25tCK
tDQS2DQ200800ps
Write是MC控制器送数据到DRAM,所以CLK/DQ/DQS都是从MC控制器发出,DRAM通过DQS进行采样。

因为已经完成了Read Training,所以MC可以写一组数据(Ex: 0xAA55 - 10101010 01010101)到DRAM,再读回来看数据是否一致。
在不断循环中,不断调整Voltage Reference + Delay + Duty Cycle,根据读到的数据fail与pass的边界生成数据的左边界(1st Fail → Pass)和右边界(1st Pass → Fail)生成眼图数据。
通过不断递归获取合适的Voltage和Delay Value,能够让眼图数据中的眼睛处于睁得最大的状态。
所以在DDR Training Flow中,一般都是先保证Read Training Pass之后,再做Write Training。否则MC控制器无法确认Write Value是否正确写入到了DRAM。

在Delay和Duty Cycle调整的硬件选择上,一般也是采用基于DLL和Delay Line的电路设计实现。 和上一篇内容一致:
DDR Study - LPDDR Read and Training

Write SIPI

关于如何在SIPI波形图中计算tDQSS和tDQS2DQ,首先就是需要确定一段Write的波形。
与Read波形不同的是,不论高频还是低频,Write场景的DQS均不会出现明显的抬起前导区域。所以都是通过比较DQS与CK信号之间是否对齐(无相位差)来判断:
Write SIPI

tWPRE

至于tWPRE不像tRPRE有static/toggle两种mode,只有一种情况,第三个上升沿开始算作是有效DQS信号:
在这里插入图片描述

tDQS2DQ

在确定tWPRE之后,关于tDQS2DQ的计算较为简单,就是在tWPRE之后的第一个DQS上升沿到DQ有效高电平之间的skew,如下图所示:
tDQS2DQ

关于为什么Read中的DQS和DQ是对齐,而Write中DQS和DQ则需要有90度相位差,可能是和DQ的信号眼图质量有关。
Read场景下的DQ信号由DRAM端发出,由于DRAM本身不像SOC端具有庞大的硬件计算和信号优化资源,可能只能产生粗略优化后的DQ信号,所以需要严格对齐保证读取到每个DQ Data Value。
Write场景下的DQ信号由MC控制器端发出,在SOC端的信号优化处理后,能保证DQ信号眼图足够优秀,因此90度相位差能保证每次DQS采样都能在眼图中间区域任意位置读取到每个DQ Data Value。

另外tDQS2DQ的参数对于Periodic Training中的DRAM DQS re-training也有重要意义,下面基于JESD209-4B Chap 4.36 简单讲一下:
DRAM长期工作下的电压和温度都会发生变化,所以在Write场景下,DRAM内部收到的来自SOC的DQS Delay也会发生变化,所以需要重新训练。
常见的方法就是通过MC控制器端发送一次START和STOP指令,时间间隔由MC控制器设定。
DRAM的内部振荡器 Interval Oscillator 在这段时间内开始计数接收到的DQS Counter,计数的结果会存放在MR18和MR19的寄存器内部。
最终计数的值和MC设定的时间间隔比较,就能确定应该如何调整delay来保证Write场景下DRAM收到的DQS仍然有效。

但是需要注意这里DRAM Interval Oscillator的计数结果还需要考虑一部分粒度误差,也就是默认情况下tDQS2DQ对DRAM Internal DQS计数的影响。
因为DRAM内部收到外部DQS差分信号后,经过的Clock Tree本身就存在Delay,这个Delay就是为DQS差分信号和DQ信号之间的skew补偿,也就是tDQS2DQ。
所以DRAM Interval Oscillator粒度误差计算如下:
DQS OSC误差

而DRAM Interval Oscillator的精度就是除去粒度误差和匹配误差(DQS 理想训练电路与实际 DQS 时钟树在电压和温度上的计算差异,由DRAM厂商提供此参数)的结果:
DQS OSC精度

tDQSS

与tDQSCK的计算类似,tDQSS就是等于WL结束的时间点到tWPRE的结束时间点,其中WL的计算就是在CS翻转结束的CK上升沿T3开始计算CK的数量,具体数量由MR2寄存器决定:
MR2

假设在默认配置下,WL为4tCK。
那么在Write Timing中,在CS发送完CAS2命令,结束翻转的T3时间点开始计算,过4个tCK之后,就是tDQSS开始计算的时间点(下图红色竖线 Ta3)。
而DQS第三个上升沿就是tDQSS结束计算的时间点(下图蓝色竖线),tDQSS就是蓝色竖线的时间减去红色竖线的时间即可
tDQSS t

而tDQSS SIPI相关信号如下:
tDQSS SIPI

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

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

相关文章

LC专题:图

文章目录 133. 克隆图 133. 克隆图 题目链接:https://leetcode.cn/problems/clone-graph/?envTypestudy-plan-v2&envId2024-spring-sprint-100 又一次写到这个题目,思路仍然不清晰,给我的感觉是使用递归解题,但是递归具体…

基于springboot企业微信SCRM管理系统源码带本地搭建教程

系统是前后端分离的架构,前端使用Vue2,后端使用SpringBoot2。 技术框架:SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境:jdk8 IntelliJ IDEA maven 宝塔面板 系统与功能介绍 基…

雷池社区版有多个防护站点监听在同一个端口上,匹配顺序是怎么样的

如果域名处填写的分别为 IP 与域名,那么当使用进行 IP 请求时,则将会命中第一个配置的站点 以上图为例,如果用户使用 IP 访问,命中 example.com。 如果域名处填写的分别为域名与泛域名,除非准确命中域名,否…

顶点着色网格转换为 UV 映射的纹理化网格

https://dylanebert-instanttexture.hf.space/ 简介 顶点着色是一种将颜色信息直接应用于网格顶点的简便方法。这种方式常用于生成式 3D 模型的构建,例如InstantMesh。然而,大多数应用程序更偏好使用 UV 映射的纹理化网格。 InstantMeshhttps://hf.co/sp…

3D-IC——超越平面 SoC 芯片的前沿技术

“3D-IC”,顾名思义是“立体搭建的集成电路”,相比于传统平面SoC,3D-IC引入垂直堆叠芯片裸片(die)和使用硅通孔(TSV)等先进封装技术,再提高性能、降低功耗和增加集成度方面展现了巨大…

H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用&#xff…

springboot080房屋租赁管理系统的设计与实现(论文+源码)_kaic

毕 业 设 计(论 文) 题目:房屋租赁管理系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好…

Java 输入与输出(I\O)之对象流与对象序列化

什么是Java的对象流? Java对象流是用于存储和读取基本数据类型数据或对象数据的输入输出流。 Java的对象流可分为两种: 1,对象输入流类ObjectInputStream 用于从数据源读取对象数据,它是可以读取基本数据类型数据或对象数据的输…

pikachu靶场CSRF-token测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、抓包使用burp生成csrf脚本 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机:本机(127.0.0.1) 靶 机:本机(127.0.0.1) 2、使用工具/软件 Burp sui…

python+大数据+基于热门视频的数据分析研究【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

QT 调用QRencode库生成二维码和使用Code128生成简单条形码

目录导读 前言使用Code128生成简单条形码使用QRencode库生成二维码添加QRencode.Pri 模块化 前言 对在QT开发中使用QRencode库生成二维码 和使用Code128生成简单条形码 进行一个学习使用总结。 使用Code128生成简单条形码 ‌Code128条形码是一种高密度条码,广泛应用…

4K双模显示器7款评测报告

4K双模显示器7款评测报告 HKC G27H7Pro 4K双模显示器 ROG华硕 XG27UCG 4K双模显示器 雷神 ZU27F160L 4K双模显示器 泰坦军团 P275MV PLUS 4K双模显示器 外星人(Alienware)AW2725QF 4K双模显示器 SANC盛色 D73uPro 4K双模显示器 ANTGAMER蚂蚁电竞 …

lvgl

lvgl 目录 lvgl Lvgl移植到STM32 -- 1、下载LVGL源码 -- 2、将必要文件复制到工程目录 -- 3、修改配置文件 将lvgl与底层屏幕结合到一块 -- lvgl也需要有定时器,专门给自己做了一个函数,告诉lvgl经过了多长时间(ms(毫秒&a…

第三十篇:TCP连接断开过程,从底层说明白,TCP系列五

上一篇《第二十九篇:图解TCP三次握手,看过不会忘,从底层说清楚,TCP系列四》说了TCP的三次握手,接下来我将讲解TCP四次挥手。 既然有连接就有断开,谈到这里,有的同学可能会想,不就是…

log4j 和 logback 冲突解决

很多springboot starter自带logback 如果我们要用log4j就要把logback排除掉 点idea的maven侧栏工具的分析依赖关系 然后我们要选中我们有冲突的模块,搜索logback 这时候我们发现有logback相关的依赖,在点一下,我们就在右边发现,原…

STM32--I2C通信

对于I2C通信会分为两大块来讲解,第一块,就是介绍协议规则,然后用软件模拟的形式来实现协议,第二块,就是介绍STM32的12C外设,然后用硬件来实现协议,因为12C是同步时序,软件模拟协议也非常方便。 在学12C之前,我们已经学习了串口通信&#xff…

openlayers 封装加载本地geojson数据 - vue3

Geojson数据是矢量数据,主要是点、线、面数据集合 Geojson数据获取:DataV.GeoAtlas地理小工具系列 实现代码如下: import {ref,toRaw} from vue; import { Vector as VectorLayer } from ol/layer.js; import { Vector as VectorSource } fr…

蓄电池在线监测系统 各大UPS铅酸蓄电池监测 保障安全

蓄电池的不断普及,确实推动了蓄电池监控和管理技术的持续升级。蓄电池检测系统的研发为我们带来了诸多好处,这些好处主要体现在以下几个方面: 一、提高蓄电池管理的智能化水平 蓄电池检测系统通过实时监测蓄电池的电压、电流、温度等关键参数…

ZEISS ATOS Q蓝光三维扫描仪高效把控零件质量检测【上海沪敖3D】

位于Bengaluru的施耐德电气工厂拥有一流的计量设备,可以检测所有供应商的零件。当时,他们在使用一款激光扫描设备进行质量检测,但是,该设备不便于携带,且检测时需要喷涂大量的显影液。此外,它需要被安装在夹…

docker基础使用创建固定硬盘大小为40G的虚拟机

在docker中创建的服务器,匹配出容器id,服务器ip,服务器核数,服务器内存,服务器硬盘空间 for i in $(docker ps | grep -aiE web | awk {print $1});do echo $i; docker inspect $i|grep -aiE ipaddr|tail -1|grep -ai…