你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 SDRAM的硬件电路设计

[复制链接]
STMCU小助手 发布时间:2023-2-21 21:18
SDRAM简介

SDRAM(synchronous dynamic random-access memory)即同步动态随机存取内存。在介绍SDRAM前,我们先了解下DRAM(Dynamic random-access memory),DRAR中文译为动态随机存取内存,也叫动态随机存取器,为什么叫动态随机存取器,原因是它的实现原理跟静态存储器SRAM不一样,DRAM是在芯片里集成很多个阵列的电容,DRAM存储二进制数据0和1就是通过给这些阵充放电荷实现。一个简单的单个DRAM存储单元示例图如下图所示。

微信图片_20230221211807.png

单个DRAM单元实现电容充放电原理

电容C用来存储电荷,信号WRITE 1、WRITE 0控制开关晶体管Q1和Q2给电容充电和放电,实现二进制1和0存储。信号READ控制开关晶体管打开把电容C接到数据线DATA上,芯片内部处理电路通过读取DATA线上的电压信号来判断DRAM存储单元存储的数据为二进制1还是0。

从原理上去看DRAM实现数据存取很完美,但实际芯片按照上面的原理做好电路后,开关晶体管和电容本身都会有漏电流。漏电流会导致一个特别糟糕的情况,电容存储的电荷会慢慢通过漏电流方式流失掉,当电荷流失到一定的量后,内部电路读取电容的电压去判断数据时,就不能正确判断为二进制1了,这种情况下数据是错误。这样的错误肯定是不允许发生的,解决办法是通过定时刷新方式给电容充电,保证电容存储的电荷量稳定在理想的状态。因为这样的过程是一个一直的动态过程,动态随机存取器的名称由此而来。而SDRAM是DRAM的一种操作方式,如下图所示,SDRAM读写数据时,是通过在时钟的上升沿同步获取控制、数据信号,所以叫做同步动态随机存取器。

SDRAM在时钟CLK上升沿时同步获取控制、数据信号
4 W) H* i3 g  J% T- |6 \$ m, S
微信图片_20230221211803.png
6 V) ]  Z- l! s  \1 j

DRAM和SRAM优缺点:

1. SRAM读写速度快,DRAM读写速度慢。
7 n/ i% `. m2 n2 S3 A

2. SRAM耗电量低,DRAM耗电量大。
1 p; Q* S* ~) @

3. SRAM制造成本高,容量低,DRAM制造成本低,容量大。

& \9 N) i3 F3 s  ~

SDRAM接口信号

SDRAM主要信号如下(256Mb容量示例):

A0-A11: 地址信号。9 e2 l2 W5 i8 y6 D: s5 Y+ C) m, I
BA0-BA1: Bank选择信号。DQM0-DQM3: 读写数据掩码控制信号。( J+ p/ S( N' r: q
DQ0-DQ31: 数据信号。, Y1 n3 t5 B5 }; z( ?' Z0 t5 s
CKE: 时钟使能信号。+ u4 Q/ y6 m) M5 a) g' t# n
CLK: 时钟信号。
# O5 R, T* A& c8 Q% C. MCS: 片选信号。
  g- h  d( Z7 _$ y7 W5 @" }* J& xCAS:  列地址选通控制信号。( R4 A! ]9 h0 G4 [) [7 `
RAS:  行地址选通控制信号。
0 B" j6 L3 D  J0 k9 fWE:  写使能信号。

在上述罗列的信号中,A0-A11、BA0-BA1、CKE、CS、CAS、RAS、WE的不同组合,可以构成不同的Command如下图所示。- x3 I& P3 x% V8 U

" L1 Q, A0 |  V/ m9 y& B

微信图片_20230221211758.png
5 C7 Y, g, ?+ \8 V8 N
DRAM Commad真值表" ~1 x! t+ q  q+ m0 p
/ b1 z5 |3 z2 d/ i3 s
从上图可以看到,DQ0-DQ31和DQM0-DQM3不参与组合成Command。这里说明下,DQMx是读写数据掩码信号,用于控制数据读写使能对应Byte的。它们的控制关系是DQM0控制DQ0-DQ7,DQM1控制DQ8-DQ15,以此类推。知道数据信号DQ0-DQ31不参与组合成Command后,在硬件设计的Layout阶段时,有时数据线不好走线,可以通过调换组内数据线来解决数据线Layout难度大问题。注意这里说的组内调换是单个Byte内的信号,DQ0-DQ7为一组,DQ8-DQ15为一组,以此类推,不能跨组调换,跨组调换读写数据就错误了。( S% L2 \& A+ R2 |+ m3 @. p

7 B3 e& d% S0 ~8 o& r+ H5 R

! P- n8 i' z2 P3 k2 b, v* @, ?这里介绍的组内数据线调换不影响数据的正确性,可能会有很多人困惑,我做了个图如下说明解释。如下图中,左侧为主控信号,右侧为DRAM。主控要写数据0x0F到DRAM中,因为数据线在DRAM端被调换了,所以实际到DRAM内的数据变为0x1D。这样看像是数据错了,但我们再看主控从DRAM读数据的情况,主控读数据时,DRAM内的0x1D顺着信号线原路返回,变成了0x0F,错错得正。所以DRAM信号线组内调线序不影响数据读写错误,但不能跨组调,不能跨组调的原因是即使有错错得正的逻辑,但是如果DQM信号没有使能对应的Byte,那就会导致数据缺失,所以必然出错。# V7 I* I+ i- x& \5 G

% b1 B; v( i1 ]9 F  A; ?
微信图片_20230221211753.png

* a  P/ l& ?6 H) c
在DRAM端做数据组内调换,不影响主控读写数据的正确性
( X8 V5 _5 o$ E0 h! r( z. i
& k5 o+ O- ]. ~/ p+ D
当然,组内数据可调的这个思路,放在DDR3、DDR4等都可以的,但还是要先看DRAM规格书,确定数据线不参与任何Command组合,如果参与了就不能调,比如有的厂家的LPDDR就用了数据线来做Command。5 h* Z; c7 O! s
2 |  C7 F2 j5 ~  u! C: `
" }$ b/ m2 P) Y4 z' K6 L
STM32上的SDRAM电路设计

参考ST评估板MB1219的SDRAM部分电路如下,STM32使用SDRAM的目的是扩充芯片内存,由FMC接口控制,电路没什么复杂的,设计时注意了解各个信号的作用,然后参考规格书把信号一一对应连接上即可。评估板MB1219使用的主控是STM32F769NI,参考STM32F7xx规格书第86页的Table 12. FMC pin definition的SDRAM栏,有详细的信号定义。下图中的BA0和BA1接的信号为A14和A15,这里没有错,是ST工程师在设计评估板时,FMC总线上还挂了SRAM和Nor Flash,而A14和A15是SRAM和Nor Flash的,但对应SDRAM实际为BA0和BA1。
, @3 m8 u/ c& O, E: `7 a


- E5 v4 _0 Z, c& j- G* Z
微信图片_20230221211748.png

) a* H/ C* i  k3 r( h. L$ [% _
; ~7 l; i* h! L: v* ^6 H( J' ~
SDRAM参考设计电路
$ m9 Z4 B( \6 U' m/ j+ ^0 H2 u" a' B
完成原理图设计,后面剩下的是大家比较关心的Layout要不要做信号线等长的问题,这个问题在网上一直是很多人热衷讨论的一个问题,各有说法。其实对于SDRAM,只要走线不会长度差得特别离谱,比如差不多十几个厘米这样的,不等长影响不会很大,但如果PCB空间资源足够的话建议按照500mil的规则做等长。如下图ST的评估板MB1219就做了等长。- d. G8 S4 @/ v* i8 X

( _. p% }  W  N7 q: Z# R# ?% ^

% M  p- H9 n  q: O! t9 C; E$ p+ a0 y
微信图片_20230221211741.png

5 u: F( V' z! m" @: u7 X9 W
条件允许,推荐SDRAM做500mil约束等长
/ @+ V/ K- S6 q! {, X% n/ p& S
转载自: ecircuitlab

4 {- l) |5 J6 s/ l4 W6 x- b- T* L
, q: U) A3 c1 e) Y, d# B7 H, D) y
收藏 评论0 发布时间:2023-2-21 21:18

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版