可实现NandFlash状态检测的装置及方法

文档序号:6426187阅读:365来源:国知局
专利名称:可实现Nand Flash状态检测的装置及方法
技术领域
本发明涉及对Nand Flash(与非闪存)的访问技术,特别涉及一种可实现Nand Flash状态检测的装置、一种可实现Nand Flash状态检测的方法。
背景技术
Nand Flash由多个Block (块)组成,每个Block又由多个I^age (页)组成。其中,Block是对Nand Flash擦除的基本操作单位,Page是对Nand Flash读或写时的基本操作单位。Nand Flash通常还具有如表1所示的如下管脚
名称类型含义CE#Input片选信号,低电平有效ALEInput地址锁存使能信号,高电平有效CLEInput命令锁存使能信号,高电平有效RE#Input读使能信号,低电平有效WE#Input写使能信号,低电平有效WP#Input写保护信号,低电平有效I/0[7:0]I/O输入输出信号,命令、地址、数据复用R/B#Output高电平表示Ready (准备)状态/低电平Busy (忙)状态的状态信号VSSSupply接地VCCSupply接电源表 1基于如表1所示的管脚,Nand Flash可实现正常的上电工作、并可被Nand Flash 控制器实现读、写、擦除操作。如图1所示,Nand Flash控制器以I^age为基本单位对Nand Flash进行读操作的过程依次包括如下的阶段向Nand Flash发送命令‘0x00’、向Nand Flash发送读地址(即图1中的add)、向Nand Flash发送命令‘0x30,、通过检测R/B#管脚等待Nand Flash由 Busy状态变为Ready状态(即图1中的tR)、从Nand Flash接收数据(即图1中的Dout)。
4
如图2所示,Nand Flash控制器以I^age为基本单位对Nand Flash进行写操作的过程依次包括如下的阶段向Nand Flash发送命令‘0x80,、向Nand Flash发送写地址(即图 2中的add)、向Nand Flash写入数据(即图2中的Din)、向Nand Flash发送命令‘0x10,、 通过检测R/B#管脚等待NandFlash由Busy状态变为Ready状态(即图2中的tPROG)、向 Nand Flash发送命令‘0x70,、读取Nand Flash的写状态(即图2中的Status) 其中,在写入数据之后还需要等待读取写状态,是为了判断是否写成功、并在由于坏块而导致写失败时触发坏块处理程序。如图3所示,Nand Flash控制器以Block为基本单位对Nand Flash进行擦除操作的过程依次包括如下的阶段向Nand Flash发送命令‘0x60’、向Nand Flash发送擦除的地址(即图3中的add)、向Nand Flash发送命令‘OxDO,、通过检测R/B#管脚等待Nand Flash由Busy状态变为Ready状态(即图3中的tBERS)、向Nand Flash发送命令‘0x70,、 读取Nand Flash的擦除状态(即图3中的Status)。实际应用中,通用的嵌入式SOC CPU(本文后续将嵌入式SOC CPU简称为“CPU”) 中通常都集成有I/O控制器,Nand Flash控制器就属于CPU所集成的I/O控制器的一种, 因此,可将Nand Flash挂接在CPU的I/O总线上,即可由集成于CPU的Nand Flash控制器按照上述如图1至图3所示的方式实现对Nand Flash的读、写、擦除操作。但是,在某些数据通讯领域的装置中,如图4所示,CPU的I/O总线上除了 Nand Flash之外还会挂接I/O接口的通讯模块(CPU中集成的I/O控制器也会相应地包括针对通讯模块的控制器),而I/O接口的通讯模块对于I/O总线的延迟比较敏感,因而不允许I/O 总线被其它器件毫秒级地占用,这就与Nand Flash发生了冲突。具体说,按照如图1所示方式进行读操作的过程总耗时约为70微秒 100微秒, 按照如图2所示方式进行写操作的过程总耗时约为300微秒 800微秒,按照如图3所示方式进行擦除操作的过程总耗时约为2毫秒 10毫秒。显然,由于在读、写、擦除的整个过程中,Nand Flash连接在I/O总线的CE#管脚的片选信号一直保持有效,因此,读、写、擦除的过程占用I/O总线的时间就分别为70微秒 100微秒、300微秒 800微秒、2毫秒 10 毫秒。可见,Nand Flash的写操作连续占用I/O总线的时间最大会接近毫秒级、而擦除操作连续占用I/O总线的时间已达到毫秒级。为了解决Nand Flash占用I/O总线的时间与通讯模块相冲突的问题,现有技术中曾尝试着为CPU提供至少两条I/O总线,并将Nand Flash和通讯模块分别挂接在不同的I/ 0总线上,具体参见图5。但这样会造成电路布线复杂、并增加了硬件成本,从而导致多条I/ 0总线的可行性不高。因此,现有技术还提出了另一种基于软件查询的解决方案。该解决方案注意到, 无论是读、写、还是擦除操作,在R/B#管脚检测阶段(等待Nand Flash由Busy状态)tR、 tPROG、tBERS中,CE#、CLE、翻、ALE、RE#均不要求有效(图1、图2、图3中均以阴影部分表示),因此,如图6所示,该解决方案将Nand Flash的R/B#管脚与1/0总线断开并直接上拉,以及,在R/B#管脚检测阶段tR、tPROG、tBERS中令Nand Flash放弃对1/0总线的占用,并由CPU承载的软件在R/B#管脚检测阶段tR、tPROG、tBERS中以轮询方式查询Nand Flash是否由Busy状态变为Ready状态(本文所述的“状态检测”即是指“对Busy状态变为Ready状态的检测”)。
如此一来,就使Nand Flash控制器执行读、写、擦除操作过程所连续占用的I/O总线的时间中分别去除了 R/B#管脚检测阶段tR、tPROG、tBERS的耗时,并将Nand Flash控制器执行的读、写、擦除操作过程划分为在R/B#管脚检测阶段tR、tPROG、tBERS之前执行的一部分,和在R/B#管脚检测阶段tR、tPROG、tBERS之后执行的另一部分。其中,读操作的R/B#管脚检测阶段tR耗时为1微秒 25微秒左右、在读操作总耗时中所占的比例约为 1 % 35%,写操作的R/B#管脚检测阶段tPROG耗时为200微秒 700微秒左右、在写操作总耗时中所占的比例约为73%-83%,擦除操作的R/B#管脚检测阶段tBERS耗时约占擦除操作总耗时的95%。经粗略计算可知,利用软件查询可使读操作连续占用I/O总线的时间不到25微秒、写操作连续占用I/O总线的时间不到190微秒、擦除操作连续占用I/O总线的时间不到0. 5毫秒。然而,基于软件查询的解决方案虽然能够避免Nand Flash毫秒级地占用I/O总线的问题、并且相比于多I/O总线的解决方案能够降低设计难度和成本,但却存在如下缺陷如果软件查询的轮询间隔设置过短,则由于软件查询也需要利用I/O总线,因而就造成软件查询在R/B#管脚检测阶段tR、tPROG、tBERS中过于频繁地利用1/0总线,这也就近似地相当于仍旧在R/B#管脚检测阶段tR、tPROG、tBERS中连续占用了 1/0总线;因此,为了避免此类情况发生,就不得不设置较长的轮询间隔,但如果软件查询的轮询间隔设置过长,又会造成读、写、擦除操作的在R/B#管脚检测阶段tR、tPROG、tBERS之后执行的另一部分延迟,从而影响Nand Flash的读、写、擦除性能;而且,软件查询需要CPU参与,影响CPU的性能。可见,基于软件查询的方式为了避免Nand Flash毫秒级地占用1/0总线,就不可避免地会在一定程度上牺牲Nand Flash性能和CPU性能。

发明内容
有鉴于此,本发明提供了一种可实现Nand Flash状态检测的装置、一种可实现 Nand Flash状态检测的方法,能够避免Nand Flash毫秒级地占用1/0总线,并同时兼顾到 Nand Flash性能和CPU性能。本发明提供的一种可实现Nand Flash状态检测的装置,包括CPU以及挂接于CPU 的1/0总线的Nand Flash,还包括一逻辑芯片,Nand Flash的R/B#管脚与1/0总线断开并直连至逻辑芯片、CPU连接在1/0总线的检测管脚也进一步直连至逻辑芯片;在对Nand Flash进行读操作过程中的R/B#管脚检测阶段,Nand Flash处于保持对1/0总线占用的状态、Nand Flash的R/B#管脚与CPU的检测管脚处于被逻辑芯片导通的状态;以及,由CPU通过检测管脚检测R/B#管脚的状态,在CPU检测到R/B#管脚的状态由Busy变为Ready后结束R/B#管脚检测阶段;在对Nand Flash进行写操作或擦除操作过程中的R/B#管脚检测阶段,Nand Flash处于让出对1/0总线占用的状态、Nand Flash的R/B#管脚与CPU的检测管脚处于逻辑芯片断开的状态;以及,由逻辑芯片检测R/B#管脚的状态,在逻辑芯片检测到R/B#管脚的状态由Busy变为Ready后向CPU上报中断、以供CPU依据所述中断结束R/B#管脚检测阶段、并恢复使NandFlash对1/0总线的占用。逻辑芯片对所述导通和所述断开的执行进一步受控于CPU。
CPU在每次收到上报的中断之后通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开;或者,CPU在每次读操作过程开始之前通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开。逻辑芯片包括选通开关,用于在闭合时使Nand Flash的R/B#管脚与CPU的检测管脚导通、在断开时使Nand Flash的R/B#管脚与CPU的检测管脚断开;切换控制模块,用于控制选通开关的闭合或断开;管脚检测模块,用于检测Nand Flash的R/B#管脚的状态;控制接口模块,用于在CPU通知需要执行所述导通时通知切换控制模块将选通开关闭合,在CPU通知需要执行所述断开时通知切换控制模块将选通开关断开、并触发管脚检测模块对Nand Flash的R/B#管脚的检测;中断处理模块,用于在管脚检测模块检测到R/B#管脚的状态由Busy变为Ready 后,向CPU上报中断。管脚检测模块在每次检测到R/B#管脚的状态由Busy变为Ready、并通知中断处理模块后,自动结束对Nand Flash的R/B#管脚的检测;或者,由控制接口模块在CPU通知需要执行所述导通时停止管脚检测模块对Nand Flash的R/B#管脚的检测。控制接口模块进一步维护有表示Nand Flash的R/B#管脚与CPU的检测管脚的连接状态的第一字段;CPU通过向所述第一字段写入表示当前需要的所述连接状态的对应值来实现所述通知。中断处理模块进一步维护有用于表示中断状态的第二字段、并进一步在上报中断后将所述第二字段设置为表示有中断需要CPU处理的值;CPU进一步读取所述第二字段来判断中断处理模块已上报的中断是否已被处理、并在每次处理中断后将所述第二字段设置为表示无中断需要CPU处理的值。本发明提供的一种可实现Nand Flash状态检测的方法,该方法将Nand Flash挂接CPU的I/O总线,该方法还设置一逻辑芯片,将Nand Flash的R/B#管脚与I/O总线断开并直连至逻辑芯片、将CPU连接在I/O总线的检测管脚也进一步直连至逻辑芯片;在对Nand Flash进行读操作过程中该方法使Nand Flash在R/B#管脚检测阶段处于保持对I/O总线占用的状态、使Nand Flash的R/B#管脚与CPU的检测管脚在R/B#管脚检测阶段处于被逻辑芯片导通的状态,以及,由CPU通过检测管脚检测R/B#管脚的状态, 在CPU检测到R/B#管脚的状态由Busy变为Ready后结束R/B#管脚检测阶段;在对Nand Flash进行写操作或擦除操作过程中该方法使Nand Flash在R/B#管脚检测阶段处于让出对I/O总线占用的状态、使Nand Flash的R/B#管脚与CPU的检测管脚在/B#管脚检测阶段处于被逻辑芯片断开的状态,以及,由逻辑芯片检测R/B#管脚的状态,在逻辑芯片检测到R/B#管脚的状态由Busy变为Ready后向CPU上报中断、以供CPU依据所述中断结束R/B#管脚检测阶段、并恢复使Nand Flash对I/O总线的占用。该方法进一步使逻辑芯片对所述导通和所述断开的执行受控于CPU。所述使逻辑芯片对所述导通和所述断开的执行受控于CPU包括CPU在每次收到上报的中断之后通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开;或者,CPU在每次读操作过程开始之前通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开。由上述技术方案可见,在本发明中,对于耗时较短的读操作,在R/B#管脚检测阶段中允许Nand Flash占用I/O总线、并由CPU通过检测管脚对R/B#管脚的状态进行检测,以保证读性能最优;而对于耗时较长的写操作和擦除操作,在R/B#管脚检测阶段则需要Nand Flash让出I/O总线、并由逻辑芯片替代CPU来检测R/B#管脚的状态,从而能够减少写操作和擦除操作占用I/O总线的时间。而且,由于读、写、擦除操作的1 作#管脚检测阶段均不需要CPU中的软件参与查询,因而不会出现现有技术中的软件查询所导致的Nand Flash性能和CPU性能受影响的问题。虽然逻辑芯片替代CPU检测R/B#管脚的状态时需要向CPU上报中断,但CPU对中断的处理并不会导致CPU性能受到影响。


图1为现有技术中对Nand Flash读操作的时序图;图2为现有技术中对Nand Flash写操作的时序图;图3为现有技术中对Nand Flash擦除操作的时序图;图4为现有技术中一种具有Nand Flash的装置的结构示意图;图5为现有技术中针对如图4所示装置内存在的I/O总线占用时间冲突的一种多 I/O总线的解决方案的示意图;图6为现有技术中针对如图4所示装置内存在的I/O总线占用时间冲突的一种利用软件检测状态的解决方案的示意图;图7为本发明实施例中一种具有Nand Flash的装置内部的原理性结构示意图;图8为本发明实施例中对Nand Flash读操作的简易时序图;图9为本发明实施例中对Nand Flash写操作的简易时序图;图10为本发明实施例中对Nand Flash擦除操作的简易时序图;图11为图7所示装置中的逻辑芯片的一种优选结构示意图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。在本实施例中,为了避免现有技术中的软件查询所导致的Nand Flash性能和CPU 性能受影响的问题,不需要在CPU中运行能够查询R/B#管脚状态的软件,而是在具有Nand Flash的装置中增设了可查询R/B#管脚状态的一逻辑芯片。当然,本实施例并不是简单地以逻辑芯片完全替代能够查询R/B#管脚状态的软件,而是提出了进一步的改进。这里所述的进一步的改进主要是将针读操作的处理方式与针对写操作和擦除操作区别对待。具体说,就是对于耗时较短的读操作,在R/B#管脚检测阶段中允许Nand Flash占用I/O总线,并由CPU硬件层通过检测管脚对R/B#管脚的状态进行检测;而对于耗时较长的写操作和擦除操作,在R/B#管脚检测阶段则需要Nand Flash 让出I/O总线,并由逻辑芯片替代CPU硬件层检测R/B#管脚的状态、而不是由CPU中的软
8件来替代CPU硬件层。下面结合图7进行详细说明。在图7中,包括CPU以及挂接于CPU的I/O总线的 Nand Flash和通讯模块,还包括一逻辑芯片,其中Nand Flash的R/B#管脚与I/O总线断开、并直连至逻辑芯片。CPU的检测管脚(本领域俗称为“R/B#检测管脚”或“Wait检测管脚”)在CPU外部连接在I/O总线、并同时还直连至逻辑芯片,该检测管脚在CPU内部可连接CPU内部集成的Nand Flash控制器、以及通讯模块对应的其他I/O控制器,前面提到的检测R/B#管脚状态的硬件层主要就是指Nand Flash控制器。逻辑芯片可使Nand Flash的R/B#管脚与CPU的检测管脚的连接状态在导通和断开之间切换(图7中以开关形状的图样表示),并具有检测R/B#管脚状态的能力。本实施例中,逻辑芯片在默认状态下将Nand Flash的R/B#管脚与CPU的检测管脚导通。此外,CPU的控制管脚及中断管脚在CPU外部直连至逻辑芯片,控制管脚和中断管脚在CPU内部连接可运行软件的处理核。这样,运行软件的处理核可以通过控制管脚控制逻辑芯片将R/B#管脚与检测管脚导通或断开,中断管脚则可以在需要逻辑芯片检测R/B# 管脚状态时接收逻辑芯片上报的中断。其中,本实施例所提到的处理核中的软件只需要具备CPU基本能力(例如对Nand Flash控制器和其他I/O控制器占用I/O总线的调度、处理中断等)、而不是指背景技术部分所述的具有查询R/B#管脚功能的软件。参见图8并结合图7,当需要对Nand Flash进行读操作时,具体包括如下阶段1、读操作正式开始之前的准备阶段,处理核运行的软件识别出当前操作为读操作、并配置Nand Flash控制器;此外,由于读操作需要由CPU内的Nand Flash控制器通过检测管脚对R/B#管脚的状态进行检测,因而此时需要保证Nand Flash的R/B#管脚与CPU 的检测管脚导通;但在本实施例中,逻辑芯片在默认状态下是将Nand Flash的R/B#管脚与 CPU的检测管脚导通,因而此时无需任何操作;2、地址阶段Nand Flash控制器通过I/O总线向Nand Flash先后发送命令 ‘0x00’、读地址(即图8中的add)、以及命令‘0x30’ ;3、R/B#管脚检测阶段Nand Flash控制器通过连接在I/O总线的检测管脚检测 Nand Flash的R/B#管脚,直至Nand Flash的R/B#管脚由Busy状态变为Ready状态;4、数据读取阶段Nand Flash控制器通过I/O总线从Nand Flash接收数据(即图8中的Dout)。上述的地址阶段、R/B#管脚检测阶段、数据读取阶段即构成了完整的读操作过程。 Nand Flash控制器和Nand Flash在整个读操作过程中均保持对I/O总线的占用。由于读操作的过程总耗时约为70微秒 100微秒,因而即便在读操作过程中均保持对I/O总线的占用也不会影响通讯接口模块。参见图9并结合图7,当需要对Nand Flash进行写操作时,具体包括如下阶段1、写操作正式开始之前的准备阶段,处理核运行的软件识别出当前操作为写操作、并配置Nand Flash控制器;此外,由于写操作不需要CPU内的Nand Flash控制器通过检测管脚对R/B#管脚的状态进行检测,因而此时就需要处理核通过控制管脚来控制逻辑芯片将Nand Flash的R/B#管脚与CPU的检测管脚断开;2、地址阶段Nand Flash控制器通过I/O总线向Nand Flash先后发送命令‘0x80,
9以及写地址(即图9中的add);3、数据写入阶段Nand Flash控制器通过I/O总线向Nand Flash写入数据(即图9中的Din)、并在写入结束后向Nand Flash发送命令‘0x10’ ;4、R/B#管脚检测阶段处理核控制Nand Flash控制器停止工作、并让出I/O总线(Nand Flash控制器让出I/O总线即相当于使Nand Flash让出对I/O总线的占用),逻辑芯片检测Nand Flash的R/B#管脚状态变化,在NandFlash的R/B#管脚由Busy状态切换到Ready状态后,逻辑芯片通过中断管脚向CPU内的处理核上报中断;在本阶段中,Nand Flash的片选信号CE#也由于当前让出了 I/O总线而相应地变为无效的高电平,以及,处理核可以启动其他I/O控制器占用I/O总线;5、写状态获取阶段处理核依据逻辑芯片上报的中断重新启动Nand Flash控制器、使Nand Flash控制器重新占用I/O总线,然后在Nand Flash的片选信号CE#变为有效的低电平之后,由Nand Flash控制器通过I/O总线向Nand Flash发送命令‘0x70’、然后读取Nand Flash的写状态(即图9中的Matus);此外,由于此时针对写操作的R/B#管脚已结束,因而处理核还可以在本阶段通过控制管脚使逻辑芯片立即恢复其默认状态、即将 NandFlash的R/B#管脚与CPU的检测管脚导通;在恢复逻辑芯片默认状态时可以仍保持片选信号处于无效的高电平,等到逻辑芯片默认状态完成恢复后再将片选信号CE#变为有效的低电平、以便于发送命令‘0x70’和读取写状态。上述的地址阶段、数据写入阶段、R/B#管脚检测阶段、写状态获取阶段即构成了完整的写操作过程。Nand Flash控制器和Nand Flash在整个写操作过程中并不是一直保持对I/O总线的占用,而是在R/B#管脚检测阶段放弃对I/O总线的占用。这样,即便写操作的过程总耗时约为300微秒 800微秒、即接近毫秒级,但由于 Nand Flash控制器和Nand Flash在耗时为200微秒 700微秒左右的R/B#管脚检测阶段放弃了对I/O总线的占用,因而写操作实际上连续占用I/O总线的时间会明显少于1毫秒, 从而不会影响通讯接口模块。参见图10并结合图7,当需要对Nand Flash进行擦除操作时,具体包括如下阶段1、擦除操作正式开始之前的准备阶段,处理核运行的软件识别出当前操作为擦除操作、并配置Nand Flash控制器;此外,由于擦除操作不需要CPU内的Nand Flash控制器通过检测管脚对R/B#管脚的状态进行检测,因而此时就需要处理核通过控制管脚来控制逻辑芯片将Nand Flash的R/B#管脚与CPU的检测管脚断开;2、地址阶段Nand Flash控制器通过I/O总线向Nand Flash先后发送命令‘0x60, 以及擦除的地址(即图10中的add);3、擦除阶段=Nand Flash控制器通过I/O总线向Nand Flash发送命令iOxDO';4、R/B#管脚检测阶段处理核控制Nand Flash控制器停止工作、并让出I/O总线, 逻辑芯片检测Nand Flash的R/B#管脚状态变化,在Nand Flash的R/B#管脚由Busy状态切换到Ready状态后,逻辑芯片通过中断管脚向CPU内的处理核上报中断;在本阶段中, Nand Flash的片选信号CE#也由于当前让出了 I/O总线而相应地变为无效的高电平,以及, 处理核可以启动其他I/O控制器占用I/O总线;5、擦除状态获取阶段处理核依据逻辑芯片上报的中断重新启动NandFlash控制器、使Nand Flash控制器重新占用I/O总线,然后在Nand Flash的片选信号CE#变为有效的低电平之后,由Nand Flash控制器通过I/O总线向Nand Flash发送命令‘0x70’、然后读取Nand Flash的擦除状态(即图10中的Matus);此外,由于此时针对擦除操作的R/B# 管脚已结束,因而处理核还可以在本阶段通过控制管脚使逻辑芯片立即恢复其默认状态、 即将Nand Flash的R/B#管脚与CPU的检测管脚导通;在恢复逻辑芯片默认状态时可以仍保持片选信号处于无效的高电平,等到逻辑芯片默认状态完成恢复后再将片选信号CE#变为有效的低电平、以便于发送命令‘0x70’和读取擦除状态。上述的地址阶段、擦除阶段、R/B#管脚检测阶段、擦除状态获取阶段即构成了完整的擦除操作过程。Nand Flash控制器和Nand Flash在整个擦除操作过程中并不是一直保持对I/O总线的占用,而是在R/B#管脚检测阶段放弃对I/O总线的占用。这样,即便擦除操作的过程总耗时约为2毫秒 10毫秒,但由于Nand Flash控制器和Nand Flash在占总耗时95%左右的R/B#管脚检测阶段放弃了对I/O总线的占用,因而擦除操作实际上连续占用I/O总线的时间会少于0. 5毫秒,从而不会影响通讯接口模块。如上可见,在如图7所示的装置中在对Nand Flash进行读操作过程中的R/B#管脚检测阶段,CPU已使Nand Flash 保持对I/O总线的占用、并已由逻辑芯片使Nand Flash的R/B#管脚与CPU的检测管脚导通,即,Nand Flash处于保持对I/O总线占用的状态、Nand Flash的R/B#管脚与CPU的检测管脚处于被逻辑芯片导通的状态;以及,由CPU通过检测管脚检测R/B#管脚的状态,在 CPU检测到R/B#管脚的状态由Busy变为Ready后结束R/B#管脚检测阶段;在对Nand Flash进行写操作或擦除操作过程中的R/B#管脚检测阶段,由CPU使 Nand Flash让出对I/O总线的占用、由逻辑芯片使Nand Flash的R/B#管脚与CPU的检测管脚断开,g卩,Nand Flash处于让出对I/O总线占用的状态、Nand Flash的R/B#管脚与CPU 的检测管脚处于被逻辑芯片断开的状态;以及,由逻辑芯片检测R/B#管脚的状态,在逻辑芯片检测到R/B#管脚的状态由Busy变为Ready后向CPU上报中断、以供CPU依据所述中断结束R/B#管脚检测阶段、并恢复使Nand Flash对I/O总线的占用。从而,如图7所示的装置在读、写、擦除操作过程中均能够避免Nand Flash毫秒级地占用I/O总线。而且,如图7所示的装置针对读操作采用区别于写操作和擦除操作的处理方式, 能够使读操作的性能最佳并避免对R/B#管脚的漏检;如图7所示的装置虽然针对写操作和擦除操作会增加CPU响应中断的时间,但也基本不会对写操作和擦除操作的性能产生明显影响。具体说明如下关于读操作的性能读操作在R/B#管脚检测阶段只需要等待1微秒 25微秒, 即,CPU的Nand Flash控制器检测R/B#管脚则只需要在R/B#管脚检测阶段等待1微秒 25微秒;而如果采用以逻辑芯片替代CPU的Nand Flash控制器检测R/B#管脚并上报中断的方式,则CPU的处理核需要10微秒 50微秒的时间来响应中断。相比之下,以逻辑芯片检测R/B#管脚并上报中断的方式至少会增加9微秒 25微妙的耗时,这对于总耗时本来只有70微秒 100微秒的读操作过程来说,至少使读性能下降了 20% 50%。关于读操作的R/B#管脚漏检读操作在R/B#管脚检测阶段只需要等待1微秒 25微秒,这就对逻辑芯片的设计要求比较高,否则无法确保逻辑芯片能够在如此短的时间内实现检测,从而造成漏检。关于CPU响应中断对写操作和擦除操作的影响写操作的过程总耗时约为300微秒 800微秒、擦除操作的过程总耗时约为2毫秒 10毫秒,而CPU的处理核响应中断的时间只有10微秒 50微秒左右。经粗略计算,响应中断的时间只会使写操作的性能下降 1. 25% 15%、使擦除操作的性能下降不足2. 5%。另外,对于如图7所示的装置还有如下补充说明1)、装置中包含有通讯模块及CPU中集成的对应的其他I/O控制器,仅仅是为了以此说明避免Nand Flash长期占用I/O总线的一种益处,而并不表示具有Nand Flash、并可实现对其R/B#管脚状态检测的装置中必须包含例如通讯模块等其他I/O接口的功能模块、 以及CPU中相应集成的其他I/O控制器。2)、逻辑芯片对导通和断开的执行受控于CPU的处理核,这仅仅是一种最佳的实现方式。实际应用中,逻辑芯片也可以通过其它途径获知当前操作的类型、并以此来自行决定是否需要执行导通和断开的操作。3)、逻辑芯片在默认状态下将Nand Flash的R/B#管脚与CPU的检测管脚导通,以及,CPU在每次收到上报的中断之后通知逻辑芯片执行导通以恢复默认状态、在每次写操作或擦除操作过程开始之前的准备阶段通知逻辑芯片执行断开,这仅仅是一种较为具体的实现方式。实际应用中,也可以不为逻辑芯片设置默认状态,并且,CPU可以在每次读操作过程开始之前的准备阶段通知逻辑芯片执行导通、在每次写操作或擦除操作过程开始之前的准备阶段通知逻辑芯片执行所述断开。只要保证在对Nand Flash进行读操作过程中的R/B# 管脚检测阶段,逻辑芯片已使Nand Flash的R/B#管脚与CPU的检测管脚导通,以及,保证在对Nand Flash进行写操作或擦除操作过程中的R/B#管脚检测阶段,逻辑芯片已使Nand Flash的R/B#管脚与CPU的检测管脚断开,执行导通和断开的时机可以任意设置。更优地,本实施例还提供了用于逻辑芯片实现切换连接状态和检测R/B#管脚的一种具体结构。如图11所示,针对逻辑芯片对导通和断开的执行受控于CPU的处理核的情况,该逻辑芯片可具有的具体结构包括控制接口模块、切换控制模块、选通开关(图11中以开关形状的图样表示)、管脚检测模块、中断处理模块。选通开关,其两个连接端分别与直连在逻辑芯片的Nand Flash的R/B#管脚和CPU 的检测管脚相连,用于在闭合时使Nand Flash的R/B#管脚与CPU的检测管脚导通、在断开时使Nand Flash的R/B#管脚与CPU的检测管脚断开;选通开关还具有一控制端,用于控制其两个连接端的闭合和断开。切换控制模块,其连接选通开关的控制端、并受控于控制接口模块,用于在控制接口模块的控制下控制选通开关的闭合或断开。管脚检测模块,其受控于控制接口模块,用于在控制接口模块的控制下检测Nand Flash的R/B#管脚的状态变化;例如,在Nand Flash的R/B#管脚由低电平(对应Nand Flash的Busy状态)变为高电平(对应Nand Flash的Ready状态)后,管脚检测模块即可向中断处理模块发出状态已变为Ready状态的通知。中断处理模块,用于在接收到状态已变为Ready状态的通知后、即管脚检测模块检测到R/B#管脚的状态由Busy变为Ready后,通过CPU的中断管脚向CPU的处理核上报中断。
可选地,中断处理模块可以为CPU提供一中断访问接口,该中断访问接口可以由基于逻辑芯片内寄存器资源的中断状态字段来实现。具体地,中断处理模块进一步维护有用于表示中断状态的中断状态字段,并进一步在向CPU的处理核上报中断后,将中断状态字段设置为表示有中断需要CPU处理的值;此后,CPU的处理核进一步读取中断状态字段来判断中断处理模块已上报的中断是否已被处理、并在每次处理中断后将中断状态字段设置为表示无中断需要CPU处理的值。控制接口模块,用于在CPU的处理核通过控制管脚通知需要执行前述导通操作时,通知切换控制模块将选通开关闭合、并停止管脚检测模块对Nand Flash的R/B#管脚的检测(当然,管脚检测模块也可以在每次检测到R/B#管脚的状态由Busy变为Ready、并通知中断处理模块后,自动结束对Nand Flash的R/B#管脚的检测,而不需要控制接口模块来实现检测的停止);在CPU的处理核通过控制管脚通知需要执行所述断开时通知切换控制模块将选通开关断开、并触发管脚检测模块对Nand Flash的R/B#管脚的检测。可选地,控制接口模块可以为CPU提供一设置访问接口,该设置访问接口可以由基于逻辑芯片内寄存器资源的连接模式字段来实现。具体地,控制接口模块进一步维护表示Nand Flash的R/B#管脚与CPU的检测管脚的连接状态的连接模式字段;CPU的处理核通过控制管脚向连接模式字段写入表示当前需要的连接状态的对应值,以此来通知是否需要执行前述导通或断开操作。当连接模式字段的值发生变化时,即表示需要执行前述导通或断开操作。以上是对本实施例中具有Nand Flash、并可实现对其R/B#管脚状态检测的装置的详细说明。下面,再对本实施例中可实现Nand Flash状态检测的方法进行相应的说明。本实施例中可实现Nand Flash状态检测的方法,将Nand Flash挂接CPU的I/O 总线,但在挂接时需要将Nand Flash的R/B#管脚与I/O总线断开;该方法还需要设置一逻辑芯片,并将与I/O总线断开的Nand Flash的R/B#管脚直连至逻辑芯片,以及,将CPU连接在I/O总线的检测管脚也进一步直连至逻辑芯片。这样在对Nand Flash进行读操作过程中该方法使Nand Flash在R/B#管脚检测阶段处于保持对I/O总线占用的状态、使Nand Flash的R/B#管脚与CPU的检测管脚在R/B#管脚检测阶段处于被逻辑芯片导通的状态,以及,由CPU通过检测管脚检测R/B#管脚的状态, 在CPU检测到R/B#管脚的状态由Busy变为Ready后结束R/B#管脚检测阶段;在对Nand Flash进行写操作或擦除操作过程中该方法使Nand Flash在R/B#管脚检测阶段处于让出对I/O总线占用的状态、使Nand Flash的R/B#管脚与CPU的检测管脚在/B#管脚检测阶段处于被逻辑芯片断开的状态,以及,由逻辑芯片检测R/B#管脚的状态,在逻辑芯片检测到R/B#管脚的状态由Busy变为Ready后向CPU上报中断、以供CPU依据所述中断结束R/B#管脚检测阶段、并恢复使Nand Flash对I/O总线的占用。为了使逻辑芯片的导通和断开操作易于控制,优选地使逻辑芯片对导通和断开的执行受控于CPU。当然,逻辑芯片也可以通过其它途径获知当前操作的类型、并以此来自行决定是否需要执行导通和断开的操作,但这样对于逻辑芯片的设计要求就会有所提高。而且,逻辑芯片对于导通和断开操作的具体执行时机可以任意设定。例如,在受控于CPU的情况下,可以由CPU在每次收到上报的中断之后通知逻辑芯片执行导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行断开;或者,可以由CPU在每次读操作过
13程开始之前通知逻辑芯片执行导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行断开。 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种可实现Nand Flash状态检测的装置,包括CPU以及挂接于CPU的I/O总线的 Nand Flash,其特征在于,还包括一逻辑芯片,Nand Flash的R/B#管脚与I/O总线断开并直连至逻辑芯片、CPU连接在I/O总线的检测管脚也进一步直连至逻辑芯片;在对Nand Flash进行读操作过程中的1 /8#管脚检测阶段,Nand Flash处于保持对I/O 总线占用的状态、Nand Flash的R/B#管脚与CPU的检测管脚处于被逻辑芯片导通的状态; 以及,由CPU通过检测管脚检测R/B#管脚的状态,在CPU检测到R/B#管脚的状态由Busy 变为Ready后结束R/B#管脚检测阶段;在对Nand Flash进行写操作或擦除操作过程中的1 /8#管脚检测阶段,Nand Flash处于让出对I/O总线占用的状态、Nand Flash的R/B#管脚与CPU的检测管脚处于逻辑芯片断开的状态;以及,由逻辑芯片检测R/B#管脚的状态,在逻辑芯片检测到R/B#管脚的状态由Busy变为Ready后向CPU上报中断、以供CPU依据所述中断结束R/B#管脚检测阶段、并恢复使NandFlash对I/O总线的占用。
2.如权利要求1所述的装置,其特征在于,逻辑芯片对所述导通和所述断开的执行进一步受控于CPU。
3.如权利要求2所述的装置,其特征在于,CPU在每次收到上报的中断之后通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开;或者,CPU在每次读操作过程开始之前通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开。
4.如权利要求3所述的装置,其特征在于,逻辑芯片包括选通开关,用于在闭合时使Nand Flash的R/B#管脚与CPU的检测管脚导通、在断开时使Nand Flash的R/B#管脚与CPU的检测管脚断开;切换控制模块,用于控制选通开关的闭合或断开;管脚检测模块,用于检测Nand Flash的R/B#管脚的状态;控制接口模块,用于在CPU通知需要执行所述导通时通知切换控制模块将选通开关闭合,在CPU通知需要执行所述断开时通知切换控制模块将选通开关断开、并触发管脚检测模块对Nand Flash的R/B#管脚的检测;中断处理模块,用于在管脚检测模块检测到R/B#管脚的状态由Busy变为Ready后,向 CPU上报中断。
5.如权利要求4所述的装置,其特征在于,管脚检测模块在每次检测到R/B#管脚的状态由Busy变为Ready、并通知中断处理模块后,自动结束对Nand Flash的R/B#管脚的检测;或者,由控制接口模块在CPU通知需要执行所述导通时停止管脚检测模块对Nand Flash的R/B#管脚的检测。
6.如权利要求4或5所述的装置,其特征在于,控制接口模块进一步维护有表示Nand Flash的R/B#管脚与CPU的检测管脚的连接状态的第一字段;CPU通过向所述第一字段写入表示当前需要的所述连接状态的对应值来实现所述通知。
7.如权利要求4或5所述的装置,其特征在于,中断处理模块进一步维护有用于表示中断状态的第二字段、并进一步在上报中断后将所述第二字段设置为表示有中断需要CPU处理的值;CPU进一步读取所述第二字段来判断中断处理模块已上报的中断是否已被处理、并在每次处理中断后将所述第二字段设置为表示无中断需要CPU处理的值。
8.一种可实现Nand Flash状态检测的方法,该方法将Nand Flash挂接CPU的I/O总线,其特征在于,该方法还设置一逻辑芯片,将Nand Flash的R/B#管脚与I/O总线断开并直连至逻辑芯片、将CPU连接在I/O总线的检测管脚也进一步直连至逻辑芯片;在对Nand Flash进行读操作过程中该方法使Nand Flash在R/B#管脚检测阶段处于保持对I/O总线占用的状态、使Nand Flash的R/B#管脚与CPU的检测管脚在R/B#管脚检测阶段处于被逻辑芯片导通的状态,以及,由CPU通过检测管脚检测R/B#管脚的状态,在 CPU检测到R/B#管脚的状态由Busy变为Ready后结束R/B#管脚检测阶段;在对Nand Flash进行写操作或擦除操作过程中该方法使Nand Flash在R/B#管脚检测阶段处于让出对I/O总线占用的状态、使Nand Flash的R/B#管脚与CPU的检测管脚在 /B#管脚检测阶段处于被逻辑芯片断开的状态,以及,由逻辑芯片检测R/B#管脚的状态,在逻辑芯片检测到R/B#管脚的状态由Busy变为Ready后向CPU上报中断、以供CPU依据所述中断结束R/B#管脚检测阶段、并恢复使Nand Flash对I/O总线的占用。
9.如权利要求8所述的方法,其特征在于,该方法进一步使逻辑芯片对所述导通和所述断开的执行受控于CPU。
10.如权利要求9所述的方法,其特征在于,所述使逻辑芯片对所述导通和所述断开的执行受控于CPU包括CPU在每次收到上报的中断之后通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开;或者,CPU在每次读操作过程开始之前通知逻辑芯片执行所述导通、在每次写操作或擦除操作过程开始之前通知逻辑芯片执行所述断开。
全文摘要
本发明公开了一种可实现Nand Flash状态检测的装置及方法。在本发明中,对于耗时较短的读操作,在R/B#管脚检测阶段中允许Nand Flash占用I/O总线、并由CPU通过检测管脚对R/B#管脚的状态进行检测,以保证读性能最优;而对于耗时较长的写操作和擦除操作,在R/B#管脚检测阶段需要Nand Flash让出I/O总线、并由逻辑芯片替代CPU来检测R/B#管脚的状态,以便于减少写操作和擦除操作占用I/O总线的时间。而且,由于读、写、擦除操作的R/B#管脚检测阶段均不需要软件参与查询,因而不会出现软件查询所导致的Nand Flash性能和CPU性能受影响的问题。
文档编号G06F13/20GK102279823SQ20111015800
公开日2011年12月14日 申请日期2011年6月13日 优先权日2011年6月13日
发明者张颖, 李星爽, 段琳, 赵志宇, 钱嘉林 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1