STM32上的SDRAM硬件电路设计

发布者:静心静气最新更新时间:2024-03-08 来源: elecfans关键字:STM32  SDRAM  硬件电路 手机看文章 扫描二维码
随时随地手机看文章

SDRAM简介

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

图片

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

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


从原理上去看DRAM实现数据存取很完美,但实际芯片按照上面的原理做好电路后,开关晶体管和电容本身都会有漏电流。漏电流会导致一个特别糟糕的情况,电容存储的电荷会慢慢通过漏电流方式流失掉,当电荷流失到一定的量后,内部电路读取电容的电压去判断数据时,就不能正确判断为二进制1了,这种情况下数据是错误。


这样的错误肯定是不允许发生的,解决办法是通过定时刷新方式给电容充电,保证电容存储的电荷量稳定在理想的状态。因为这样的过程是一个一直的动态过程,动态随机存取器的名称由此而来。而SDRAM是DRAM的一种操作方式,如下图所示,SDRAM读写数据时,是通过在时钟的上升沿同步获取控制、数据信号,所以叫做同步动态随机存取器。

图片

SDRAM在时钟CLK上升沿时同步获取控制、数据信号

DRAM和SRAM优缺点:

  1. SRAM读写速度快,DRAM读写速度慢。

  2. SRAM耗电量低,DRAM耗电量大。

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

SDRAM接口信号

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

A0-A11: 地址信号。

BA0-BA1: Bank选择信号。

DQM0-DQM3: 读写数据掩码控制信号。

DQ0-DQ31: 数据信号。

CKE: 时钟使能信号。

CLK: 时钟信号。

CS: 片选信号。

CAS: 列地址选通控制信号。

RAS: 行地址选通控制信号。

WE: 写使能信号。

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

图片

DRAM Commad真值表

从上图可以看到,DQ0-DQ31和DQM0-DQM3不参与组合成Command。这里说明下,DQMx是读写数据掩码信号,用于控制数据读写使能对应Byte的。它们的控制关系是DQM0控制DQ0-DQ7,DQM1控制DQ8-DQ15,以此类推。知道数据信号DQ0-DQ31不参与组合成Command后,在硬件设计的Layout阶段时,有时数据线不好走线,可以通过调换组内数据线来解决数据线Layout难度大问题。

注意这里说的组内调换是单个Byte内的信号,DQ0-DQ7为一组,DQ8-DQ15为一组,以此类推,不能跨组调换,跨组调换读写数据就错误了。

这里介绍的组内数据线调换不影响数据的正确性,可能会有很多人困惑,我做了个图如下说明解释。如下图中,左侧为主控信号,右侧为DRAM。主控要写数据0x0F到DRAM中,因为数据线在DRAM端被调换了,所以实际到DRAM内的数据变为0x1D。这样看像是数据错了,但我们再看主控从DRAM读数据的情况,主控读数据时,DRAM内的0x1D顺着信号线原路返回,变成了0x0F,错错得正。

所以DRAM信号线组内调线序不影响数据读写错误,但不能跨组调,不能跨组调的原因是即使有错错得正的逻辑,但是如果DQM信号没有使能对应的Byte,那就会导致数据缺失,所以必然出错。

图片

在DRAM端做数据组内调换,不影响主控读写数据的正确性

当然,组内数据可调的这个思路,放在DDR3、DDR4等都可以的,但还是要先看DRAM规格书,确定数据线不参与任何Command组合,如果参与了就不能调,比如有的厂家的LPDDR就用了数据线来做Command。

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。

图片

SDRAM参考设计电路

完成原理图设计,后面剩下的是大家比较关心的Layout要不要做信号线等长的问题,这个问题在网上一直是很多人热衷讨论的一个问题,各有说法。其实对于SDRAM,只要走线不会长度差得特别离谱,比如差不多十几个厘米这样的,不等长影响不会很大,但如果PCB空间资源足够的话建议按照500mil的规则做等长。如下图ST的评估板MB1219就做了等长。

图片

条件允许,推荐SDRAM做500mil约束等长


关键字:STM32  SDRAM  硬件电路 引用地址:STM32上的SDRAM硬件电路设计

上一篇:基于STM32编写一个SPI接口例程
下一篇:STM32为什么需要位带操作呢?

推荐阅读最新更新时间:2024-11-09 21:49

stm32PWM输入模式测量脉冲速度和占空比
一、概念理解 PWM输入捕获模式是输入捕获模式的特例。 1. 每个定时器有四个输入捕获通道IC1、IC2、IC3、IC4。且IC1 IC2一组,IC3 IC4一组。并且可是设置管脚和寄存器的对应关系。 2. 同一个TIx输入映射了两个ICx信号。 3. 这两个ICx信号分别在相反的极性边沿有效。 4. 两个边沿信号中的一个被选为触发信号,并且从模式控制器被设置成复位模式。 5. 当触发信号来临时,被设置成触发输入信号的捕获寄存器,捕获“一个PWM周期(即连续的两个上升沿或下降沿)”,它等于包含TIM 时钟周期的个数(即捕获寄存器中捕获的为TIM的计数个数n)。 6. 同样另一个捕获通道捕获触发信号和下一个相反极性的边沿信号的计数个
[单片机]
STM32独立看门狗(宠物狗)
一、前言 ······在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) ,其主要功能是:能够让CPU复位的一个硬件。 ······看门狗( watchdog timer),是一个定时器电路, 一般有一个输入,叫喂狗(kicking the dog or service the dog),一个输出到MCU的RST端,MCU正常工作
[单片机]
<font color='red'>STM32</font>独立看门狗(宠物狗)
STM32 USB学习笔记5
主机环境:Windows 7 SP1 开发环境:MDK5.14 目标板:STM32F103C8T6 开发库:STM32F1Cube库和STM32_USB_Device_Library 承接前文,对于上层应用而言只剩下CDC类接口文件即usbd_cdc_interface,该文件主要为实现CDC类接口所用到的物理资源以及逻辑资源,需要参考通信设备通用串行总线类定义版本1.2以及PSTN设备通用串行总线通信类子类规范版本1.2,这两个文档都可以在USB组织官网上下载得到,首先看下usbd_cdc_interface.h文件,如下: /* Define to prevent recursive inclusion
[单片机]
<font color='red'>STM32</font> USB学习笔记5
介绍下如何新建一个STM32寄存器版的工程
今天简单介绍下如何新建一个寄存器版的工程。 首先,新建一个文件夹用于存放工程项目。在文件夹中在分别新建CMSIS、inc、src、proj三个文件夹。CMSIS(Cortex Microcontroller Software Interface Standard)用于存放基于CMSIS应用程序的基本结构,CMSIS外设访问层的文件。inc用于存放头文件。src用于存放源文件。proj用于存放工程项目。 接着,打开官网下载的固件库文件,将需要的文件添加到CMSIS。最后添加完如下图所示。 点击project,新建工程项目。将工程项目保存到已经建好的文件夹中。选择对应的CPU型号。 弹出添加库文件,由于我们使用寄存
[单片机]
介绍下如何新建一个<font color='red'>STM32</font>寄存器版的工程
STM32的FSMC地址块划分
注意:每个区都有独立的寄存器控制,都有单独的片选引脚,故每个区都可以接不同的外设。
[单片机]
<font color='red'>STM32</font>的FSMC地址块划分
STM32 串口详细讲解
什么是串口 UART : Universal Asynchronous Receiver/Transmitter 通用异步收发器 USART : Universal Synchronous Asynchronous Receiver/Transmitter 通用同步/异步收发器 一种是常用也是最简单的串行数据传输协议。数据线只需要两根就可以实现全双工。 Tx: 发送数据线 Rx: 接收数据线 A B TX ----------- Rx Rx ------------Tx 全双工: 两个设备可以同时发送和接收 串行数据: 发送只一根线,一次只能发送一bit. 一bit接着一bit发送和接收。
[单片机]
STM32 对内部FLASH读写接口函数
简介:因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序。 原理:先要把整页FLASH的内容搬到RAM中,然后在RAM中改动,然后擦除整页FLASH,再把改动后的内容写入原Flash页。下面程序调试通过。 /******************************************************************************* * Function Name : I2C_EE_BufferRead * Description : Reads a block of data from th
[单片机]
基于FPGA的PCB测试机硬件电路设计研究
引言 PCB 光板测试机基本的测试原理是欧姆定律,其测试方法是将待测试点间加一定的测试电压,用译码电路选中PCB 板上待测试的两点,获得两点间电阻值对应的电压信号,通过电压比较电路,测试出两点间的电阻或通断情况。 重复以上步骤多次,即可实现对整个电路板的测试。 由于被测试的点数比较多, 一般测试机都在2048点以上,测试控制电路比较复杂,测试点的查找方法以及切换方法直接影响测试机的测试速度,本文研究了基于FPGA的硬件控制系统设计。 硬件控制系统 测试过程是在上位计算机的控制下,控制测试电路分别打开不同的测试开关。测试机系统由以下几部分构成: 上位计算机PC104 、测试控制逻辑(由FPGA 实现) 、高压测试电路。 其中
[测试测量]
基于FPGA的PCB测试机<font color='red'>硬件电路</font>设计研究
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved