flash的控制器

一、Flash介绍

    常用的flash类型有NOR Flash 和Nand Flash 两种;

    (1)Nor Flash

    1、Nor Flash的接口和RAM完全相同,可以随机访问任意地址的数据,在其上进行读操作的效率非常高,但是擦除和写操作的效率很低,另外,Nor Flash的容量一般比较小,通常,Nor Flash用于存储程序
    2、Nor Flash的块大小范围为64KB—128KB;
    3、擦写一个Nor Flash块需要4s,
    4、市场上Nor Flash 的容量通常为1MB—4MB

    (2)Nand Flash
    1、Nand Flash的接口仅仅包含几个I/O引脚,需要串行地访问,Nand Flash进行擦除和写操作的效率很高,容量较大,

通常Nand Flash用于存储数据
    2、Nand Flash的块大小范围为8KB—64KB;
    3、擦写一个Nand Flash块需要2ms;
    4、Nand Flash 一般以512字节为单位进行读写
    5、 市场上 Nand Flash 的容量一般为 8M—512M

 

二、Nand  Flash的物理结构

    以三星公司生产的 K9F1208U0M  为例:

    1、容量:64MB,

                      一共4个层

                      每层1024个块(block);

                      1块包含32页

                      1页包含 512 + 16  = 528个字节

 

 

    2、外部接口:8个I/O口,5个使能信号(ALE、CLE、nWE、nRE、nCE),1个状态引脚(RDY/B),1个写保护引脚(nWE);            

    3、命令、地址、数据都通过8个I/O口输入输出;

    4、写入命令、地址、数据时,都需要将nWE、nCE信号同时拉低;数据在WE上升沿被锁存;

    5、CLE、ALE用来区分I/O引脚上传输的是数据还是地址;

    6、64MB的空间需要26位地址,因此以字节为单位访问Flash时需要4个地址序列

    7、读/写页在发出命令后,需要4个地址序列,而擦除块在发出擦除命令后仅需要3个地址序列

 

三、Nand Flash访问方法

 

      操作Nand  Flash时,先传输命令,然后传输地址,最后读、写数据,期间要检查flash的状态;

      K9F1208U0M  一页大小为528字节,而列地址A0——A7可以寻址的范围是256字节,所以将一页分为A、B、C三个区

                 A区:0—255字节

                 B区:256—511字节

                 C区:512—527字节

 

(1)复位

          命令:FFh

          步骤:发出命令即可复位Nand Flash芯片;

 

(2)读操作

          命令:

                 00h——读A区

                 01h——读B区

                 50h——读C区

           操作步骤:

              1、发出命令 00h、01h 或50h,  00h将地址位A8设为0,  01h将A8设为1 ;

              2、依次发出4个地址序列;

              3、检测R/nB,待其为高电平时,就可以读取数据了;

(3)flash编程

            命令:

                   80h——10h :写单页;

                   80h——11h :对多个层进行些页操作;    

             操作步骤:

                 1、写单页步骤:

                            【1】发出80h命令后;

                            【2】发送4个地址序列;

                            【3】向flash发送数据;

                            【4】发出命令10h启动写操作,flash内部自动完成写、校验操作;

                            【5】通过命令70h读取状态位,查询写操作是否完成;

                  2、多页写

                            【1】发出80h、4个地址序列、最多528字节的数据;

                            【2】发出11h命令;

                            【3】接着在相邻层执行【1】、【2】两步操作;

                            【4】第四页的最后使用10h代替11h,启动flash内部的写操作;

                            【5】可以通过71h查询写操作是否完成;

(4)复制

               命令:

                     00h——8Ah——10h  :单层页内复制

                     03h——8Ah——11h  :多层页内复制

               操作步骤:

                   1、单层页内复制步骤:

                            【1】发出命令00h;

                            【2】4个源地址序列;

                            【2】接着发出8Ah;

                            【4】发出4个目的地址序列;

                            【5】发出10h命令,启动写操作;

                            【6】通过70h命令读取状态查询操作是否完成;

                   2、多层页内复制步骤:

                             【1】发出命令00h(第一层)、4个源页地址序列;

                             【2】以后各层依次发出命令03h、4个源页地址序列;

                             【3】发出命令8Ah、目的地址、命令11h;

                             【4】各层依次执行【3】,在最后一页的地址后,用10h代替11h,启动写操作;

                             【5】通过71h命令读取状态查询操作是否完成;

(5)擦除

               命令:

                     60h——D0h  :单层内块擦除

                     60h-60h ——D0h  :多层内块擦除

               操作步骤:

                  1、单层内块擦除:

                              【1】发出命令字60h;

                              【2】发出块(block)地址,仅需3个地址序列;

                              【3】发出D0h,启动擦除操作;

                              【4】发出70h命令查询状态,是否完成擦除;

                   2、多层内块擦除:

                              【1】发出命令字60h,3个块地址序列;

                              【2】对每个层执行【1】;

                              【3】发出命令D0h,启动擦除操作;

                              【4】发出71h命令查询状态,检查是否完成擦除;

(6)读取芯片ID

                 命令:90h

                 操作步骤:

                     1、发出命令90h;

                     2、发出4个地址序列(均设为0);

                     3、连续读入5个数据,分别表示:厂商代码、设备代码、保留字节、多层操作代码;

(7)读状态

                 命令:

                       70h——单层状态

                       71h——多层状态

                 操作步骤:写入命令字之后,然后启动读操作即可读入此寄存器。

 

移动电话的功能日益丰富,其对系统中数据存储容量的需求正在快速增长。 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、付费专栏及课程。

余额充值