1 / 48

ARM嵌入式体系结构与接口技术 第 9 章 存储器接口

ARM嵌入式体系结构与接口技术 第 9 章 存储器接口. 课程安排 :. 第 1 章 嵌入式系统基础知识 第 2 章 ARM 技术概述 第 3 章 ARM 的指令系统 第 4 章 ARM 汇编语言程序设计 第 5 章 ARM Realview MDK 集成开发环境 第 6 章 GPIO 编程 第 7 章 ARM 异常中断处理及编程 第 8 章 串行通信接口. 课程安排 :. 第 9 章 存储器接口 第 10 章 定时器 第 11 章 A/D 转换器 第 12 章 LCD 接口设计 第 13 章 温度监测仪开发实例. 本章课程:.

shamus
Download Presentation

ARM嵌入式体系结构与接口技术 第 9 章 存储器接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ARM嵌入式体系结构与接口技术第9章 存储器接口

  2. 课程安排: • 第1章 嵌入式系统基础知识 • 第2章 ARM技术概述 • 第3章 ARM的指令系统 • 第4章 ARM汇编语言程序设计 • 第5章 ARM Realview MDK集成开发环境 • 第6章 GPIO编程 • 第7章 ARM异常中断处理及编程 • 第8章 串行通信接口

  3. 课程安排: • 第9章 存储器接口 • 第10章 定时器 • 第11章 A/D转换器 • 第12章 LCD接口设计 • 第13章 温度监测仪开发实例

  4. 本章课程: • 9.1 Flash ROM介绍 • 9.2 Nor Flash操作 • 9.3 NAND Flash操作 • 9.4 S3C2410X中Nand Flash控制器的操作 • 9.5 S3C2410X Nand Flash接口电路与程序设计 • 9.6 SDRAM芯片介绍 • 9.7 小结 • 9.8 思考与练习

  5. 9.1 Flash ROM介绍 • Falsh器件的主要特点是在不加电的情况下能长期保持存储的信息。Flash Memory属于EEPROM(电擦除可编程只读存储器)类型。它既有ROM的特点,又有很高的存取速度,而且易于擦除和重写,功耗很小。 • Flash主要有两种类型:“或非NOR”和“与非NAND” • Intel于1988年首先开发出NOR Flash技术 • 东芝公司1989年发表了NAND Flash结构 • Nand Flash与Nor Flash对比: • 1、接口对比NOR Flash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。NOR Flash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NAND Flash器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。

  6. 9.1 Flash ROM介绍 • 2、容量和成本对比相比起NAND Flash来说,NOR Flash的容量要小,一般在1~32MByte左右 • 3、可靠性性对比NAND器件中的坏块是随机分布的,而坏块问题在NOR Flash上是不存在的 • 4、寿命对比NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次 • 5、升级对比NOR Flash的升级较为麻烦,因为不同容量的NOR Flash的地址线需求不一样不同容量的NAND Flash的接口是固定的,所以升级简单 • 6、读写性能对比擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间约为为5s。擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。NOR的读速度比NAND稍快一些。

  7. 9.2 Nor Flash操作 • 9.2.1 SST39VF160芯片介绍 • SST39VF160是一个1M×16的CMOS多功能Flash器件 • SST39VF160的工作电压为2.7~3.6V,单片存储容量为2M字节,采用48脚TSOP封装,16位数据宽度。 • SST39VF160引脚图

  8. 9.2 Nor Flash操作 • SST39VF160的引脚功能描述如下表

  9. 9.2 Nor Flash操作 • 9.2.2 SST39VF160字编程操作 • 1、执行3字节装载时序,用于解除软件数据保护 • 2、装载字地址和字数据 • 在字编程操作中,地址在CE#或WE#的下升沿(后产生下降沿的那个)锁存,数据在CE#或WE#的上升沿(先产生上升沿的那个)锁存。 • 3、执行内部编程操作该操作 • 在第4个WE#或CE#的上升沿出现(先产生上升沿的那个)之后启动编程操作。一旦启动将在20ms内完成。

  10. 9.2 Nor Flash操作 • 9.2.3 SST39VF160扇区/块擦除操作 • 扇区操作通过在最新一个总线周期内执行一个6字节的命令时序(扇区擦除命令30H和扇区地址SA)来启动。块擦除操作通过在最新一个总线周期内执行一个6字节的命令时序(块擦除命令50H和块地址BA)来启动。

  11. 9.2 Nor Flash操作 • 9.2.4 SST39VF160芯片擦除操作 • 芯片擦除操作通过在最新一个总线周期内执行一个6字节的命令5555H地址处的芯片擦除命令10H时序来启动在第6个WE#或CE#的上升沿(先出现上升沿的那个)开始执行擦除操作,擦除过程中只有触发位或数据查询位的读操作有效

  12. 9.2 Nor Flash操作 • 9.2.5 SST39VF160与S3C2410X的接口电路 • 一片SST39VF160以16位的方式和S3C2410的接口电路:

  13. 9.2 Nor Flash操作 • 9.2.6 SST39VF160存储器的程序设计 • 1、字编程操作 • 从内存“DataPtr”地址的连续“WordCnt”个16位的数据写入SST39VF160的“ProgStart”地址 • 利用了数据查询位(DQ7)和查询位(DQ6)来判断编程操作是否完成 • 函数中用到的几个宏的定义如下: • #define ROM_BASE 0x00000000 • #define CMD_ADDR0 *((volatile U16 *)(0x5555*2+ROM_BASE)) • #define CMD_ADDR1 *((volatile U16 *)(0x2aaa*2+ROM_BASE))

  14. 9.2 Nor Flash操作 • 9.2.6 SST39VF160存储器的程序设计 • 2、扇区擦除操作 • SectorErase函数实现了一个扇区(扇区的开始地址为“sector”)的擦除工作 • 注意数据查询位(DQ7)在编程函数和擦除函数中的使用差别

  15. 9.2 Nor Flash操作 • 9.2.6 SST39VF160存储器的程序设计 • 3、读操作 • FlashRead函数实现了从“ReadStart”位置,读取“Size”个字节的数据到“DataPtr”中。 • void FlashRead(unsigned int ReadStart, unsigned short *DataPtr, unsigned int Size) • { • int i; • ReadStart += ROM_BASE; • for(i=0; i<Size/2; i++) • *(DataPtr+i) = *((unsigned short *)ReadStart+i); • }

  16. 9.3 NAND Flash操作 • 9.3.1 K9F1280芯片介绍 • 常见的8位Nand Flash有三星公司的K9F1208、K9F1G08、K9F2G08等,K9F1208、K9F1G08、K9F2G08的数据页大小分别为512B、2kB、2kB。 • K9F1208存储容量为64M字节,除此之外还有2048K字节的spare存储区。该器件采用TSSOP48封装,工作电压2.7~3.6V。 K9F1208对528字节一页的写操作所需时间典型值是200μs,而对16K字节一块的擦除操作典型仅需2ms。8位I/O端口采用地址、数据和命令复用的方法。这样既可减少引脚数,还可使接口电路简洁。

  17. 9.3 NAND Flash操作 • 9.3.1 K9F1280芯片介绍 • 管脚名称 描述 • I/O0 ~ I/O7 数据输入输出 • CLE 命令锁存使能 • ALE 地址锁存使能 • CE# 片选 • RE# 读使能 • WE# 写使能 • WP# 写保护 • R/B# 准备好/忙碌 输出 • VCC 电源(+2.7V~3.6V) • VSS 地 • N.C 空管脚

  18. 9.3 NAND Flash操作 • 9.3.1 K9F1280芯片介绍 • 1block = 32page;1page = 528byte = 512byte(Main Area) + 16byte(Spare Area) • 总容量为 = 4 096(block数量) × 32(page/block) × 512(byte/page) = 64MB • Nand Flash以页为单位读写数据,而以块为单位擦除数据。 • 对Nand Flash的操作主要包括:读操作、擦除操作、写操作、坏块设别、坏块标识等。

  19. 9.3 NAND Flash操作 • 9.3.2 读操作过程 • K9F1208的寻址分为4个cycle,分别是A[0:7]、A[9:16]、A[17:24]、A[25] • 读操作的过程为:① 发送读取指令;② 发送第1个cycle地址;③ 发送第2个cycle地址;④ 发送第3个cycle地址;⑤ 发送第4个cycle地址;⑥ 读取数据至页末 • K9F1208提供了两个读指令:“0x00”、“0x01”。这两个指令区别在于“0x00”可以将A[8]置为0,选中上半页;而“0x01”可以将A[8]置为1,选中下半页 • 读操作的对象为一个页面,建议从页边界开始读写至页结束

  20. 9.3 NAND Flash操作 • 9.3.2 读操作过程 • K9F1208读操作流程如图

  21. 9.3 NAND Flash操作 • 9.3.3 擦除操作过程 • 擦除的操作过程为: • ① 发送擦除指令“0x60”; • ② 发送第1个cycle地址(A9~A16); • ③ 发送第2个cycle地址(A17~A24); • ④ 发送第3个cycle地址(A25); • ⑤ 发送擦除指令“0xD0”; • ⑥ 发送查询状态命令字“0x70”; • ⑦ 读取K9F1208的数据总线,判断I/O 6上的值或判断R/B线上的值,直到I/O 6 = 1或R/ = 1; • ⑧ 判断I/O 0是否为0,从而确定操作是否成功。0表示成功,1表示失败。 • 擦除的对象是一个数据块,即32个页面。

  22. 9.3 NAND Flash操作 • 9.3.3 擦除操作过程 • K9F1208擦除操作流程图

  23. 9.3 NAND Flash操作 • 9.3.4 写操作过程 • 写入的操作过程为: • ① 发送编程指令“0x80”; • ② 发送第1个cycle地址(A0~A7); • ③ 发送第2个cycle地址(A9~A16); • ④ 发送第3个cycle地址(A17~A24); • ⑤ 发送第4个cycle地址(A25); • ⑥ 向K9F1208的数据总线发送一个扇区的数据; • ⑦ 发送编程指令“0x10”; • ⑧ 发送查询状态命令字“0x70”; • ⑨ 读取K9F1208的数据总线,判断I/O 6上的值或判断R/线上的值,直到I/O 6=1或R/ =1; • ⑩ 判断I/O 0是否为0,从而确定操作是否成功。0表示成功,1表示失败。 • 注意:写入的操作对象是一个页面。

  24. 9.3 NAND Flash操作 • 9.3.4 写操作过程 • K9F1208写操作流程图

  25. 9.4 S3C2410X中Nand Flash控制器的操作 • 9.4.1 S3C2410X Nand Flash控制器概述 • S3C2410x 可以实现从NAND Flash启动和引导系统,在SDRAM上执行主程序代码。 • S3C2410x中的NAND Flash的特性有: • 支持读/擦/编程NAND Flash存储器 • 支持自动引导模式:复位后,引导代码被送入Steppingstone,传送后,引导代码在Setppingstone中运行 • 具备硬件ECC产出模块 • NAND Flash控制器工作机制

  26. 9.4 S3C2410X中Nand Flash控制器的操作 • 9.4.2 S3C2410X Nand Flash控制器寄存器详解 • 配置寄存器NFCONF • (地址0x4E000000)

  27. 9.4 S3C2410X中Nand Flash控制器的操作 • 9.4.2 S3C2410X Nand Flash控制器寄存器详解 • 命令寄存器NFCMD(地址:0x4e000004) • 地址寄存器NFADDR(地址:0x4E000008)

  28. 9.4 S3C2410X中Nand Flash控制器的操作 • 9.4.2 S3C2410X Nand Flash控制器寄存器详解 • 数据寄存器NFDATA(地址:0x4E00000C) • 状态寄存器NFSTAT(地址:0x4E000010)

  29. 9.5 S3C2410X Nand Flash接口电路与程序设计 • 9.5.1 K9F1208和S3C2410X的接口电路 • K9F1208和S3C2410X • 的接口电路

  30. 9.5 S3C2410X Nand Flash接口电路与程序设计 • 9.5.2 S3C2410X NAND Flash寄存器设置 • (1)控制器初始化时,需要使能控制器 • 设置UFCON的[15]为“1”。 • (2)使能NAND Flash芯片 • 设置UFCON的[11]为“0”。 • (3)通过NAND控制器向NAND Flash写入命令 • 设置NFCMD为要发送的命令。 • (4)通过NAND控制器向NAND Flash写入地址 • 设置NFADDR为要发送的地址。 • (5)通过NAND控制器向NAND Flash写入数据 • 设置NFDATA为要写入的数据。

  31. 9.5 S3C2410X Nand Flash接口电路与程序设计 • 9.5.3 S3C2410X控制K9F1208的程序设计 • 实现向K9F1208的一个页面中写入0,1,2,3,4,5,6,7,8,9。然后读出数据,打印到串口终端。程序设计如下: • 1、NAND Flash控制器相关寄存器及宏定义 • 2、主测试程序 • 3、K9F1208初始化函数 • 4、K9F1208页面读函数 • 5、K9F1208页面写函数 • 6、K9F1208块擦除函数 • 7、调试与运行结果

  32. 9.6 SDRAM芯片介绍 • 9.6.1 SDRAM介绍 • SDRAM存储一个位的消息只需要一只晶体管,但是需要周期性地充电,才能使保存的信息不消失。 • SDRAM的一个存储位单元结构如图 • 电容器的状态决定了这个 • SDRAM单位的逻辑状态是 • 1还是0。一个充电的电容 • 器被认为是逻辑上的1, • 而“空”的电容器则是0 。

  33. 9.6 SDRAM芯片介绍 • 9.6.1 SDRAM介绍 • SDRAM内部结构 • 示意图

  34. 9.6 SDRAM芯片介绍 • 9.6.1 SDRAM介绍 • SDRAM的读取过程: • SDRAM的写入过程和读取过程基本一样,这里就不再详细介绍了 • 在SDRAM读取方式中,当一个读取周期结束后,和都必须失效,然后再进行一个回写过程才能进入到下一次的读取周期中。

  35. 9.6 SDRAM芯片介绍 • 9.6.1 SDRAM介绍 • 与Flash存储器相比较,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,且具有读/写的属性,因此,SDRAM在系统中主要用作程序的运行空间,数据及堆栈区。当系统启动时,CPU首先从复位地址0x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度,同时,系统及用户堆栈、运行数据也都放在SDRAM中。 • SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为避免数据丢失,必须定时刷新(充电) • 目前常用的SDRAM为8位/16位的数据宽度,工作电压一般为3.3V。主要的生产厂商为HYUNDAI、Winbond等

  36. 9.6 SDRAM芯片介绍 • 9.6.2 HY57V561620的结构 • HY57V561620存储容量为4M×4bank×16位(32M字节),工作电压为3.3V,常见封装为54脚TSOP,兼容LVTTL接口,支持自动刷新(Auto-Refresh)和自刷新(Self-Refresh),16位数据宽度

  37. 9.6 SDRAM芯片介绍 • 9.6.2 HY57V561620的结构 • 引脚 名称 • CLK 时钟 • CKE 时钟使能 • /CS 片选 • BA0,BA1 组地址选择 • A12~A0 地址总线 • /RAS 行地址锁 • /CAS 存列地址锁 • /WE 存写使能 • LDQM,UDQM数据I/O屏蔽 • DQ15~DQ0 数据总线 • VDD/VSS 电源/地 • VDDQ/VSSQ电源/地 • NC 未连接

  38. 9.6 SDRAM芯片介绍 • 9.6.3 接口电路 • 采用的是利用两片16位的SDRAM构造成一片32位的SDRAM存储系统。

  39. 9.6 SDRAM芯片介绍 • 9.6.3 接口电路 • 引脚描述如下: • nSRAS:SDRAM行地址选通信号 • nSCAS:SDRAM列地址选通信号 • nGCS6:SDRAM芯片选择信号 • nWBE[3:0]:SDRAM数据屏蔽信号 • SCLK0[1]:SDRAM时钟信号 • SCKE:SDRAM时钟允许信号 • DATA[0:31]:32位数据信号 • ADDR[2:14]:行列地址信号 • ADDR[25:24]:bank选择线

  40. 9.6 SDRAM芯片介绍 • 9.6.3 接口电路 • HY57V561620的Bank选择线BAn与S3C2410X地址线的对应关系,依照表9-12选择连接。HY57V561620的Bank大小位64MB,总线宽度位16位,单个器件容量为256MB,存储空间配置为(4MB×16×4BANK)×2片。所以BANK地址对应A[25:24] • SDRAM Bank地址配置表

  41. 9.6 SDRAM芯片介绍 • 9.6.4 寄存器设置 • 1.BWSCON寄存器 • BWSCON寄存器主要用来设置外接存储器的总线宽度和等待状态 • BWSCON寄存器在Bank6上的位定义 • SDRAM(Bank6)采用32位总线宽度,因此,DW6=10,其他2位采用缺省值

  42. 9.6 SDRAM芯片介绍 • 9.6.4 寄存器设置 • 2.BANKCONn寄存器的设置 • S3C2410X有8个BANKCONn寄存器,分别对应着Bank0~Bank7。Bank6~Bank7可以作为FP/EDO/SDRAM等类型存储器的映射空间 • BANKCONn寄存器在Bank6和Bank7上的位定义 • BANKCONn寄存器在MT=11时的相关位定义 • Trcd是从行使能到列使能的延迟,根据S3C2410X的HCLK频率(100M)及HY57V561620特性,此项取01。SCAN为列地址线数量,此项根据HY57V561620特性取01。

  43. 9.6 SDRAM芯片介绍 • 9.6.4 寄存器设置 • 3.REFRESH寄存器是DRAM/SDRAM的刷新控制器

  44. 9.6 SDRAM芯片介绍 • 9.6.4 寄存器设置 • 4、BANKSIZE寄存器

  45. 9.6 SDRAM芯片介绍 • 9.6.4 寄存器设置 • 5、MRSR寄存器 • MRSR寄存器有2个,为MRSRB6和MRSRB7对应着Bank6和Bank7 • 注意:当代码在SDRAM中运行时,绝不能够重新配置MRSR寄存器。 • 在掉电模式下,SDRAM必须进入SDRAM的自我刷新模式。

  46. 9.7 小结 • 本章重点讲解了在嵌入式系统中常用的各种存储器,以及在S3C2410X芯片中NAND Flash、NOR Flash、SDRAM的操作方法。

  47. 9.8 思考与练习 • 9-1 Nor Flash和Nand Flash的特征及它们之间特性的对比? • 9-2 Nor Flash的读、写、擦擦操作方法? • 9-3 Nand Flash的读、写、擦擦操作方法? • 9-4 SDRAM和RAM的区别?

  48. 48

More Related