CN114242142A - 编程装置、方法及新型存储器 - Google Patents
编程装置、方法及新型存储器 Download PDFInfo
- Publication number
- CN114242142A CN114242142A CN202111496692.XA CN202111496692A CN114242142A CN 114242142 A CN114242142 A CN 114242142A CN 202111496692 A CN202111496692 A CN 202111496692A CN 114242142 A CN114242142 A CN 114242142A
- Authority
- CN
- China
- Prior art keywords
- programming
- unit
- switch
- programmed
- clock
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/12—Programming voltage switching circuits
Abstract
本申请提供一种编程装置、方法及新型存储器。包括:编程控制单元和编程单元;编程控制单元,用于响应激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的有效存储单元,配置为编程状态,将该首单元之后的未被选中的有效存储单元配置为非编程状态;编程单元,用于按照预定周期,执行对当前被配置为编程状态的有效存储单元进行编程,直至所有有效存储单元被编程。本申请实现了任意时间段选中相同数量的部分单元,同时在一行中能够按照顺序移动,将编程完成的单元用未编程的单元替换,实现整一行待编程单元的遍历。
Description
技术领域
本申请涉及集成电路设计领域,尤其涉及一种编程装置、方法及新型存储器。
背景技术
存储器是许多存储单元的集合,按单元号顺序排列。每个单元由若干二进制位构成,以表示存储单元中存放的数值。传统存储器,如闪存存储器Flash以及动态随机存储器(Dynamic Random Access Memory,简称DRAM),其通过对单元注入电荷改变单元的阈值电压等电学特性,以存储数据“0”和数据“1”。新型存储器,如阻变式存储器(ResistiveRandom Access Memory,简称RRAM)则是根据自身电阻值在高低阻态之间的转换,实现数据的储存。
以闪存存储器为例,普遍采用整片擦除后,再对每一行进行编程。由于每一个闪存存储单元消耗的功耗较低,可以对一整行同时进行编程。具体方法是,选中某一行,将需要写入的数据先存入页锁存器中,然后对其中需要编程的单元同时进行写入。
然而,上述对整行同时编程的方法并不适用于新型存储器,由于新型存储器中单个阻变单元的编程电流很高,同时进行编程导致电流过大,存在芯片因发热过大而烧毁的风险。
发明内容
本申请提供一种编程装置、方法及新型存储器,用以解决新型存储器的编程问题。
第一方面,本申请提供一种编程装置,包括:编程控制单元和编程单元;
编程控制单元,用于响应激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的有效存储单元,配置为编程状态,将该首单元之后的未被选中的有效存储单元配置为非编程状态;
编程单元,用于按照预定周期,执行对当前被配置为编程状态的有效存储单元进行编程,直至所有有效存储单元被编程。
第二方面,本申请提供一种编程方法,应用于编程装置,编程装置包括编程控制单元和编程单元;方法包括:编程控制单元响应于激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行以下处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的有效存储单元,配置为编程状态,将该首单元之后的未被选中的有效存储单元配置为非编程状态;编程单元按照预定周期,执行对当前被配置为编程状态的有效存储单元进行编程,直至所有有效存储单元被编程。
第三方面,本申请提供一种硬件代码产品,包括硬件代码,硬件代码被处理器执行时实现如第二方面的方法。
第四方面,本申请提供一种可读存储介质,可读存储介质中存储有硬件代码,硬件代码被执行时用于实现如第二方面的方法。
第五方面,本申请提供一种电子设备,包括:处理器,以及与处理器通信连接的存储器;存储器存储硬件代码;处理器执行存储器存储的硬件代码,以实现如第二方面的方法。
第六方面,本申请提供一种新型存储器,包括多个电阻型存储单元,以及如第一方面的编程装置;编程装置用以对电阻型存储单元进行编程。
本申请提供的编程装置、方法及新型存储器,包括:编程控制单元和编程单元;编程控制单元,用于响应激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的有效存储单元,配置为编程状态,将该首单元之后的未被选中的有效存储单元配置为非编程状态;编程单元,用于按照预定周期,执行对当前被配置为编程状态的有效存储单元进行编程,直至所有有效存储单元被编程。本申请通过激励时钟控制在任意时间段将预定数量的部分有效存储单元配置为编程状态,实现只对一行中的部分单元进行编程,有效控制编程总电流,避免对整行所有单元同时编程所带来的高电流导致芯片发热损坏的风险;并且在一行中能够按照顺序移动,将编程完成的单元用未编程的单元替换,实现整一行待编程单元的遍历。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为传统闪存阵列编程结构示意图;
图2为本申请提供的一种阻变式存储器阵列编程结构的示意图;
图3为本申请提供的一种编程装置的结构示意图;
图4为本申请提供的一种编程装置的工作过程示意图;
图5为本申请提供的一种编程控制单元的电路图;
图6为本申请提供的一种外部链路信号波形图;
图7为本申请提供的另一种编程装置的结构示意图;
图8为本申请提供的又一种编程装置的结构示意图;
图9为本申请提供的另一种编程控制单元的电路图;
图10为本申请提供的再一种编程装置的结构示意图;
图11为本申请提供的再一种编程控制单元的电路图;
图12为本申请提供的编程控制单元的信号时序图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与本申请的一些方面相一致的装置和方法的例子。
首先对本申请所涉及的名词进行解释:
阻变式存储器RRAM(Resistive Random Access Memory,简称RRAM):是以非导性材料的电阻在外加电场作用下,在高阻态和低阻态之间实现可逆转换为基础的非易失性存储器。
存储器是许多存储单元的集合,按单元号顺序排列。每个单元由若干二进制位构成,以表示存储单元中存放的数值。新型存储器相比较于传统存储器,在存储的方式上存在较大的不同。
传统存储器,如闪存存储器Flash以及动态随机存储器(Dynamic Random AccessMemory,简称DRAM),其存储状态主要是根据单元注入电荷与否。电荷注入会改变单元的阈值电压等电学特性,可以通过外部合适的电压负载,根据该单元是否导通来判断存储数据的值。新型存储器,如阻变式存储器(Resistive Random Access Memory,简称RRAM)则主要是根据自身电阻值的大小来作为存储信号的判决条件。
传统存储器普遍采用整片擦除后,再对每一行进行编程。示例性地,图1为传统闪存阵列编程结构示意图,如图1所示,待编程行进行编程。具体方法是,通过行地址解码器,选中某一行,将需要写入的数据先存入页锁存器中,然后对其中需要编程的单元同时进行写入。由于每一个闪存存储单元消耗的功耗较低,可以对一整行同时进行编程。
然而,新型存储器由于操作方式和特性不同,如果只是简单的替换,即对新型存储器也采用上述的整行同时编程的方法进行编程,则会存在功耗过高的问题。以阻变式存储器为例,单个阻变单元的编程电流很高,如果同时进行编程,过大的电流也会存在芯片因发热过大而烧毁的风险。
为了解决这一问题,考虑是否能够使同一时间内待编程行中只有一部分存储单元被编程。图2为本申请提供的一种阻变式存储器阵列编程结构的示意图,如图2所示,同一时间段内只对一部分阻变单元进行编程,可有效控制编程电流。
然而,图2所构思的编程方式存在如何控制选择部分阻变单元的问题。由于在外部控制选择阻变单元消耗资源较大,因此,考虑在阵列外围设置一种既可以解决单元部分选中,又可以实现单元遍历的结构。
本申请提供的编程装置、方法及新型存储器,旨在实现上述构思,提供一种既可以解决单元部分选中又可以实现单元遍历的结构。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
实施例一
图3为本申请提供的一种编程装置的结构示意图,编程装置包括:编程控制单元10和编程单元20。其中,编程控制单元10用于控制选择待编程的存储单元,编程单元20用于对被选中的存储单元进行编程。
编程控制单元10,响应于激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的有效存储单元,配置为编程状态,将该首单元之后的未被选中的有效存储单元配置为非编程状态。编程单元20,按照预定周期,执行对当前被配置为编程状态的有效存储单元进行编程,直至所有有效存储单元被编程。
具体的,图4为本申请提供的一种编程装置的工作过程示意图。当需要向存储阵列写入某一行时,页锁存器上会写入数值。其中,1表征需要编程的单元,0表征不需要编程的单元。如图4所示,第一行cell中,上标有1的cell为需要编程的存储单元。选出需要编程的单元,并将这些单元也按照顺序排列,组成有效编程单元链。
在实际编程中,所有编程操作只对这串选出的有效编程单元链起作用。需要说明的是,对页锁存器写入数值是由另外的程序或电路控制的,并不是本申请中编程控制单元10和编程单元20执行的,由于非本申请的重要发明内容,不再详细描述。
在上述有效编程单元链中,单一时间内选定N个存储单元配置为编程状态。任意编程时间内只有相邻的N个单元处于被编程状态。示例性的,如图4所示,单一时间内选定了四个有效存储单元被配置为编程状态,其他有效存储单元配置为非编程状态。编程单元20依次对选中的四个有效存储单元中的首单元进行编程。
需要说明的是,单一时间内选定数量N的存储单元配置为编程状态的操作在编程前的初始化阶段进行。一种可行的方式是通过外部链路向有效编程单元链输入时钟信号控制数量N,后续会结合编程控制单元10的电路结构进行详细阐述。
进一步地,开始编程后,参照图4,自第二行至第四行,Active cells框内为被配置为编程状态的存储单元,当对框内的第一个存储单元完成编程后,Active cells依次移动,加入另一个未编程存储单元,继续对当前Active cells框内的第一个存储单元进行编程。一直循环该种操作,直到最后一个单元完成编程,通过流水线的编程控制过程,实现了对整行待编程存储单元的遍历。
本申请实现了任意时间段选中相同数量的部分单元,有效控制编程电流,避免造成芯片发热损坏;本申请通过设置在编程装置内的控制电路,实现在一行的编程中自动流水线递进式的按照顺序移动,将编程完成的单元用未编程的单元替换,实现待编程存储单元的遍历,无需设置外部控制装置,减少了资源消耗。
下面结合电路图,对编程装置的结构和作用过程进行介绍。
图5为本申请提供的一种编程控制单元的电路图。编程控制单元10包括:由依次串联的多个触发器构成的编程单元链;其中,多个触发器与待编程行中各存储单元对应的页锁存器一一对应。
如图5所示,示出了包括四个D触发器构成的编程单元链,每个D触发器对应有一个页锁存器P.L.(Page Latch的缩写),每个页锁存器P.L.对应一个存储单元Cell。D触发器的输入端为“D”端;输出端为“Q”端;时钟端口为“CLK”端。
其中,每个触发器的时钟端口通过第一开关A连接至激励时钟,每个触发器的输出端通过第二开关B连接至下一触发器的输入端,每个触发器的输入端通过第三开关E连接至下一触发器的输入端。
图5示出了第i+1个触发器对应的第一开关Ai+1、第二开关Bi+1和第三开关Ei+1,输出值为Ci+1,其下标表征对应的触发器,依次类推,第i+2个触发器对应的第一开关Ai+2、第二开关Bi+2和第三开关Ei+2(图5中未示出),输出值为Ci+2。
各存储单元对应的页锁存器,用于基于自身的存储数据,控制对应触发器的第一开关A、第二开关B以及第三开关E的开关状态,以建立有效编程单元链;其中,处于有效编程单元链的触发器对应的存储单元为有效存储单元;其中,编程状态的有效存储单元对应的触发器被配置为第一逻辑,非编程状态的有效存储单元对应的触发器被配置为第二逻辑。后文中以第一逻辑为1,第二逻辑为0为例进行阐述。
在一个示例中,编程控制单元10还包括:多个反相器;多个反相器与多个触发器一一对应,反相器的输入端与对应页锁存器连接,反相器的输出端与对应触发器的第三开关E的控制端连接。
具体的,参照图5,页存储器基于自身的存储数据建立有效编程单元链的方法为:当页锁存器内存储数据为1,则第一开关A和第二开关B为闭合状态;第三开关E为断开状态。因此,D触发器的时钟端口可通过第一开关A接收时钟信号,当前D触发器的输出端通过第二开关B与下一个D触发器的输入端是连接的。此时,当前D触发器是连接在链路中的。
当页锁存器内存储数据为0,则第一开关A和第二开关B为断开状态;第三开关E为闭合状态。因此,D触发器的时钟端口不能接收时钟信号,当前D触发器的输出端与下一个D触发器的输入端是断开的。下一个D触发器可以通过闭合的第三开关E,接收前面D触发器输出的信号。此时,当前的D触发器被跨过去了,没有连接在链路中。
在进行编程之前,需要通过外部链路向有效编程单元链写入部分数据,选中数量N个有效存储单元并配置为编程状态,即进行初始化。运行编程后,任何时间段同时处于编程状态的有效存储单元的数量均为N,一经外部链路设定,则在编程过程中不会改变。其中,在对整个新型存储器编程即将完成时,当剩余的未完成编程的有效存储单元数量少于N时,后续的周期内处于编程状态的有效存储单元的数量会依次递减,直到完成对所有有效存储单元的编程。下文介绍的是新型存储器编程的中期过程(每个周期内数量固定为N),非特别说明,不考虑新型存储器编程末期这种特殊情况。
在实际应用过程中,该数量N需要经过实验或计算获得,该数量N过大则会造成编程电流过大,无法解决本申请的技术问题。该数量N过小,则会影响编程效率。
图6为本申请提供的一种外部链路信号波形图,参照图6,并结合图5所示的电路结构,对将数量N个有效存储单元配置为编程状态的方法进行介绍。
如图6所示,编程使能信号Prog_en用于控制阵列的是否处于编程模式。Prog_en始终处于逻辑0,使阵列不处于编程模式,进而可以在编程前通过外部链路进行初始化。链路输入信号Chain_In向D触发器的输入端D端输入信号,链路时钟信号CLK_O为D触发器提供触发上升沿激励信号。
这里利用了D触发器的电学特性,在此对D触发器的电学特性进行说明。D触发器是一个具有记忆功能的、具有两个稳定状态的信息存储器件,是构成多种时序电路的最基本逻辑单元,也是数字逻辑电路中一种重要的单元电路。触发方式有电平触发和边沿触发两种,前者在时钟脉冲=1时即可触发,后者多在时钟脉冲的前沿(正跳变0→1)时触发。D触发器包括输入端、时钟端口、输出端,时钟端口用于接收时钟信号。以边沿触发式的D触发器为例,其作用结果是:当输入端为逻辑1时,接收到上升沿激励信号的触发后,输出端输出1;当输入端为逻辑0时,接收到上升沿激励信号的触发后,输出端输出0。
初始化第一步:对页锁存器写入全1数据,使得所有的D触发器都在链路中。
初始化第二步:通过外部链路时钟控制,将所有的D触发器都写成保存逻辑0的状态。具体过程:Chain_In信号一直置为逻辑0,不间断地输入周期性链路时钟信号CLK_O,直到所有的D触发器都写成保存逻辑0的状态。
初始化第三步:在页锁存器中存入需要写入的数据,使得只有需要编程的单元对应的D触发器处于链路中,建立有效编程单元链。
初始化第四步:Chain_In信号输入端置为逻辑1,CLK_O信号提供N次时钟周期,N为任意整数,可自定义,N次周期完成后,Chain_In信号输入端置为逻辑0。这种操作的目的在于,使得有效编程单元链中的前N位D触发器处于逻辑1,而其他D触发器为逻辑0。
举例说明,以图5中四个D触发器为例,假设其对应的页存储器均为1,即该四个D触发器均处于链路中。同时,假设N=2,CLK_O信号提供2次时钟周期,也就是说CLK_O信号具有2个上升沿信号。图5中,自左向右分别是Di+1触发器、Di+2触发器、Di+3触发器、Di+4触发器。
Chain_In信号输入端置为逻辑1,Di+1触发器的输入端输入Ci信号为逻辑1,当Di+1触发器接收到CLK_O信号的第一个上升沿信号时,Di+1触发器的输出跳变至逻辑1,即Ci+1跳变至逻辑1。CLK_O信号的第一个上升沿时刻下,Di+2触发器的输出在此时刻下仍然保持逻辑0,当接收到CLK_O信号的第二个上升沿信号时,由于Ci+1为逻辑1,所以Di+2触发器的输出Ci+2跳变至逻辑1。而CLK_O信号的第二个上升沿时刻下,Ci信号依然为逻辑1,因此Di+1触发器输出Ci+1保持为逻辑1。当CLK_O信号的两个时钟周期完成后,Chain_In信号输入端置为逻辑0。有效编程单元链中D触发器的状态不会再变化。
也就是说,CLK_O信号提供2次时钟周期,可以使有效编程单元链前2个D触发器置为1。以此类推,当CLK_O信号提供3次时钟周期,可以使有效编程单元链前3个D触发器置为1。
只有D触发器和页锁存器同时为逻辑1对应的存储单元列,才会配置成编程状态的电学条件,使得对应的存储单元进入编程状态。所以初始化时,只有前N个需要编程的单元可以在阵列进入编程模式时进入编程状态,确保了任意时间处于编程状态的存储单元的数量不会多于N个。
当通过外部链路来实现设定同一时间被配置为编程状态的存储单元的数量N后,编程使能信号Prog_en信号跳变为逻辑1,使阵列处于编程模式。处于编程模式下,编程控制单元10的时钟信号则以内部时钟为基准。
示例性的,图7为本申请提供的另一种编程装置的结构示意图。编程装置还包括时钟生成单元30,用于向编程控制单元10提供激励时钟,即存在内部自建时钟。自建时钟的优势在于不需要额外的时钟产生电路来生成初始的时钟。
在上述示例的基础上,图8为本申请提供的又一种编程装置的结构示意图,时钟生成单元30包括:检测模块31和生成模块32;检测模块31,用于依次检测当前处于编程状态的首个有效存储单元是否完成编程,并输出检测结果;生成模块32,用于若检测结果表征完成编程,则控制激励时钟产生激励信号,否则,控制激励时钟不产生激励信号。
示例性的,图9为本申请提供的另一种编程控制单元的电路图。如图9所示,检测模块31包括:多个第四开关S、以及第一比较器;多个第四开关与待编程行中的存储单元一一对应;第四开关S的第一端与对应的存储单元连接,第四开关的第二端与第一比较器的同相输入端连接;第一比较器的反相输入端连接第一参考电压Vref1。其中,第四开关S用于选择检测模块31当前检测的有效存储单元,第四开关的状态取决于对应触发器的输入数据和输出数据;第一比较器的输出数据表征当前被选择的有效存储单元是否完成编程。
具体的,第四开关Si+1取决于对应的触发器输入数据Ci和输出数据Ci+1。在有效编程单元链中,所有的触发器的存储值C,除了相邻连续的N个触发器为逻辑1外,其余都是逻辑0,因此,整个链中只存在一种前一个触发器的存储值C逻辑为0,本存储器的存储值C逻辑为1的情况,即被配置为编程状态的有效存储单元的首个单元。其对应的触发器的输出数据一定为逻辑1,即Ci+1为1。而其输入数据Ci为前一个触发器的输出数据,所以一定为逻辑0。因此,检测模块31检测当前处于编程状态的首个有效存储单元。
需要说明的是,为了正确的判断存储值为C1的触发器对应的有效存储单元的编程状态,在D触发器链的最前端,存在一个额外的不与阵列中的列对应D触发器,用于存储C0值,容易理解的,其逻辑值为0。
进一步地,第一比较器的作用过程为:当其第一输入端接收的电压高于参考电压Vref1时,则输出的检测结果CO为高电平;否则为低电平。本实施例中,当被检测单元编程完成时,CO为逻辑1高电平;当没有完成编程时,CO为逻辑0。
参照图9,检测模块31还包括:第一使能开关F1;第一使能开关F1设置在第四开关与第一比较器之间;编程单元20开始编程后,第一使能开关F1为闭合状态;编程单元20编程前,第一使能开关F1为断开状态。第一使能开关F1由外部链路信号控制,外部链路信号如图6所示的Prog_en信号。Prog_en跳变为逻辑1后,阵列进行编程状态。
参照图9,生成模块32包括:第一与门、第一或门、第一延时器以及第一反相器。第一与门的第一输入端,与检测模块31的输出端连接,接收检测模块31输出的检测结果CO。第一与门的输出端与第一或门的第一输入端连接;第一或门的输出端与第一延时器的输入端连接;第一延时器的输出端与第一反相器的输入端连接;第一反相器的输出端与第一与门的第二输入端连接;其中,第一或门的第二输入端输入有第一控制信号Turn-off;根据第一控制信号以及第一与门的输出端的输出信号,第一或门的输出端输出初始激励时钟CLK_Internal。
具体的,比较器的输出CO可以作为链路自移动时钟跳变的判决标志。CO并不是直接控制时钟CLK_Internal,而是与自身的延迟逻辑进行逻辑运算后再输出时钟。控制过程为:CO=0时,Delay为1,第一与门输出0,第一或门输出0,CLK_Intrenal为0。CO跳变为1时,Delay为1,第一与门输出1,第一或门输出1,即CLK_Intrenal跳变为1。CO持续为1时,Delay为0,第一与门输出0,第一或门输出0,即CLK_Intrenal跳变为0。通过控制第一延时器,来控制CLK_Intrenal的上下跳沿间隔,避免因间隔太短产生的电路逻辑风险。CO经过第一与门、第一或门、第一延时器、第一反相器生成自身的延迟信号,经过第一与门的逻辑运算后输出。上述延迟作用有两个,一个是作为初始化时的自建时钟产生,另一个是防止单元编程过程中特殊情形时存在的时钟锁定现象。
进一步地,时钟生成单元30还包括:延时模块33;延时模块33包括第二延时器,用于对初始激励时钟CLK_Internal进行延时处理,生成激励时钟CLK_dff,作为D触发器链的时钟。
进一步地,时钟生成单元30还包括:第二使能开关F2;第二使能开关F2连接在第二延时器的输出端与编程控制单元之间;编程单元20开始编程后,第二使能开关为闭合状态;编程单元20编程前,第二使能开关为断开状态。第二使能开关F2由外部链路信号控制,外部链路信号如图6所示的Prog_en信号。
图10为本申请提供的再一种编程装置的结构示意图。编程装置还包括:报错单元40;报错单元40,用于若当前检测的有效存储单元经过预设时长后仍未完成编程,则控制时钟生成单元30输出的激励时钟CLK_dff产生激励信号。在有效存储单元出现故障而无法进行编程时,则时钟生成单元30输出的激励时钟会是持续的低电平。为了继续完成后续有效存储单元的编程,则通过报错单元强制生成模块输出的激励时钟中产生一个上升沿,跳过该故障单元,继续进行后续的编程。进一步地,报错单元40还用于输出报错信号err,提供给外部电路,作为单元异常的判决标志。
图11为本申请提供的再一种编程控制单元的电路图。报错单元40包括:第二反相器、第五开关G1、第六开关G2、第一电容、第二比较器;第二比较器的同相输入端与第一电容的第一端和第六开关G2的一端连接;第一电容的第一端通过第五开关G1与电源信号Lin连接;第二比较器的反相输入端连接第二参考电压Vref2;第一电容的第二端接地;第六开关G2的另一端接地;第二反相器的输入端连接初始激励时钟CLK_Internal,第二反相器的输出端与第五开关G1的控制端连接;第六开关G2的控制端连接初始激励时钟CLK_Internal;第二比较器与第一或门的第二输入端连接,用于输出第一控制信号Turn-off。具体的,第一控制信号Turn-off用于控制生成模块32输出的初始激励时钟CLK_Internal产生一个上升沿,进而延时模块33输出的激励时钟CLK_dff产生一个上升沿。
具体的,当编程出现异常,长时间无法完成时,初始激励时钟CLK_Internal长时间为低电平,相应地,第五开关G1导通,第六开关G2断开,图11所示的Lin信号不断对第一电容充电,导致第二比较器的同相输入端的电压不断升高,当大于第二参考电压Vref2时,则第二比较器输出的第一控制信号Turn-off置为1,则第一或门输出1,即初始激励时钟CLK_Internal产生一个上升沿,跳过故障单元,继续进行后续的编程。同时,该第一控制信号Turn-off置可以作为错误信号err,作为单元异常的判决标志。
阵列进行编程状态后,以内部时钟CLK_internal为基准,每一次时钟周期,可以同时进行至多N个单元的编程,但是只会对其中第一个顺位的单元进行是否编程完成的判决。具体操作方式为,阵列中的编程电路将采集每一列的D触发器和页锁存器的存储数据,只有全部为逻辑1的列会配置成编程的电学条件,该列所在的单元可以处于编程状态。当判决完成后,CLK_internal会自动生成下一个上升沿,进行下一个单元的判决。
图12为本申请提供的编程控制单元的信号时序图。其中,Si表示第i个第四开关的状态。在一个示例中,第四开关Si响应于高电平导通,低电平断开。结合图12中示例,初始激励时钟CLK_internal经过延迟,输出激励时钟CLK_dff。在激励时钟CLK_dff的一个周期中,可能会出现三种情况。
情况1:当前检测的存储单元为第i+1个存储单元,第i+1个存储单元在该周期内完成编程。如图12所示的case1,CLK_dff周期开始时,假设第i+1个单元还没有编程完成。实际应用中,生成模块内部的延迟部分产生CLK_internal的下降沿。CLK_internal在经过另一个延迟后,提供作为D触发器链的时钟CLK_dff。电路内的两个延迟经过合理设计,使得CLK_dff的上升沿略微延后与CLK_internal的下降沿,这样做的目的在于,防止单元未完成编程时,由于CO的下跳导致的CLK_internal上下跳沿间隔太短产生的电路逻辑风险。
当CLK_dff产生第一个上升沿时,第i+1个单元的开关Si+1打开,使第i+1个单元成为待比较的单元。当CLK_dff产生上升沿时,第i+1个单元没有完成编程,所以CO将跳变为逻辑0,一直到该单元编程完成后,CO重新跳变为逻辑1,从而使得CLK_internal再次产生上升沿,本编程周期结束,进入下一个单元的编程周期。
情况2:当前检测的存储单元为第i+1个存储单元,第i+2个存储单元在周期前已经完成编程。如图12所示的case2,当CLK_dff产生第二个上升沿时,第i+2个单元的开关Si+2打开,使第i+2个单元成为待比较的单元。实际应用中,阵列中任一个单元,在判决其是否已经编程完成的之前若干个周期,因为已经处在编程状态,因此存在一定概率,当检测该单元时,该单元已经完成编程。相应的,检测时CO会处于逻辑1,所以对此,设定CLK_internal在经过两个延迟后重新产生上升沿,以生成CLK_dff的下一个上升沿,结束该周期。
情况3:当前检测的存储单元为第i+3个存储单元,第i+3个存储单元处于异常情况,无法完成编程,则通过报错单元40强制结束编程。如图12所示的case3,当CLK_dff产生第三个上升沿时,第i+3个单元的开关Si+3打开,使第i+3个单元成为待比较的单元。
如果第i+3个存储单元异常,迟迟未完成编程,CO会一直输出低电平,相应的,CLK_internal则长期处于逻辑0。对此,报错单元40中的第五开关G1在CLK_internal的反信号控制下导通,第六开关G2在CLK_internal控制下断开。第一电容的第一端连接至电源信号,开始充电,相应的,第二比较器同相输入端的电压值上升,当其超过Vref2,第二比较器输出的Turn-off跳变为逻辑1,控制CLK_internal产生上升沿,结束该周期。
CLK_internal产生上升沿后,报错单元40中的第五开关G1在CLK_internal的反信号控制下断开,第六开关在CLK_internal控制下导通。第一电容的第一端接地,随后会较快的放电,使得Turn-off重新变为逻辑0,等待下一次异常判决。Turn-off信号同时也可以作为错误信号输出err信号,提供给外部电路,作为单元异常的判决标志。
以上三种情况涵盖了单元可能出现的任意情形,所以整个电路结构会按照这种方式递进,直到最后一个单元编程完成为止。因此,该结构可以实现自动流水线递进式的编程方法。
本申请提供的编程装置包括:编程控制单元10和编程单元20;编程控制单元10,用于响应激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的有效存储单元,配置为编程状态,将该首单元之后的未被选中的有效存储单元配置为非编程状态;编程单元20,用于按照预定周期,执行对当前配置为编程状态的有效存储单元进行编程,直至所有有效存储单元被编程。本申请可以实现任意时间段选中相同数量的部分单元,同时在一行中能够按照顺序移动,将编程完成的单元用未编程的单元替换,实现整一行待编程单元的遍历。
实施例二
本申请提供一种编程方法,应用于前述的编程装置,编程装置包括编程控制单元10和编程单元20;方法包括:编程控制单元10响应于激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行以下处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的有效存储单元,配置为编程状态,将该首单元之后的未被选中的有效存储单元配置为非编程状态;编程单元20按照预定周期,执行对当前配置为编程状态的有效存储单元进行编程,直至所有有效存储单元被编程。
上述编程方法实现了任意时间段选中相同数量的部分单元,有效控制编程电流,避免造成芯片发热损坏;本申请通过设置在编程装置内的控制电路,实现在一行的编程中自动流水线递进式的按照顺序移动,将编程完成的单元用未编程的单元替换,实现待编程单元的遍历,无需设置外部控制装置,减少了资源消耗。
在一个示例中,编程方法还包括:编程控制单元10将编程单元链中各触发器配置为第二逻辑;编程控制单元10基于输入的第一逻辑,响应于预定数量的外部激励信号,将有效编程单元链中的前预定数量个触发器配置为第一逻辑。
其中,与编程单元链中各触发器一一对应的页锁存器内存储为第一逻辑的触发器构成有效编程单元链。在本申请实施例一中,结合电路结构详细介绍了建立有效编程单元链的实现方式,在此不做赘述。
在编程单元20进行编程之前,由编程控制单元10对有效编程单元链进行初始化,以选中数量N个有效存储单元并配置为编程状态。在初始化阶段,需要通过外部向有效编程单元链写入部分数据,由图6所示。输入信号包括链路输入信号Chain_in和链路时钟信号CLK_O,主要功能为确定同一时间处于编程状态的存储单元的数量N。
初始化第一步:对页锁存器写入全1数据,使得所有的D触发器都在链路中。
初始化第二步:通过外部链路时钟控制,将所有的D触发器都写成保存逻辑0的状态。具体过程:Chain_In信号一直置为逻辑0,不间断地输入周期性CLK_O时钟信号,直到所有的D触发器都写成保存逻辑0的状态。
初始化第三步:在页锁存器中存入需要写入的数据,使得只有需要编程的单元对应的D触发器处于链路中,建立有效编程单元链。
初始化第四步:Chain_In信号输入端置为逻辑1,CLK_O信号提供N次时钟周期,N为任意整数,可自定义,N次周期完成后,Chain_In信号输入端置为逻辑0。这种操作的目的在于,使得有效编程单元链中的前N位D触发器处于逻辑1,而其他D触发器为逻辑0。
在一个示例中,编程控制单元10响应于激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,包括:
编程控制单元10基于输入的第二逻辑,响应于激励时钟的激励信号,将有效编程单元链中当前为第一逻辑的首个触发器和最后一个触发器的下一触发器,分别配置为第二逻辑和第一逻辑。
具体的,参照图11和图12,当首个触发器编程完成后,CO输出一个上升沿,从而使得CLK_internal再次产生上升沿,CLK_dff产生上升沿;首个触发器接收到CLK_dff中的上升沿激励信号,基于输入的逻辑0,输出逻辑0。最后一个触发器的下一触发器,接收到CLK_dff中的上升沿激励信号,基于最后一个触发器输出的逻辑1,输出逻辑1,即最后一个触发器的下一触发器及其对应的页存储器均为逻辑1,符合被配置成编程状态的电学条件。也就是说N个编程状态的有效存储单元自动移动了一位。
本申请提供的编程方法,在任意时间段选中相同数量的部分单元,同时在一行中能够按照顺序移动,将编程完成的单元用未编程的单元替换,实现整一行待编程单元的遍历。
本申请还提供一种硬件代码产品,包括硬件代码,硬件代码被处理器执行时实现上述实施例提供的方法。
本申请还提供一种可读存储介质,可读存储介质中存储有硬件代码,硬件代码被执行时用于实现上述实施例提供的方法。
本申请还提供一种电子设备,包括:处理器,以及与处理器通信连接的存储器;存储器存储硬件代码;处理器执行存储器存储的硬件代码,以实现上述实施例提供的方法。
本申请还提供一种新型存储器,包括多个电阻型存储单元,以及如前述实施例提供的编程装置;编程装置用以对电阻型存储单元进行编程。其中,新型存储器可以是阻变式存储器,可以是相变式存储器,也可以是磁变式存储器。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (16)
1.一种编程装置,其特征在于,包括:编程控制单元和编程单元;
所述编程控制单元,用于响应激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,直至所有所述有效存储单元被编程:根据预定数量,选中该首单元及其之后的所述有效存储单元,配置为编程状态,将该首单元之后的未被选中的所述有效存储单元配置为非编程状态;
所述编程单元,用于按照预定周期,执行对当前被配置为编程状态的所述有效存储单元进行编程,直至所有所述有效存储单元被编程。
2.根据权利要求1所述的装置,其特征在于,所述编程控制单元包括:由依次串联的多个触发器构成的编程单元链;其中,所述多个触发器与所述待编程行中各存储单元对应的页锁存器一一对应;其中,
每个所述触发器的时钟端口通过第一开关连接至所述激励时钟,每个所述触发器的输出端通过第二开关连接至下一个所述触发器的输入端,每个所述触发器的输入端通过第三开关连接至下一个所述触发器的输入端;
所述各存储单元对应的所述页锁存器,用于基于自身的存储数据,控制对应的所述触发器的所述第一开关、所述第二开关以及所述第三开关的开关状态,以建立有效编程单元链;其中,处于所述有效编程单元链的所述触发器对应的所述存储单元为所述有效存储单元;
其中,被配置为编程状态的所述有效存储单元对应的所述触发器被配置为第一逻辑,被配置为非编程状态的所述有效存储单元对应的所述触发器被配置为第二逻辑。
3.根据权利要求2所述的装置,其特征在于,所述编程控制单元还包括:多个反相器;
所述多个反相器与所述多个触发器一一对应,所述反相器的输入端与对应的所述页锁存器连接,所述反相器的输出端与对应的所述触发器的第三开关的控制端连接。
4.根据权利要求1所述的装置,其特征在于,所述装置还包括:时钟生成单元;
所述时钟生成单元,用于向所述编程控制单元提供所述激励时钟。
5.根据权利要求4所述的装置,其特征在于,所述时钟生成单元包括:检测模块和生成模块;
所述检测模块,用于依次检测当前被配置为编程状态的首个所述有效存储单元是否完成编程,并输出检测结果;
所述生成模块,用于若所述检测结果表征完成编程,则控制所述激励时钟产生激励信号,否则,控制所述激励时钟不产生所述激励信号。
6.根据权利要求5所述的装置,其特征在于,所述检测模块包括:多个第四开关、以及第一比较器;
所述多个第四开关与所述待编程行中的所述存储单元一一对应;所述第四开关的第一端与对应的所述存储单元连接,所述第四开关的第二端与所述第一比较器的同相输入端连接;所述第一比较器的反相输入端连接第一参考电压;
其中,所述第四开关用于选择所述检测模块当前要检测的所述有效存储单元,所述第四开关的状态取决于对应的所述触发器的输入数据和输出数据;所述第一比较器的输出数据表征当前被选择的所述有效存储单元是否完成编程。
7.根据权利要求6所述的装置,其特征在于,所述检测模块还包括:第一使能开关;
所述第一使能开关设置在所述第四开关与所述第一比较器之间;
所述编程单元开始编程后,所述第一使能开关为闭合状态;所述编程单元编程前,所述第一使能开关为断开状态。
8.根据权利要求5所述的装置,其特征在于,所述生成模块包括:第一与门、第一或门、第一延时器以及第一反相器;
所述第一与门的第一输入端,与所述检测模块的输出端连接,接收所述检测模块输出的所述检测结果;
所述第一与门的输出端与所述第一或门的第一输入端连接;所述第一或门的输出端与所述第一延时器的输入端连接;所述第一延时器的输出端与所述第一反相器的输入端连接;所述第一反相器的输出端与所述第一与门的第二输入端连接;
其中,所述第一或门的第二输入端输入有第一控制信号;根据所述第一控制信号以及所述第一与门的输出端的输出信号,所述第一或门的输出端输出初始激励时钟。
9.根据权利要求8所述的装置,其特征在于,所述时钟生成单元还包括:延时模块;
所述延时模块包括第二延时器,用于对所述初始激励时钟进行延时处理,生成所述激励时钟。
10.根据权利要求9所述的装置,其特征在于,所述时钟生成单元还包括:第二使能开关;所述第二使能开关连接在所述第二延时器的输出端与所述编程控制单元之间;
所述编程单元开始编程后,所述第二使能开关为闭合状态;所述编程单元编程前,所述第二使能开关为断开状态。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:报错单元;
所述报错单元,用于若当前检测的有效存储单元经过预设时长后仍未完成编程,则控制所述时钟生成单元输出的所述激励时钟产生所述激励信号。
12.根据权利要求11所述的装置,其特征在于,所述报错单元包括:第二反相器、第五开关、第六开关、第一电容、第二比较器;
所述第二比较器的同相输入端与所述第一电容的第一端和所述第六开关的一端连接;所述第一电容的第一端通过所述第五开关与电源信号连接;所述第二比较器的反相输入端连接第二参考电压;所述第一电容的第二端接地;所述第六开关的另一端接地;
所述第二比较器与第一或门的第二输入端连接,用于输出所述第一控制信号;
所述第二反相器的输入端连接所述初始激励时钟,所述第二反相器的输出端与所述第五开关的控制端连接;所述第六开关的控制端连接所述初始激励时钟。
13.一种编程方法,其特征在于,应用于编程装置,所述编程装置包括编程控制单元和编程单元;所述方法包括:
所述编程控制单元响应于激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行以下处理,直至所有有效存储单元被编程:根据预定数量,选中该首单元及其之后的所述有效存储单元配置为编程状态,将该首单元之后的未被选中的所述有效存储单元配置为非编程状态;
所述编程单元按照预定周期,执行对当前被配置为编程状态的所述有效存储单元进行编程,直至所有所述有效存储单元被编程。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
所述编程控制单元将编程单元链中各触发器配置为第二逻辑;
所述编程控制单元基于输入的第一逻辑,响应于所述预定数量的外部激励信号,将有效编程单元链中的前预定数量的所述触发器配置为所述第一逻辑;
其中,与所述编程单元链中各所述触发器一一对应的页锁存器内存储为所述第一逻辑的所述触发器构成所述有效编程单元链。
15.根据权利要求14所述的方法,其特征在于,所述编程控制单元响应于激励时钟的激励信号,依次将待编程行中的每个有效存储单元作为首单元,执行处理,包括:
所述编程控制单元基于输入的所述第二逻辑,响应于所述激励时钟的激励信号,将所述有效编程单元链中当前为所述第一逻辑的首个触发器和最后一个触发器的下一触发器,分别配置为所述第二逻辑和所述第一逻辑。
16.一种新型存储器,其特征在于,包括多个电阻型存储单元,以及如权利要求1-12中任一项所述的编程装置;所述编程装置用以对所述电阻型存储单元进行编程。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496692.XA CN114242142A (zh) | 2021-12-08 | 2021-12-08 | 编程装置、方法及新型存储器 |
PCT/CN2022/102419 WO2023103358A1 (zh) | 2021-12-08 | 2022-06-29 | 编程装置、方法及新型存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496692.XA CN114242142A (zh) | 2021-12-08 | 2021-12-08 | 编程装置、方法及新型存储器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114242142A true CN114242142A (zh) | 2022-03-25 |
Family
ID=80754139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111496692.XA Pending CN114242142A (zh) | 2021-12-08 | 2021-12-08 | 编程装置、方法及新型存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114242142A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023103358A1 (zh) * | 2021-12-08 | 2023-06-15 | 上海集成电路装备材料产业创新中心有限公司 | 编程装置、方法及新型存储器 |
-
2021
- 2021-12-08 CN CN202111496692.XA patent/CN114242142A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023103358A1 (zh) * | 2021-12-08 | 2023-06-15 | 上海集成电路装备材料产业创新中心有限公司 | 编程装置、方法及新型存储器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1905068B (zh) | 提高编程速度的非易失性存储器及相关编程方法 | |
KR100928738B1 (ko) | 반도체 장치, 반도체 장치의 테스트 방법 및 데이터 기록방법 | |
KR101285576B1 (ko) | 비휘발성 메모리를 프로그래밍/소거하기 위한 방법 및 장치 | |
US7656709B2 (en) | NAND step up voltage switching method | |
KR100829791B1 (ko) | 플래시 메모리 장치의 전압 공급 회로, 이를 포함하는 플래시 메모리 장치 및 플래시 메모리 장치의 프로그램 전압 공급 방법 | |
US20020154545A1 (en) | Non-volatile memory device with plurality of threshold voltage distributions | |
JP2013157077A (ja) | デュアル機能を有するマルチレベルセルアクセスバッファ | |
JP5264047B2 (ja) | 半導体メモリ装置の制御情報をプログラムするための方法と装置 | |
CN109254615B (zh) | 用于数据程序化操作的电源供应器及其电源供应方法 | |
US20170200483A1 (en) | Identification of a condition of a sector of memory cells in a non-volatile memory | |
US11869575B2 (en) | Memory device having low write error rate | |
JP5931236B1 (ja) | 半導体装置の制御回路及び方法、並びに半導体装置 | |
TWI646537B (zh) | 序列記憶體裝置通知外部主機內部自計時操作已完成 | |
KR20000001436A (ko) | 다단계 펄스 발생 회로 및 이를 이용한 플래쉬 메모리 셀의소거 방법 | |
CN114242142A (zh) | 编程装置、方法及新型存储器 | |
KR20060021097A (ko) | 향상된 프로그램 특성을 갖는 불 휘발성 메모리 장치 | |
US8687423B2 (en) | Nonvolatile memory device and method of operating the same | |
US6421276B1 (en) | Method and apparatus for controlling erase operations of a non-volatile memory system | |
JPH10199269A (ja) | 多重ビットメモリセルのデータのセンシング装置及び方法 | |
JP2006024347A (ja) | ビットスキャニングプログラムを実行する不揮発性メモリ装置 | |
WO2023103358A1 (zh) | 编程装置、方法及新型存储器 | |
CN114242141A (zh) | 编程装置、方法及新型存储器 | |
TWI517163B (zh) | 非揮發性記憶體設備與用於處理其組態資訊的方法 | |
US20120275239A1 (en) | Memory apparatus and refresh method therof | |
US11646088B2 (en) | Flash memory programming check circuit |
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 |