与存储器传输数据的装置及其传输数据的方法

文档序号:6440606阅读:293来源:国知局
专利名称:与存储器传输数据的装置及其传输数据的方法
技术领域
本发明涉及存储器的控制器领域,特别涉及一种与存储器传输数据的装置及其传输数据的方法。
背景技术
目前主流的NANDFLASH(与非型非易失性存储器)装置,读写操作一般都是以页(page)为单位。不同的NAND FLASH,每个页的大小也可能不同。具体来说,目前用来存放数据的 NAND FLASH 页大小有 512Bytes、2Kbytes、4Kbytes 和 8Kbytes 这几种。NAND FLASH每一页的物理存储单元,除了要存放用户的数据以外,还要存放纠错码(ECC)的信息和文件系统信息等。一般地,这一部分非用户数据(称作冗余区,或sparearea)被统一地分配到用户数据区(称作主区,或main area)页地址以后。例如,某款NANDFLASH页的大小是4KBytes,那么其主区地址为0x0000 0x1000,冗余区从0x1000地址起始,冗余区大小根据NAND FLASH的厂商和类型,有所不同。由于其本身的结构性质,NAND FLASH中存储的数据容易出错。在实际的读写操作中,NAND FLASH控制器都会伴随着ECC纠错的过程:写数据时,用户数据被存入主区的同时,还要做ECC编码,并产生校验码存放在NAND FLASH冗余区;读数据时,控制器将主区的用户数据和冗余区的校验码经过ECC解码,自动纠正出错的数据,还原用户数据。控制器做ECC编码、解码操作,是以扇区(sector)为单位的,按照目前ECC类型,扇区大小有512Bytes和IKbytes等类型。控制器要想读写整个页内的数据,必须以读写多个扇区的方式来完成。以图1的NAND FLASH为例,每个扇区大小为lKBytes。4KB用户数据按扇区划分,共成4个扇区(主区O 主区3),每个扇区1KB。冗余区O 3分别存放主区O 3的校验码和其它信息标志位,每个扇区的冗余区长度假设m字节。从页内的整个主区看,4KB用户数据是连续存放的(主区O 主区3),但每个扇区的主区数据和对应的校验码不连续(主区O和冗余区0,主区I和冗余区I等)。NAND FLASH控制器读写整个页的顺序是从扇区O
读/写到扇区3,即有以下顺序:主区0,冗余区0,主区1,冗余区1,......,主区3,冗余区
3。从地址来看,NAND FLASH控制器读写完整页,页内地址(即列地址,column address)要跳 8 次:0x0000,0x1000,0x400,0xl000+m,......,OxOcOO, 0x1000+3 Xm。以上文所述的页大小4KB的NAND FLASH为例,对于NAND FLASH装置来说,如果要进行一次整页写/读操作,至少需要配置并启动8次状态机。每个扇区的主区或冗余区传输时,不但要重新启动状态机,还要预先更新一遍页内地址、主区/冗余区选择等信息。目前,NAND FLASH装置进行数据读写时,进行的软件累加、配置主区列地址和冗余区列地址的过程都是由单层状态机完成的。由于单层状态机要重复地进行软件配置和启动状态机的过程,过多的软件干预,使整个系统的工作效率大大降低,造成NAND FLASH控制器的速度和效率无法达到最优。在NAND FLASH控制器不断提速、优化效率的背景下,单层状态机无法满足NAND FLASH控制器的需求。
综上所述,目前的单层状态机会造成NAND FLASH控制器的速度和效率下降,无法满足NAND FLASH控制器的需求。

发明内容
本发明实施例提供的一种与存储器传输数据的装置及其传输数据的方法,用以解决现有技术中存在的单层状态机会造成NAND FLASH控制器的速度和效率下降,无法满足NAND FLASH控制器需求的问题。本发明实施例提供的一种与存储器传输数据的装置,包括:触发状态机,用于根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址;传输状态机,用于根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据。较佳地,所述触发状态机还用于:根据所述操作信息中的错误纠正码ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。较佳地,所述触发状态机具体用于:根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。较佳地,所述传输状态机是单个状态机;所述传输状态机具体用于:根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据;所述传输状态机包括一个上层状态机和至少一个底层状态机;所述上层状态机具体用于:将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;收到主区的地址的底层状态机具体用于:根据收到主区的地址,读或写对应主区的数据;收到冗余区的地址的底层状态机具体用于:根据收到冗余区的地址,读或写对应冗余区的数据。较佳地,所述装置还包括:指令发送状态机;所述触发状态机具体用于:触发指令发送状态机发送指令,在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作;
所述指令发送状态机具体用于:向所述存储器发送传输命令和传输地址。较佳地,所述指令发送状态机包括多个状态机。较佳地,所述装置还包括:处理状态机;所述触发状态机具体用于:在所述传输状态机完成数据传输之后,触发处理状态机进行指令确认;所述处理状态机用于:与所述存储器进行状态确认。本发明实施例提供的一种根据本发明实施例与存储器传输数据的装置进行数据传输的方法,包括:触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址;传输状态机根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据;所述触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。较佳地,所述触发状态机确定本次需要传输数据的地址包括:所述触发状态机根据所述操作信息中的ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;所述触发状态机根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。较佳地,所述传输状态机判断数据是否传输完毕包括:所述触发状态机根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。较佳地,所述传输状态机是单个状态机;所述传输状态机传输数据包括:所述传输状态机根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据;所述传输状态机包括一个上层状态机和至少一个底层状态机;所述传输状态机传输数据包括:所述上层状态机将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;收到主区的地址的底层状态机根据收到主区的地址,读或写对应主区的数据;收到冗余区的地址的底层状态机根据收到冗余区的地址,读或写对应冗余区的数据。较佳地,所述传输状态机进行首次数据传输之前还包括:所述触发状态机触发指令发送状态机发送指令;所述指令发送状态机向所述存储器发送传输命令和传输地址;
所述触发状态机在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作。较佳地,所述传输状态机完成数据传输之后还包括:所述触发状态机触发处理状态机进行指令确认;所述处理状态机与所述存储器进行状态确认。本发明实施例有如下有益效果:由于采用多层状态机完成软件累加、配置主区列地址和冗余区列地址的过程,从而提高了 NAND FLASH控制器的速度和效率,满足NAND FLASH控制器需求。


图1为FLASH页内数据结构示意图;图2A为本发明实施例与存储器传输数据的装置结构示意图;图2B为本发明实施例与存储器传输数据的方法流程示意图;图3为本发明实施例两层状态机中触发状态机的工作流程示意图;图4为本发明实施例两层状态机中传输状态机的工作流程示意图;图5为本发明实施例三层状态机中传输状态机中的上层状态机的工作流程示意图;图6为本发明实施例三层状态机中传输状态机中的底层状态机的工作流程示意图。
具体实施例方式针对现有技术中存在的单层状态机会造成NAND FLASH控制器的速度和效率下降,无法满足NAND FLASH控制器需求的问题,本发明实施例采用多层状态机的方式由触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址;由传输状态机根据触发状态机确定的本次需要传输数据的地址与存储器传输数据;由触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。由于采用多层状态机完成软件累加、配置主区列地址和冗余区列地址的过程,从而提高了 NAND FLASH控制器的速度和效率,满足NAND FLASH控制器需求。其中,本发明实施例的有多少层状态机,以及每层状态机的数量可以根据需要进行设定。下面结合说明书附图对本发明实施例作进一步详细描述。如图2A所示,本发明实施例传输数据的装置包括:触发状态机10和传输状态机20。触发状态机10,用于根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤以确定下次需要传输数据的地址;传输状态机20,用于根据触发状态机10确定的本次需要传输数据的地址与存储器传输数据。较佳地,触发状态机10根据操作信息中的ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。较佳地,触发状态机10根据操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。若传输状态机20包括单个状态机;较佳地,传输状态机20根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据。若传输状态机20包括多个状态机,比如包括一个上层状态机和至少一个底层状态机;较佳地,上层状态机将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;收到主区的地址的底层状态机具体用于:根据收到主区的地址,读或写对应主区的数据;收到冗余区的地址的底层状态机具体用于:根据收到冗余区的地址,读或写对应冗余区的数据。较佳地,本发明实施例的装置还可以进一步包括:指令发送状态机30 ;触发状态机10触发指令发送状态机发送指令,在指令发送状态机发送指令之后,触发传输状态机进行数据传输;指令发送状态机30向存储器发送传输命令和传输地址。较佳地,指令发送状态机30包括多个状态机。较佳地,若本次数据传输为首次传输,上次传输数据的地址是操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址。较佳地,本发明实施例的装置还可以进一步包括:处理状态机40。触发状态机10在传输状态机完成数据传输之后,触发处理状态机进行指令确认;处理状态机40与存储器进行状态确认。较佳地,处理状态机40包括多个状态机。如图2B所示,本发明实施例传输数据的方法包括下列步骤:步骤201、触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址;步骤202、传输状态机根据触发状态机确定的本次需要传输数据的地址与存储器传输数据;步骤203、触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。其中,在传输数据之前,软件会配置针对整个传输数据的操作信息,包括但不限于下列信息中的至少一种:主区的起始地址、冗余区地起始地址、需要传输的扇区数目、ECC类型(即确定每个扇区传输的主区和冗余区的大小)、必要的命令参数和状态机所有步骤分别使能与否(比如说在读取数据时,在第一个扇区被读之前,需要判断存储器的状态,之后的扇区则不需要,那么状态机的功能步骤使能是不同的)。本发明实施例在在传输数据之前,只需要软件配置一次操作信息,后续就不需要软件再进行配置了。在实施中,具体一次能传输多少数据是根据传输状态机的配置决定的。本发明实施例的传输状态机可以在不同的传输场景下,设定不同的传输量,比如可以设置一次传输IK的数据;还比如,不关心ECC的存储器。较佳地,可以根据主区的大小进行设定,比如设定一次传输的数据量等于主区的大小。其中,触发状态机处于传输状态机的上层。较佳地,步骤201中,触发状态机根据操作信息中的ECC(Error Correct Code,错误纠正码)类型,分别确定每个需要传输的扇区的主区和冗余区的大小;根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。由于每个扇区中的主区和冗余区都会按照图1的方式排列,所以知道了上次传输的主区的地址和本次需要传输的主区的大小,就可以推算出本次需要传输的主区的地址;同理,根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,就可以推算出本次需要传输的冗余区的地址。若本次数据传输为首次传输,上次传输数据的地址是操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址。较佳地,触发状态机将确定的地址传输给传输状态机;相应的,步骤202中,传输状态机根据收到的地址与存储器传输数据。其中,传输状态机可以是单个状态机,还可以包括多个状态机,下面分别进行介绍。方式一、传输状态机是单个状态机。较佳地,步骤202中,传输状态机根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据。方式二、传输状态机包括一个上层状态机和至少一个底层状态机。具体传输状态机是几层状态机以及每层有多少个状态机可以根据需要确定。较佳地,步骤202中,上层状态机将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;收到主区的地址的底层状态机根据收到主区的地址,读或写对应主区的数据;收到冗余区的地址的底层状态机根据收到冗余区的地址,读或写对应冗余区的数据。较佳地,步骤203中,触发状态机对传输状态机进行监控,在本次传输结束后,触发状态机根据操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。较佳地,步骤201之前还可以进一步包括:
触发状态机触发指令发送状态机发送指令;指令发送状态机向存储器发送传输命令和传输地址;触发状态机在指令发送状态机发送指令之后,触发传输状态机进行数据传输。其中,传输命令是指要对存储器进行读或写或其他操作。传输地址是指要访问存储器的详细位置。较佳地,指令发送状态机与传输状态机可以处于同一层。指令发送状态机可以与传输状态机在结构上类似,即指令发送状态机可以是单个状态机或包括多个状态机。如果包括多个状态机,比如一个上层状态和一个下层状态,则上层状态机可以将需要发送的传输命令和传输地址按顺序(比如按照发送信息的时间顺序)分发给对应的下层状态机;而下层状态机将收到消息的发送给存储器。其中,上层状态机可以监控下层状态机。比如有三个下层状态机,可以将需要发送的第一条命令发送给第一个下层状态机,并在下层状态机发送后再将需要发送的第二条命令发送给第二个下层状态机,依次类推;也可以将需要发送的第一条命令发送给第一个下层状态机,间隔一个很短的时间后再将需要发送的第二条命令发送给第二个下层状态机,依次类推。不管采用什么方式,只需要保证需要一起发的消息同时下发给下层状态机;不需要一起发的消息,分时下发给下层状态机。较佳地,步骤203之后还可以进一步包括:触发状态机触发处理状态机进行指令确认;处理状态机与存储器进行状态确认。较佳地,处理状态机与传输状态机可以处于同一层。处理状态机可以与传输状态机在结构上类似,即处理状态机可以是单个状态机或包括多个状态机。其中,处理状态机包括多个状态机的处理方式与指令发送状态机包括多个状态机的处理方式类似,在此不再赘述。下面以两层和三层状态机为例分别对本发明的方案进行说明。例一:两层状态机。例一的两层状态机包括处于外层的触发状态机和处于内层的指令发送状态机(FSMO)、传输状态机(FSMl)和处理状态机(FSM2)。在启动整个状态机前,软件配置好主区的起始地址,冗余区地起始地址,传输的扇区数目,ECC类型(即确定每个扇区传输的主区和冗余区的大小),必要的命令参数,以及状态机所有步骤分别使能与否。外层状态机按顺序执行FSMO,FSMl和FSM2三个独立可配的内层状态机。其中,FSMl可以循环多次,每次循环,地址信息会根据之前配置的地址和冗余区大小等信息的自动累加。FSMO,FSMl和FSM2三个内层状态机结构相同,可以完全单独配置,其具体实现和工作流程参见附图3。如图3所示,本发明实施例两层状态机中触发状态机的工作流程包括下列步骤:步骤301、触发状态机触发指令发送状态机发送指令;步骤302、触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,并传输给FSMl ;
步骤303、触发状态机在FSMl完成本次传输后判断是否需要继续循环FSM1,如果需要,则返回步骤302 ;否则,执行步骤304 ;步骤304、触发状态机触发处理状态机进行指令确认。内层状态机(FSM0,FSM1和FSM2),通过软件的配置可发送多个不同的命令,2组不同的地址(主区地址和冗余区地址),一次等待RB ready的操作,以及扇区内主区数据传输和扇区内冗余区数据传输等两次对NAND FLASH的写/读操作。所有NAND FLASH需要的操作,如复位,读写,配置等,均可通过内层状态机实现。特别地,一个扇区内的主区和冗余区的完整读写操作,包括发送读写命令、地址以及数据有效,可以由一个内层状态机一次性完成。具体FSMl的操作流程可以参见图4。如图4所示,本发明实施例两层状态机中传输状态机的工作流程包括下列步骤:步骤401、FSMl在收到来自触发状态机的地址后,发送命令CMD0。步骤402、FSMl 发送地址 ADDRO。步骤403、FSMl 发送命令 CMDI。步骤404、FSM1判断是否等待RB Ready,若是,则等待RB后执行步骤405 ;否则,直接执行步骤405。其中,如果步骤401 步骤403为读取存储器的物理页面的数据到自己的buffer,再从buffer中读取数据,则需要等待RB ready,若步骤401 步骤403为直接读取存储器的buffer中的数据,贝U不需要等待RB ready。在等待判断存储器的状态,也即等待RB信号由高到低,再由低到高的一个跳变变化,并等到连续内部采样N(比如2)次RB信号均为高之后,就可以开始执行405,N是正整数。假设进行读操作(写操作与读操作类似,在此不再赘述):步骤405、FSMl根据主区地址,读存储器中的一个扇区中的主区数据给buffer。步骤406、FSMl 发送命令 CMD2。步骤407、FSMl 发送地址 ADDRl。步骤408、FSMl 发送命令 CMD3。步骤409、FSMl根据冗余区地址,读存储器中的一个扇区中的冗余区数据给buffer。其中,CMDO I和ADDRO访问的是存储器的主区命令和地址;CMD2 3和ADDRl访问的是存储器的冗余区命令和地址。上述内容可以看出,整个状态机需要完成读写操作时,FSMO通常发送读写所必须的命令和行地址;FSM1可做循环,循环次数由软件配置为本次传输的扇区数目,每执行一次FSM1,可以完成一次扇区读写工作,并且随后地址会自动累加,执行下一次FSM1,直到完成所有的扇区操作;FSM2 —般完成某些操作必要的后续命令,如写操作的确认命令(0x10)等。在这种状态机结构的帮助下,软件一次配置,并启动一次硬件状态机,本来很复杂的整页读写操作,可以一次性完成。当然,除了读写操作,NAND FLASH的其它所有操作,都能通过对FSM0,FSM1,FSM2的不同配置,一次完成。这种两层状态机结构,减少在对NAND FLASH操作时的软件干预,大大提高了工作效率和读写速度。例一中,外层状态机包含多个内层状态机,完成对内层状态机的调用和循环,并做地址累加的工作;内层状态机包括发送命令、地址、传输扇区数据等基本操作。两层状态机结构的NAND FLASH控制器,可通过灵活的配置多个内层状态机的各种参数,一次性地完成对NAND FLASH整页数据的读写及其它复杂操作。例二:三层状态机。例二的三层状态机包括处于外层的触发状态机,处于中层的三个上层状态机(FSMO、FSMl和FSM2),处于底层的12个底层状态机。其中,每个上层状态机对应四个底层状态机。一个上层状态机和对应的四个底层状态机为一组,一共有三组。这三组相当于上面描述的指令发送状态、传输状态机和处理状态机。当然,根据需要指令发送状态机和/或处理状态机也可以是单个状态机,即不需要对应的底层状态机。若指令发送状态机或处理状态机是单个状态机,则底层状态机就是8个;若指令发送状态机和处理状态机是单个状态机,则底层状态机就是4个。在实施中,可以固定底层状态机的数量,比如就是12个。在启动整个状态机前,软件配置好主区的起始地址,冗余区地起始地址,传输的扇区数目,ECC类型(即确定每个扇区传输的主区和冗余区的大小),必要的命令参数,以及状态机所有步骤分别使能与否。外层状态机按顺序执行FSMO,FSMl和FSM2三个独立可配的内层状态机。其中,FSMl可以循环多次,每次循环,地址信息会根据之前配置的地址和冗余区大小等信息的自动累加。FSMO,FSMl和FSM2三个内层状态机结构相同,可以完全单独配置,其具体实现和工作流程参见附图3,在此不再赘述。中层状态机FSMx (X = 0,1,2)(即上层状态机)实质是依次运行4个内层状态机(FSMxy, y = 0,12,3)(即底层状态机)。当然,这4个内层状态机都是独立配置,可任意使能或取消。FSMO, FSMl和FSM2的区别在于传递给对应底层状态机的信息不同,比如FSMO传递的就是命令;FSM1就是地址。如图5为本发明实施例三层状态机中传输状态机中的上层状态机的工作流程包括下列步骤:步骤501、FSMx判断是否触发底层状态机,若是,则执行步骤502,否则执行步骤503。步骤502、FSMx向对应的第一个底层状态机发送信息。步骤503、FSMx将已执行的底层状态机数量增加I。步骤504、FSMx判断已执行的底层状态机数量是否等于4,若是,则跳出本流程;否贝U,返回步骤501。底层状态机FSMxy(x = 0,12 ;y = 0,1,2,3)每个都独立配置,可以完成一些基本操作。每一个底层状态机FSMxy最多可以发一个命令,一组地址(行地址,主区列地址或冗余区列地址,行地址+列地址三者选一),一次等待RB ready和一次扇区主区或冗余区传输。具体负责传输数据的底层状态机的操作流程可以参见图6。如图6所示,本发明实施例三层状态机中传输状态机中的底层状态机的工作流程包括下列步骤:步骤601、FSMxy在收到来自触发状态机的地址后,发送命令CMDxy。步骤602、FSMxy 发送地址 ADDRxy。步骤603、FSMxy 发送命令 CMDxy。步骤604、FSMxy判断是否等待RB Ready,若是,则等待RB后执行步骤605 ;否则,直接执行步骤605。假设进行读操作(写操作与读操作类似,在此不再赘述):步骤605、FSMxy根据主区(或冗余区)地址,读存储器中的一个扇区中的主区(或冗余区)数据给ROM。上述内容可以看出,无论多复杂的扇区读写操作,都可以由中层状态机的4个具有不同配置的内层状态机完成。在写操作时,4个内层状态机可如此配置:第I个状态机发送选择地址命令(0x85)和主区列地址,第2个状态机传输主区数据,第3个状态机发送选择地址命令(0x85)和冗余区列地址,第4个状态机传输冗余区数据;在读操作时,4个内层状态机可如此配置:第I个状态机发送第一个选择地址命令(0x05)和主区列地址,第2个状态机发送第二个选择地址命令(OxeO),然后传输主区数据,第3个状态机发送第一个选择地址命令(0x05)和冗余区列地址,第4个状态机发送第二个选择地址命令(OxeO),然后传输冗余区数据。和例一相似,外层状态机的FSMl循环,并累加主区和冗余区列地址,可完成整页数据的读写操作,FSMO和FSM2 —般用来发送一些初始和结束的命令或地址。例二与例一相比,前者配置更加灵活,核心(内层)状态机更简便。例二中,外层状态机包含多个中层状态机,完成对中层状态机的调用和循环,并做地址累加的工作;每个中层状态机包含4个内层状态机,完成对内层状态机的调用;每个内层状态机包括发送命令、地址、传输扇区数据等基本操作。三层状态机结构的NAND FLASH控制器,可通过灵活的配置其外层、中层、内层等多个状态机的参数,一次性地完成对NAND FLASH整页数据的读写及其它复杂操作。利用多层状态机架构,自动累加地址,循环嵌套状态机某些操作等方法,来实现对NAND FLASH装置多个扇区(sector)或整个页(page)操作的思想,也是本发明的权利要求。其中,本发明三层以上状态机的工作方式与上述两层和三层类似,在此不再赘述。基于同一发明构思,本发明实施例中还提供了一种传输数据的装置,由于传输数据的装置解决问题的原理与传输数据的方法相似,因此传输数据的装置的实施可以参见方法的实施,重复之处不再赘述。以上的两层,三层状态机结构,仅为本发明的较佳实施例而已,并不用以限制本发明。其它的基于多层(两层或两层以上)状态机结构的NAND FLASH控制器,也应在本发明的权利要求之类,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。从上述内容可以看出:1、由于采用多层状态机完成软件累加、配置主区列地址和冗余区列地址的过程,从而提高了 NAND FLASH控制器的速度和效率,满足NAND FLASH控制器需求;2、采用多层状态机操作NAND FLASH控制器中的多扇区或整页数据,期间无需软件干预,节省了 CPU开销的同时,提高NAND FLASH控制器的整体读写速度;3、多层状态机中的每一项操作都灵活可配,随着NAND FLASH控制器的装置命令操作的多样化和复杂化,这种基于多层状态机的NAND FLASH控制器可满足不同的操作时序。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种与存储器传输数据的装置,其特征在于,该装置包括: 触发状态机,用于根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址; 传输状态机,用于根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据。
2.如权利要求1所述的装置,其特征在于,所述触发状态机还用于: 根据所述操作信息中的错误纠正码ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。
3.如权利要求1或2所述的装置,其特征在于,所述触发状态机具体用于: 根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。
4.如权利要求2所述的装置,其特征在于,所述传输状态机是单个状态机; 所述传输状态机具体用于: 根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据; 所述传输状态机包括一个上层状态机和至少一个底层状态机; 所述上层状态机具体用于: 将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机; 收到主区的地址的底层状态机具体用于:根据收到主区的地址,读或写对应主区的数据; 收到冗余区的地址的底层状态机具体用于:根据收到冗余区的地址,读或写对应冗余区的数据。
5.如权利要求1或2所述的装置,其特征在于,所述装置还包括:指令发送状态机; 所述触发状态机具体用于: 触发指令发送状态机发送指令,在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作; 所述指令发送状态机具体用于:向所述存储器发送传输命令和传输地址。
6.如权利要求5所述的装置,其特征在于,所述指令发送状态机包括多个状态机。
7.如权利要求1或2所述的装置,其特征在于,所述装置还包括:处理状态机; 所述触发状态机具体用于:在所述传输状态机完成数据传输之后,触发处理状态机进行指令确认; 所述处理状态机用于:与所述存储器进行状态确认。
8.一种根据权利要求1所述的装置进行数据传输的方法,其特征在于,该方法包括:触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址; 传输状态机根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据; 所述触发状态机在本次传输结束 后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。
9.如权利要求8所述的方法,其特征在于,所述触发状态机确定本次需要传输数据的地址包括: 所述触发状态机根据所述操作信息中的ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小; 所述触发状态机根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。
10.如权利要求8或9所述的方法,其特征在于,所述传输状态机判断数据是否传输完毕包括: 所述触发状态机根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。
11.如权利要求9所述的方法,其特征在于,所述传输状态机是单个状态机;所述传输状态机传输数据包括: 所述传输状态机根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据; 所述传输状态机包括一个上层状态机和至少一个底层状态机;所述传输状态机传输数据包括: 所述上层状态机将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机; 收到主区的地址的底层状态机根据收到主区的地址,读或写对应主区的数据; 收到冗余区的地址的底层状态机根据收到冗余区的地址,读或写对应冗余区的数据。
12.如权利要求8或9所述的方法,其特征在于,所述传输状态机进行首次数据传输之前还包括: 所述触发状态机触发指令发送状态机发送指令; 所述指令发送状态机向所述存储器发送传输命令和传输地址; 所述触发状态机在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作。
13.如权利要求8或9所述的方法,其特征在于,所述传输状态机完成数据传输之后还包括: 所述触发状态机触发处理状态机进行指令确认; 所述处理状态机与所述存储器进行状态确认。
全文摘要
本发明实施例涉及存储器的控制器领域,特别涉及一种与存储器传输数据的装置及其传输数据的方法,用以解决现有技术中存在的单层状态机会造成NAND FLASH控制器的速度和效率下降,无法满足NAND FLASH控制器需求的问题。本发明实施例的方法包括触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址;传输状态机根据触发状态机确定的本次需要传输数据的地址与存储器传输数据;触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。采用本发明能够提高NAND FLASH控制器的速度和效率,满足控制器需求。
文档编号G06F13/16GK103164361SQ20111040685
公开日2013年6月19日 申请日期2011年12月8日 优先权日2011年12月8日
发明者阮航, 李永斌, 庞成章, 唐杰 申请人:炬力集成电路设计有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1