本文转自公众号,欢迎关注
psram完全解读 (qq.com)
psram完全解读
一. psram概述psram即伪静态ram,要讲到psram首先得从sram和dram讲起。
sram和dram都代表易失性的存储形式,当电源掉电时内容丢失。sram使用六晶体管存储单元存储数据,速度更快,效率更高(比dram需要更少的功率),允许数据残留,并且通常更昂贵,接口简单, 驱动简单。
相比之下,dram通过结合金属氧化物半导体场效应晶体管(mosfet)和金属氧化物半导体(mos)电容器来实现数据存储,dram芯片更便宜,但需要从外部源不断刷新以保留其电容器上的数据,接口复杂,驱动复杂。
那么有没有一种ram能结合sram和dram的优点,即容量大,又接口驱动简单呢,有,因为有以上需求于是psram应运而生,psram接口和sram一样简单,驱动简单;而存储形式则和dram一样,容量远大于sram,介于sram和dram之间,现在一般是最大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特征电源
单电源供电,vdd和vddq内部连接,电源范围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 8bits即32mb
行地址ax[13:0],列地址ay[10:0]
256mb x16 模式
一个page大小2048字节 总容量16m x 16bits即32mb
行地址ax[13:0],列地址ay[9:0] 一个列地址对应16bits即2字节,所以地址范围是[9:0].
不管什么模式页总是2kb,x16模式页地址只需要ca[9:0]因为单位是2b了。
刷新
自刷新,无需发送命令。
操作温度范围
toper = -40°c to +85°c 标准范围
toper = -40°c to +105°c 扩展范围
典型待机电流
halfsleep模式,数据保持,@ 25°c时40µ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/dm0和dqs/dm1这两个引脚信号。
dqs和dm复用
dm由主机驱动,表示写时数据是否mask掉的,为1表示mask掉即不需要写
dqs由设备驱动,表示数据是否有效的,dqs=1表示数据有效。
可以这样理解,dqs和dm都是谁发数据由谁驱动,告诉接收方对应的字节数据是否有效。
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 io 读数据时dq[7:0]的dqs信号,设备端驱动,为1表示数据有效。写数据时dq[7:0]的dm信号,主机端驱动,高有效,dm=1表示mask掉dq[7:0]即不写。 x8 和x16模式使用dqs和dm共用一个引脚
dqs/dm io 读数据时dq[15:8]的dqs信号,设备端驱动,为1表示数据有效。写数据时dq[15:8]的dm信号,主机端驱动,高有效,dm=1表示mask掉dq[15:8]即不写。 只x16 模式使用dqs和dm共用一个引脚
ce# i 芯片选择,低有效. ce#=1,芯片进入standby 状态. ce拉低是一次传输的开始。
clk i 输入时钟
reset# input 复位信号,低有效. 可选的内部连接固定电平。 不是所有封装都有
2.3 框图
可以看到vdd会进入到内部的电源调节器,可以进行电源状态控制,比如pdp和halfsleep的管理。
psram控制逻辑和io控制部分会产生行地址,进行列地址计数,分别进行行列地址解码,输入到存储阵列,选择对一个存储单元,通过data i/o进行数据的写入和读出。
命令地址,模式寄存器,输入到控制逻辑序列,决定上面psram控制逻辑和io控制部分的逻辑。命令和地址,寄存器的读写不经过data i/o。
重点是时钟的控制,clk_int进入时钟缓冲和产生模块,输出clk_io给data i/o用,输出clk_ctrl给控制逻辑用。
外部接口通过输入输出缓存和内部交互,分别到data i/o或者到控制逻辑部分,或者到clk_int
2.4 上电复位初始化时序上电复位有两种方式,一种是通过reset#引脚复位(有些封装该引脚未引出),直接电源的上电也是这种方式;还有一种是发送global reset命令。两种方式复位的效果一致。
上电复位的效果是所有寄存器恢复到默认状态,ram中的内容不保证状态。
有几个时间点需要注意
1.复位完成后即可进入sdr模式,既可以进行单速率读。
然后即可进行正常的所有操作(如果是vdd刚上电则需要满足后面相应的条件才能进行pdp和halfsleep操作)。
2.vdd达到vddmin至少要≥500us才能进行所有正常操作,除了halfsleep之外。
3.vdd达到vddmin至少要≥1ms才能进行所有正常操作。
2.4.1 reset#引脚复位
vdd/vddq必须达到vddmin稳定之后,才进入初始化流程。
vddmin可以从电气参数中查看是1.62v.
vdd稳定后进入初始化的阶段1,该阶段必须保持ce#为高,且vdd保持稳定,该阶段至少要保持tpu≥150us。
阶段1之后的任意时候,在ce#为高时,都可以进行reset#的拉低来进行复位,拉低时间需要trp≥1us
然后释放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再发送3个clk,最后一个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模式2b,x16模式4b,读无最小限制。
读写的最大burst长度不受限制,但是一次传输不能超过tcem的时间。
2.5.3 命令地址发送ce#拉低之后,指令在第一个clk的上升沿和下降沿被设备锁存。从第二个clk开始的2个clk共4个边沿发送4个字节的地址,都是边沿设备锁存数据。
所以3个clk共6个边沿发送命令+地址。命令实际只有一个字节,在上下沿保持不变发送的是同样的内容,地址4个字节。
2.5.4 命令表指令和地址总是只使用a/dq[7:0]不管是x8还是x16模式。
x16模式 列地址不需要ca10,ca[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 read和sync writeburst的burst由mr[8:0]配置
linear burst read和linear burst write固定为linear burst即页大小,不受mr[8:0]影响,该模式支持rbx(需要寄存器配置使能)。
mode register read和mode register write支持从任意寄存器开始读写(和寄存器的读写属性要对应)。
2.5.5 读操作ce#拉低后的开始3个clk发送完命令和地址, 设备从第三个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.第4个clk上升沿之后tcqlz开始拉低,表示psram收到指令了正在准备数据,此时主机还不能去读数据,数据还未就绪。
5.a1对应的上升沿之后的lc时间(默认是5个clk),之后设备才会输出数据,这里是读延迟时间。
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 ** )
上图上面部分没有自刷新,延迟时间是3个clk,下面部分有自刷新,所以延迟时间最大可达2x3=6clk。
读延迟和tdqsck
( **read latency & tdqsck ** )
以上可以看到tdqsckmin和tdqsckmmax差异可能导致,dqs/dm第一个数据出来的时间差半个clk,即clk下降沿锁存数据变为上升沿锁存数据。
tdqsck最小2ns,最大6.5ns。
**读时dqs/dm 和 dq **时序
( read dqs/dm & dq timing )
1.dqs和dq是同步更新的。
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/dm的mask来实现,dm=1表示对应字节不写。
4.指令地址总是只使用dq[7:0], x16模式数据阶段才会使用dq[15:8].
5.数据阶段dq[15:8]和dq[7:0]分别用dm[1]和dm[0]确认是否mask掉,为1则mask掉不写对应对应的字节。
写时dqs/dm & dq的时序
( **write dqs/dm & dq timing ** )
1.clk上升沿和下降沿建立时间tds之前准备数据,数据保持时间tdh。即在clk边沿前的tds数据就要准备好,tds后数据才能释放。
3.dm和dq同步变化。
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只写,ma1,2,3只读,其他的可读写。
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模式下数据保持,
写寄存器mr6为0xf0进入低功耗,写完释放ce后ths时间后才真正进入低功耗
(halfsleep **exit (read operation shown as example) ** )
ce拉低触发退出低功耗,但是必须满足拉低时间超过txphs再释放,释放时间超过tcsp,txhs为ce拉低后退出低功耗需要的时间,此时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.7uf到10uf的储能电容到vdd和vss之间。
直流特性参数
主要注意高电平要大于0.8vddq
低电平要小于0.2vddq
时序参数
需要注意满足各个参数的最小值
四. 总结psram有类似sram简单的接口,软件驱动简单,而又有dram高容量高性价比,所以在iot领域应用广泛。很多soc,mcu,mpu都内部封装了psram,用户低成本即可使用大的ram存储。
psram的时序比较简单,主要根据各个时序图理解每个时序阶段,及其参数。重点要理解dqs/dm是谁驱动的,代表什么意思, 数据采样的时间即dqs上升沿延迟数据建立时间之后采样。
不同psram芯片时序基本一致,了解一个即可。
三菱飞机公司正在美国摩西湖进行MRJ客机的飞行测试
浅谈贴片电子元器件的特点
并联电容串联电抗为啥能抑制谐波
国内首个L4级自动驾驶开放测试基地项目落地 项目总投资达10亿元
cmos与ccd哪个成像好?
PSRAM完全解读
8. 100ASK_V853-PRO开发板支持MPP媒体处理平台
教你快速理解嵌入式和单片机的区别和联系
iPhone8的面世将会带来那些惊喜
EDA和FPGA厂商布局IP市场,半导体产业链影响几何?
AI引发指数级变革,推动企业业务创新
在家办公有如神助?智能会议平板多的是你不知道的事
POC管理和漏洞扫描小工具
最新研发的纳米材料或可杀死新冠病毒,未来用处广泛
中国芯高速发展警醒缺芯之痛 好多芯加速产业布局实现弯道超车
一文详解存储器的类型
美国海上风电项目未来十年对海底电缆的需求或超过13500公里
几种CAN总线抗干扰解决方案盘点
Windows Phone对WhatsApp的支持终止了
小米6已投产 三大版本将搭载不同处理器并有陶瓷版