留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

高可靠性OTP存储控制器

杨燕 王滨 李翠 何雨莲

杨燕, 王滨, 李翠, 何雨莲. 高可靠性OTP存储控制器[J]. 电子科技大学学报, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010
引用本文: 杨燕, 王滨, 李翠, 何雨莲. 高可靠性OTP存储控制器[J]. 电子科技大学学报, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010
YANG Yan, WANG Bin, LI Cui, HE Yu-lian. High Reliability OTP Storage Controller[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010
Citation: YANG Yan, WANG Bin, LI Cui, HE Yu-lian. High Reliability OTP Storage Controller[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010

高可靠性OTP存储控制器

doi: 10.3969/j.issn.1001-0548.2019.05.010
基金项目: 

四川省科技计划项目 18MZGC0025

详细信息
    作者简介:

    杨燕(1990-), 女, 博士生, 主要从事大规模数字集成电路及集成器件应用方面的研究.E-mail:yvoneyang465@gmail.com

  • 中图分类号: TN43

High Reliability OTP Storage Controller

图(8)
计量
  • 文章访问数:  4618
  • HTML全文浏览量:  1850
  • PDF下载量:  112
  • 被引次数: 0
出版历程
  • 收稿日期:  2018-05-04
  • 修回日期:  2019-02-07
  • 刊出日期:  2019-09-30

高可靠性OTP存储控制器

doi: 10.3969/j.issn.1001-0548.2019.05.010
    基金项目:

    四川省科技计划项目 18MZGC0025

    作者简介:

    杨燕(1990-), 女, 博士生, 主要从事大规模数字集成电路及集成器件应用方面的研究.E-mail:yvoneyang465@gmail.com

  • 中图分类号: TN43

摘要: 该文设计了一种OTP存储控制器电路,通过操作OTP存储器指令产生对应不同操作的接口时序,完成对OTP存储器的编程、读取、唤醒、复位、睡眠等操作。同时,在对OTP存储器编程操作中,针对OTP编程易出错的问题,设计了一种编程算法,即对OTP编程地址进行冗余处理,并在编程操作中对同一个地址多次施加脉冲电压,使编程至OTP存储器的数据的正确性急剧提高。嵌入编程算法电路实现了高可靠性的编程算法,有效地控制了OTP存储器的编程操作。因此,本该设计的高可靠性OTP存储控制器解决了访问存储器时容易出现编程错误的问题,提高了访问OTP存储器的可靠性。

English Abstract

杨燕, 王滨, 李翠, 何雨莲. 高可靠性OTP存储控制器[J]. 电子科技大学学报, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010
引用本文: 杨燕, 王滨, 李翠, 何雨莲. 高可靠性OTP存储控制器[J]. 电子科技大学学报, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010
YANG Yan, WANG Bin, LI Cui, HE Yu-lian. High Reliability OTP Storage Controller[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010
Citation: YANG Yan, WANG Bin, LI Cui, HE Yu-lian. High Reliability OTP Storage Controller[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(5): 722-727. doi: 10.3969/j.issn.1001-0548.2019.05.010
  • 随着信息技术的飞速发展,人们对存储器的安全性、可靠性有了更高的要求。与传统非易失性存储器[1-2]相比,一次可编程(one time programmable, OTP)存储器凭借其较高的可靠性、极强的稳定性和抗辐照等特性,广泛地应用于高稳定性、高保密性和一次编程等重要场[3-6]。如射频识别(radio frequency identification, RFID)、芯片密钥信息存储、航空航天以及太空领域等[7-9]。然而,由于极易受到OTP存储器器件工艺的影响[10],如今的OTP存储器在读取和编程过程中极易出错[11],从而大大降低了数据存储的可靠性[12]。因此,如何降低OTP存储器在编程或读取过程中的出错率,提高OTP存储的可靠性,成为OTP存储控制器领域的技术难点。探究高性能、高可靠性的OTP存储控制器,确保数据安全、正确地存储,对OTP存储器的发展具有重大的意义和价值[13-14]

    本文中设计了一种具有高可靠性的OTP存储控制器,通过配置相关的控制寄存器,产生不同指令的接口时序,实现对OTP存储器的编程、读取、唤醒、复位、睡眠等操作。采用配置寄存器方式来操作OTP存储器可增加OTP的灵活性,同时,在对OTP存储器编程操作过程中,本文设计了一种编程算法,即对OTP存储器编程地址进行冗余处理,并对同一个地址多次施加脉冲电压。解决了OTP存储器容易出现编程错误的问题,并在OTP存储控制器中设计加扰电路对密钥等特殊信息进行加密,提高了访问OTP存储器的可靠性、安全性。

    • OTP存储控制器内部包括CPU、上电读取电路、总线控制模块、多路选择器、OTP时序发生器电路、编程算法电路和加扰电路。OTP存储控制器系统架构如图 1所示。

      图  1  OTP存储控制器系统架构

      CPU用于配置和访问存储器的指令,上电读取电路用于在OTP存储控制器上电时读取它各个区域的信息。控制电路用于装载CPU的一系列指令集,并解析所定义的操作OTP存储器的指令。多路选择器选择上电读取电路读取信息指令或总线控制电路的指令,并将选择的指令传送至时序发生器。时序发生器电路按照CPU发送的操作指令产生对应的访问存储器的时序。编程算法模块在对OTP存储器进行编程操作时,对OTP存储器所需编程的地址进行冗余处理,地址冗余处理机制可以把一个逻辑地址映射到多个物理地址上,当存储在某个物理地址上的数据出现错误时,可以通过该映射关系找到这个逻辑地址上映射的其他物理地址的数据,避免存储的数据丢失。对每一个所要编程的数据采取施加多次(高达16次)编程脉冲电压处理的方式把数据编程到OTP存储器中,大大增加了OTP数据存储的可靠性。加扰电路用于对存储器中读取的密钥信息进行加密处理,极大地提高了访问OTP存储器的可靠性、安全性。加扰电路对密钥信息等特殊信息采用加密的算法具体为:对其编程信息在编程至OTP存储器件之前加上0x55,使得编程至OTP器件的数据被打乱,同样在从OTP存储器件中读取出来时,在加扰电路模块再将读取出的数据减去0x55,从而还原数据。这种方法在占用很小的芯片面积的情况下,实现了数据的加密,保证了密钥等特殊信息的安全性和可靠性。

    • 本文设计的OTP存储器内部区域如图 2所示,包括:芯片序列号区域,用于存储芯片序列号;接口封闭区域,用于存储相关接口封闭信息;OTP存储器工作模式区域,用于存储OTP存储器的操作模式,包括机台工作模式和正常工作模式;系统封闭控制区域,用于存储封闭系统区域的控制信息;用户封闭控制区域,用于存储用户区域的控制信息;系统密钥区域,用于存储密钥信息区域;以及用户区,用于存储用户所要存储的信息。

      图  2  OTP存储器区域分布图

    • 本文设计的OTP存储控制器首先需要上电初始化操作,待OTP存储控制器上电后,将整OTP存储器进行初始化。配置OTP存储控制器的控制寄存器对OTP存储控制器进行唤醒操作,然后对OTP存储控制器内部逻辑进行复位,复位后读取OTP存储器中所保存的数据,并依次读取OTP存储器模式信息、接口封闭信息、系统区域封闭信息、用户区域封闭信息及系统密钥区域信息。当读取OTP存储器内部信息完毕后,OTP存储器进入睡眠状态,等待CPU发出唤醒指令。通过OTP存储控制器的上电操作,使OTP存储器每次上电或进行测试、写入、读取等操作时都要重新配置寄存器,避免了由于控制器内部寄存器的值没有及时复位而导致的指令错误,从而造成数据出错。

      根据CPU的输入,OTP存储控制器有两种模式,测试模式:输入的scan_mode=1’b1;工作模式:输入的scan_mode=1’b0。

    • OTP存储控制器在测试模式下的主要功能是检测OTP存储器是否有硬件损坏,这是对OTP存储器出厂时的必要操作。由于OTP存储器的一次编程性,未编程过的区域存储的值为0,因此,通过读取OTP存储器中未编程的区域,可判断OTP存储器内部是否存在硬件损坏。

      在测试模式下,OTP存储控制器的工作状态有8种,分别为:OTP_Wake_Up状态,用于把OTP存储控制器由睡眠状态转换为工作状态;OTP_Reset状态,用于复位OTP存储控制器内部的逻辑;OTP_Read状态,用于读出OTP存储器中保存的数据;OTP_Sleep状态,用于把OTP存储控制器由工作状态转换为睡眠状态;OTP_Blank_Check状态,用于测试OTP存储器的值是否全为0,如果不全是0,说明有制造缺陷;配置OTP控制寄存器中的OTPC_Test_Vol状态,可选择做2 Kb还是8 Kb测试,默认为8 Kb测试;OTP_Program_Info状态,用于对OTP存储器进行写“1”操作,即表示对OTP存储器进行编程,“0”表示OTP存储器默认状态;OTP_Program_Key状态,控制OTPC_Rng寄存器产生随机数,用于对OTP存储器进行编程测试。测试模式下操作流程如图 3所示。

      图  3  OTP存储控制器测试模式

    • OTP存储控制器在正常模式下,时序发生电路根据CPU发送的操作指令生成一系列的时序,完成对OTP存储器的读操作或编程操作。在进行编程操作时,编程至存储器件的数据要经过编程算法的处理才能被编程入OTP存储器中。本文设计嵌入的编程算法即在编程操作中对同一个地址多次施加脉冲电压,施加次数最多可达16次。这充分保证了数据正确编程至OTP存储器的给定地址,从而提高了数据的安全性,避免了数据的编程失败。

      正常工作模式下,OTP存储控制器有5种操作状态。分别为:OTP_Wake_Up状态,用于把OTP存储器从睡眠状态转换为工作状态;OTP_Reset状态,用于复位OTP存储控制器的内部逻辑;OTP_Read状态,用于读出OTP存储器中保存的数据;OTP_Sleep状态,用于把OTP存储控制器由工作模式转换为睡眠模式;OTP_Program_Info状态,用于在OTP存储器中进行写“1”操作。

    • 当有数据要写入OTP存储器时,CPU将系统模式控制信号otp_opr_start_sys置为0,则系统模式使能信号scan_mode=1’b0,OTP存储控制器进入唤醒状态,等待510个时钟周期后,进入到复位状态。在复位状态下对OTP存储控制器内的寄存器进行复位操作,系统内控制寄存器、状态寄存器、地址寄存器、数据寄存器均被重新配置。复位操作完成以后,将需要访问的OTP存储器区域地址配置到OTPC_ADDR地址寄存器中,配置完成后读出相应地址的数据判断是否为已写入,然后将编程的数据及逻辑比特地址配置到待编程数据寄存器OTPC_WDATA中去,最后通过配置OTP_CTRL状态寄存器发送数据,等待命令检查完毕后调用相应的编程状态机进行编程。

      在对OTP存储器操作的过程中,编程和读取操作的地址分配采用冗余处理的方法,提高数据编程至OTP存储器的可靠性。该冗余处理方案集成至编程算法模块的电路来控制实现,每编程一个数据对应4位OTP存储器件的物理地址,并一次对4位物理地址的每一位进行编程,当其中不少于3位地址都编程成功时才可以认为所配置的该位数据编程成功,否则该数据位编程失败。

      访问OTP存储器的地址由13位地址构成,包括系统地址、逻辑位地址和物理地址。对地址进行冗余处理结构如图 4所示,系统及逻辑位地址为选中OTP存储器的具体一个区域。对于编程地址,一位逻辑地址映射4位物理地址的冗余,并一次对4位地址的每一位进行编程,当其中不少于3位地址都编程成功时才可认为所配置的该位数据编程成功,否则认为该位数据编程失败。

      图  4  OTP存储器地址结构

      在对OTP存储器4位物理地址中的每一位数据编程操作时,需配置所要编程的地址,编程地址等于提供的初始编程地址,在提供的初始编程地址位置施加3个编程脉冲电压,并记N(表示记录编程脉冲次数)等于0次;施加完3个编程脉冲电压基础上继续施加1个编程脉冲电压;编程验证操作;通过编程验证操作得到的数据判定编程的数据是否为1(OTP存储器编程数据为“1”,未编程的数据为“0”),若编程数据为“1”,则表示本次对该地址的编程操作成功,继续按照该方法执行下一个地址的编程操作。若编程数据为“0”,执行下一步;判定是否在该位置加了16次编程脉冲电压,判定次数由N来计数。若在指定的该OTP存储器地址位置未达到所加16次编程电压,则继续施加脉冲电压,此时N加1;每施加一次脉冲电压(即N每增加1)进行编程数据是否为“1”的判定,再判定编程脉冲电压是否编程至16次的循环判定,在16次编程脉冲操作之内验证编程数据成功,则该地址数据编程成功;若在该位置加了16次编程电压还是为“0”,则编程失败。具体流程如图 5所示。

      图  5  正常模式编程流程

    • 当需要从OTP存储器中向外读取数据时,需先把要读出的地址放到OTP存储控制器中的地址寄存器OTPC_ADDR中,再把OTP存储器中的控制寄存器OTPC_OTPC_CMD的值改为3’h2。开始信号OTPC_START= 1’b1后,指令译码器电路对CPU所配置的控制寄存器进行解析,并把访问OTP存储器的指令发送至OTP时序发生器电路。时序发生器电路按照所配置的指令生成具体的时序,在该时序的驱动下完成对OTP存储器的访问。等待读取完毕,OTPC_DONE被置为1,数据被输入读寄存器。

    • 用外来激励信号模拟CPU控制时序信号对OTP存储控制器施加激励进行仿真验证。OTP存储控制器在上电后进行上电复位,然后依次读取OTP存储器模式信息、OTP接口封闭信息、系统区域封闭信息、用户区域封闭信息及系统密钥区域信息,读取内部相关信息完毕后,CPU发送指令进入测试模式,测试OTP存储器是否存在缺陷,如图 6所示。在正常模式下,根据CPU发送的信号对OTP存储器进行编程,如图 7所示。读取OTP存储器内部存储的数据如图 8所示。

      图  6  测试时序

      图  7  写入操作时序

      图  8  读操作时序

    • 本文设计了一种高可靠性OTP存储控制器,通过CPU配置不同的寄存器指令来生成一系列接口时序,进而完成对OTP存储器的一系列流程化操作。本文设计的控制器电路降低了对OTP存储器操作过程中的错误率,提高了编程效率。在对OTP存储器密钥信息读取时,通过设计的加扰电路对OTP存储器中读取的数据进行加扰处理,使用户看到的数据与真正写入到OTP存储器的数据不同,从而提高了数据的安全性。写入数据时,通过嵌入编程算法对数据进行处理,保证了数据正确性。对OTP存储器编程采用地址冗余处理及同一个编程地址多次编程的方法,确保了数据正确编程至OTP指定地址,极大地增强了OTP存储器的可靠性。本文设计的OTP存储控制器电路及嵌入的编程算法对其他存储器控制器的设计具有一定的借鉴性。

      本文研究工作得到了成都市科技项目(2018- YFYF-00031-GX)的资助,在此表示感谢。

参考文献 (14)

目录

    /

    返回文章
    返回