NAND Flash 控制器

目标:

  • 了解 NAND Flash 芯片的接口
  • 掌握通过 NAND Flash 控制器访问 NAND Flash 的方法

NAND Flash 介绍和 NAND Flash 控制器使用

NAND Flash 在嵌入式系统中的地位与 PC 上的硬盘类似,用于保存:

  • 系统运行所必须的操作系统
  • 应用程序
  • 用户数据
  • 运行过程中产生的各类数据

Flash 介绍

常用的 Flash 类型有 NOR Flash 和 NAND Flash 两种。

两者的差别如下:

NOR Flash 支持 XIP,即代码可以直接在 NOR Flash 上执行,无需复制到内存中。

这是由于 NOR Flash 的接口与 RAM 完全相同,可以随机访问任意地址的数据。

在 NOR Flash 上进行读操作的效率非常高,但是曹处和写操作的效率很低;另外,NOR Flash 的容量一般比较小。

NAND Flash 进行擦除和写操作的效率更高,并且容量更大。

一般而言,NOR Flash 用于存储程序,NAND Flash 用于存储数据。

基于 NAND Flash 的设备通常也要搭配 NOR Flash 以存储程序。

 

Flash 存储器件由 擦除单元(也成为块)组成,当要写入某个块时,需要确保这个块已经被擦除。

NOR Flash 的块大小范围为 64KB~128KB;NAND Flash 的块大小范围为 8KB~64KB,擦/写一个 NOR Flash 块需要 4s,而擦写一个 NAND Flash 块仅需 2ms。

NOR Flash 的块太大,不仅增加了擦写时间,而且对于给定的写操作,NOR Flash 也需要更多的擦除操作——特别是小文件,比如一个文件只有 1KB,但是为了保存它却需要擦除大小为 64KB~128KB 的 NOR Flash 块。

NOR Flash 的接口与 RAM 完全相同,可以随意访问任意地址的数据。

而 NAND Flash 的接口仅仅包含几个 I/O 引脚,需要串行地访问。NAND Flash 一般以 512 字节为单位进行读写。

这使得 NOR Flash 适合于运行程序,而 NAND Flash 更适合于存储数据。

容量相同的情况下,NAND Flash 的体积更小,对于空间有严格要求的系统,NAND Flash 可以节省更多的空间。

市场上 NOR Flash 的容量通常为 1MB~4MB(也有 32MB 的 NOR Flash),NAND Flash 的容量为 8MB~512MB。

容量差别也使得 NOR Flash 多用于存储程序,NAND Flash 多用于存储数据。

 

对于 Flash 存储器件的可靠性需要考虑 3 点:位反转、坏块和可擦除次数。

所有 Flash 器件都遭遇位反转的问题:由于 Flash 固有的电器特性,在读写数据的过程中,偶然会产生一位或几位数据错误(这种概率很低),而 NAND Flash 出的概率远大于 NOR Flash。

当位反转发生在关键的代码、数据上时,有可能导致系统崩溃。

当仅仅是报告位反转,重新读取即可;如果确实发生了位反转,则必须有相应的错误检测/恢复措施。

在 NAND Flash 上发生位反转的概率更高,推荐使用 EDC/ECC 进行错误检测和恢复。NAND Flash 上面会有坏块随机分布,在使用前需要将坏块扫描出来,确保不再使用它们,否则会使产品含有严重的故障。NAND Flash 每块的可擦除次数通常在 100000 次左右,是 NOR Flash 的 10 倍。

另外,因为 NAND Flash 的块大小通常是 NOR Flash 的 1/8,所以 NAND Flash 的寿命远远超过 NOR Flash。

 

嵌入式 Linux 对 NOR、NAND Flash 的软件支持都很成熟。

在 NOR Flash 上常使用 jffs2 文件系统,而在 NAND Flash 上常用 yaffs 文件系统。

在更底层,有 MTD 驱动程序实现对它们的读、写、擦除操作,它也实现了 EDC/ECC 校验。

 

我擦,概念讲了一堆啊!!!

NAND Flash 的物理结构

以 NAND Flash K9F1208U0M 为例,K9F1208U0M 是三星公司生产的容量为 64MB 的  NAND Flash,常用于手持设备等消费电子产品。

它的封装及外部引脚如上图。

K9F1208U0M 的功能结构图如下图所示:

K9F1208U0M 的内部结构分为 10 个功能部件。

  • X-Buffers Latche & Decoders:用于行地址
  • Y-Buffers Latche & Decoders:用于列地址
  • Command Register:用于命令字
  • Control Logic & High Voltage Generator:控制逻辑及产生 Flash 所需高压。
  • NAND Flash Array:存储部件。
  • Page Register & S/A:页寄存器,当读、写某页时,会将数据先读入/写入此寄存器,大小为 528 字节。
  • Y-Gating
  • I/O Buffers & Latches
  • Global Buffers
  • Output Driver

 

NAND Flash 存储单元组织结构如下图:

K9F1208U0M 容量为 528 Mbit,分 131072 行(页)

 

待续。。。

 

转载于:https://www.cnblogs.com/tuhooo/p/11186819.html

移动电话的功能日益丰富,其对系统中数据存储容量的需求正在快速增长。 NAND Flash具有速度快、密度大、成本低等特点,在各种数码产品中得到了广泛 应用,在各种片上系统芯片中(SOC)集成NAND Flash控制器正成为一种趋势。 本文讨论了Flash Memory的两种主流实现技术即NAND Flash和NOR Flash 的特点和区别,分析了市场上存在的NAND Flash的典型规格及其存储结构特点, 阐述了不同NAND Flash器件一些通用的存取操作方式,近一步分析了进行这些 存取操作所必须满足的时序规范,在此基础上,结合某公司手机SOC芯片的设计 需求,提出了一种基于AMBA总线的NAND Flash控制器实现方案,对该实现方 案进行了充分的验证工作。 本文所提出的控制器的实现方式,可以支持市场上存在的两种典型规格的 NAND Flash器件,可同时外接1至4个Flash芯片,通过可配置的控制方式可灵 活的对不同存取速度的器件予以支持,具备良好的可扩展性。在控制器的主控逻 辑设计中,采取了“块读’’和“块写”方式实现对大页器件的读页和写页操作, 这种方式有效减小了控制器中用做数据缓存的buffer大小,降低了芯片面积。针 对NAND Flash在使用过程中可能出现的位反转现象,在控制器的设计中加入了错 误检测和纠错功能。论文深入分析了ECC(Error Checking and Correcting)算法,讨 论了ECC算法的硬件实现和优化方法。在不影响对存储器读写效率的前提下,实 现对数据的存取进行实时的高速检错和纠错,为提高NAND Flash的可靠性提供了 硬件上的支持。 对控制器的验证采用了模拟验证和FPGA验证两种方式。在模拟验证阶段对 控制器的所有功能点进行全面验证,结果正确后,在Xilinx公司的Vertex4开发板 上对控制器进行了FPGA验证。结果表明控制器能正确控制对于NAND Flash的各 种存取操作,工作完全正常。 本文设计验证的NAND Flash控制器即将应用于某公司的SOC手机芯片,提 出的控制器实现方案对NAND Flash控制系统的设计优化具有普遍适用性,论文研 究的工程实用价值大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值