掌桥专利:专业的专利平台
掌桥专利
首页

一种多次编程电子熔丝装置

文献发布时间:2023-06-19 12:21:13


一种多次编程电子熔丝装置

技术领域

本申请涉及半导体存储技术领域,尤其涉及一种多次编程电子熔丝装置。

背景技术

电子熔丝(eFuse)是一种单次编程(OTP)器件,被广泛应用于芯片内部以存储重要的信息,例如芯片版本数据、外接器件的电压、芯片启动需要设定的参数、模拟和数字电路的重要设定、存储器错误比特的修复位置、安全相关的密钥等。电子熔丝具有很高的可靠性和比较小的面积,但是在实际应用中常常遇到编程内容难以进行修正的问题。电子熔丝通过熔丝是否烧断来存储比特信息,通常未烧断时代表比特0,烧断时代表比特1。电子熔丝的初始状态是全0,需要写1的位置要烧断对应的熔丝。由于熔丝烧断后无法再恢复,导致电子熔丝可以由0写为1,但无法由1写回0,故称电子熔丝具有单次编程(OTP)特性。在实际的芯片生产、调试、测试、使用等环节中,单次编程(OTP)特性导致了很多麻烦:例如在生产环节中微小的烧写失误将会导致大量的芯片报废;在调试环节中无法对某一比特进行修正来观察不同的故障现象;在测试环节中无法反复进出某个测试模式;在使用环节中已经烧写好的芯片无法进行电子熔丝内容的在线升级等。

鉴于此,提供一种让原本只有单次编程(OTP)能力的电子熔丝具有多重修正能力的装置是非常有必要的。

发明内容

为解决上述问题,本申请提供了一种多次编程电子熔丝装置,包括:单次编程单元模块、解析模块以及多次编程单元模块;

其中,所述单次编程单元模块包括电子熔丝阵列,用于存储单次编程数据,所述单次编程数据包括初始化数据以及修正数据;所述多次编程单元模块包括可多次读写数据的存储单元阵列,用于存储多次编程数据;

所述解析模块用于读取所述单次编程单元模块传输的单次编程数据,在读取到初始化数据时,将解析得到的所述初始化数据写入到所述多次编程单元模块中;在读取到所述修正数据时解析得到修正位置和修正值,用所述修正值替换所述存储单元阵列中对应修正位置上存储的数据。

可选地,还包括:

多次编程接口模块,用于接收控制指令,对所述多次编程单元模块中的数据进行读取或写入操作。

可选地,还包括:

与所述解析模块和所述多次编程接口模块分别电连接的仲裁器,用于仲裁所述解析模块与所述多次编程接口模块对所述多次编程单元模块的数据写入操作。

可选地,还包括:

单次编程接口模块,用于接收控制指令,对所述单次编程单元模块中的数据进行读取或写入操作。

可选地,还包括:

与所述单次编程接口模块和所述单次编程单元模块分别电连接的单次编程烧写模块,用于接收经由所述单次编程接口模块发送的烧写指令,依据烧写时序将待烧写数据发送到所述单次编程单元模块中对应的存储位置,进行烧写操作。

可选地,还包括:

与所述单次编程接口模块和所述单次编程单元模块分别电连接的单次编程读取模块,用于接收经由所述单次编程接口模块发送的读取指令,依据读取时序对所述单次编程单元模块中对应存储位置的数据进行读取,并经所述单次编程接口模块返回读取到的数据。

可选地,所述单次编程数据还包括用户自定义的用户数据;所述单次编程单元模块中的电子熔丝阵列配置为包括初始化分区、修正分区以及用户分区;

其中,所述初始化分区用于存储所述初始化数据;

所述修正分区用于存储所述修正数据;及

所述用户分区用于存储所述用户数据。

可选地,所述修正分区与所述用户分区共用所述电子熔丝阵列中除初始化分区之外的部分,所述修正数据以及所述用户数据分别从该部分的两端进行数据写入,该部分中未被数据写入的空间作为备用分区。

可选地,所述修正数据包括一个或多个修正命令,每个修正命令是按比特修正命令、按字节修正命令或保留命令,其中所述按比特修正命令包括命令标识符、页面地址、比特修正值、比特偏移地址,所述按字节修正命令包括命令标识符、页面地址、字节屏蔽字、字节修正值;

其中,所述命令标识符用于标识当前命令的种类为按比特修正命令或按字节修正命令;所述页面地址用于标识修正位置对应的页面地址;所述比特修正值用于标识一个比特的修正值;所述比特偏移地址用于标识修正位置在对应的页面中的偏移地址;所述字节屏蔽字用于标识修正位置在对应页面中的字节位置;所述字节修正值用于标识一个字节的修正值。

可选地,所述解析模块配置为在检测到所述命令标识符为按比特修正命令时,根据页面地址以及比特偏移地址解析得到修正位置,根据比特修正值解析得到该修正比特位置对应的修正值。

可选地,所述按比特修正命令还包括:扩展比特修正值,用于在比特修正值为扩展修正标识时,标识扩展的修正值。

可选地,所述解析模块用于在检测到所述比特修正值为扩展修正标识时,读取扩展比特修正值中的数值作为修正值。

可选地,所述按字节修正命令包括按单字节修正命令以及按多字节修正命令。

可选地,所述解析模块用于在检测到所述命令标识符为按字节修正命令时,根据页面地址以及字节屏蔽字解析得到修正位置,根据字节修正值解析得到该修正字节位置对应的修正值。

可选地,所述命令标识符还用于标识当前命令的种类为保留命令;当所述解析模块在检测到所述保留命令为停止修正的标识时,结束修正的流程;在检测到所述保留命令为跳过继续的标识时,移动到下一个修正命令继续进行修正。

可选地,所述多次编程单元模块的存储单元阵列中至少包括多次编程存储分区,所述多次编程存储分区的存储空间大小与所述单次编程单元模块中的初始化分区的存储空间大小相同。

可选地,所述单次编程单元模块为由电子熔丝组成的阵列。

可选地,所述多次编程电子熔丝装置布置于嵌入式系统中。

可选地,所述多次编程单元模块为所述嵌入式系统中的控制寄存器组构成的阵列。

可选地,所述多次编程接口模块为所述嵌入式系统中的系统接口。

本申请提供的多次编程电子熔丝装置,包括单次编程单元模块、解析模块以及多次编程单元模块。其中,单次编程单元模块包括电子熔丝阵列,用于存储单次编程数据,单次编程数据包括初始化数据以及修正数据;多次编程单元模块包括可多次读写数据的存储单元阵列,用于存储多次编程数据;解析模块用于读取单次编程单元模块传输的单次编程数据,在读取到初始化数据时,将解析得到的初始化数据写入到多次编程单元模块中;在读取到修正数据时解析得到修正位置和修正值,用修正值替换存储单元阵列中对应修正位置上存储的数据。本申请提供的多次编程电子熔丝装置,能够使得原本只有单次编程能力的电子熔丝具有多重修正能力,提高了使用的灵活性。另外,本申请通过增加少量硬件的情况下即可完成多次编程,即使在熔丝比特数非常多的情况下,也可以保持较小的硬件规模。

附图说明

在下文中,将基于实施例参考附图进一步解释本申请。

图1示意性地示出本申请提供的多次编程电子熔丝装置1的结构框图;

图2示意性地示出本申请所提供的多次编程电子熔丝装置的另一种具体实施方式的结构框图;

图3示意性地示出单次编程单元模块(OTP_CELL)与多次编程单元模块(MTP_CELL)的一种具体分区方式的示意图;

图4示意性地示出单次编程单元模块(OTP_CELL)各分区动态变化的示例图;

图5示意性地示出本申请所提供的多次编程电子熔丝装置中解析模块的操作流程图。

具体实施方式

以下将结合附图和具体的实施方式,对本申请的装置进行详细说明。应理解,附图所示以及下文所述的实施例仅仅是说明性的,而不作为对本申请的限制。

图1示出了本申请提供的多次编程电子熔丝装置10的结构框图。本实施例中,该多次编程电子熔丝装置10包括:单次编程单元模块100、解析模块102以及多次编程单元模块104。

其中,单次编程单元模块100包括电子熔丝阵列,用于存储单次编程数据,单次编程数据包括初始化数据以及修正数据;多次编程单元模块104包括可多次读写数据的存储单元阵列,用于存储多次编程数据。

解析模块102用于读取所述单次编程单元模块100传输的单次编程数据,在读取到初始化数据时,将解析得到的所述初始化数据写入到所述多次编程单元模块104中;在读取到所述修正数据时解析得到修正位置和修正值,用所述修正值替换所述存储单元阵列中对应修正位置上存储的数据。

本实施例中,多次编程单元模块104为在带电情况下可多次读写数据的存储单元阵列,具体可以为寄存器组。

在上述实施例的基础上,本申请所提供的多次编程电子熔丝装置还可以进一步包括:多次编程接口模块,用于接收控制指令,对所述多次编程单元模块中的数据进行读取或写入操作。

在上述实施例的基础上,本申请所提供的多次编程电子熔丝装置还可以进一步包括:与所述解析模块和所述多次编程接口模块分别电连接的仲裁器,用于仲裁所述解析模块与所述多次编程接口模块对所述多次编程单元模块的数据写入操作。

在上述实施例的基础上,本申请所提供的多次编程电子熔丝装置还可以进一步包括:单次编程接口模块,用于接收控制指令,对所述单次编程单元模块中的数据进行读取或写入操作。

在上述实施例的基础上,本申请所提供的多次编程电子熔丝装置还可以进一步包括:与所述单次编程接口模块和所述单次编程单元模块分别电连接的单次编程烧写模块,用于接收经由所述单次编程接口模块发送的烧写指令,依据烧写时序将待烧写数据发送到所述单次编程单元模块中对应的存储位置,进行烧写操作。

在上述实施例的基础上,本申请所提供的多次编程电子熔丝装置还可以进一步包括:与所述单次编程接口模块和所述单次编程单元模块分别电连接的单次编程读取模块,用于接收经由所述单次编程接口模块发送的读取指令,依据读取时序对所述单次编程单元模块中对应存储位置的数据进行读取,并经所述单次编程接口模块返回读取到的数据。

本申请提供的多次编程电子熔丝装置,能够使得原本只有单次编程能力的电子熔丝具有多重修正能力,提高了使用的灵活性。并且,通过增加少量硬件的情况下即可完成多次编程,即使在熔丝比特数非常多的情况下,也可以保持较小的硬件规模。

本申请实施例单次编程单元模块中存储的单次编程数据包括初始化数据以及修正数据,初始化数据是实现多次编程的基础,保证了后续的多次编程只需要修改增量部分即可。修正数据是实现多次编程的关键,从修正数据中解析得到修正命令,可以快速确定需要对初始化数据进行修正的具体位置和所要修正的数值,从而直接进行修正即可。与现有技术中采用整体修正需要替换的存储数据相比,本申请实施例采用局部增量修正的方式,仅仅增加了解析模块等少量控制电路,不需要在硬件中设置大面积的备份资源,资源开销更小。此外,本申请中修正规模、修正次数和修正方式均可以灵活进行调整,可以支持单比特修正、单字节修正或多字节修正等多种形式,灵活性更高。本申请思路来自于长期的IC研发领域工作经验,基于在大量的量产IC中了解到的各类用户需求,能够更好兼顾硬件资源和灵活性,充分满足用户的各种电子熔丝改写场景。

参照图2本申请所提供的多次编程电子熔丝装置的另一种具体实施方式的结构框图。本实施例中,该装置具体包括:单次编程单元模块(OTP_CELL)200、单次编程接口模块(OTP_IF)202、单次编程烧写模块(OTP_PROG)204、单次编程读取模块(OTP_READ)206、多次编程单元模块(MTP_CELL)208、多次编程接口模块(MTP_IF)210、仲裁器(ARBITOR)212、解析模块(PARSER)214、系统总线(SYS_BUS)216。

其中,所述单次编程单元模块(OTP_CELL)200为由电子熔丝组成的阵列,用于存储单次编程数据。单次编程数据包括初始化数据以及修正数据。

单次编程接口模块(OTP_IF)202,用于接收控制指令,对所述单次编程单元模块200中的数据进行读取或写入操作。

单次编程烧写模块(OTP_PROG)204,与单次编程接口模块202和单次编程单元模块200分别电连接,用于接收经由单次编程接口模块202发送的烧写指令,依据烧写时序将待烧写数据发送到单次编程单元模块200中对应的存储位置,进行烧写操作。

单次编程读取模块(OTP_READ)206,与单次编程接口模块202和单次编程单元模块200分别电连接,用于接收经由单次编程接口模块202发送的读取指令,依据读取时序对单次编程单元模块200中对应存储位置的数据进行读取,并经单次编程接口模块202返回读取到的数据。

多次编程单元模块(MTP_CELL)208,包括可多次读写数据的存储单元阵列,用于存储多次编程数据。本实施例中具体可以由寄存器阵列组成。

多次编程接口模块(MTP_IF)210,用于接收控制指令,对多次编程单元模块中的数据进行读取或写入操作。

仲裁器(ARBITOR)212,与解析模块214和多次编程接口模块210分别电连接,用于仲裁解析模块214与多次编程接口模块210对多次编程单元模块208的数据写入操作。

解析模块(PARSER)214,用于读取单次编程单元模块200传输的单次编程数据,在读取到初始化数据时,将解析得到的初始化数据写入到多次编程单元模块208中;在读取到修正数据时解析得到修正位置和修正值,用修正值替换寄存器阵列中对应修正位置上存储的数据。

系统总线(SYS_BUS)216,系统主设备通过该系统总线完成对各功能模块的控制。

基于本申请提供的多次编程电子熔丝装置的上述各个功能模块,可以完成如下功能:

(1)单次编程单元模块(OTP_CELL)200的数据烧写。系统主设备通过系统总线(SYS_BUS)216访问单次编程接口模块(OTP_IF)202,向该单次编程接口模块(OTP_IF)202发出烧写指令,发送待烧写数据。单次编程接口模块(OTP_IF)202将待烧写数据通过otp_if_wdata信号传送到单次编程烧写模块(OTP_PROG)204,单次编程烧写模块(OTP_PROG)204按照单次编程单元模块(OTP_CELL)200烧写时序,通过otp_cell_wdata信号将待烧写数据逐个传送到指定的熔丝,并发出烧写脉冲进行编程操作,完成数据烧写。

(2)单次编程单元模块(OTP_CELL)200的数据读取。系统主设备通过系统总线(SYS_BUS)216访问单次编程接口模块(OTP_IF)202,发出读取指令。单次编程接口模块(OTP_IF)202将读取指令传送到单次编程读取模块(OTP_READ)206,单次编程读取模块(OTP_READ)206按照单次编程单元模块(OTP_CELL)200读取时序,通过otp_cell_rdata信号将指定的熔丝数据读回,并通过otp_if_rdata传回单次编程接口模块(OTP_IF)202,最后通过系统总线(SYS_BUS)216返回到系统主设备。

(3)解析模块(PARSER)214对多次编程单元模块(MTP_CELL)208的数据写入。系统中相关电路给parser_start发送一高电平脉冲,解析模块(PARSER)214开始从单次编程单元模块(OTP_CELL)200读取数据,数据通过parser_rdata送入解析模块(PARSER)214进行解析。解析出有效的数据后,通过parser_wdata将数据写往仲裁器(ARBITOR)212,之后由mtp_cell_wdata写到多次编程单元模块(MTP_CELL)208的指定位置中。全部数据都被解析完成后,parser_done会从低电平变到高电平。如果解析出无效的数据,当前的parser_wdata不会再写往仲裁器(ARBITOR)212,同时解析过程终止,parser_error和parser_done会从低电平变到高电平。

(4)系统主设备对多次编程单元模块(MTP_CELL)208的写入。系统主设备通过系统总线(SYS_BUS)216访问多次编程接口模块(MTP_IF)210发送写入数据。多次编程接口模块(MTP_IF)210将写入数据通过mtp_if_wdata写往仲裁器(ARBITOR)212,之后由mtp_cell_wdata写到多次编程单元模块(MTP_CELL)208的指定位置中。

(5)多次编程单元模块(MTP_CELL)208的复位。系统中相关电路给mtp_cell_reset发送一高电平复位脉冲,多次编程单元模块(MTP_CELL)208完成一次复位操作,复位值可以由具体应用要求进行给定。

作为一种具体实施方式,多次编程电子熔丝装置可以布置于嵌入式系统中,多次编程单元模块为所述嵌入式系统中的控制寄存器组构成的阵列,多次编程接口模块为所述嵌入式系统中的系统接口。本实施例中,多次编程单元模块(MTP_CELL)采用嵌入式系统中已有的控制寄存器组构成的阵列,多次编程接口模块(MTP_IF)采用嵌入式系统中已有的系统接口,通过仲裁器(ARBITOR)使得解析模块(PARSER)可以加入对多次编程单元模块(MTP_CELL)进行访问,以在原有系统上实现对控制寄存器内容进行修正的功能。不需要再耗费额外的硬件资源,以保证较小的硬件规模。

本申请实施例还可以对单次编程单元模块(OTP_CELL)200和多次编程单元模块(MTP_CELL)208进行分区管理,根据不同的解析模块(PARSER)214可以设置不同的分区划分方法。

作为一种具体实施方式,单次编程单元模块(OTP_CELL)200中的电子熔丝阵列配置为包括初始化分区(INIT_REGION)、修正分区(FIX_REGION)、备用分区(BAK_REGION)以及用户分区(USER_REGION);其中,初始化分区(INIT_REGION)用于存储初始化数据,例如可以包括上电后需要的控制参数和各类密钥数据等硬件所需数据,当然还可以包括软件所需读取的数据等。修正分区(FIX_REGION)用于存储修正数据;基于该修正数据可以对初始化数据中修正位置的数据进行针对性修正。用户分区(USER_REGION)用于存储用户自定义的用户数据。备用分区(BAK_REGION)作为备用空间,可以灵活分配给修正分区(FIX_REGION)以及用户分区(USER_REGION)。作为一种具体实施方式,修正分区(FIX_REGION)与用户分区(USER_REGION)可以共用电子熔丝阵列中除初始化分区(INIT_REGION)之外的部分,修正数据以及用户数据分别从该部分的两端进行数据写入,该部分中未被数据写入的空间作为备用分区(BAK_REGION)。此种实施方式可以保证存储空间使用的灵活性,保证存储空间可以充分使用。

作为一种具体实施方式,多次编程单元模块的存储单元阵列中至少包括多次编程存储分区,多次编程存储分区的存储空间大小与单次编程单元模块中的初始化分区的存储空间大小相同,以便于电路进行快速拷贝处理。当然可以理解的是,多次编程单元模块的存储单元阵列还可以包括其他分区,用来存储其他数据。

图3示出单次编程单元模块(OTP_CELL)与多次编程单元模块(MTP_CELL)的一种具体分区方式的示意图。其中,单次编程单元模块(OTP_CELL)200的分区包括:初始化分区(INIT_REGION)、修正分区(FIX_REGION)、备用分区(BAK_REGION)以及用户分区(USER_REGION)组成。多次编程单元模块(MTP_CELL)的分区由实际应用要求可以安排有多块,其中至少有一块为多次编程存储分区(MTP_REGION),图3中仅示出多次编程存储分区(MTP_REGION)。本实施例中,多次编程存储分区(MTP_REGION)与单次编程单元模块(OTP_CELL)中的初始化分区(INIT_REGION)的存储空间大小相同。多次编程存储分区(MTP_REGION)可以确保与单次编程单元模块(OTP_CELL)的数据进行同步。可以理解的是,多次编程单元模块(MTP_CELL)还可以包括其他分区,用于存储其他MTP数据,在此不做限定。其他MTP数据可以通过多次编程接口模块(MTP_IF)进行改写和读取,无需掉电后保存。

作为一种具体实施方式,单次编程单元模块(OTP_CELL)的地址安排为向下增长,即分区最顶端为最低地址,通常可以取0作为最低地址。分区最底端是最高地址,通常可以取单次编程单元模块(OTP_CELL)可以容许的最大地址值作为最高地址。

作为一种具体实施方式,多次编程单元模块(MTP_CELL)的地址安排也为向下增长,即分区最顶端为最低地址,通常可以取0作为最低地址。分区最底端为最高地址,通常可以取多次编程单元模块(MTP_CELL)可以容许的最大地址值作为最高地址。

初始化分区(INIT_REGION)用于存储有可能需要多次修正的数据比特。系统通过多次编程存储分区(MTP_REGION)使用这些数据比特。在不需要修正任何数据比特的情况下,初始化分区(INIT_REGION)的内容被解析模块(PARSER)214原样复制到多次编程存储分区(MTP_REGION),之后解析模块(PARSER)214会拉高parser_done信号,拉低parser_error信号,这样系统就可以使用这些数据比特了。在发现需要修正数据比特时,需要在修正分区(FIX_REGION)加入修正命令,解析模块(PARSER)214读取到这些命令后会开始修正,在多次编程存储分区(MTP_REGION)中已经被初始化分区(INIT_REGION)初始化过的数据基础上,对指定位置的数据进行修正。这些修正命令可以具有很大的灵活性,依照命令编码的不同可以完成各种类型的修正。这种灵活性体现在修正位置的选择和修正内容按照单比特、单字节、多字节等各种方式进行。

用户分区(USER_REGION)用于存放用户自行定义的数据,这些数据通过单次编程读取模块(OTP_READ)206读取后供系统软件使用。由于数据完全由用户自行定义,系统软件中也可以包含解析模块(PARSER)的功能以提供多次对该区域数据内容修正的能力,当然也可以采用不支持内容修正的方案。用户分区(USER_REGION)的使用可以采用分页方式,每一页安排若干字节,新增加的页面都放在用户分区(USER_REGION)的上方未用空间,以提供用户分区(USER_REGION)向上增长的特性。

备用分区(BAK_REGION)作为备用空间,可以灵活分配给修正分区(FIX_REGION)以及用户分区(USER_REGION)。作为一种具体实施方式,如图3所示,备用分区(BAK_REGION)的上界由修正分区(FIX_REGION)的使用量决定,该空间的下界由用户分区(USER_REGION)的使用量决定。例如在一个应用场景下,需要多次修正多次编程存储分区(MTP_REGION)中的内容,则修正分区(FIX_REGION)会向下增长;同时需要不断增加用户数据,则用户分区(USER_REGION)会向上增长。当最终备用分区(BAK_REGION)减少到零,就无法再增加新的修正命令,也无法再增加新的用户数据。通常在实际应用中,很难预先估计出修正次数的多少,也无法预计用户数据的多少,备用分区(BAK_REGION)的存在可以灵活地分配电子熔丝资源给这两种应用需求。

作为一种具体实施方式,多次编程存储分区(MTP_REGION)可以映射到一组对系统进行控制的寄存器中,这些寄存器可以为完成系统控制所必须的硬件资源。因此,本申请多次编程存储分区(MTP_REGION)不会要求增加额外的存储元件,利用这些寄存器就可以反复修正的属性,完成多次编程的效果。可以在熔丝比特数非常多的情况下,也可以保持很小的硬件规模。并且,在作为系统控制时,控制比特通常较为分散,比如256个控制点需要独立控制,采用寄存器更为合适;在作为数据时,例如密钥块,可以采用存储器或者寄存器堆(register file)。因此,将多次编程存储分区映射到寄存器中更加灵活方便。当然,多次编程存储分区(MTP_REGION)还可以映射到其他存储装置,在此不做限定。

图4是单次编程单元模块(OTP_CELL)各分区动态变化的示例图。该示例中单次编程单元模块(OTP_CELL)共有4K比特,初始化分区(INIT_REGION)占用1K比特,剩下的3K比特动态分配给修正分区(FIX_REGION)和用户分区(USER_REGION)。

图4A是单次编程单元模块(OTP_CELL)在某时刻的分区使用状态示意图。修正分区(FIX_REGION)有256比特的修正命令。用户分区(USER_REGION)有10页用户数据,每页64比特,共计640比特。备用分区(BAK_REGION)剩余2176比特。

图4B是单次编程单元模块(OTP_CELL)在图4A的基础上发生了改变的分区使用状态示例图。与图4A相比,修正分区(FIX_REGION)增加了128比特的修正命令,现在修正分区(FIX_REGION)已经扩大到了384比特。用户分区(USER_REGION)增加了2页的用户数据,现在用户分区(USER_REGION)已经扩大到了12页,共计768比特。备用分区(BAK_REGION)剩余1920比特。

本申请实施例采用多分区方式使用熔丝,可以保证每个熔丝都可以充分利用。

具体地,修正数据可以包括一个或多个修正命令,每个修正命令是按比特修正命令、按字节修正命令或保留命令。按字节修正命令包括按单字节修正命令以及按多字节修正命令。

按比特修正命令包括命令标识符(CMD)、页面地址(PAGE)、比特修正值(BITVAL)、比特偏移地址(OFFSET)。按字节修正命令包括命令标识符(CMD)、页面地址(PAGE)、字节屏蔽字(BYTEMASK)、字节修正值(BYTEVAL);其中,命令标识符用于标识当前命令的种类为按比特修正命令或按字节修正命令;页面地址用于标识修正位置对应的页面地址;比特修正值用于标识一个比特的修正值;比特偏移地址用于标识修正位置在对应的页面中的偏移地址;字节屏蔽字用于标识修正位置在对应页面中的字节位置;字节修正值用于标识一个字节的修正值。

解析模块配置为在检测到命令标识符为按比特修正命令时,根据页面地址以及比特偏移地址解析得到修正位置,根据比特修正值解析得到该修正比特位置对应的修正值。按比特修正命令还可以包括:扩展比特修正值,用于在比特修正值为扩展修正标识时,标识扩展的修正值。解析模块用于在检测到所述比特修正值为扩展修正标识时,读取扩展比特修正值中的数值作为修正值。

解析模块还配置为在检测到所述命令标识符为按字节修正命令时,根据页面地址以及字节屏蔽字解析得到修正位置,根据字节修正值解析得到该修正字节位置对应的修正值。

作为一种具体实施方式,按比特修正命令可以是一种变长指令。作为一种具体实施方式,最短的命令可以只包含4个位域(Field):命令标识符(CMD)、页面地址(PAGE)、比特修正值(BITVAL),比特偏移地址(OFFSET)。在一些实施例中,所述按比特修正命令还可以包括扩展比特修正值(EXTBITVAL),用于提供多次额外的修正机会。如表1-表6按比特修正命令的一种具体格式示例所示,当命令标识符(CMD)位域为0001时,解析模块(PARSER)识别当前命令的种类为按比特修正命令,接着从页面地址(PAGE)位域读取需要修正的页面地址,再从比特偏移地址(OFFSET)位域读取需要修正的比特在该页中的偏移地址,最后检查比特修正值(BITVAL)位域读取比特修正值,可以修正成0或者1。当需要继续对某比特进行多次修正时,需要将比特修正值(BITVAL)位域写为11进入扩展修正方式。这时指令在前述4个位域的基础上,可以顺序追加多组扩展比特修正值(EXTBITVAL),每组EXTBITVAL位域为一个字节,每增加一组EXTBITVAL位域就可以多提供8次额外的修正机会。如果某组EXTBITVAL位域全1,则后续字节还是一组EXTBITVAL位域,如此持续进行修正直到遇到某组EXTBITVAL位域非全1为止。

表1

表2

表3

表4

表5

表6

同理,按字节修正命令也是一种变长指令。最短的命令是单字节修正命令,只包含4个位域(Field):命令标识符(CMD)、页面地址(PAGE)、字节屏蔽字(BYTEMASK),字节修正值(BYTEVAL)。如表7-表11按字节修正命令的一种具体示例所示,当CMD位域为0010时,解析模块(PARSER)识别当前命令的种类为按单字节修正命令,接着从页面地址(PAGE)位域读取需要修正的页面地址,再从比特偏移地址(OFFSET)位域确定是该页中哪个字节需要修正,最后检查比特修正值(BITVAL)位域读取比特修正值,可以修正成任意需要的值。单字节修正命令中字节屏蔽字(BYTEMASK)位域应该只有一个比特位置可以设置为1,如果解析模块(PARSER)检查到多个位置有1会报错。当需要对某页中多个字节进行修正时,需要使用多字节修正命令。该命令中字节屏蔽字(BYTEMASK)位域应该有多个比特位置可以设置为1,1的个数和后面比特修正值(BITVAL)位域的组数相同。如果PARSER没有检查到多个位置有1会报错。解析模块(PARSER)会按照字节屏蔽字(BYTEMASK)位域的指示,顺序提取连续多个字节修正值(BYTEVAL)位域的值进行修正操作。

命令标识符还用于标识当前命令的种类为保留命令。解析模块还配置为在检测到所述保留命令为停止修正的标识时,结束修正的流程;在检测到所述保留命令为跳过继续的标识时,移动到下一个修正命令继续进行修正。表12列出了保留命令的一种具体格式示例。解析模块(PARSER)在找到一个合法的命令之前,会检测是否遇到了保留命令。如表12所示,全0字节代表停止修正,全1字节代表跳过当前修正命令继续执行下一个修正命令。修正分区(FIX_REGION)最后一个字节的下一个字节进入备用分区(BAK_REGION),这里在没有烧写的情况下是全0,解析模块(PARSER)就会停止修正。另一方面,由于可能有误操作导致烧写了错误的命令,可以将该错误命令烧写为全1,解析模块(PARSER)解析得到全1的命令,就会跳过当前命令继续读取下一个修正命令。在解析模块(PARSER)正在处理一个合法指令的过程中,全0或者全1字节不会被识别为保留命令,用于保证修正值可以设定为任意值。

表7

表8

表9

表10

表11

表12

本申请实施例可以按照比特进行修正,也可以多个字节一起修正。各可修正位置的最大修正次数也不用预先设定,可灵活配置。可以理解的是,上述仅列出了命令格式的一种示例。由于命令的编码和栏位可以灵活进行调整,因此实际中可以根据具体应用来进行设置。设置需满足的特征包括但不限于满足以下几个条件:

(1)修正次数满足灵活的条件,即修正次数可以在0次(不修正)到N次范围内(取决于修正分区(FIX_REGION)与备用分区(BAK_REGION)的大小),该条件可以使得本申请更接近多次编程的特性;

(2)修正粒度满足灵活的条件,即可以对指定的单比特多次修正,也可以修正随机分布的比特,还可以修正若干连续的字节,该条件也可以使得本申请更接近多次编程的特性;

(3)修正命令编码满足高效的条件,在完成相同的修正任务下,尽量少占用修正分区(FIX_REGION)的空间,这样可以留给用户分区(USER_REGION)更多空间;

(4)具有错误恢复机制,命令烧错后可以再擦除跳过。

下面结合图5本申请所提供的多次编程电子熔丝装置中解析模块的操作流程图,具体介绍解析模块对多次编程存储分区(MTP_REGION)进行初始化和修正操作的过程。

S501:接收到parser_start信号后开始运行解析模块(PARSER);

S502:用初始化数据对多次编程存储分区(MTP_REGION)进行初始化;

S503:判断修正分区(FIX_REGION)读指针指向的字节是否有修正命令,如果是,则进入S504;如果否,则进入S505;

S504:按照命令修正多次编程存储分区(MTP_REGION);

S505:判断是否遇到全0字节;如果是,则进入S506;如果否,则进入S507;

S506:结束运行解析模块(PARSER),并将parser_done信号置为1;

S507:判断是否遇到全1字节;如果否,则进入S508;如果是,则进入S509;

S508:将parser_error信号置为1后,进入S506;

S509:将修正分区(FIX_REGION)读指针移动到下一个字节后,进入S503。

本申请提供的多次编程电子熔丝装置,能够使得原本只有单次编程能力的电子熔丝具有多重修正能力,提高了使用的灵活性。另外,本申请通过增加少量硬件的情况下即可完成多次编程,即使在熔丝比特数非常多的情况下,也可以保持较小的硬件规模。

虽然出于本公开的目的已经描述了本申请各方面的各种实施例,但是不应理解为将本公开的教导限制于这些实施例。在一个具体实施例中公开的特征并不限于该实施例,而是可以和不同实施例中公开的特征进行组合。例如,在一个实施例中描述的根据本申请的方法的一个或多个特征和/或操作,亦可单独地、组合地或整体地应用在另一实施例中。本领域技术人员应理解,还存在可能的更多可选实施方式和变型,可以对上述系统进行各种改变和修改,而不脱离由本申请权利要求所限定的范围。

相关技术
  • 一种多次编程电子熔丝装置
  • 一种基于熔丝技术的芯片参数多次编程电路
技术分类

06120113268421