CN103164361B - 与存储器传输数据的装置及其传输数据的方法 - Google Patents

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

Info

Publication number
CN103164361B
CN103164361B CN201110406852.7A CN201110406852A CN103164361B CN 103164361 B CN103164361 B CN 103164361B CN 201110406852 A CN201110406852 A CN 201110406852A CN 103164361 B CN103164361 B CN 103164361B
Authority
CN
China
Prior art keywords
state machine
transmission
data
address
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110406852.7A
Other languages
English (en)
Other versions
CN103164361A (zh
Inventor
阮航
李永斌
庞成章
唐杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Actions Technology Co Ltd
Original Assignee
Juxin (zhuhai) Science & Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Juxin (zhuhai) Science & Technology Co Ltd filed Critical Juxin (zhuhai) Science & Technology Co Ltd
Priority to CN201110406852.7A priority Critical patent/CN103164361B/zh
Publication of CN103164361A publication Critical patent/CN103164361A/zh
Application granted granted Critical
Publication of CN103164361B publication Critical patent/CN103164361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明实施例涉及存储器的控制器领域,特别涉及一种与存储器传输数据的装置及其传输数据的方法,用以解决现有技术中存在的单层状态机会造成NAND?FLASH控制器的速度和效率下降,无法满足NAND?FLASH控制器需求的问题。本发明实施例的方法包括:触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址;传输状态机根据触发状态机确定的本次需要传输数据的地址与存储器传输数据;触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。采用本发明能够提高NAND?FLASH控制器的速度和效率,满足控制器需求。

Description

与存储器传输数据的装置及其传输数据的方法
技术领域
本发明涉及存储器的控制器领域,特别涉及一种与存储器传输数据的装置及其传输数据的方法。
背景技术
目前主流的NANDFLASH(与非型非易失性存储器)装置,读写操作一般都是以页(page)为单位。不同的NANDFLASH,每个页的大小也可能不同。具体来说,目前用来存放数据的NANDFLASH页大小有512Bytes、2Kbytes、4Kbytes和8Kbytes这几种。
NANDFLASH每一页的物理存储单元,除了要存放用户的数据以外,还要存放纠错码(ECC)的信息和文件系统信息等。一般地,这一部分非用户数据(称作冗余区,或sparearea)被统一地分配到用户数据区(称作主区,或mainarea)页地址以后。例如,某款NANDFLASH页的大小是4KBytes,那么其主区地址为0x0000~0x1000,冗余区从0x1000地址起始,冗余区大小根据NANDFLASH的厂商和类型,有所不同。
由于其本身的结构性质,NANDFLASH中存储的数据容易出错。在实际的读写操作中,NANDFLASH控制器都会伴随着ECC纠错的过程:写数据时,用户数据被存入主区的同时,还要做ECC编码,并产生校验码存放在NANDFLASH冗余区;读数据时,控制器将主区的用户数据和冗余区的校验码经过ECC解码,自动纠正出错的数据,还原用户数据。控制器做ECC编码、解码操作,是以扇区(sector)为单位的,按照目前ECC类型,扇区大小有512Bytes和1Kbytes等类型。控制器要想读写整个页内的数据,必须以读写多个扇区的方式来完成。
以图1的NANDFLASH为例,每个扇区大小为1KBytes。4KB用户数据按扇区划分,共成4个扇区(主区0~主区3),每个扇区1KB。冗余区0~3分别存放主区0~3的校验码和其它信息标志位,每个扇区的冗余区长度假设m字节。从页内的整个主区看,4KB用户数据是连续存放的(主区0~主区3),但每个扇区的主区数据和对应的校验码不连续(主区0和冗余区0,主区1和冗余区1等)。NANDFLASH控制器读写整个页的顺序是从扇区0读/写到扇区3,即有以下顺序:主区0,冗余区0,主区1,冗余区1,......,主区3,冗余区3。从地址来看,NANDFLASH控制器读写完整页,页内地址(即列地址,columnaddress)要跳8次:0x0000,0x1000,0x400,0x1000+m,......,0x0c00,0x1000+3×m。
以上文所述的页大小4KB的NANDFLASH为例,对于NANDFLASH装置来说,如果要进行一次整页写/读操作,至少需要配置并启动8次状态机。每个扇区的主区或冗余区传输时,不但要重新启动状态机,还要预先更新一遍页内地址、主区/冗余区选择等信息。
目前,NANDFLASH装置进行数据读写时,进行的软件累加、配置主区列地址和冗余区列地址的过程都是由单层状态机完成的。由于单层状态机要重复地进行软件配置和启动状态机的过程,过多的软件干预,使整个系统的工作效率大大降低,造成NANDFLASH控制器的速度和效率无法达到最优。在NANDFLASH控制器不断提速、优化效率的背景下,单层状态机无法满足NANDFLASH控制器的需求。
综上所述,目前的单层状态机会造成NANDFLASH控制器的速度和效率下降,无法满足NANDFLASH控制器的需求。
发明内容
本发明实施例提供的一种与存储器传输数据的装置及其传输数据的方法,用以解决现有技术中存在的单层状态机会造成NANDFLASH控制器的速度和效率下降,无法满足NANDFLASH控制器需求的问题。
本发明实施例提供的一种与存储器传输数据的装置,包括:
触发状态机,用于根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址;
传输状态机,用于根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据。
较佳地,所述触发状态机还用于:
根据所述操作信息中的错误纠正码ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。
较佳地,所述触发状态机具体用于:
根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。
较佳地,所述传输状态机是单个状态机;
所述传输状态机具体用于:
根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据;
所述传输状态机包括一个上层状态机和至少一个底层状态机;
所述上层状态机具体用于:
将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;
收到主区的地址的底层状态机具体用于:根据收到主区的地址,读或写对应主区的数据;
收到冗余区的地址的底层状态机具体用于:根据收到冗余区的地址,读或写对应冗余区的数据。
较佳地,所述装置还包括:指令发送状态机;
所述触发状态机具体用于:
触发指令发送状态机发送指令,在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作;
所述指令发送状态机具体用于:向所述存储器发送传输命令和传输地址。
较佳地,所述指令发送状态机包括多个状态机。
较佳地,所述装置还包括:处理状态机;
所述触发状态机具体用于:在所述传输状态机完成数据传输之后,触发处理状态机进行指令确认;
所述处理状态机用于:与所述存储器进行状态确认。
本发明实施例提供的一种根据本发明实施例与存储器传输数据的装置进行数据传输的方法,包括:
触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址;
传输状态机根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据;
所述触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。
较佳地,所述触发状态机确定本次需要传输数据的地址包括:
所述触发状态机根据所述操作信息中的ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;
所述触发状态机根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。
较佳地,所述传输状态机判断数据是否传输完毕包括:
所述触发状态机根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;
若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。
较佳地,所述传输状态机是单个状态机;所述传输状态机传输数据包括:
所述传输状态机根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据;
所述传输状态机包括一个上层状态机和至少一个底层状态机;所述传输状态机传输数据包括:
所述上层状态机将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;
收到主区的地址的底层状态机根据收到主区的地址,读或写对应主区的数据;
收到冗余区的地址的底层状态机根据收到冗余区的地址,读或写对应冗余区的数据。
较佳地,所述传输状态机进行首次数据传输之前还包括:
所述触发状态机触发指令发送状态机发送指令;
所述指令发送状态机向所述存储器发送传输命令和传输地址;
所述触发状态机在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作。
较佳地,所述传输状态机完成数据传输之后还包括:
所述触发状态机触发处理状态机进行指令确认;
所述处理状态机与所述存储器进行状态确认。
本发明实施例有如下有益效果:
由于采用多层状态机完成软件累加、配置主区列地址和冗余区列地址的过程,从而提高了NANDFLASH控制器的速度和效率,满足NANDFLASH控制器需求。
附图说明
图1为FLASH页内数据结构示意图;
图2A为本发明实施例与存储器传输数据的装置结构示意图;
图2B为本发明实施例与存储器传输数据的方法流程示意图;
图3为本发明实施例两层状态机中触发状态机的工作流程示意图;
图4为本发明实施例两层状态机中传输状态机的工作流程示意图;
图5为本发明实施例三层状态机中传输状态机中的上层状态机的工作流程示意图;
图6为本发明实施例三层状态机中传输状态机中的底层状态机的工作流程示意图。
具体实施方式
针对现有技术中存在的单层状态机会造成NANDFLASH控制器的速度和效率下降,无法满足NANDFLASH控制器需求的问题,本发明实施例采用多层状态机的方式由触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址;由传输状态机根据触发状态机确定的本次需要传输数据的地址与存储器传输数据;由触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。由于采用多层状态机完成软件累加、配置主区列地址和冗余区列地址的过程,从而提高了NANDFLASH控制器的速度和效率,满足NANDFLASH控制器需求。
其中,本发明实施例的有多少层状态机,以及每层状态机的数量可以根据需要进行设定。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图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类型(即确定每个扇区传输的主区和冗余区的大小)、必要的命令参数和状态机所有步骤分别使能与否(比如说在读取数据时,在第一个扇区被读之前,需要判断存储器的状态,之后的扇区则不需要,那么状态机的功能步骤使能是不同的)。
本发明实施例在在传输数据之前,只需要软件配置一次操作信息,后续就不需要软件再进行配置了。
在实施中,具体一次能传输多少数据是根据传输状态机的配置决定的。本发明实施例的传输状态机可以在不同的传输场景下,设定不同的传输量,比如可以设置一次传输1K的数据;还比如,不关心ECC的存储器。较佳地,可以根据主区的大小进行设定,比如设定一次传输的数据量等于主区的大小。
其中,触发状态机处于传输状态机的上层。
较佳地,步骤201中,触发状态机根据操作信息中的ECC(ErrorCorrectCode,错误纠正码)类型,分别确定每个需要传输的扇区的主区和冗余区的大小;
根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址。
由于每个扇区中的主区和冗余区都会按照图1的方式排列,所以知道了上次传输的主区的地址和本次需要传输的主区的大小,就可以推算出本次需要传输的主区的地址;同理,根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,就可以推算出本次需要传输的冗余区的地址。
若本次数据传输为首次传输,上次传输数据的地址是操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址。
较佳地,触发状态机将确定的地址传输给传输状态机;相应的,步骤202中,传输状态机根据收到的地址与存储器传输数据。
其中,传输状态机可以是单个状态机,还可以包括多个状态机,下面分别进行介绍。
方式一、传输状态机是单个状态机。
较佳地,步骤202中,传输状态机根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据。
方式二、传输状态机包括一个上层状态机和至少一个底层状态机。具体传输状态机是几层状态机以及每层有多少个状态机可以根据需要确定。
较佳地,步骤202中,上层状态机将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;
收到主区的地址的底层状态机根据收到主区的地址,读或写对应主区的数据;
收到冗余区的地址的底层状态机根据收到冗余区的地址,读或写对应冗余区的数据。
较佳地,步骤203中,触发状态机对传输状态机进行监控,在本次传输结束后,触发状态机根据操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。
较佳地,步骤201之前还可以进一步包括:
触发状态机触发指令发送状态机发送指令;
指令发送状态机向存储器发送传输命令和传输地址;
触发状态机在指令发送状态机发送指令之后,触发传输状态机进行数据传输。
其中,传输命令是指要对存储器进行读或写或其他操作。传输地址是指要访问存储器的详细位置。
较佳地,指令发送状态机与传输状态机可以处于同一层。指令发送状态机可以与传输状态机在结构上类似,即指令发送状态机可以是单个状态机或包括多个状态机。
如果包括多个状态机,比如一个上层状态和一个下层状态,则上层状态机可以将需要发送的传输命令和传输地址按顺序(比如按照发送信息的时间顺序)分发给对应的下层状态机;而下层状态机将收到消息的发送给存储器。
其中,上层状态机可以监控下层状态机。
比如有三个下层状态机,可以将需要发送的第一条命令发送给第一个下层状态机,并在下层状态机发送后再将需要发送的第二条命令发送给第二个下层状态机,依次类推;也可以将需要发送的第一条命令发送给第一个下层状态机,间隔一个很短的时间后再将需要发送的第二条命令发送给第二个下层状态机,依次类推。
不管采用什么方式,只需要保证需要一起发的消息同时下发给下层状态机;不需要一起发的消息,分时下发给下层状态机。
较佳地,步骤203之后还可以进一步包括:
触发状态机触发处理状态机进行指令确认;
处理状态机与存储器进行状态确认。
较佳地,处理状态机与传输状态机可以处于同一层。处理状态机可以与传输状态机在结构上类似,即处理状态机可以是单个状态机或包括多个状态机。
其中,处理状态机包括多个状态机的处理方式与指令发送状态机包括多个状态机的处理方式类似,在此不再赘述。
下面以两层和三层状态机为例分别对本发明的方案进行说明。
例一:两层状态机。
例一的两层状态机包括处于外层的触发状态机和处于内层的指令发送状态机(FSM0)、传输状态机(FSM1)和处理状态机(FSM2)。
在启动整个状态机前,软件配置好主区的起始地址,冗余区地起始地址,传输的扇区数目,ECC类型(即确定每个扇区传输的主区和冗余区的大小),必要的命令参数,以及状态机所有步骤分别使能与否。
外层状态机按顺序执行FSM0,FSM1和FSM2三个独立可配的内层状态机。其中,FSM1可以循环多次,每次循环,地址信息会根据之前配置的地址和冗余区大小等信息的自动累加。FSM0,FSM1和FSM2三个内层状态机结构相同,可以完全单独配置,其具体实现和工作流程参见附图3。
如图3所示,本发明实施例两层状态机中触发状态机的工作流程包括下列步骤:
步骤301、触发状态机触发指令发送状态机发送指令;
步骤302、触发状态机根据上次传输数据的地址和预先配置的操作信息,确定本次需要传输数据的地址,并传输给FSM1;
步骤303、触发状态机在FSM1完成本次传输后判断是否需要继续循环FSM1,如果需要,则返回步骤302;否则,执行步骤304;
步骤304、触发状态机触发处理状态机进行指令确认。
内层状态机(FSM0,FSM1和FSM2),通过软件的配置可发送多个不同的命令,2组不同的地址(主区地址和冗余区地址),一次等待RBready的操作,以及扇区内主区数据传输和扇区内冗余区数据传输等两次对NANDFLASH的写/读操作。所有NANDFLASH需要的操作,如复位,读写,配置等,均可通过内层状态机实现。特别地,一个扇区内的主区和冗余区的完整读写操作,包括发送读写命令、地址以及数据有效,可以由一个内层状态机一次性完成。具体FSM1的操作流程可以参见图4。
如图4所示,本发明实施例两层状态机中传输状态机的工作流程包括下列步骤:
步骤401、FSM1在收到来自触发状态机的地址后,发送命令CMD0。
步骤402、FSM1发送地址ADDR0。
步骤403、FSM1发送命令CMD1。
步骤404、FSM1判断是否等待RBReady,若是,则等待RB后执行步骤405;否则,直接执行步骤405。
其中,如果步骤401~步骤403为读取存储器的物理页面的数据到自己的buffer,再从buffer中读取数据,则需要等待RBready,若步骤401~步骤403为直接读取存储器的buffer中的数据,则不需要等待RBready。
在等待判断存储器的状态,也即等待RB信号由高到低,再由低到高的一个跳变变化,并等到连续内部采样N(比如2)次RB信号均为高之后,就可以开始执行405,N是正整数。
假设进行读操作(写操作与读操作类似,在此不再赘述):
步骤405、FSM1根据主区地址,读存储器中的一个扇区中的主区数据给buffer。
步骤406、FSM1发送命令CMD2。
步骤407、FSM1发送地址ADDR1。
步骤408、FSM1发送命令CMD3。
步骤409、FSM1根据冗余区地址,读存储器中的一个扇区中的冗余区数据给buffer。
其中,CMD0~1和ADDR0访问的是存储器的主区命令和地址;CMD2~3和ADDR1访问的是存储器的冗余区命令和地址。
上述内容可以看出,整个状态机需要完成读写操作时,FSM0通常发送读写所必须的命令和行地址;FSM1可做循环,循环次数由软件配置为本次传输的扇区数目,每执行一次FSM1,可以完成一次扇区读写工作,并且随后地址会自动累加,执行下一次FSM1,直到完成所有的扇区操作;FSM2一般完成某些操作必要的后续命令,如写操作的确认命令(0x10)等。在这种状态机结构的帮助下,软件一次配置,并启动一次硬件状态机,本来很复杂的整页读写操作,可以一次性完成。当然,除了读写操作,NANDFLASH的其它所有操作,都能通过对FSM0,FSM1,FSM2的不同配置,一次完成。这种两层状态机结构,减少在对NANDFLASH操作时的软件干预,大大提高了工作效率和读写速度。
例一中,外层状态机包含多个内层状态机,完成对内层状态机的调用和循环,并做地址累加的工作;内层状态机包括发送命令、地址、传输扇区数据等基本操作。两层状态机结构的NANDFLASH控制器,可通过灵活的配置多个内层状态机的各种参数,一次性地完成对NANDFLASH整页数据的读写及其它复杂操作。
例二:三层状态机。
例二的三层状态机包括处于外层的触发状态机,处于中层的三个上层状态机(FSM0、FSM1和FSM2),处于底层的12个底层状态机。
其中,每个上层状态机对应四个底层状态机。一个上层状态机和对应的四个底层状态机为一组,一共有三组。这三组相当于上面描述的指令发送状态、传输状态机和处理状态机。
当然,根据需要指令发送状态机和/或处理状态机也可以是单个状态机,即不需要对应的底层状态机。
若指令发送状态机或处理状态机是单个状态机,则底层状态机就是8个;
若指令发送状态机和处理状态机是单个状态机,则底层状态机就是4个。
在实施中,可以固定底层状态机的数量,比如就是12个。
在启动整个状态机前,软件配置好主区的起始地址,冗余区地起始地址,传输的扇区数目,ECC类型(即确定每个扇区传输的主区和冗余区的大小),必要的命令参数,以及状态机所有步骤分别使能与否。
外层状态机按顺序执行FSM0,FSM1和FSM2三个独立可配的内层状态机。其中,FSM1可以循环多次,每次循环,地址信息会根据之前配置的地址和冗余区大小等信息的自动累加。FSM0,FSM1和FSM2三个内层状态机结构相同,可以完全单独配置,其具体实现和工作流程参见附图3,在此不再赘述。
中层状态机FSMx(x=0,1,2)(即上层状态机)实质是依次运行4个内层状态机(FSMxy,y=0,12,3)(即底层状态机)。当然,这4个内层状态机都是独立配置,可任意使能或取消。
FSM0、FSM1和FSM2的区别在于传递给对应底层状态机的信息不同,比如FSM0传递的就是命令;FSM1就是地址。
如图5为本发明实施例三层状态机中传输状态机中的上层状态机的工作流程包括下列步骤:
步骤501、FSMx判断是否触发底层状态机,若是,则执行步骤502,否则执行步骤503。
步骤502、FSMx向对应的第一个底层状态机发送信息。
步骤503、FSMx将已执行的底层状态机数量增加1。
步骤504、FSMx判断已执行的底层状态机数量是否等于4,若是,则跳出本流程;否则,返回步骤501。
底层状态机FSMxy(x=0,12;y=0,1,2,3)每个都独立配置,可以完成一些基本操作。每一个底层状态机FSMxy最多可以发一个命令,一组地址(行地址,主区列地址或冗余区列地址,行地址+列地址三者选一),一次等待RBready和一次扇区主区或冗余区传输。具体负责传输数据的底层状态机的操作流程可以参见图6。
如图6所示,本发明实施例三层状态机中传输状态机中的底层状态机的工作流程包括下列步骤:
步骤601、FSMxy在收到来自触发状态机的地址后,发送命令CMDxy。
步骤602、FSMxy发送地址ADDRxy。
步骤603、FSMxy发送命令CMDxy。
步骤604、FSMxy判断是否等待RBReady,若是,则等待RB后执行步骤605;否则,直接执行步骤605。
假设进行读操作(写操作与读操作类似,在此不再赘述):
步骤605、FSMxy根据主区(或冗余区)地址,读存储器中的一个扇区中的主区(或冗余区)数据给ROM。
上述内容可以看出,无论多复杂的扇区读写操作,都可以由中层状态机的4个具有不同配置的内层状态机完成。在写操作时,4个内层状态机可如此配置:第1个状态机发送选择地址命令(0x85)和主区列地址,第2个状态机传输主区数据,第3个状态机发送选择地址命令(0x85)和冗余区列地址,第4个状态机传输冗余区数据;在读操作时,4个内层状态机可如此配置:第1个状态机发送第一个选择地址命令(0x05)和主区列地址,第2个状态机发送第二个选择地址命令(0xe0),然后传输主区数据,第3个状态机发送第一个选择地址命令(0x05)和冗余区列地址,第4个状态机发送第二个选择地址命令(0xe0),然后传输冗余区数据。
和例一相似,外层状态机的FSM1循环,并累加主区和冗余区列地址,可完成整页数据的读写操作,FSM0和FSM2一般用来发送一些初始和结束的命令或地址。
例二与例一相比,前者配置更加灵活,核心(内层)状态机更简便。
例二中,外层状态机包含多个中层状态机,完成对中层状态机的调用和循环,并做地址累加的工作;每个中层状态机包含4个内层状态机,完成对内层状态机的调用;每个内层状态机包括发送命令、地址、传输扇区数据等基本操作。
三层状态机结构的NANDFLASH控制器,可通过灵活的配置其外层、中层、内层等多个状态机的参数,一次性地完成对NANDFLASH整页数据的读写及其它复杂操作。
利用多层状态机架构,自动累加地址,循环嵌套状态机某些操作等方法,来实现对NANDFLASH装置多个扇区(sector)或整个页(page)操作的思想,也是本发明的权利要求。
其中,本发明三层以上状态机的工作方式与上述两层和三层类似,在此不再赘述。
基于同一发明构思,本发明实施例中还提供了一种传输数据的装置,由于传输数据的装置解决问题的原理与传输数据的方法相似,因此传输数据的装置的实施可以参见方法的实施,重复之处不再赘述。
以上的两层,三层状态机结构,仅为本发明的较佳实施例而已,并不用以限制本发明。其它的基于多层(两层或两层以上)状态机结构的NANDFLASH控制器,也应在本发明的权利要求之类,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
从上述内容可以看出:
1、由于采用多层状态机完成软件累加、配置主区列地址和冗余区列地址的过程,从而提高了NANDFLASH控制器的速度和效率,满足NANDFLASH控制器需求;
2、采用多层状态机操作NANDFLASH控制器中的多扇区或整页数据,期间无需软件干预,节省了CPU开销的同时,提高NANDFLASH控制器的整体读写速度;
3、多层状态机中的每一项操作都灵活可配,随着NANDFLASH控制器的装置命令操作的多样化和复杂化,这种基于多层状态机的NANDFLASH控制器可满足不同的操作时序。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (11)

1.一种与存储器传输数据的装置,其特征在于,该装置包括:
触发状态机,用于根据预先配置的操作信息中的错误纠正码ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址,在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址;
传输状态机,用于根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据。
2.如权利要求1所述的装置,其特征在于,所述触发状态机具体用于:
根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。
3.如权利要求1所述的装置,其特征在于,所述传输状态机是单个状态机;
所述传输状态机具体用于:
根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据;
所述传输状态机包括一个上层状态机和至少一个底层状态机;
所述上层状态机具体用于:
将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;
收到主区的地址的底层状态机具体用于:根据收到主区的地址,读或写对应主区的数据;
收到冗余区的地址的底层状态机具体用于:根据收到冗余区的地址,读或写对应冗余区的数据。
4.如权利要求1所述的装置,其特征在于,所述装置还包括:指令发送状态机;
所述触发状态机具体用于:
触发指令发送状态机发送指令,在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作;
所述指令发送状态机具体用于:向所述存储器发送传输命令和传输地址。
5.如权利要求4所述的装置,其特征在于,所述指令发送状态机包括多个状态机。
6.如权利要求1所述的装置,其特征在于,所述装置还包括:处理状态机;
所述触发状态机具体用于:在所述传输状态机完成数据传输之后,触发处理状态机进行指令确认;
所述处理状态机用于:与所述存储器进行状态确认。
7.一种根据权利要求1所述的装置进行数据传输的方法,其特征在于,该方法包括:
触发状态机根据所述操作信息中的ECC类型,分别确定每个需要传输的扇区的主区和冗余区的大小;根据上次传输的主区的地址和本次需要传输的主区的大小,确定本次需要传输的主区的地址;以及根据上次传输的冗余区的地址和本次需要传输的冗余区的大小,确定本次需要传输的冗余区的地址,其中若本次数据传输为首次传输,所述上次传输数据的地址是所述操作信息中需要传输的第一个扇区中的主区的起始地址和第一个扇区中的冗余区的起始地址;
传输状态机根据所述触发状态机确定的本次需要传输数据的地址与存储器传输数据;
所述触发状态机在本次传输结束后,根据预先配置的操作信息判断数据是否传输完毕,并在确定数据传输未完毕后,返回到确定本次需要传输数据的地址的步骤。
8.如权利要求7所述的方法,其特征在于,所述传输状态机判断数据是否传输完毕包括:
所述触发状态机根据所述操作信息中需要传输的扇区数量,判断数据是否传输完毕;
若已传输的扇区数量等于需要传输的扇区数量,确定数据传输完毕;否则,确定数据未传输完毕。
9.如权利要求7所述的方法,其特征在于,所述传输状态机是单个状态机;所述传输状态机传输数据包括:
所述传输状态机根据本次需要传输的主区的地址,读或写对应主区的数据;以及根据本次需要传输的冗余区的地址,读或写对应冗余区的数据;
所述传输状态机包括一个上层状态机和至少一个底层状态机;所述传输状态机传输数据包括:
所述上层状态机将本次需要传输的主区的地址,发送给对应的一个底层状态机,以及将本次需要传输的冗余区的地址,发送给对应的一个底层状态机;
收到主区的地址的底层状态机根据收到主区的地址,读或写对应主区的数据;
收到冗余区的地址的底层状态机根据收到冗余区的地址,读或写对应冗余区的数据。
10.如权利要求7所述的方法,其特征在于,所述传输状态机进行首次数据传输之前还包括:
所述触发状态机触发指令发送状态机发送指令;
所述指令发送状态机向所述存储器发送传输命令和传输地址;
所述触发状态机在所述指令发送状态机发送指令之后,触发所述传输状态机进行数据传输以及ECC操作。
11.如权利要求7所述的方法,其特征在于,所述传输状态机完成数据传输之后还包括:
所述触发状态机触发处理状态机进行指令确认;
所述处理状态机与所述存储器进行状态确认。
CN201110406852.7A 2011-12-08 2011-12-08 与存储器传输数据的装置及其传输数据的方法 Active CN103164361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110406852.7A CN103164361B (zh) 2011-12-08 2011-12-08 与存储器传输数据的装置及其传输数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110406852.7A CN103164361B (zh) 2011-12-08 2011-12-08 与存储器传输数据的装置及其传输数据的方法

Publications (2)

Publication Number Publication Date
CN103164361A CN103164361A (zh) 2013-06-19
CN103164361B true CN103164361B (zh) 2016-01-13

Family

ID=48587460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110406852.7A Active CN103164361B (zh) 2011-12-08 2011-12-08 与存储器传输数据的装置及其传输数据的方法

Country Status (1)

Country Link
CN (1) CN103164361B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107797821B (zh) * 2016-09-05 2021-10-08 上海宝存信息科技有限公司 重试读取方法以及使用该方法的装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882119A (zh) * 2009-05-08 2010-11-10 炬力集成电路设计有限公司 与非型闪存控制器及其数据传输方法
CN101916237A (zh) * 2010-06-29 2010-12-15 航天恒星科技有限公司 一种pci总线dma高速数据传输方法
CN102004711A (zh) * 2010-11-17 2011-04-06 北京理工大学 一种基于fpga的单中断实时数据传输方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882119A (zh) * 2009-05-08 2010-11-10 炬力集成电路设计有限公司 与非型闪存控制器及其数据传输方法
CN101916237A (zh) * 2010-06-29 2010-12-15 航天恒星科技有限公司 一种pci总线dma高速数据传输方法
CN102004711A (zh) * 2010-11-17 2011-04-06 北京理工大学 一种基于fpga的单中断实时数据传输方法

Also Published As

Publication number Publication date
CN103164361A (zh) 2013-06-19

Similar Documents

Publication Publication Date Title
JP4182993B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN104220991B (zh) 用于允许数据在nand闪存上的有效存储的架构
CN103403681A (zh) 描述符调度器
CN102004698B (zh) 一种闪存管理方法及系统
CN102193885A (zh) 支持虚拟信道的非挥发性存储器控制器
CN106951289A (zh) 一种在线升级方法、dsp控制器及升级系统
EP2378431B1 (en) Nandflash controller and data transmission method thereof
CN102723099A (zh) 包括用于处理多命令描述符块以便利用并发性的主机接口的闪存装置
US20150261444A1 (en) Memory system and information processing device
CN111108488B (zh) 内存块回收方法和装置
CN101477443B (zh) 与非闪存控制系统和控制方法
CN101334756A (zh) 非易失性存储器的控制装置及其控制方法以及存储装置
US20130173997A1 (en) Memory controller, memory system, and memory write method
US20140297949A1 (en) Disk array device
CN100490015C (zh) 一种访问与非型闪存的系统及方法
EP1701358B1 (en) Data write-in method for flash memory
CN102750241A (zh) 一种上位机和下位机之间的通信方法及系统
CN112771492A (zh) 支持非确定性命令的存储器子系统
CN103106155B (zh) 存储器储存装置、存储器控制器与其数据传输方法
US10365834B2 (en) Memory system controlling interleaving write to memory chips
CN103164361B (zh) 与存储器传输数据的装置及其传输数据的方法
CN102023811A (zh) 对闪存下达程序化指令的方法、控制器与储存系统
CN109426445A (zh) 用以优化数据储存装置的数据储存方法及其数据储存装置
CN102012788A (zh) 下达读取指令与数据读取方法、闪存控制器与储存系统
JP2008077625A (ja) ユーザ定義の拡張演算を処理する演算システムおよび方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: JUXIN(ZHUHAI) TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: JULI INTEGRATED CIRCUIT DESIGN CO., LTD.

Effective date: 20141212

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20141212

Address after: 519085, C, No. 1, No. four, 1 hi tech Zone, Tang Wan Town, Guangdong, Zhuhai

Applicant after: ACTIONS (ZHUHAI) TECHNOLOGY Co.,Ltd.

Address before: 519085 hi tech Zone, Guangdong, Zhuhai science and Technology Innovation Coast Road, No. four, No. 1

Applicant before: Juli Integrated Circuit Design Co., Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province

Patentee after: ACTIONS TECHNOLOGY Co.,Ltd.

Address before: 519085 High-tech Zone, Tangjiawan Town, Zhuhai City, Guangdong Province

Patentee before: ACTIONS (ZHUHAI) TECHNOLOGY Co.,Ltd.