PSRAM完全解读

文摘   科技   2023-05-29 17:13   湖南  

PSRAM完全解读

一. PSRAM概述

PSRAM即伪静态RAM,要讲到PSRAM首先得从SRAMDRAM讲起。

SRAMDRAM都代表易失性的存储形式,当电源掉电时内丢失。SRAM使用六晶体管存储单元存储数据,速度更快,效率更高(dram需要更少的功率),允许数据残留,并且通常更昂贵,接口简单, 驱动简单

相比之下,DRAM通过结合金属氧化物半导体场效应晶体管(MOSFET)和金属氧化物半导体(MOS)电容器来实现数据存储DRAM芯片更便宜,但需要从外部源不断刷新以保留其电容器上的数据,接口复杂,驱动复杂

那么有没有一种RAM能结合SRAMDRAM的优点,即容量大,又接口驱动简单呢,,因为有以上需求于是PSRAM应运而生,PSRAM接口和SRAM一样简单,驱动简单;而存储形式则和DRAM一样,容量远大于SRAM,介于SRAMDRAM之间,现在一般是最大64MB

美光科技联合华邦电子 Winbond Electronics)、GigaDevice Semiconductor AP Memory Technology 创立了Xccela 联盟, 其中 Xccela Bus 接口即PSRAM使用的接口。

二. PSRAM厂家

PSRAM厂家也有很多,AP用的最多。

华邦

64Mb

W956D6KBK 1.8V/1.8V 133MHz -40℃~85℃ 4Mb x16 CRAM-ADM - P

256Mb

W968D6DAG 1.8V/1.8V 133MHz -40℃~85℃ 16Mb x16 CRAM - P

W968D6DAG 1.8V/1.8V 133MHz -40℃~85℃ 16Mb x16 CRAM - P

英飞凌

有多种接口,容量可选最大64MB

Apmemory

PSRAM的老大哥,最大到64MB

.PSRAM详解

APS256XXN-OBRx DDR Octal SPI PSRAM 为例进行详解。

2.1特征

电源

单电源供电,VDDVDDQ内部连接,电源范围1.62 1.98V

接口

Octal SPI接口支持DDR,即双边沿传输。

支持x8模式(默认)x16模式,可以通过配置寄存器选择 

X8模式,一个CLK传输2个字节数据,x16模式一个CLK传输4个字节数据,因为是双边沿传输。

默认x8模式,可以通过寄存器MR8[6]=1改为x16模式。

性能

时钟最大200MHz,所以最大速度是x8模式400MB/s,x16模式800MB/s

组织

256Mb X8 模式

一个PAGE大小2048字节 总容量32M x 8bits32MB

行地址AX[13:0],列地址AY[10:0]

256Mb X16 模式

一个PAGE大小2048字节 总容量16M x 16bits32MB

行地址AX[13:0],列地址AY[9:0] 一个列地址对应16bits2字节,所以地址范围是[9:0].

不管什么模式页总是2KBx16模式页地址只需要CA[9:0]因为单位是2B

刷新

自刷新,无需发送命令。

操作温度范围

TOPER = -40°C to +85°C  标准范围

TOPER = -40°C to +105°C 扩展范围

典型待机电流

Halfsleep模式,数据保持,@ 25°C40µA

最大待机电流 

1100µA @ 105°C 

680µA @ 85°C 

可以看到温度对待机电流影响较大。

低功耗特征

分区自刷新PASR,

自动温度补偿自刷新(ATCSR,内部自带温度传感器,根据温度控制刷新率,温度越高刷新率越高

软件复位

支持软件命令方式实现上电复位效果

引脚复位

不是所有封装都有

输出驱动能力

LVCMOS输出,驱动能力可以通过寄存器配置

DM/DQS

写操作支持DM

读操作支持DQS,DM,DQS共用引脚。

读写延迟

可通过寄存器配置读写延迟时间

Burst长度

最大X8模式2048 x8bits ,X16模式1024x16bits 

最小X8模式2x8bits ,X16模式2x16bits 

即最大一个PAGE的大小,最小时一个总线宽度的呃倍,因为是DDR双边沿传输。

Wrap & hybrid burst 

X8模式16/32/64/128/2K 单位Bytes

X16模式16/32/64/128/1K 单位Words(2B) 

线性Burst命令

该命令即Burst固定为最大2KB

列地址自动递增

可以通过寄存器配置使能RBX

即读操作时到了页边界,页地址自动递增,而不需要重新发送页地址。

2.2 引脚信号

重点需要理解DQS/DM0DQS/DM1这两个引脚信号。

DQSDM复用

DM由主机驱动,表示写时数据是否MASK掉的,为1表示MASK掉即不需要写

DQS由设备驱动,表示数据是否有效的,DQS=1表示数据有效

可以这样理解,DQSDM都是谁发数据由谁驱动,告诉接收方对应的字节数据是否有效

DQS是和DQ数据同时更新的。

引脚

类型 

描述

说明

VDD

电源 

Core  IO 电源1.8V

VDDQ 内部连接到 VDD

VSS

Core IO 电源地


A/DQ[7:0]

IO

地址/数据总线 [7:0]

注意发送地址始终是用的[7:0],不会用高16位。

X8 X16模式使用

DQ[15:8]

IO

数据总线 [15:8]

X16 模式使用

DQS/DM<0>

IO

读数据时DQ[7:0]DQS信号,设备端驱动,1表示数据有效。

写数据时DQ[7:0]DM信号,主机端驱动,高有效,DM=1表示MASKDQ[7:0]即不写

X8 X16模式使用

DQSDM共用一个引脚

DQS/DM<1>

IO

读数据时DQ[15:8]DQS信号,设备端驱动,1表示数据有效。

写数据时DQ[15:8]DM信号,主机端驱动,高有效,DM=1表示MASKDQ[15:8]即不写。

X16 模式使用

DQSDM共用一个引脚

CE#

I

芯片选择,低有效. CE#=1,芯片进入standby 状态. CE拉低是一次传输的开始。


CLK

I 

输入时钟


RESET#

Input

复位信号,低有效. 可选的内部连接固定电平。

不是所有封装都有

2.3 框图

可以看到VDD会进入到内部的电源调节器,可以进行电源状态控制,比如PDPHalfsleep的管理。

PSRAM控制逻辑和IO控制部分会产生行地址,进行列地址计数,分别进行行列地址解码,输入到存储阵列,选择对一个存储单元,通过Data I/O进行数据的写入和读出。

命令地址,模式寄存器,输入到控制逻辑序列,决定上面PSRAM控制逻辑和IO控制部分的逻辑。命令和地址,寄存器的读写不经过Data I/O

重点是时钟的控制,CLK_int进入时钟缓冲和产生模块,输出CLK_IOData I/O用,输出CLK_ctrl给控制逻辑用。

外部接口通过输入输出缓存和内部交互,分别到Data I/O或者到控制逻辑部分,或者到CLK_int

2.4 上电复位初始化时序

上电复位有两种方式,一种是通过RESET#引脚复位(有些封装该引脚未引出),直接电源的上电也是这种方式;还有一种是发送Global Reset命令。两种方式复位的效果一致。

上电复位的效果是所有寄存器恢复到默认状态,RAM中的内容不保证状态。

有几个时间点需要注意

1.复位完成后即可进入SDR模式,既可以进行单速率读。

然后即可进行正常的所有操作(如果是VDD刚上电则需要满足后面相应的条件才能进行PDPHalfsleep操作)

2.VDD达到VDDmin至少要≥500uS才能进行所有正常操作,除了Halfsleep之外。

3.VDD达到VDDmin至少要≥1mS才能进行所有正常操作。

2.4.1 RESET#引脚复位

VDD/VDDQ必须达到VDDmin稳定之后,才进入初始化流程。

VDDmin可以从电气参数中查看是1.62V.

VDD稳定后进入初始化的阶段1,该阶段必须保持CE#为高,VDD保持稳定,该阶段至少要保持tPU150uS

阶段1之后的任意时候,CE#为高时,都可以进行RESET#的拉低来进行复位,拉低时间需要tRP1uS

然后释放RESET#,释放时间要≥2uS。所有RESET#引脚复位至少需要3uS,复位过程对应阶段2

2.4.2 Global Reset命令复位方式

在阶段1之后,任意时间,可以发送0xFF指令进行上电复位,即上图的阶段2部分。

CE#拉低tCSP之后CLK的第一个边沿和第二个边沿发送INST,A/DQ[7:0]=0xFF,此时DQS/DM

不关心。注意A/DQ[7:0]的建立时间至少要tSP,CLK上升沿tSP之前数据就要准备好,数据保持时间需要tHD以上,CLK下降沿之后数据至少还要保持该时间。发完INST之后,CLK再发送3CLK,最后一个CLk的下降沿tCHP之后CE#开始拉高释放,此时开始真正的复位。

CE#释放拉高之后的tCSP2时间后,CLK不再关心可有可无。tRST时间后复位完成。

即必需tRST时间之后,CE#才能再次拉低,进行后续操作。

相关时序参数值如下:

2.5 接口描述

2.5.1 地址空间

读写数据,地址必须是偶数对齐,即地址的A[0]必须为0, 所以x8模式是2B对齐,x16模式是4B对齐。读写寄存器无该要求,可以指定任意对应可读写的寄存器。

2.5.2 Burst类型和长度

读写默认是Hybrid Wrap 32 模式,可通过寄存器配置为x8模式的16B,32B,64B,2KB,x16模式的16words,32words,64words,1Kwords。

专有的命令还支持Linear Bursting模式。

Bursts长度写最少要是x8模式2Bx16模式4B,读无最小限制。

读写的最大Burst长度不受限制,但是一次传输不能超过tCEM的时间。

2.5.3 命令地址发送

CE#拉低之后,指令在第一个CLK的上升沿和下降沿被设备锁存。从第二个CLK开始的2CLK4个边沿发送4个字节的地址,都是边沿设备锁存数据。

所以3CLK6个边沿发送命令+地址。命令实际只有一个字节,在上下沿保持不变发送的是同样的内容,地址4个字节。

2.5.4 命令表

指令和地址总是只使用A/DQ[7:0]不管是x8还是x16模式。

x16模式 列地址不需要CA10CA[9:0]足够,因为单位是2字节了

Linear Burst 命令0x20,0xA0,Burst固定,不受MR8[2:0]的配置影响

只有Linear Burst读支持RBX,即自动页地址递增。

如下图

其中x表示关心可以任意值

A3 = 7'bx, RA[13] {未使用位保留}

A2 = RA[12:5]

A1 = RA[4:0],CA[10:8] { CA[10] 只在 X8 模式有}

A0 = CA[7:0] 注意CA[0]始终是0

MA = 模式寄存器地址

其中Sync ReadSync WriteBurstBurstMR[8:0]配置

Linear Burst ReadLinear Burst Write固定为Linear Burst即页大小,不受MR[8:0]影响,该模式支持RBX(需要寄存器配置使能)

Mode Register ReadMode Register Write支持从任意寄存器开始读写(和寄存器的读写属性要对应)

2.5.5 读操作

CE#拉低后的开始3CLK发送完命令和地址, 设备从第三个CLK的上升沿即发送A1时开始拉低DQS/DM

延迟LC时间后,A/DQ[7:0]输出数据,由于内部刷新机制,延迟时间可能是LC~LCx2之间。

第一个DQS/DM的上升沿表示设备输出的数据有效。

不管是x8模式还是x16模式,命令和地址都只使用A/DQ[7:0],如果是x16模式则返回数据时A/DQ[7:0]输出和A/DQ[7:0]完全一样。

同步读模式

(Synchronous Read)

1.CE#拉低表示一次传输开始,tCSP之后CLK开始拉高发送命令INST

2.CLK的上升沿之前tSP数据就要准备好,即数据的建立时间

3.CLK下降沿之后tHD之后,数据还需要保持,即数据的保持时间

4.4CLK上升沿之后tCQLZ开始拉低,表示PSRAM收到指令了正在准备数据,此时主机还不能去读数据,数据还未就绪。

5.A1对应的上升沿之后的LC时间(默认是5CLK),之后设备才会输出数据,这里是读延迟时间。

6.LC之后的第一个上升沿之后的tDQCLK时间后,DQS/DM才会拉高,表示PSRAM输出数据有效 DQS/DM是和DQ数据同步更新的。

7.主机在LC延迟之后,等待DQS的上升沿,捕获到DQS的上升沿后需要延时一段时间才能采样,因为DQS的上升沿DQ也才同步更新,需要一个建立时间之后才能采样数据,后面会讲这个参数。

8.CLK的下降沿tCHD之后,CE#才能拉高。

9.CE#拉高之后tHZ时间后,数据线变为高阻态。

10.CE#拉高必须至少tCPH时间.

11.一次传输至少需要tRC时间

12.一次传输CE#拉低的时间最长tCEM

线性Burst读使能RBX

(Linear Burst Read with RBX (Starting address 0xFE in X8 mode and 0x3FE in X16 mode)

Synchronous Read一样,如果使能RBX,(MR8[3]1则在列地址跨页边界时,会由tRBXWait的时间延迟,然后页地址自动递增继续读。

自刷新导致的读延迟增加

(Variable Read Latency Refresh Pushout )

上图上面部分没有自刷新,延迟时间是3CLK,下面部分有自刷新,所以延迟时间最大可达2x3=6CLK

读延迟和tDQSCK

(Read Latency & tDQSCK )

以上可以看到tDQSCKmintDQSCKMmax差异可能导致,DQS/DM第一个数据出来的时间差半个CLK,CLK下降沿锁存数据变为上升沿锁存数据。

tDQSCK最小2nS,最大6.5nS

DQS/DM  DQ 时序

(Read DQS/DM & DQ timing)

1.DQSDQ是同步更新的。

2.DQS上升沿之后的tDQSQ时间之后,数据才有效,因为需要数据建立时间。所以读数据需要在DQS上升沿之后至少等待tDQSQ才能采样。

3.读数据是以DQS边沿为准而不是以CLK边沿为准了。

2.5.6 写操作

同步写操作

(Synchronous Write followed by any Operation)

1.tCSP,tSP,tHD,tCHD,tCPH,tRC等含义和读一样.

2.写操作x8模式最少需要写2字节,x16模式至少需要写4字节。

3.单字节的写可以通过DQS/DMMASK来实现,DM=1表示对应字节不写。

4.指令地址总是只使用DQ[7:0], x16模式数据阶段才会使用DQ[15:8].

5.数据阶段DQ[15:8]DQ[7:0]分别用DM[1]DM[0]确认是否MASK,1MASK掉不写对应对应的字节。

写时DQS/DM & DQ的时序

(Write DQS/DM & DQ Timing )

1.CLK上升沿和下降沿建立时间tDS之前准备数据,数据保持时间tDH。即在CLK边沿前的tDS数据就要准备好,tDS后数据才能释放。

3.DMDQ同步变化。

2.5.7 控制寄存器

寄存器读

寄存器读写始终只使用A/DQ[7:0]

(Register Read)

1.tCSP,tSP,tHD,tRC,tCQLZ,tDQSCK,tCHD,tHZ,tCPH等参数和读数据时含义一样。

2.寄存器6只写,所以上述表格没有MA6

3.读寄存器可指定任意可读寄存器开始, 连续读则D0,D1即开始寄存器和后一个寄存器重复返回,PSRAM驱动DQS会指定只有D0有效,所以主机会重复读到D0,丢弃D1.

4.寄存器读的延迟和读数据的延迟一样,MR0[4:2]决定。

寄存器写

(Register Write )

注意寄存器写没有延迟,MA之后CLK的下一个边沿即发送MR,也不需要DM

寄存器内容

寄存器如下,MA6只写,MA123只读,其他的可读写。

MR0[5]读延迟类型

延迟类型1表示固定的,0表示可变的。

这里的可变是因为有刷新所以加上刷新时间可能是LC~2xLC之间任意值,

固定就是干脆就直接固定为最大值2xLC,固定的话有时候可以,方便控制器端程序

MR0[5:2]读延迟时间设置

延迟时间设置,不同的频率需要设置不同的延迟时间,频率大延迟时间大。

各种操作的延时

写寄存器无延迟或者说延迟是1

读寄存器是LC

写数据延时为WLC

读数据根据FL的设定可能是LC~2LC之间可变或者固定为2LC

MR0[1:0]驱动能力

MR1[7]支持Halfsleep能力

只读,表示是否支持超低功耗

MR1[4:0]厂商ID

只读,厂商ID

MR2[7:5]测试状态

只读,表示是否测试OK,默认的Die没有测试时是FAIL状态,测试OK之后设置为PASS

MR2[4:3]设备ID

只读,设备ID,确认是第几代产品

MR2[2:0]容量

只读,确认容量大小

MR3[7] RBX模式能力

只读,确认是否支持地址自动跨页,如果支持则通过MR8[3]使能

MR3[5:4]自刷新标志

只读,当前刷新率,由MR4[4:3]和温度决定

 

MR4[7:5]写延迟设置

写延迟时间设置

MR4[4:3]刷新频率设置

刷新频率设置

MR4[2:0]分区刷新

16位模式只需要10位CA[9:0]既可以表示2K,1024x2B,所以不需要CA10

分区刷新可以减少待机功耗。

 MR6[7:0] Halfsleep设置

 

MR8 [6] x8/x16模式选择

 

MR8[2]Burst类型 MR8[1:0] Burst长度

 

线性Burst命令自动页大下Wrap同步读命令则根据MR8[1:0]设定 Wrap

不支持RBX,即不支持自动地址递增的,一次只能最多读一页,超过绕回。

MR8[3] RBX读使能

需要支持RBX的才能配置,MR3[7]可以确认是不是支持RBX

 

2.5.8 Halfsleep模式

 

(Halfsleep Entry Write (latency same as Register Writes, WL1)  )

Halfsleep模式下数据保持,

写寄存器MR60xF0进入低功耗,写完释放CEtHS时间后才真正进入低功耗

(Halfsleep Exit (Read Operation shown as example) )

CE拉低触发退出低功耗,但是必须满足拉低时间超过tXPHS再释放,释放时间超过tCSPtXHSCE拉低后退出低功耗需要的时间,此时CLK可有可无。

2.5.9 DPD模式 深度休眠模式

深度休眠进入和退出和Halfsleep类似,命令不同,还有就是寄存器内容和存储内容不保存,需要重新初始化。

(Deep Power Down Entry )

(Deep Power Down Exit (Read Operation shown as example))

2.6 典型参数

主要关注时序参数,其他参数可以参考手册

需要注意的是Halfsleep平均电流很小小于100uA,但是峰值电流可达25mA,持续几十毫秒。

所以最好防止4.7uF10uF的储能电容到VDDVSS之间。

直流特性参数

主要注意高电平要大于0.8VDDQ

低电平要小于0.2VDDQ

时序参数

需要注意满足各个参数的最小值

四. 总结

PSRAM有类似SRAM简单的接口,软件驱动简单,而又有DRAM高容量高性价比,所以在IOT领域应用广泛。很多SOCMCUMPU都内部封装了PSRAM,用户低成本即可使用大的RAM存储。

PSRAM的时序比较简单,主要根据各个时序图理解每个时序阶段,及其参数。重点要理解DQS/DM是谁驱动的,代表什么意思, 数据采样的时间即DQS上升沿延迟数据建立时间之后采样。

不同PSRAM芯片时序基本一致,了解一个即可。


嵌入式Lee
嵌入式软硬件技术:RTOS,GUI,FS,协议栈,ARM,总线,嵌入式C,开发环境 and blablaba....多年经验分享,非硬货不发,带你扒开每一个技术背后的根本原理。
 最新文章