CN106776104A - 一种Nand Flash控制器和终端以及控制Nand Flash的方法 - Google Patents

一种Nand Flash控制器和终端以及控制Nand Flash的方法 Download PDF

Info

Publication number
CN106776104A
CN106776104A CN201610994244.5A CN201610994244A CN106776104A CN 106776104 A CN106776104 A CN 106776104A CN 201610994244 A CN201610994244 A CN 201610994244A CN 106776104 A CN106776104 A CN 106776104A
Authority
CN
China
Prior art keywords
nand flash
data
write
register
dpram
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.)
Granted
Application number
CN201610994244.5A
Other languages
English (en)
Other versions
CN106776104B (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.)
Datang Microelectronics Technology Co Ltd
Datang Semiconductor Design Co Ltd
Original Assignee
Datang Microelectronics Technology Co Ltd
Datang Semiconductor Design 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 Datang Microelectronics Technology Co Ltd, Datang Semiconductor Design Co Ltd filed Critical Datang Microelectronics Technology Co Ltd
Priority to CN201610994244.5A priority Critical patent/CN106776104B/zh
Publication of CN106776104A publication Critical patent/CN106776104A/zh
Application granted granted Critical
Publication of CN106776104B publication Critical patent/CN106776104B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种快闪记忆体(Nand Flash)控制器和终端以及控制Nand Flash的方法和装置,包括:第一寄存器,第三寄存器,Nand Flash状态机电路,用于解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入双口随机存取存储器DPRAM信号输入输出电路中,并写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码写入到Nand Flash中;DPRAM信号输入输出电路,用于存储Nand Flash状态机电路写入的数据;ECC产生模块包括编码子模块和寄存器组;编码子模块,用于在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入Nand Flash的数据进行编码运算得到冗余码,并存入寄存器组。

Description

一种Nand Flash控制器和终端以及控制Nand Flash的方法
技术领域
本文涉及但不限于存储技术,尤指一种快闪记忆体(Nand Flash)控制器和终端以及控制Nand Flash的方法。
背景技术
快闪记忆体(Nand Flash)在手机、移动存储卡等大容量存储设备中得到了广泛的使用。如图1所示,为了保证数据读出时能进行误码检测和纠正,通常都是在数据写入NandFlash时,需要按一定规则写入一部分冗余数据,用纠错编解码电路进行错误检查和纠正(ECC,Error Code Correction)控制。
相关的技术方案:
相关用于Nand Flash控制器的纠错编解码电路对于ECC的纠错能力不可配置,适应性会受到影响,随着纠错能力增加,纠错编解码电路的面积也会增加许多,这个时候NandFlash控制器的功耗产生的影响会比较明显。
对于功耗较大的问题,可以通过时钟降频,时钟反向等方式降低Nand Flash控制器的功耗,但是对于数据容量较大,纠错能力较强的ECC算法,降频会影响到编解码的时间,从而影响到读写速度,而相关提出的Nand Flash控制器都是功耗低,面积小,对应的ECC能力也比较弱。
目前国内外关于Nand Flash控制器电路的研究和设计存在以下几个缺陷:
第一,可扩展性差,这是因为绝大多数的Nand Flash控制器中的纠错编解码电路都是基于某一个具体的应用***或者某一款具体的Nand Flash来设计的。
第二,适应性差,有些Nand Flash控制器没有数据校验功能,或者ECC校验能力较低,不能满足较大容量的Nand Flash纠错要求。
第三,功耗高,这主要是因为很多ECC的设计为了追求功能而使用了大量的寄存器,同时又不注意降低功耗。
第四,传输速度慢。有些控制器的设计在低功耗设计中采用了降频等方式,以速度为代价换取了功耗的降低。
发明内容
本发明实施例提出了一种Nand Flash控制器和终端以及控制Nand Flash的方法,能够提高Nand Flash控制器的可扩展性。
本发明实施例提出了一种快闪记忆体Nand Flash控制器,包括:
第一寄存器,用于存储CPU存入的命令;
第三寄存器,用于存储需要写入Nand Flash的数据;
Nand Flash状态机电路,用于解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入双口随机存取存储器DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据写入NandFlash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;
DPRAM信号输入输出电路,用于存储Nand Flash状态机电路写入的数据;
ECC产生模块包括编码子模块和寄存器组;
编码子模块,用于在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入NandFlash的数据进行编码运算得到冗余码,将计算得到的冗余码存入寄存器组;
寄存器组,用于存储编码子模块写入的冗余码。
可选的,所述Nand Flash控制器还包括:
第二寄存器,用于存取CPU存入读取的数据的地址;
所述Nand Flash状态机电路还用于:
当所述解析得到的命令为读取命令时,根据所述第二寄存器中的地址以第三预设长度为单位依次读取Nand Flash中需要读取的数据及对应的冗余码,并将读取的数据和冗余码写入DPRAM信号输入输出电路中,直到将长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中;当接收到编码子模块的纠正完成的信号,控制***接口及中断电路产生中断信号;当CPU从第三寄存器中读取数据时,将DPRAM信号输入输出电路中纠正后的数据写入第三寄存器中;
所述ECC产生模块还包括解码子模块;
所述解码子模块,用于根据DPRAM信号输入输出电路中的冗余码对读取的第二预设长度的数据进行纠正,向Nand Flash状态机电路发送纠正完成的信号。
可选的,所述Nand Flash状态机电路还用于:
当所述解析得到的命令为写入命令时,控制所述ECC产生模块中的解码子模块为非工作状态;
当所述解析得到的命令为读取命令时,控制所述ECC产生模块中的编码子模块为非工作状态。
可选的,所述寄存器组的个数为N个;N为大于或等于1的整数;
所述Nand Flash状态机电路还用于:
当所述解析得到的命令为写入命令时,根据预先配置的纠错能力确定需要的寄存器组的个数,将需要的寄存器组设置为工作状态,将其他的寄存器组设置为非工作状态。
可选的,所述Nand Flash状态机电路还用于:
当所述解析得到的命令为设置指令时,根据设置指令设置对应的参数。
可选的,所述Nand Flash状态机电路具体用于:
解析所述第一寄存器中的命令,当所述解析得到的命令为写入命令时,将所述第三寄存器中需要写入Nand Flash的数据中长度为第二预设长度的整数倍的数据写入所述DPRAM信号输入输出电路中,并将所述DPRAM信号输入输出电路中长度为第二预设长度的整数倍的数据中第二预设长度的数据以第三预设长度为单位依次写入所述Nand Flash中;
在将第二预设长度的数据写入所述Nand Flash后,读取所述ECC产生模块中的寄存器组中的冗余码,将所述冗余码写入到所述Nand Flash中;
继续执行将长度为第二预设长度的整数倍的数据中下一个第二预设长度的数据以第三预设长度为单位依次写入Nand Flash中的步骤,直到将长度为第二预设长度的整数倍的数据及其对应的冗余码全部写入Nand Flash;
继续执行将需要写入Nand Flash的数据中下一个长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中的步骤,直到将需要写入Nand Flash的数据全部写入DPRAM信号输入输出电路中。
可选的,所述Nand Flash状态机电路具体用于:
以第一预设长度为单位依次将需要写入Nand Flash的数据写入DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据以第三预设长度为单位依次写入Nand Flash中;
在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;
继续执行以第一预设长度为单位依次将需要写入Nand Flash的数据写入DPRAM信号输入输出电路中的步骤,直到将需要写入Nand Flash的数据全部写入DPRAM信号输入输出电路中。
可选的,所述纠错能力包括:
512字节Bytes数据纠正4比特bits或8bits或15bits错误,或1K Bytes数据纠正24bits或40bits或60bits错误。
本发明实施例还提出了一种终端,包括:上述任意一个快闪记忆体Nand Flash控制器;
还包括:
Nand Flash,用于存储CPU写入的数据;
CPU,用于将命令存入第一寄存器;当存入的命令为写入命令时,将需要写入NandFlash的数据存入第三寄存器;当存入的命令为读取命令时,将读取的数据的地址存入第二寄存器。
可选的,所述CPU还用于:
检测到***接口及中断电路产生的中断信号后,从所述第三寄存器中读取数据。
可选的,所述CPU还用于:
接收到来自用户的设置指令,将设置指令存入所述第一寄存器。
本发明实施例还提出了一种控制快闪记忆体Nand Flash的方法,包括:
CPU将写入命令存入Nand Flash控制器的第一寄存器,将需要写入Nand Flash的数据存入Nand Flash控制器的第三寄存器;
Nand Flash控制器的Nand Flash状态机电路解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入双口随机存取存储器DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;
Nand Flash控制器的ECC产生模块的编码子模块在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入Nand Flash的数据进行编码运算得到冗余码,将计算得到的冗余码存入ECC产生模块的寄存器组。
可选的,还包括:
所述CPU将读取命令存入Nand Flash控制器的第一寄存器,将读取的数据的地址存入Nand Flash控制器的第二寄存器;
所述Nand Flash状态机电路解析第一寄存器中的命令,当所述解析得到的命令为读取命令时,根据所述第二寄存器中的地址以第三预设长度为单位依次读取Nand Flash中需要读取的数据及对应的冗余码,并将读取的数据和冗余码写入DPRAM信号输入输出电路中,直到将长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中;
所述Nand Flash控制器的ECC产生模块的解码子模块根据DPRAM信号输入输出电路中的冗余码对读取的第二预设长度的数据进行纠正,向Nand Flash状态机电路发送纠正完成的信号;
当所述Nand Flash状态机电路接收到编码子模块的纠正完成的信号,控制***接口及中断电路产生中断信号;
所述CPU检测到所述Nand Flash控制器的***接口及中断电路产生的中断信号后,从所述第三寄存器中读取数据;
当CPU从第三寄存器中读取数据时,所述Nand Flash状态机电路将DPRAM信号输入输出电路中纠正后的数据写入所述第三寄存器中。
与相关技术相比,本发明实施例的技术方案包括:第一寄存器,用于存储CPU存入的命令;第三寄存器,用于存储需要写入Nand Flash的数据;Nand Flash状态机电路,用于解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入双口随机存取存储器DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;DPRAM信号输入输出电路,用于存储Nand Flash状态机电路写入的数据;ECC产生模块包括编码子模块和寄存器组;编码子模块,用于在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入Nand Flash的数据进行编码运算得到冗余码,将计算得到的冗余码存入寄存器组;寄存器组,用于存储编码子模块写入的冗余码。通过本发明实施例的方案,ECC产生模块的纠错能力可配置,从而提高了Nand Flash控制器的可扩展性。
可选的,通过控制解码子模块和编码子模块不同时工作,降低了Nand Flash控制器的功耗。
可选的,通过控制部分寄存器组处于工作状态,其他寄存器组处于非工作状态,进一步降低了Nand Flash控制器的功耗。
可选的,在CPU将需要写入Nand Flash的数据存入第三寄存器的过程中,NandFlash控制器同时将数据写入Nand Flash中,从而提高了写入的速度。
可选的,Nand Flash控制器最高可支持1K Bytes纠正60bits,提高了Nand Flash控制器的纠错能力。
附图说明
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本发明的进一步理解,与说明书一起用于解释本发明,并不构成对本发明保护范围的限制。
图1为相关技术Nand Flash控制器的结构组成示意图;
图2为本发明实施例Nand Flash控制器的结构组成示意图;
图3为本发明实施例Nand Flash状态机电路控制寄存器组的工作状态的示意图;
图4为本发明实施例终端的结构组成示意图;
图5为本发明实施例控制Nand Flash的方法的流程图。
具体实施方式
为了便于本领域技术人员的理解,下面结合附图对本发明作进一步的描述,并不能用来限制本发明的保护范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。
参见图2,本发明实施例提出了一种Nand Flash控制器,包括:
第一寄存器、第三寄存器、***接口及中断电路、Nand Flash状态机电路、双口随机存取存储器(DPRAM,Double Port Random Access Memory)信号输入输出电路、ECC产生模块。
其中,第一寄存器用于存储CPU存入的命令。
其中,CPU存入的命令如重置(reset)、读取(read)、檫除(erase)、写入(write)等。
其中,当CPU存入的命令为写入时,CPU可以先将写入开始命令存入第一寄存器,然后将需要写入的数据存入第三寄存器,在CPU将所有需要写入的数据存入第三寄存器后,CPU将写入结束命令存入第一寄存器。
其中,需要写入的数据的长度可以由用户设置,也可以设置为固定值。用户设置的需要写入的数据的长度不能超过Nand Flash一页的长度,不同规格的Nand Flash一页的长度不相同。
其中,CPU可以一次性将需要写入的数据存入第三寄存器中,也可以将需要写入的数据以第一预设长度为单位依次存入第三寄存器中,以提高写入速率。
其中,第一预设长度可以由用户进行设置,也可以设置为固定值。例如,用户可以将第一预设长度设置为32比特(bit),当然,第一预设长度也可以是其他的值,本发明实施例对此不作限定。
当CPU存入的命令为读取时,CPU还将读取的数据的地址存入第二寄存器。
其中,第三寄存器用于存储需要写入Nand Flash的数据和/或从Nand Flash读取的数据。
其中,Nand Flash状态机电路,用于解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中。
其中,第二预设长度可以由用户进行设置,也可以设置为固定值。例如,用户可以将第二预设长度设置为2n字节(byte),例如,1k byte或512byte等。
其中,当CPU一次性将需要写入的数据存入第三寄存器中时,Nand Flash状态机电路具体用于:
解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据中长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中长度为第二预设长度的整数倍的数据中第二预设长度的数据以第三预设长度为单位依次写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;继续执行将长度为第二预设长度的整数倍的数据中下一个第二预设长度的数据以第三预设长度为单位依次写入Nand Flash中的步骤,直到将长度为第二预设长度的整数倍的数据及其对应的冗余码全部写入Nand Flash;继续执行将需要写入Nand Flash的数据中下一个长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中的步骤,直到将需要写入Nand Flash的数据全部写入DPRAM信号输入输出电路中。
其中,第三预设长度可以由用户设置,也可以设置为固定值。例如,用户可以将第三预设长度设置为8bits或者16bits。
当CPU将需要写入的数据以第一预设长度为单位依次存入第三寄存器中时,NandFlash状态机电路具体用于:
以第一预设长度为单位依次将需要写入Nand Flash的数据写入DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据以第三预设长度为单位依次写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;继续执行以第一预设长度为单位依次将需要写入Nand Flash的数据写入DPRAM信号输入输出电路中的步骤,直到将需要写入Nand Flash的数据全部写入DPRAM信号输入输出电路中。
其中,Nand Flash状态机电路将冗余码写入到Nand Flash中时,可以将冗余码写到Nand Flash中与第二预设长度的数据相邻的位置。
其中,DPRAM信号输入输出电路,用于存储Nand Flash状态机电路写入的数据。
其中,ECC产生模块包括编码子模块和寄存器组。
其中,编码子模块用于在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入Nand Flash的数据进行编码运算得到冗余码,将计算得到的冗余码存入寄存器组。
其中,纠错能力可以由用户进行设置,也可以设置为固定值。例如,用户可以将纠错能力设置为512Bytes数据纠正4bits或8bits或15bits错误,或1K Bytes数据纠正24bits或40bits或60bits错误,当然,纠错能力也可以是其他值,本发明实施例对此不作限定。
对于不同的纠错能力,用于进行编码运算的编码电路是独立的,而512Bytes共用一个解码电路,1K Bytes共用一个解码电路。
寄存器组,用于存储编码子模块写入的冗余码。
其中,编码子模块可以以第四预设长度为单位依次对需要写入Nand Flash的数据进行编码运算,每一次编码运算得到的数据写入寄存器组中;下一次继续根据寄存器组中的数据对长度为第四预设长度的数据进行编码计算,直到对长度为第二预设长度的数据进行编码计算完成,写入寄存器组中的数据即为第二预设长度的数据的冗余码。
其中,第四预设长度可以由用户进行设置,也可以设置为固定值。例如,用户可以将第四预设长度设置为16bit,当然,第四预设长度也可以是其他的值,本发明实施例对此不作限定。
可选的,Nand Flash控制器还包括第二寄存器,用于存取CPU存入的读取的数据的地址。
Nand Flash状态机电路还用于:
当解析得到的命令为读取命令时,根据第二寄存器中的地址以第三预设长度为单位依次读取Nand Flash中需要读取的数据及对应的冗余码,并将读取的数据和冗余码写入DPRAM信号输入输出电路中,直到将长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中;当接收到编码子模块的纠正完成的信号,控制***接口及中断电路产生中断信号;当CPU从第三寄存器中读取数据时,将DPRAM信号输入输出电路中纠正后的数据写入第三寄存器中。
ECC产生模块还包括解码子模块,解码子模块用于根据DPRAM信号输入输出电路中的冗余码对读取的第二预设长度的数据进行纠正,向Nand Flash状态机电路发送纠正完成的信号。
第三预设长度可以由用户设置,也可以设置为固定值。例如,用户可以将第三预设长度设置为8bit或16bit,当然,第三预设长度也可以取其他的值,本发明实施例对此不作限定。
其中,CPU检测到***接口及中断电路产生的中断信号后,从第三寄存器中读取数据。
可选的,Nand Flash状态机电路还用于:
当解析得到的命令为写入命令时,控制ECC产生模块中的解码子模块为非工作状态;当解析得到的命令为读取命令时,控制ECC产生模块中的编码子模块为非工作状态。
其中,Nand Flash状态机电路可以通过控制解码子模块的工作时钟来控制解码子模块为非工作状态,例如,将解码子模块的工作时钟设置为低电平,使得解码子模块处于非工作状态。
Nand Flash状态机电路可以通过控制编码子模块的工作时钟来控制编码子模块为非工作状态,例如,将编码子模块的工作时钟设置为低电平,使得解码子模块处于非工作状态。
通过对Nand Flash控制器进行功耗仿真可知,Nand Flash控制器的瞬态峰值功耗为1.76瓦(W),平均功耗电流为60毫安(mA),并且Nand Flash控制器的大功耗主要在ECC产生模块工作期间产生,因此,本发明实施例中Nand Flash状态机电路通过控制编码子模块和解码子模块的工作状态使得编码子模块和解码子模块不同时工作,从而降低了NandFlash控制器的功耗。
采用上述方法后再次对Nand Flash控制器进行功耗仿真后,瞬态峰值功耗降为0.9W,平均功耗电流降为40mA。
可选的,寄存器组的个数为N个,N为大于或等于1的整数。
每一组寄存器的存储空间可以根据实际需求进行配置,本发明实施例对此不作限定。例如,当寄存器组的个数为6个时,可以配置第一组寄存器的存储空间为52bits,第二组寄存器的存储空间为52bits,第三组寄存器的存储空间为91bits,第四组寄存器的存储空间为141bits,第五组寄存器的存储空间为224bits,第六组寄存器的存储空间为280bits。
Nand Flash状态机电路还用于:
当解析得到的命令为写入命令时,根据预先配置的纠错能力确定需要的寄存器组的个数,将需要的寄存器组设置为工作状态,将其他的寄存器组设置为非工作状态。
例如,如图3所示,通过多路选择器(MUX,multiplexer)电路来控制寄存器组的工作状态,MUX电路实际上是一个与门电路,当解析得到的命令为写入命令时,编码子模块处于工作状态,即编码子模块的时钟为有效时钟,这时候,如果置位寄存器组的使能端,则寄存器组处于工作状态,如果不置位寄存器组的使能端,则寄存器组处于非工作状态。
上述方法中,通过设置多个寄存器组来满足不同的纠错能力,并且通过控制不需要的寄存器组为非工作状态,从而降低了Nand Flash控制器的功耗。
可选的,当CPU接收到来自用户的设置指令时,CPU将设置指令存入第一寄存器。
Nand Flash状态机电路还用于:
当解析得到的命令为设置指令时,根据设置指令设置对应的参数。
其中,设置指令中包括:设置的参数、该参数的取值。
其中,设置的参数可以是第一预设长度、第二预设长度、第三预设长度、需要写入的数据的长度、第四预设长度、纠错能力中的任意一个或多个。
例如,需要写入的数据的长度的取值可以为小于或等于Nand Flash一页的长度,第一预设长度的取值可以为32bit,第二预设长度的取值可以为2nbyte,第三预设长度的取值可以为8bits或者16bits,纠错能力的取值可以为512Bytes数据纠正4bits或8bits或15bits错误,或1K Bytes数据纠正24bits或40bits或60bits,第四预设长度可以为16bits。
当然,上述取值仅仅是一个示例,本发明实施例对具体的取值没有限定。
参见图4,本发明实施例还提出了一种终端,包括:
上述任意一个Nand Flash控制器;
终端还包括:
Nand Flash,用于存储CPU写入的数据;
CPU,用于将命令存入第一寄存器;当存入的命令为写入命令时,将需要写入NandFlash的数据存入第三寄存器;当存入的命令为读取命令时,将读取的数据的地址存入第二寄存器。
可选的,CPU还用于:
检测到***接口及中断电路产生的中断信号后,从所述第三寄存器中读取数据。
可选的,CPU还用于:
接收到来自用户的设置指令,将设置指令存入所述第一寄存器。
参见图5,本发明实施例还提出了一种控制Nand Flash的方法,包括:
步骤500、CPU将写入命令存入Nand Flash控制器的第一寄存器,将需要写入NandFlash的数据存入Nand Flash控制器的第三寄存器。
本步骤中,CPU可以一次性将需要写入的数据存入第三寄存器中,也可以将需要写入的数据以第一预设长度为单位依次存入第三寄存器中,以提高写入速率。
其中,第一预设长度可以由用户进行设置,也可以设置为固定值。例如,用户可以将第一预设长度设置为32比特(bit),当然,第一预设长度也可以是其他的值,本发明实施例对此不作限定。
步骤501、Nand Flash控制器的Nand Flash状态机电路解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入双口随机存取存储器DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入NandFlash的数据写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中。
步骤502、Nand Flash控制器的ECC产生模块的编码子模块在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入Nand Flash的数据进行编码运算得到冗余码,将计算得到的冗余码存入ECC产生模块的寄存器组。
可选的,该方法还包括:
所述CPU将读取命令存入Nand Flash控制器的第一寄存器,将读取的数据的地址存入Nand Flash控制器的第二寄存器;
所述Nand Flash状态机电路解析第一寄存器中的命令,当所述解析得到的命令为读取命令时,根据所述第二寄存器中的地址以第三预设长度为单位依次读取Nand Flash中需要读取的数据及对应的冗余码,并将读取的数据和冗余码写入DPRAM信号输入输出电路中,直到将长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中;
所述Nand Flash控制器的ECC产生模块的解码子模块根据DPRAM信号输入输出电路中的冗余码对读取的第二预设长度的数据进行纠正,向Nand Flash状态机电路发送纠正完成的信号;
当所述Nand Flash状态机电路接收到编码子模块的纠正完成的信号,控制***接口及中断电路产生中断信号;
所述CPU检测到所述Nand Flash控制器的***接口及中断电路产生的中断信号后,从所述第三寄存器中读取数据;
当CPU从第三寄存器中读取数据时,所述Nand Flash状态机电路将DPRAM信号输入输出电路中纠正后的数据写入所述第三寄存器中。
可选的,该方法还包括:
当Nand Flash状态机电路解析得到的命令为写入命令时,Nand Flash状态机电路控制ECC产生模块中的解码子模块为非工作状态;当Nand Flash状态机电路解析得到的命令为读取命令时,Nand Flash状态机电路控制ECC产生模块中的编码子模块为非工作状态。
可选的,当寄存器组的个数大于或等于2时,该方法还包括:
当Nand Flash状态机电路解析得到的命令为写入命令时,Nand Flash状态机电路根据预先配置的纠错能力确定需要的寄存器组的个数,将需要的寄存器组设置为工作状态,将其他的寄存器组设置为非工作状态。
可选的,该方法之前还包括:
当CPU接收到来自用户的设置指令时,CPU将设置指令存入第一寄存器;当NandFlash状态机电路解析得到的命令为设置指令时,根据设置指令设置对应的参数。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本发明的保护范围,在不脱离本发明的发明构思的前提下,本领域技术人员对本发明所做出的任何显而易见的替换和改进等均在本发明的保护范围之内。

Claims (13)

1.一种快闪记忆体Nand Flash控制器,其特征在于,包括:
第一寄存器,用于存储CPU存入的命令;
第三寄存器,用于存储需要写入Nand Flash的数据;
Nand Flash状态机电路,用于解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入双口随机存取存储器DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据写入NandFlash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;
DPRAM信号输入输出电路,用于存储Nand Flash状态机电路写入的数据;
ECC产生模块包括编码子模块和寄存器组;
编码子模块,用于在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入NandFlash的数据进行编码运算得到冗余码,将计算得到的冗余码存入寄存器组;
寄存器组,用于存储编码子模块写入的冗余码。
2.根据权利要求1所述的Nand Flash控制器,其特征在于,所述Nand Flash控制器还包括:
第二寄存器,用于存取CPU存入读取的数据的地址;
所述Nand Flash状态机电路还用于:
当所述解析得到的命令为读取命令时,根据所述第二寄存器中的地址以第三预设长度为单位依次读取Nand Flash中需要读取的数据及对应的冗余码,并将读取的数据和冗余码写入DPRAM信号输入输出电路中,直到将长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中;当接收到编码子模块的纠正完成的信号,控制***接口及中断电路产生中断信号;当CPU从第三寄存器中读取数据时,将DPRAM信号输入输出电路中纠正后的数据写入第三寄存器中;
所述ECC产生模块还包括解码子模块;
所述解码子模块,用于根据DPRAM信号输入输出电路中的冗余码对读取的第二预设长度的数据进行纠正,向Nand Flash状态机电路发送纠正完成的信号。
3.根据权利要求1或2所述的Nand Flash控制器,其特征在于,所述Nand Flash状态机电路还用于:
当所述解析得到的命令为写入命令时,控制所述ECC产生模块中的解码子模块为非工作状态;
当所述解析得到的命令为读取命令时,控制所述ECC产生模块中的编码子模块为非工作状态。
4.根据权利要求1或2所述的Nand Flash控制器,其特征在于,所述寄存器组的个数为N个;N为大于或等于1的整数;
所述Nand Flash状态机电路还用于:
当所述解析得到的命令为写入命令时,根据预先配置的纠错能力确定需要的寄存器组的个数,将需要的寄存器组设置为工作状态,将其他的寄存器组设置为非工作状态。
5.根据权利要求1或2所述的Nand Flash控制器,其特征在于,所述Nand Flash状态机电路还用于:
当所述解析得到的命令为设置指令时,根据设置指令设置对应的参数。
6.根据权利要求1或2所述的Nand Flash控制器,其特征在于,所述Nand Flash状态机电路具体用于:
解析所述第一寄存器中的命令,当所述解析得到的命令为写入命令时,将所述第三寄存器中需要写入Nand Flash的数据中长度为第二预设长度的整数倍的数据写入所述DPRAM信号输入输出电路中,并将所述DPRAM信号输入输出电路中长度为第二预设长度的整数倍的数据中第二预设长度的数据以第三预设长度为单位依次写入所述Nand Flash中;
在将第二预设长度的数据写入所述Nand Flash后,读取所述ECC产生模块中的寄存器组中的冗余码,将所述冗余码写入到所述Nand Flash中;
继续执行将长度为第二预设长度的整数倍的数据中下一个第二预设长度的数据以第三预设长度为单位依次写入Nand Flash中的步骤,直到将长度为第二预设长度的整数倍的数据及其对应的冗余码全部写入Nand Flash;
继续执行将需要写入Nand Flash的数据中下一个长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中的步骤,直到将需要写入Nand Flash的数据全部写入DPRAM信号输入输出电路中。
7.根据权利要求1或2所述的Nand Flash控制器,其特征在于,所述Nand Flash状态机电路具体用于:
以第一预设长度为单位依次将需要写入Nand Flash的数据写入DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据以第三预设长度为单位依次写入Nand Flash中;
在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;
继续执行以第一预设长度为单位依次将需要写入Nand Flash的数据写入DPRAM信号输入输出电路中的步骤,直到将需要写入Nand Flash的数据全部写入DPRAM信号输入输出电路中。
8.根据权利要求1或2所述的Nand Flash控制器,其特征在于,所述纠错能力包括:
512字节Bytes数据纠正4比特bits或8bits或15bits错误,或1K Bytes数据纠正24bits或40bits或60bits错误。
9.一种终端,其特征在于,包括:权利要求1~8任意一项所述的快闪记忆体Nand Flash控制器;
还包括:
Nand Flash,用于存储CPU写入的数据;
CPU,用于将命令存入第一寄存器;当存入的命令为写入命令时,将需要写入NandFlash的数据存入第三寄存器;当存入的命令为读取命令时,将读取的数据的地址存入第二寄存器。
10.根据权利要求9所述的终端,其特征在于,所述CPU还用于:
检测到***接口及中断电路产生的中断信号后,从所述第三寄存器中读取数据。
11.根据权利要求9所述的终端,其特征在于,所述CPU还用于:
接收到来自用户的设置指令,将设置指令存入所述第一寄存器。
12.一种控制快闪记忆体Nand Flash的方法,其特征在于,包括:
CPU将写入命令存入Nand Flash控制器的第一寄存器,将需要写入Nand Flash的数据存入Nand Flash控制器的第三寄存器;
Nand Flash控制器的Nand Flash状态机电路解析第一寄存器中的命令,当解析得到的命令为写入命令时,将第三寄存器中需要写入Nand Flash的数据写入双口随机存取存储器DPRAM信号输入输出电路中,并将DPRAM信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash中;在将第二预设长度的数据写入Nand Flash后,读取ECC产生模块中的寄存器组中的冗余码,将冗余码写入到Nand Flash中;
Nand Flash控制器的ECC产生模块的编码子模块在Nand Flash状态机电路将DPRAN信号输入输出电路中需要写入Nand Flash的数据写入Nand Flash的过程中,根据预先配置的纠错能力对需要写入Nand Flash的数据进行编码运算得到冗余码,将计算得到的冗余码存入ECC产生模块的寄存器组。
13.根据权利要求12所述的方法,其特征在于,还包括:
所述CPU将读取命令存入Nand Flash控制器的第一寄存器,将读取的数据的地址存入Nand Flash控制器的第二寄存器;
所述Nand Flash状态机电路解析第一寄存器中的命令,当所述解析得到的命令为读取命令时,根据所述第二寄存器中的地址以第三预设长度为单位依次读取Nand Flash中需要读取的数据及对应的冗余码,并将读取的数据和冗余码写入DPRAM信号输入输出电路中,直到将长度为第二预设长度的整数倍的数据写入DPRAM信号输入输出电路中;
所述Nand Flash控制器的ECC产生模块的解码子模块根据DPRAM信号输入输出电路中的冗余码对读取的第二预设长度的数据进行纠正,向Nand Flash状态机电路发送纠正完成的信号;
当所述Nand Flash状态机电路接收到编码子模块的纠正完成的信号,控制***接口及中断电路产生中断信号;
所述CPU检测到所述Nand Flash控制器的***接口及中断电路产生的中断信号后,从所述第三寄存器中读取数据;
当CPU从第三寄存器中读取数据时,所述Nand Flash状态机电路将DPRAM信号输入输出电路中纠正后的数据写入所述第三寄存器中。
CN201610994244.5A 2016-11-11 2016-11-11 一种Nand Flash控制器和终端以及控制Nand Flash的方法 Active CN106776104B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610994244.5A CN106776104B (zh) 2016-11-11 2016-11-11 一种Nand Flash控制器和终端以及控制Nand Flash的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610994244.5A CN106776104B (zh) 2016-11-11 2016-11-11 一种Nand Flash控制器和终端以及控制Nand Flash的方法

Publications (2)

Publication Number Publication Date
CN106776104A true CN106776104A (zh) 2017-05-31
CN106776104B CN106776104B (zh) 2020-04-03

Family

ID=58973287

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610994244.5A Active CN106776104B (zh) 2016-11-11 2016-11-11 一种Nand Flash控制器和终端以及控制Nand Flash的方法

Country Status (1)

Country Link
CN (1) CN106776104B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108519928A (zh) * 2018-03-31 2018-09-11 北京联想核芯科技有限公司 一种动态调整ecu的处理方法和装置
CN109656845A (zh) * 2018-12-06 2019-04-19 天津津航计算技术研究所 带数据调试功能的ecc存储控制方法
CN109814888A (zh) * 2019-01-25 2019-05-28 深圳忆联信息***有限公司 NandFlash控制器EFUSE代替方法及装置
CN111813591A (zh) * 2020-07-03 2020-10-23 深圳市国微电子有限公司 Nand Flash的数据纠错方法、装置、电子设备及存储介质
CN116679887A (zh) * 2023-07-24 2023-09-01 合肥奎芯集成电路设计有限公司 用于NAND Flash的通用控制模块及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162449A (zh) * 2007-10-08 2008-04-16 福州瑞芯微电子有限公司 Nand flash控制器及其与nand flash芯片的数据交互方法
US20090070637A1 (en) * 2006-03-07 2009-03-12 Nxp B.V. Electronic circuit with a memory matrix that stores pages including extra data
CN102203740A (zh) * 2011-05-27 2011-09-28 华为技术有限公司 数据处理方法、装置及***
CN105161137A (zh) * 2015-08-27 2015-12-16 大唐微电子技术有限公司 一种MLC架构中Nand Flash控制器电路实现装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090070637A1 (en) * 2006-03-07 2009-03-12 Nxp B.V. Electronic circuit with a memory matrix that stores pages including extra data
CN101162449A (zh) * 2007-10-08 2008-04-16 福州瑞芯微电子有限公司 Nand flash控制器及其与nand flash芯片的数据交互方法
CN102203740A (zh) * 2011-05-27 2011-09-28 华为技术有限公司 数据处理方法、装置及***
CN105161137A (zh) * 2015-08-27 2015-12-16 大唐微电子技术有限公司 一种MLC架构中Nand Flash控制器电路实现装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108519928A (zh) * 2018-03-31 2018-09-11 北京联想核芯科技有限公司 一种动态调整ecu的处理方法和装置
CN109656845A (zh) * 2018-12-06 2019-04-19 天津津航计算技术研究所 带数据调试功能的ecc存储控制方法
CN109814888A (zh) * 2019-01-25 2019-05-28 深圳忆联信息***有限公司 NandFlash控制器EFUSE代替方法及装置
CN109814888B (zh) * 2019-01-25 2022-06-07 深圳忆联信息***有限公司 NandFlash控制器EFUSE代替方法及装置
CN111813591A (zh) * 2020-07-03 2020-10-23 深圳市国微电子有限公司 Nand Flash的数据纠错方法、装置、电子设备及存储介质
CN111813591B (zh) * 2020-07-03 2023-12-29 深圳市国微电子有限公司 Nand Flash的数据纠错方法、装置、电子设备及存储介质
CN116679887A (zh) * 2023-07-24 2023-09-01 合肥奎芯集成电路设计有限公司 用于NAND Flash的通用控制模块及方法
CN116679887B (zh) * 2023-07-24 2023-10-24 合肥奎芯集成电路设计有限公司 用于NAND Flash的通用控制模块及方法

Also Published As

Publication number Publication date
CN106776104B (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
CN106776104A (zh) 一种Nand Flash控制器和终端以及控制Nand Flash的方法
CN101162449B (zh) Nand flash控制器及其与nand flash芯片的数据交互方法
CN102339641B (zh) 检错/纠错校验模块及该模块读写数据的方法
EP2187315B1 (en) Method for accessing data in flash memory and data accessing controller
TWI590250B (zh) 用於組態用於混合記憶體模組之記憶體之輸入/輸出之裝置及方法
CN101853207B (zh) 存储装置
US20080195914A1 (en) Memory system and command handling method
CN104915213B (zh) 一种可重构***的局部重构控制器
CN111045703A (zh) 一种电池管理单元软件升级方法及***
CN101499325B (zh) 一种具有可变纠错能力的非易失性存储***及方法
CN111143109B (zh) 一种ecc内存管理器、方法及电子设备
CN105353671A (zh) 核电站仪控***的变量强制和释放装置及方法
CN103426452B (zh) 一种存储器级联以及封装方法及其装置
CN102568605B (zh) ***总线检错纠错方法和nand flash控制器
CN101848062A (zh) 基于mvb接口的模拟量输出模块及mvb设备
CN101201805A (zh) 串行传输控制器与串行传输解码器及其串行传输方法
CN201918981U (zh) 双相哈佛码总线信号编解码电路
CN201134270Y (zh) Nand flash控制器
CN107948747A (zh) 电源管理方法及单元、电视机
CN102789435B (zh) 串行存储器和一种划分存储区域的方法及***
CN101521956A (zh) 一种通过gpio口读写t卡的方法、***和手机
CN102543207B (zh) 一种在闪存控制器中rs纠检错算法的高效利用方法
CN102064916A (zh) 一种基于cmmb标准的字节交织方法
CN105224239A (zh) 一种flash存储器和存储***
EP4283893A1 (en) Data processing method, device, and data transmission system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant