SDRAM的调试总结

1 说明

实验平台: JZ2440

CPU: S3C2440

SDRAM型号: EM63A165TS-6G

 

2 SDRAM的一些基本概念

2.1 引脚分配

 

2.2 引脚描述

A0-A12 :地址线

DQ0-DQ15 :数据线

LDQM、UDQM :数据屏蔽控制

BA0-BA1 :L-BANK地址线

CLK :时钟

CKE :时钟使能

CS# :片选

WE# :写使能

CAS# :列地址选通脉冲

RAS# :行地址选通脉冲

VSS、VSSQ :地

VDD、VDDQ :电源

 

2.3 内部框图

 

2.4 基本概念

初始化完成之后,想要对一个L-BANK的阵列进行寻址,需要经过片选、选择L-BANK、激活对应的行,选择对应的列并发送读写命令,完成对应操作。

2.4.1 行(Row)有效

确定要操作的行,使之处于激活(Active)状态;行有效操作与片选、L-BANK地址同时进行。

 

2.4.2 列(Column)寻址

行有效后,经过一定的时间间隔后[Trcd(RAS to CAS Delay)],进行列寻址操作,确定要操作的存储单元;列寻址与读写命令同时进行。

 

2.4.3 数据输出(读)

从CAS与读取命令发出,到第一笔数据输出到数据总线上,有一段时间间隔,这个时间间隔成为[Tcl(CAS Latency,CAS潜伏期)];从数据总线上有数据输出之前的一个上升沿开始,数据已被触发,经过一定的驱动时间,最终被传向数据总线上,这段驱动时间,被称为[Tac(Access Time from CLK,时钟出发后的访问时间)],每个数据读取时,都有Tac,包括连续读取,只是在第一个数据传输的同时,就开始了第二个数据的Tac。

 

2.4.4 数据输入(写)

数据写入也是在Trcd之后进行,数据与CAS同时发送,即写入延时为0,但是为了保证数据的写入可靠,都会留出足够的写入、校正时间[Twr(Write Recovery Time)],这个操作也被称作写回(Write Back);注意,预充电与写操作不能同时进行,并且在写操作完成后,等待Twr的时间间隔,才能执行预充电操作。

 

2.4.5 突发(Burst)

突发是指同一行中,相邻的存储单元连续进行数据传输的技术,连续传输所涉及的存储单元(列)的量,就是突发长度(Burst Length, BL);只要起始列地址和突发长度,内存就会依次地自动对后面相应数量的存储单元进行读写操作,而不需要控制器连续地提供列地址。

Full Page突发传输:L-BANK里,对某一行中所有存储单元按顺序连续传输。

顺序传输:从指定起始单元开始,按顺序传输。

交错传输:按照指定规则,进行数据传输。

 

2.4.6 预充电(Precharge)

L-BANK关闭现有工作行,准备打开新行的操作,就是预充电操作。实际上,预充电就是对工作行中所有存储单元进行数据重写,并对行地址进行复位,以准备新行的工作。地址线A10控制着读写之后,是否进行自动预充电操作。

在发出预充电命令之后,要经过一定时间才能发送行有效命令打开新的工作行,这段时间为[Trp(Precharge command period),预充电有效周期]。

 

2.4.7 刷新(Refresh)

刷新的意义在于保存数据。在刷新过程中,所有L-BANK都停止工作,所有的工作命令只能等待而无法执行,刷新完成后,才会重新进入工作状态。

刷新分为两种:自动刷新(Auto Refresh, AR)和自刷新(Self Refresh, SR)。

自动刷新:在正常工作状态下,芯片周而复始地自动刷新,以保存临时存储地数据。

自刷新:在休眠状态下(在发出AR命令后,使CKE置于无效状态,重新使能CKE可退出),芯片内部自动刷新,以保证数据不丢失。

 

2.4.8 刷新与预充电地区别

预充电是对一个或所有L-BANK中的一个工作行进行重写操作,是不定期的;刷新是对所有行进行重写操作,以保留那些久久未被重写的存储单元的数据。

 

2.4.9 数据掩码

屏蔽不需要的数据。在读取数据时,DQM发出,两个时钟周期后生效;在数据写入时,DQM立即生效。

 

2.4.10 几种读取时可能出现的情形

a、页命中(PH, Page Hit)

要寻址的行与L-BANK是空闲的,直接发送行有效,再发送列寻址,即可完成读写操作。

b、页快速命中(PFH, Page Fast Hit)

要寻址的行正好是前一个操作的工作行,即寻址的行已处于选通有效状态,可以直接发送列寻址,即可完成读写操作。

c、页错失(PM, Page Miss)

要寻址的行所在的L-BANK中已经有一个激活的工作行(寻址冲突),这时必须先对激活的工作行进行预充电操作,关闭激活的行,再对新行发送行有效,页寻址,才能完成读写操作。

交错式内存控制:一个L-BANK进行工作时,对下一个要工作的L-BANK进行预充电操作。

 

3 EM63A165TS

3.1 时序

模式寄存器位映射关系

3.3 突发访问规则

 

3.4 AC特性

4 S3C2440内存控制器配置说明

4.1 原理图说明

这是一种两个16位位宽的SDRAM芯片拼接成一个32位位宽的模组接法。

a、A0连接CPU的哪根地址线,是由模组的数据位宽决定的。由于CPU是按字节寻址的,而SDRAM模组是按字寻址的,所以应该进行地址转换。

b、A0、BA0、BA1连接的地址线可以参考用户手册。

 

4.2 工作原理简述

S3C2440的内存空间划分为不同的块,当CPU向内存控制器发出地址,内存控制器根据地址范围,发出对应片选信号到片选引脚,实现对不同设备的控制。

 

4.3 寄存器设置(clocks = 10ns)

4.3.1 BWSCON

说明

[27]

0:把对应的引脚映射为写字节使能,该位的作用是,对写入数据,屏蔽不需要写入的字节,实现单个字节写操作。

1:把对应的引脚映射为字节使能,该位的作用是,对读入数据,屏蔽不需要读取的字节,实现单个字节读操作。

[26]

如果CPU速度远远大于SDRAM速度,当CPU向SDRAM发送读取命令时,SDRAM未能及时准备好数据,可以使能该位,设置等待,保证能读到数据。

 

4.3.2 BANKCON6

 

4.3.3 REFRESH

 

4.3.4 BANKSIZE

 

4.3.5 MRSRB6

附录1 参考文档

《S3C2440用户手册》

《EM63A165TS Datasheet》

《高手进阶——高级内存技术指南》

《嵌入式Linux开发完全手册》

SDRAM调试总结的更多相关文章

  1. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(2.1)- 玩转板载OpenSDA,Freelink调试器

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列EVK上板载调试器的用法. 本文是i.MXRT硬件那些事系列第二篇,第一篇痞子衡给大家整体介绍了i.M ...

  2. 标题:u-boot 移植步骤详解

    1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目.从FADSROM.8xxROM.PPCBOOT逐步发展演化而来.其源码目录.编译形式与 ...

  3. 基于RT1052 Aworks 内存扩容记录(一)

    本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发 1. 首先阅读原理图 内存容量由32M扩容至64M. 2. 再则比较两颗芯片的参数 通过比较32M和64M SDRAM ...

  4. 调试2440 RAM拷贝至SDRAM遇到的问题

    汇编代码主要是初始化一些寄存器,关狗,初始化时钟,初始化存储管理器以便访问内存,然后将SoC上4k RAM数据拷贝至SDRAM,然后在SRAM里面运行,由于代码未正常跑起来,于是使用JLinkExe来 ...

  5. 下载uboot的调试版本到开发板的sdram中运行

    开发环境:开发板:FriendlyARM Tiny6410 主机:CentOS release 6.4 (Final) 开发板与主机通过串口线连接 调试用的uboot源码为开发板光盘提供的u-boot ...

  6. ok6410如何从sdram中启动uboot 调试 这是一个猜想还没有验证

    1\在smdk6410.h中定义宏 //#define CONFIG_SKIP_LOWLEVEL_INIT 1 //#define CONFIG_SKIP_RELOCATE_UBOOT 12\将编译的 ...

  7. FPGA_VIP_V101 摄像头视频采集 调试总结之SDRAM引起的水平条纹噪声问题

    FPGA_VIP_V101 摄像头视频采集 调试总结之SDRAM引起的水平条纹噪声问题 此问题困扰我很近,终于在最近的项目调整中总结了规律并解决了. 因为之前对sdram并不熟悉,用得也不是太多,于是 ...

  8. LPC2478调试___ads常见错误分析

    进行ADS外部RAM进行仿真调试过程中,出现常见错误“entry point lies  outside the image" 原因为程序空间超出范围,需要修改一个参数. 解决方法:首先在Z ...

  9. u-boot移植总结(二)LED点灯调试 和 u-boot加载地址

    (一)LED点灯调试 FL2440电路总共有4个LED0,LED1,LED2,LED3,分别接到板子GPB5,GPB6,GPB8,GPB10引脚.通过设置三个寄存器GPBCON(0x56000010) ...

随机推荐

  1. StringBuffer调整空间

    在无法估算字符串大小情况下,可以使用StringBuffer的trimToSize()方法调整到合适大小.

  2. java各种面试问题

    二.Java多线程相关 线程池的原理,为什么要创建线程池?创建线程池的方式: 线程的生命周期,什么时候会出现僵死进程: 说说线程安全问题,什么实现线程安全,如何实现线程安全: 创建线程池有哪几个核心参 ...

  3. FFmpeg——AVCodec,AVCodecContext,AVCodecParameters 辨析

    先贴上雷神的一张FFmpeg关键结构体之间的关系图: 再看雷神的分析: 每个AVStream存储一个视频/音频流的相关数据: 每个AVStream对应一个AVCodecContext,存储该视频/音频 ...

  4. linux命令系列-mv(移动-重命名)

    #常用命令选项 默认覆盖 -n 不覆盖 -i 交互 -f 不交互直接覆盖 -u 只移动新的文件 -v 显示详细信息 #移动覆盖3个文件到/tmp目录 mv a.txt b.txt c.txt /tmp ...

  5. smoj2806建筑物

    题面 有R红色立方体,G绿色立方体和B蓝色立方体.每个立方体的边长是1.现在有一个N × N的木板,该板被划分成1×1个单元.现在要把所有的R+G+B个立方体都放在木板上.立方体必须放置在单元格内,单 ...

  6. pycharm安装报错Non-zero exit co?

    pycharm安装第三方库时报错Non-zero exit co? 原因:版本找不到 解决思路: 1.用pip install pandas报错,尝试用python -m pip install -- ...

  7. 【剑指Offer面试编程题】题目1384:二维数组中的查找--九度OJ

    题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 输入: 输入可能包含 ...

  8. Ubuntu的妥协将支持精选的32位应用

    据外媒Tom's hardware,Ubuntu开发人员Canonical在早先的时候宣布Ubuntu 19.10将不再更新32位软件包和应用程序,引来了诸多应用开发者的不满.现在,Ubuntu方面宣 ...

  9. day12-Python运维开发基础(推导式、生成器与生成器函数)

    1. 推导式(列表推导式.集合推导式.字典推导式) # ### 推导式 : 通过一行循环判断,遍历出一系列数据的方式是推导式 """ 推导式一共三种: 列表推导式,集合推 ...

  10. RabbitMq学习笔记——概念

    1.RabbitMQ简介 MQ全称为Message Queue(消息队列),是一种“应用程序”<—>“应用程序”的通信方法.MQ是一个典型的“消费”<—>“生产者”模型的代表, ...