一种NAND闪存控制器及其控制方法
技术领域
本发明涉及一种嵌入式装置及其控制方法,尤其是涉及一种应用于嵌入式实时操作系统下,如QNX操作系统(一种多任务、多用户的分布式实时操作系统),以实现NAND闪存(NAND型闪存)控制器功能的一种控制器及其控制方法。
背景技术
目前,大多数嵌入式产品应用需要大容量、高密度的存储器,如机车录音监听、机车视频监控系统等。而在各种存储器中,主要有NOR型和NAND型两种非易失闪存技术的闪存(FLASH)。两者区别很大,NOR型闪存有独立的地址线和数据线,能够在芯片内执行应用程序,不必再把代码读到系统RAM中,NOR型闪存的效率很高,但价格比较贵,容量比较小;NAND型闪存更像硬盘,采用地址线和数据线是共用的I/O线,增加了NAND型闪存与CPU控制器接口的复杂度。再者,NAND型闪存操作速度、频率就比CPU低得多。因此,高速CPU访问相对低速的NAND型闪存就存在两者快慢速度不匹配的瓶颈问题。因此CPU处理器需要专用的NAND闪存控制器来进行存储设备数据交换。但在大多数通用高速CPU中,一般是不具有NAND型闪存控制器,因此在嵌入式产品开发中NAND型闪存存储器的应用将受到限制,加大了嵌入式存储设备的开发难度,延长了开发周期。
现有技术中有由福州瑞芯微电子有限公司于2007年10月08日申请,并于2008年04月16日公开,公开号为CN101162449的中国发明专利NAND FLASH控制器及其与NAND FLASH芯片的数据交互方法具体涉及一种NAND FLASH控制器,包括:命令和地址数据传输通道,连接所述总线时序接口和所述通道选择器,用于传输命令和地址数据;数据缓冲区,用于接收系统总线通过述总线时序接口传送的信息数据;控制寄存器,用于接收系统总线通过述总线时序接口配置的工作参数;逻辑控制器,用于依据工作参数在数据缓冲区写入或读取数据信息;通道选择器,用于依据工作参数接通DMA数据传输通道或命令和地址数据传输通道,将传输通道的数据传送至FLASH时序发生器。同时,该现有技术还公开了NAND FLASH控制器与NAND FLASH芯片数据交互方法。但该发明技术方案存在编码/解码复杂,CPU资源占用率高,通用平台移植性差等缺点。
发明内容
本发明所要解决的技术问题是针对无NAND闪存(NAND FLASH)控制器的通用CPU处理器在应用NAND型FLASH存储器时,存在接口总线复杂,CPU控制读写速度不匹配等技术缺陷,提供一种NAND闪存控制器及其控制方法,提高了时序精确性和实时性、同时降低了CPU负荷,保证了系统的可靠性。
本发明具体提供了一种NAND闪存控制器的实施方式,一种NAND闪存控制器,包括:处理器总线接口时序发生器、命令锁存寄存器、地址寄存器、片选寄存器、读/写寄存器、地址/数据寄存器、忙状态寄存器、NAND闪存接口时序发生器,
处理器总线接口时序发生器与处理器相连,接收处理器的信息,对NAND闪存控制器中的寄存器进行初始化控制;
命令锁存寄存器连接于处理器总线接口时序发生器和NAND闪存接口时序发生器之间,用于选择NAND闪存芯片中的命令寄存器;
地址寄存器连接于处理器总线接口时序发生器和NAND闪存接口时序发生器之间,用于选择NAND闪存芯片中的地址寄存器;
片选寄存器连接于处理器总线接口时序发生器和NAND闪存接口时序发生器之间,用于选择NAND闪存芯片的工作模式或待机模式;
读/写寄存器连接于处理器总线接口时序发生器和NAND闪存接口时序发生器之间,用于向NAND闪存芯片中的寄存器分别写入命令或地址或数据信息;
地址/数据寄存器连接于处理器总线接口时序发生器和NAND闪存接口时序发生器之间,为处理器和NAND闪存芯片的数据或地址交换进行缓冲;
忙状态寄存器连接于处理器总线接口时序发生器和NAND闪存接口时序发生器之间,指示NAND闪存芯片当前的工作状态;
NAND闪存时序发生器为最终连接NAND闪存芯片的接口,用于实时检测NAND闪存控制器中寄存器的状态,向NAND闪存芯片的物理引脚输出时序波形。
作为本发明一种NAND闪存控制器进一步的实施方式,NAND闪存控制器基于现场可编程逻辑门阵列FPGA进行设计;处理器运行基于QNX的操作系统,处理器通过QNX驱动管理NAND闪存控制器中的寄存器。
作为本发明一种NAND闪存控制器进一步的实施方式,处理器总线接口时序发生器通过地址总线、数据总线和控制总线与处理器相连, NAND闪存接口时序发生器通过地址/数据总线和数据总线与NAND闪存芯片相连。
作为本发明一种NAND闪存控制器进一步的实施方式,NAND闪存芯片数据宽度为8位;命令锁存寄存器命令锁存使能时,数据线上的命令在写上升沿时被锁存至命令锁存寄存器;地址寄存器地址锁存使能时,数据线上的地址在写上升沿时被锁存至地址寄存器;片选寄存器进行编程或者擦除操作时,忽略片选信号。
作为本发明一种NAND闪存控制器进一步的实施方式,地址/数据寄存器采用双向8位复用总线,在读写信号的配合下,用于向NAND闪存芯片中的寄存器分别发送数据或命令或地址信息,并通过双向8位复用总线读取NAND闪存芯片的相关数据。
本发明还提供一种NAND闪存控制方法的具体实施方式,一种对NAND闪存控制器进行控制的方法,包括处理器驱动控制步骤、NAND闪存控制器控制步骤和时序产生步骤,
处理器驱动控制步骤基于QNX操作系统下NAND闪存设备实现高可靠性文件系统ETFS的NAND闪存驱动,NAND闪存驱动包括对NAND闪存芯片的读、写、擦除、校验、复位、状态操作的全部动作;
NAND闪存控制器控制步骤是在可编程的FPGA中实现处理器接口时序和NAND闪存控制器各种操作寄存器控制信号的产生;
时序产生步骤完成NAND闪存芯片最终目标时序的产生。
作为本发明一种NAND闪存控制方法进一步的实施方式,NAND闪存控制方法包括QNX操作系统下驱动读操作读时序产生步骤,该步骤包括以下过程:
开始先写片选寄存器,产生片选信号,指示对NAND闪存芯片操作的开始;写命令锁存寄存器,产生命令开始信号;写地址/数据寄存器,向NAND闪存芯片发送读操作命令字;写命令锁存寄存器,结束当前命令传送;写地址寄存器,产生地址开始信号;向地址/数据寄存器写入需要对NAND闪存芯片进行操作的地址;写地址寄存器,产生地址结束信号;写命令锁存寄存器,产生命令开始信号;写地址/数据寄存器,向NAND闪存芯片发送读操作命令;写命令锁存寄存器,结束命令传送;通过读/写寄存器产生读信号,在信号有效期内读地址/数据寄存器中数据总线的数据;写片选寄存器,产生结束NAND闪存芯片的操作。
作为本发明一种NAND闪存控制方法进一步的实施方式,NAND闪存控制方法包括QNX操作系统下驱动写操作写时序产生步骤,该步骤包括以下过程:
开始先写片选寄存器,产生片选信号,指示对NAND闪存芯片操作的开始;写命令锁存寄存器,产生命令开始信号;写地址/数据寄存器,向NAND闪存芯片发送读操作命令字;写命令锁存寄存器,结束当前命令传送;写地址寄存器,产生地址开始信号;向地址/数据寄存器写入需要对NAND闪存芯片进行操作的地址;写地址寄存器,产生地址结束信号;通过读/写寄存器产生写信号,在信号有效期内往地址/数据寄存器中写入数据;写命令锁存寄存器,产生命令开始信号;写地址/数据寄存器,向NAND闪存芯片发送写操作命令;写命令锁存寄存器,结束命令传送;写片选寄存器,产生结束NAND闪存芯片的操作。
作为本发明一种NAND闪存控制方法进一步的实施方式,在通过驱动读操作读时序产生步骤和/或驱动写操作写时序产生步骤,正确完成产生所需的读写时序后,再对NAND闪存芯片进行读或写操作时,驱动中会开辟一缓冲区,缓冲区的结构分为主缓冲区和辅缓冲区两部分,主缓冲区用于暂存写入或读出的数据;辅缓冲区用于记录NAND闪存芯片上主存储区中的状态信息。
作为本发明一种NAND闪存控制方法进一步的实施方式,在第一次驱动需要完成对NAND闪存芯片所有存储块的扫描,通过快速读取块校验区的状态信息,填入ETFS文件系统的结构体中,完成对NAND闪存芯片的文件系统建立,从而实现应用程序对NAND闪存芯片的拷贝、格式化高级操作。
本发明相对于目前的扩展NAND闪存控制器应用技术,有如下突出的技术效果:本发明所描述的技术方案通过QNX操作系统中的NAND闪存驱动对FPGA上的NAND闪存寄存器进行控制和管理,很灵活方便与各种NAND闪存匹配,同时与闪存采用同步数据交换,提高CPU处理器对NAND闪存设备操作的可靠性;通过对FPGA内设的寄存器状态实时产生时序来驱动NAND闪存芯片,提高了时序精确性和实时性,降低了CPU负荷,提高了系统的可靠性,同时FPGA无延时输出,确保了NAND闪存时序的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种NAND闪存控制器的系统连接示意图;
图2是本发明一种NAND闪存控制器的内部结构组成框图;
图3是本发明一种NAND闪存控制方法具体应用于QNX操作系统下的驱动读操作的读时序产生程序流程图;
图4是本发明一种NAND闪存控制方法具体应用于QNX操作系统下的驱动写操作的写时序产生程序流程图;
图5是本发明一种NAND闪存控制方法具体应用于QNX操作系统下的数据缓冲结构示意图。
其中:1-处理器,2-NAND闪存控制器,3-NAND闪存芯片,4-处理器总线接口时序发生器,5-命令锁存寄存器,6-地址寄存器,7-片选寄存器,8-读/写寄存器,9-地址/数据寄存器,10-忙状态寄存器,11- NAND闪存接口时序发生器。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明一种NAND闪存控制器及其控制方法的具体实施方式,本发明的实施方式以QNX操作系统为例,描述了一种基于QNX操作系统之下的NAND闪存控制器及其控制方法的技术实现方案。QNX操作系统是由加拿大QSSL公司(QNX Software System Ltd)开发的一种多任务、多用户的分布式实时操作系统,同时是一种商用的类Unix实时操作系统,主要应用于嵌入式系统。该操作系统既能运行于以Intel X86、Pentium等CPU为核心硬件环境下,也能运行于以PowerPC、MIPS等CPU为核心的硬件环境。QNX操作系统符合POSIX基本标准和实时标准,使其应用可以方便的进行移植。QNX操作系统广泛应用于音乐、媒体、数码消费系统,同时也可用于一些高安全要求级别的军用系统。
作为本发明一种NAND闪存控制器的具体实施方式,本发明所描述的NAND闪存控制器根据NAND闪存芯片的特性,在FPGA上设置了命令锁存寄存器5、地址寄存器6、片选寄存器7、读/写寄存器8、地址/数据寄存器9、忙状态寄存器10。并由处理器1中的QNX驱动管理FPGA上的寄存器。FPGA根据其寄存器的值来产生实际与NAND闪存芯片3的接口时序。在NAND闪存芯片3中,也包括有与FPGA上相对应的各种寄存器。
如图1所示的是基于QNX操作系统的NAND闪存控制器的系统连接示意图,整个系统包括处理器1(CPU),NAND闪存控制器2和NAND闪存芯片3。其中,NAND闪存控制器2包括处理器接口和NAND闪存接口,NAND闪存控制器2基于FPGA(现场可编程逻辑门阵列,Field Programmable Gate Array)设计,大大提高了电路的处理和响应速度,有效地保证了时序的精确性和实时性,同时也减轻了处理器CPU的负荷。处理器1通过系统总线与NAND闪存控制器2的处理器接口相连,NAND闪存控制器2的NAND闪存接口通过NAND接口总线与NAND闪存芯片3相连,处理器接口与NAND闪存芯片接口相连。
NAND闪存控制器2基于FPGA进行设计,主要负责与处理器1的数据交换和最终NAND闪存芯片时序的产生以及NAND闪存芯片状态的反馈。
处理器总线接口时序发生器4与处理器1(CPU)相连,按照系统总线的时序要求,接收处理器1的信息,对FPGA中的寄存器进行初始化控制,同时可选8位、16位、32位的数据传输宽度。目前市场上NAND闪存芯片8位的数据宽度有非常好的性价比,因此本发明具体实施方式采用选用8位的NAND闪存芯片。
如图2所示是基于QNX操作系统的NAND闪存控制器的内部结构组成框图,基于QNX操作系统的NAND闪存控制器包括处理器总线接口时序发生器4、命令锁存寄存器5、地址寄存器6、片选寄存器7、读/写寄存器8、地址/数据寄存器9、忙状态寄存器10、NAND闪存接口时序发生器11。系统总线主要包括地址总线、控制总线和数据总线,NAND接口总线主要包括数据总线和地址/数据总线。下面对各个电路模块介绍如下:
命令锁存寄存器5,当为高电平有效时,命令锁存使能。用于选择NAND闪存芯片中的命令寄存器。高电平时,数据线上的命令在写上升沿时被锁存至命令锁存寄存器5。
地址寄存器6,当为高电平有效时,地址锁存使能。用于选择NAND闪存芯片中的地址寄存器。高电平时,数据线上的地址在写上升沿时被锁存至地址寄存器6。低电平信号使地址寄存器6复位。对于整个地址序列,该信号必须保持高电平。
片选寄存器7, 低电平有效产生片选。用于选择NAND闪存芯片的工作模式或待机模式。片选寄存器为0:选择工作模式。片选寄存器为1:如果当前没有操作,选择待机模式。如果正在进行编程或者擦除操作,忽略这一片选信号。
读/写寄存器8,当处理器1为写操作时,且寄存器为低电平有效写使能。用于向NAND闪存芯片中的寄存器分别写入命令/地址/数据信息。 数据线上的信息在写上升沿被锁存至相应的寄存器。
当处理器1为读操作时,且寄存器低电平有效读使能。用于NAND闪存芯片之间传送数据/状态信息。数据线上的信息在读上升沿时有效。
地址/数据寄存器9,该寄存器为处理器1和NAND闪存芯片3的数据/地址交换的缓冲。在读写信号的配合下,采用双向8位复用总线,用于向NAND闪存芯片的寄存器分别发送数据/命令/地址信息。还可以通过这些线读取NAND 闪存的相关数据。
忙状态寄存器10,NAND闪存芯片的输出,指示NAND闪存芯片当前的工作状态。当寄存器为0,NAND闪存芯片还在执行某一操作,忙;当寄存器为1,NAND闪存芯片准备接收下一命令。
NAND闪存时序发生器11为最终连接NAND闪存芯片3的接口,该时序发生器11实时检测上述NAND闪存控制器2中各寄存器的状态,向NAND闪存芯片3的物理引脚输出时序波形。该引脚的波形必须符合标准的NAND闪存数据交换时序规范。
本发明一种具体实施方式所描述的一种NAND闪存控制方法在基于QNX操作系统下的应用实例,包括CPU处理器中驱动控制部分和FPGA控制和时序产生部分:
CPU处理器中驱动控制部分,是基于QNX操作系统下,为嵌入式的固态存储设备,特别是NAND闪存设备实现的一种高可靠性文件系统的ETFS(Embedded transaction filesystem)文件系统的NAND闪存驱动,该驱动中包含了对NAND闪存的读、写、擦除、校验、复位、状态等操作的全部动作。NAND 闪存作为一个慢速的存储设备,驱动开辟了缓冲区来解决CPU处理器与存储器速度访问瓶颈问题。
FPGA控制和时序产生部分,是在可编程FPGA中实现CPU处理器接口时序、FLASH各种操作寄存器、及最终NAND闪存芯片目标时序的产生。
QNX操作系统下驱动读操作读时序产生图3,开始先写片选寄存器7(00H),产生低电平片选信号,指示对NAND闪存芯片3操作的开始;写命令锁存寄存器5(01H),产生高电平命令开始信号,写地址/数据寄存器9向NAND闪存芯片3发送00H读操作命令字,写命令锁存寄存器5(00H),产生低电平信号,结束当前命令传送;写地址寄存器6(01H),产生高电平地址开始信号,写地址/数据寄存器9需要对NAND闪存芯片3进行操作的地址,写地址寄存器6(00H),产生低电平地址结束信号;写命令锁存寄存器5(01H),产生高电平命令开始信号,写地址/数据寄存器9向NAND闪存芯片3发送30H读操作命令,写命令锁存寄存器5(00H),产生低电平信号,结束命令传送;通过读/写寄存器8产生读信号;在期有效信号内读地址/数据寄存器9中数据总线的数据;写片选寄存器7(01H),产生高电平结束对NAND闪存芯片3的操作。
QNX操作系统下驱动写操作写时序产生图4,开始先写片选寄存器7(00H),产生低电平片选信号,指示对NAND闪存芯片3操作的开始;写命令锁存寄存器5(01H),产生高电平命令开始信号,写地址/数据寄存器9向NAND闪存芯片3发送80H读操作命令字,写命令锁存寄存器5(00H),产生低电平信号,结束当前命令传送;写地址寄存器6(01H),产生高电平地址开始信号,写地址/数据寄存器9需要对NAND闪存芯片3进行操作的地址,写地址寄存器6(00H),产生低电平地址结束信号;通过读/写寄存器8产生写信号;在期有效信号内往地址/数据寄存器9中写入数据;写命令锁存寄存器5(01H),产生高电平命令开始信号,写地址/数据寄存器9向NAND闪存芯片3发送10H写操作命令,写命令锁存寄存器5(00H),产生低电平信号,结束命令传送;写片选寄存器7(01H),产生高电平结束对NAND闪存芯片3的操作。
通过上述操作,在完成产生所需正确的读写时序后,再对NAND 闪存进行读、写操作时,驱动中会开辟一缓冲区,其结构分为主缓冲区和辅缓冲区两部分,主缓冲区由4块512字节RAM区组成共2048字节区域,用于暂存写入或读出的数据。辅缓冲区由64字节组成,主要记录NAND闪存芯片上主存储区中的状态信息,如芯片ID、块大小、行列块地址、ECC校验页区和ECC校码结果,结构如图5所示。驱动第一次需要完成对闪存所有存储块的扫描,通过快速读取块校验区的状态信息,填入ETFS文件系统的结构体中,完成对NAND 闪存的文件系统的建立从而实现应用程序对NAND闪存拷贝、格式化等高级操作。
采用CPU处理器中驱动程序管理NAND闪存时序,首先,避免了CPU处理器与FPGA间大规模数据时,FPGA无须开辟数据交换缓冲FIFO区,降低了FPGA的对LUT门的需求,减少了成本;再次,在驱动中设置块缓冲区结构,CPU数据总线FPGA无延时解析输出到NAND闪存芯片数据总线上,从而保证了数据的同步。采用FPGA产生时序,保证时序的精确性、同时也减轻了CPU处理器扇出负荷。
本发明的实施方式具体描述了基于QNX操作系统下的NAND闪存控制器及其控制方法,在此QNX操作系统作为一种典型的多任务、多用户分布式的实时操作系统,该系统下的NAND闪存控制器及其控制方法的技术方案也可以轻易地移植到其他的嵌入式实时操作系统,在此不应看做是对本发明保护范围的一种限制。本发明要求保护的范围包括但不限于基于QNX操作系统下的NAND闪存控制器及其控制方法。同时,本发明的NAND闪存控制器虽然基于FPGA进行设计,但是也可以使用CPLD等其他可编程逻辑器件以及数字逻辑电路实现,在此也不应看做是对本发明保护范围的一种限制。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。