本發(fā)明涉及一種一次可編程(otp)存儲器領(lǐng)域,特別涉及一種訪問otp存儲器的電路。
背景技術(shù):
隨著電子信息社會的不斷發(fā)展,數(shù)據(jù)存儲需求量呈現(xiàn)出爆炸式的增長。與mask(掩膜)和flash(閃存)存儲器相比,otp存儲器兼具二者之優(yōu)勢,既有一定的靈活性,成本又不太高。也因此在嵌入式系統(tǒng)或者芯片內(nèi)部,作為存儲一次編程后不可更改的信息或者對加密芯片密鑰信息的存儲起著不可替代的作用。otp存儲器非常適用于對特定應(yīng)用數(shù)據(jù)的一次可編程存儲,在一個片上系統(tǒng)(soc,systemonchip)系統(tǒng)中,需要存儲很多特定一次性信息,比如芯片序列號、接口封閉信息以及有關(guān)芯片安全的秘鑰信息等,這些信息在整個系統(tǒng)測試芯片中編程進去后不允許客戶去改變,且這些信息不需要擦除,即一次編程后不可修改。采用mask掩膜做成光刻版,靈活性太差,采用flash閃存成本又太高。因此,采用otp存儲器存儲這類特定信息,最大程度減少硬件及研發(fā)開銷。
對otp存儲器進行編程和讀取及其他訪問時,需要一個硬件控制器,把訪問otp存儲器的具體操作通過解析指令,判定是否為有效指令轉(zhuǎn)換為訪問otp存儲器的具體時序,按照otp存儲器件的接口時序完成讀取、編程、復(fù)位、睡眠、喚醒操作。圖2是訪問otp存儲器的框圖,包括訪問otp存儲器的各種指令,該硬件控制器需要按照不同的訪問指令產(chǎn)生相應(yīng)的時序,完成對otp存儲器的訪問。
由于otp存儲器對一些特定信息的存儲及成本不高的特點,在存儲器領(lǐng)域受到越來越廣泛的應(yīng)用。硬件電路基于根據(jù)不同的指令提供不同的時序電路驅(qū)動otp存儲器,實現(xiàn)對otp存儲器件的訪問。otp存儲器件由于自身的因素,在讀取和編程過程中很容易出錯,如何在對otp編程和讀取中降低出錯率,提高otp存儲器的可靠性,成為otp存儲器領(lǐng)域的技術(shù)難點。其次,隨著安全芯片愈來愈廣泛地應(yīng)用,otp存儲器實現(xiàn)對密鑰信息的編程后,不希望使用者將其密鑰信息讀出,因此就需要在讀取otp密鑰信息時對其做特殊處理,如何做特殊處理從而保證存入otp的密鑰信息不被泄密,保證芯片安全技術(shù)也是當前訪問otp存儲器技術(shù)所欠缺的方案。再者,在otp存儲器芯片內(nèi)部增加容錯硬件電路單元很大程度上增加了otp存儲器芯片面積,且可移植性不好。這些缺點都大大增加訪問了otp存儲器的研發(fā)時間和成本。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是,提供一種訪問otp存儲器的電路,目的是可以靈活配置不同指令訪問otp存儲器,并產(chǎn)生對應(yīng)指令的訪問otp存儲器接口時序,對特定信息密鑰信息在otp存儲器件外部進行嚴格加密處理,對otp存儲器編程操作時,其中編程算法模塊電路實現(xiàn)編程算法,很大程度提高了otp存儲器良率,解決了otp存儲器在編程過程中易出錯的問題,極大地提高了otp存儲器件的可靠性。并從otp存儲器中的讀取出的安全信息(密鑰信息)進行加擾處理,將讀取的密鑰信息通過加擾電路進行加擾,從而保護了數(shù)據(jù)的安全性。
為解決上述技術(shù)問題,本發(fā)明提供了一種訪問otp存儲器的電路,包括依次相連的cpu、上電讀取電路、總線控制電路、多路選擇器、otp時序發(fā)生器電路、編程算法模塊電路和加擾電路,其中,所述cpu:用于配置訪問otp存儲器的指令;所述上電讀取電路:用于在otp上電時,讀取otp存儲器各個區(qū)域的信息;所述總線控制電路:用于裝載cpu的一系列指令,并解析所定義的操作otp存儲器的指令;所述多路選擇器:選擇上電讀取電路讀取信息指令或總線控制電路的指令,并將選擇的指令傳送至otp操作時序產(chǎn)生控制器;所述otp時序發(fā)生器電路:按照cpu操作otp存儲器的指令產(chǎn)生對應(yīng)的訪問otp存儲器時序;所述編程算法模塊電路:在編程otp存儲器操作時,對otp存儲器所要編程的地址進行冗余處理并對每一位所要編程的數(shù)據(jù)采取施加多次編程脈沖電壓處理;所述加擾電路:用于對otp存儲器中讀取密鑰信息進行加密處理。
根據(jù)本發(fā)明一個實施例,采用機臺完成指令配置電路代替所述cpu,所述機臺完成指令配置電路用于配置訪問otp存儲器的指令。
根據(jù)本發(fā)明一個實施例,所述上電讀取電路讀取的信息包括otp存儲器模式信息、otp存儲器接口封閉信息、otp存儲器系統(tǒng)區(qū)域封閉信息、otp存儲器用戶區(qū)域封閉信息以及密鑰區(qū)域信息。
根據(jù)本發(fā)明一個實施例,所述總線控制電路包括指令寄存器電路和指令譯碼器電路,指令寄存器電路用于存儲cpu或者機臺所配置的一系列指令,指令譯碼器電路實現(xiàn)將配置的指令翻譯成具體有效的指令并傳送至多路選擇器。
根據(jù)本發(fā)明一個實施例,所述編程算法模塊電路的所有算法控制均采用狀態(tài)機控制實現(xiàn)。
根據(jù)本發(fā)明一個實施例,所述對otp存儲器中讀取密鑰信息進行加密處理包括:對密鑰讀出的數(shù)據(jù)經(jīng)過加擾電路進行加擾,使得用戶所見的密鑰數(shù)據(jù)不是真正編程至otp的數(shù)據(jù)。
根據(jù)本發(fā)明一個實施例,所述操作otp存儲器的指令包括復(fù)位操作指令、喚醒操作指令、編程操作指令、讀取操作指令、睡眠操作指令。
根據(jù)本發(fā)明一個實施例,所述otp存儲器包括:芯片序列號區(qū)域,用于存儲芯片序列號;接口封閉區(qū)域,用于存儲相關(guān)接口封閉信息;otp存儲器工作模式區(qū)域:用于存儲otp存儲器的操作模式,包括機臺工作模式和正常工作模式;系統(tǒng)封閉控制區(qū)域,用于存儲封閉系統(tǒng)區(qū)域的控制信息;用戶封閉控制區(qū)域,用于存儲用戶區(qū)域的控制信息;系統(tǒng)密鑰區(qū)域,用于存儲密鑰信息區(qū)域;以及用戶區(qū),用于存儲用戶所要存儲的信息。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:提供了一種訪問otp存儲器的電路,并且可以通過cpu或者機臺兩種模式靈活配置不同操作指令,并產(chǎn)生對應(yīng)指令的訪問otp存儲器的接口時序。對特定信息密鑰信息在otp存儲器件外部進行嚴格加密處理,從而有效地保證了芯片的安全性。對otp編程采用本發(fā)明電路,解決了otp在編程過程中易出錯的問題,保證數(shù)據(jù)正確編程和讀取,很大程度提高了otp存儲器良率,極大地提高了otp存儲器件的可靠性。
附圖說明
圖1是根據(jù)本發(fā)明一個實施例的otp存儲器區(qū)域分布圖。
圖2是根據(jù)本發(fā)明一個實施例的訪問otp存儲器的操作框圖。
圖3是根據(jù)本發(fā)明一個實施例的otp存儲控制電路框圖。
圖4是根據(jù)本發(fā)明一個實施例的otp存儲器上電讀取電路操作流程圖。
圖5是根據(jù)本發(fā)明一個實施例的otp存儲器指令譯碼器解析指令流程圖。
圖6是根據(jù)本發(fā)明一個實施例的otp存儲器編程、讀取操作的地址分配及冗余處理圖。
圖7是根據(jù)本發(fā)明一個實施例的otp存儲器編程算法模塊電路的編程算法流程圖。
具體實施方式
下面結(jié)合附圖和具體實施方式對本發(fā)明作進一步詳細的說明。本發(fā)明主要用于訪問otp存儲器,實現(xiàn)對otp存儲器的不同操作控制,包括編程、讀取、復(fù)位、喚醒、睡眠、otp自測操作。針對otp編程易出錯的特點,本發(fā)明采用編程算法模塊電路對編程地址冗余處理及對同一個位置允許進行至多加16次編程脈沖電壓,保證數(shù)據(jù)正確編程至otp存儲器件中。otp存儲器為一次可編程存儲器,即只能完成一次編程后不能再次更改和清除數(shù)據(jù)。針對特定信息的編程,otp存儲器在mask掩膜和flash閃存之間做了非常完美的折中,對一些特殊場合的信息,如密鑰信息、芯片序列號信息、接口封閉信息、系統(tǒng)信息等信息的存儲,otp存儲器對這些信息的存儲起到至關(guān)重要的作用。尤其對密鑰信息這種高度保密的信息進行存儲,需要在訪問otp存儲器時作特殊處理。
otp存儲器的訪問包括指令的配置,并解析出具體的指令同時產(chǎn)生所配置指令訪問otp存儲器的時序,實現(xiàn)對otp存儲器的訪問。對于編程指令將數(shù)據(jù)編程至otp存儲器,采用本發(fā)明訪問otp存儲器電路的編程算法模塊電路,針對otp存儲器編程操作中易出錯的問題,該電路模塊對編程地址冗余處理及對同一個地址多次施加編程脈沖,減少了otp存儲器的編程出錯,大大提高了otp存儲器的可靠性。對所要編程的密鑰信息進行安全保護。訪問otp存儲器的裝置包括cpu或者機臺對訪問otp存儲器指令的配置,芯片上電讀取otp各個區(qū)域電路、總線控制電路、指令譯碼器電路對指令進行解析、otp時序發(fā)生器電路產(chǎn)生不同指令訪問otp存儲器的接口時序、編程算法模塊電路執(zhí)行對otp存儲器的編程操作、加擾電路對讀取的密鑰信息進行加擾處理。詳述如下:
參見圖1,是otp存儲器的區(qū)域分布為:芯片序列號區(qū)域,用于存儲芯片序列號;接口封閉區(qū)域,用于存儲相關(guān)接口封閉信息;otp存儲器工作模式:用于存儲otp存儲器的操作模式,包括機臺工作模式和正常工作模式;系統(tǒng)封閉控制區(qū)域,用于存儲封閉系統(tǒng)區(qū)域的控制信息;用戶封閉控制區(qū)域,用于存儲用戶區(qū)域的控制信息;系統(tǒng)密鑰區(qū)域,用于存儲密鑰信息區(qū)域;用戶區(qū),用于存儲用戶所要存儲的信息。
參見圖2,為訪問otp存儲器的框圖,實現(xiàn)對otp存儲器的操作包括:編程、讀取、復(fù)位、喚醒、睡眠、otp自測操作,由otp控制器電路完成,如圖2所示,所要訪問的otp存儲器指令包括如下:
otp存儲器睡眠模式,使otp處于睡眠模式,即當前otp處于不工作狀態(tài),可以進行在不用otp存儲器時候置于該指令,降低系統(tǒng)的功耗,該指令的配置可以由cpu或者機臺模式完成;
otp存儲器喚醒模式,將otp從睡眠模式喚醒,當需要操作otp存儲器件時,如往otp存儲器編程數(shù)據(jù)、讀取數(shù)據(jù)時候需要首先將otp存儲器從睡眠模式切換到喚醒模式,該指令的配置可以由cpu或者機臺模式完成;
復(fù)位otp存儲器,在對otp存儲器操作之前需要對otp存儲器進行復(fù)位,在指令之間切換的時候也需要對其發(fā)生復(fù)位操作復(fù)位otp存儲器件,該指令的配置可以由cpu或者機臺模式完成;
otp存儲器編程信息,對otp編程操作時候需要配置該指令,例如芯片序列號、芯片接口封閉信息、系統(tǒng)信息的編程通過配置otp_programinfo指令完成otp存儲器的編程操作,該指令的配置可以由cpu或者機臺模式完成;
otp存儲器編程密鑰,只針對編程密鑰信息在otp存儲器的存儲,為了保證密鑰信息的嚴格安全性,該指令必須由機臺模式進行配置;
讀取otp存儲器,執(zhí)行對otp存儲器各個區(qū)域信息的讀取操作,該指令的配置可以由cpu或者機臺模式完成;
otp存儲器自測模式,執(zhí)行對otp存儲器件的自我測試,該指令的配置可以由cpu或者機臺模式完成。
一種訪問otp存儲器的裝置,包括依次相連的cpu或機臺完成指令配置、上電讀取電路、總線控制電路、多路選擇器電路、otp時序發(fā)生器電路、編程算法模塊電路、加擾電路、otp存儲器件,所有模塊均采用全數(shù)字邏輯電路實現(xiàn);
所述cpu或機臺模式配置電路:用于配置訪問otp存儲器的指令;
所述上電讀取電路:用于在otp存儲器上電時,首先讀取otp存儲器各個區(qū)域的信息,包括otp存儲器模式信息、otp存儲器接口封閉信息、otp存儲器系統(tǒng)區(qū)域封閉信息、otp存儲器用戶區(qū)域封閉信息以及密鑰區(qū)域信息;
所述總線控制電路:包括指令寄存器電路和指令譯碼器電路,用于裝載cpu或者機臺所配置的一系列指令,并解析所定義的操作otp存儲器的指令;指令寄存器電路用于存儲cpu或者機臺所配置的一系列指令,指令譯碼器電路實現(xiàn)將配置的指令翻譯成具體有效的指令并傳送至多路選擇器。
所述多路選擇器:用于選擇上電讀取電路讀取信息指令傳送至otp操作時序產(chǎn)生控制器或者總線控制電路的指令傳送至otp操作時序產(chǎn)生控制器;
所述otp時序發(fā)生器電路:用于產(chǎn)生不同訪問otp存儲器指令的具體時序電路,包括復(fù)位、喚醒、編程、讀取、睡眠操作,按照cpu或機臺所配置的具體操作otp存儲器的指令產(chǎn)生對應(yīng)的訪問otp存儲器時序電路,傳送至otp存儲器件接口;
所述編程算法模塊電路:針對對otp存儲器的編程操作,解決在otp存儲器中編程易出錯的問題,該算法電路實現(xiàn)在編程otp存儲器操作時,對otp存儲器所要編程的地址進行冗余處理和對每一位數(shù)據(jù)編程采取施加可允許16次編程脈沖電壓的處理,該模塊電路由全數(shù)字電路實現(xiàn),采用狀態(tài)機控制實現(xiàn)編程算法。
所述加擾電路:用于從otp存儲器中讀取密鑰信息進行加密處理,即對讀出的密鑰數(shù)據(jù)經(jīng)過加擾電路進行加擾,使得用戶所見的密鑰數(shù)據(jù)不是真正編程至otp存儲器的數(shù)據(jù),從而對密鑰信息安全進行保護。
參見圖3,是根據(jù)本發(fā)明的一個實施例的otp存儲控制電路框圖。訪問otp存儲器,首先需要采用cpu或者機臺模式對otp存儲器下發(fā)操作指令。對otp存儲器下發(fā)指令包括正常工作模式和機臺測試模式,正常工作模式即采用cpu配置所要操作otp存儲器的指令,機臺測試模式則采用自動測試設(shè)備機臺對操作指令地下發(fā)。本發(fā)明采用cpu或者機臺兩種模式靈活地對otp存儲器實現(xiàn)訪問。通過多路選擇器(mux)電路對cpu或者機臺所配置的指令傳送至總線控制器;參見圖2所示,cpu或機臺所配置的指令包括:otp存儲器睡眠模式、otp存儲器喚醒模式、復(fù)位otp存儲器、otp存儲器編程信息、otp存儲器編程密鑰、讀取otp存儲器以及otp存儲器自測模式。cpu或者機臺配置這些操作otp存儲器的指令傳送至總線控制模塊電路,這些指令存儲在總線控制電路地指令寄存器中,由總線控制模塊的指令譯碼器電路解析所定義的操作otp存儲器的指令,將解析出地具體操作otp存儲器的有效指令通過mux電路傳送至otp時序發(fā)生器。上電讀取電路實現(xiàn)上電時,對otp存儲器各個區(qū)域,即圖1所示的otp存儲器分布信息進行讀取;上電讀取電路將讀取操作命令通過mux(多路選擇器)電路傳送至otp時序發(fā)生器,產(chǎn)生讀取時序,實現(xiàn)對otp存儲器各個區(qū)域的讀?。恢噶钭g碼器電路對cpu或機臺所配置的訪問otp存儲器指令解析后,產(chǎn)生有效的訪問otp存儲器指令至otp時序發(fā)生器,由時序發(fā)生器實現(xiàn)所配置的指令的具體時序生成,按照所配置的指令時序完成對otp存儲器的訪問。圖3所示的編程算法模塊電路,針對otp存儲器編程密鑰指令或otp存儲器編程信息指令對otp存儲器編程操作時,采用本發(fā)明的編程算法模塊電路對編程otp存儲器進行算法控制,該算法電路實現(xiàn)在編程otp存儲器操作時,對otp存儲器所要編程的地址進行冗余處理和對每一位數(shù)據(jù)編程采取施加可允許高達16次編程脈沖電壓的處理,該模塊電路由全數(shù)字電路實現(xiàn),采用狀態(tài)機控制實現(xiàn)編程算法。在對otp存儲器密鑰信息進行讀取時,本發(fā)明針對密鑰信息的特殊要求,嚴格對密鑰信息進行保密,保證芯片安全,采取加擾電路對從otp存儲器中讀取的數(shù)據(jù)進行加擾處理,使得用戶所見的密鑰數(shù)據(jù)不是真正編程至otp存儲器的數(shù)據(jù),從而對密鑰信息安全進行保護。
參見圖4,實現(xiàn)對otp存儲器上電讀取,包括:芯片上電復(fù)位、上電喚醒otp存儲器、上電復(fù)位otp存儲器、讀取otp存儲器模式信息、讀取otp存儲器接口信息、讀取otp存儲器系統(tǒng)區(qū)域信息、讀取用戶區(qū)域信息、讀取密鑰區(qū)域信息,進入otp睡眠模式,上電讀取otp存儲器各個區(qū)域結(jié)束。
由cpu或機臺模式將操作otp存儲器的指令傳送至總線控制電路,由總線控制電路的指令譯碼器解析所定義操作otp存儲器的具體指令,按照解析出的有效指令驅(qū)動訪問otp時序;指令譯碼電路包括:定義好訪問otp的具體指令,等待訪問otp指令,檢查otp指令,判定訪問otp指令是否為有效指令,如果為有效指令則傳送至otp時序發(fā)生器,產(chǎn)生對應(yīng)指令的時序,完成對otp存儲器訪問;若為無效指令則不繼續(xù)執(zhí)行下面步驟,終止訪問otp存儲器。所謂無效指令包括:在編程密鑰信息時發(fā)送otp編程信息指令,在正常工作模式下配置編程密鑰指令,在cpu模式下配置otp自測模式指令,自測模式指令同樣也只能針對機臺模式。
參見圖5,是根據(jù)本發(fā)明一個實施例的otp存儲器指令譯碼器解析指令,解析所定義的操作otp存儲器的指令包括:
定義訪問otp存儲器的具體指令;
等待訪問otp存儲器指令;
檢查otp存儲器指令;以及
判定訪問otp存儲器指令是否為有效指令,如果為有效指令則傳送至otp時序發(fā)生器,執(zhí)行otp存儲器操作指令,如果為無效指令則終止otp存儲器的訪問。
進入機臺工作模式,發(fā)送otp存儲器編程密鑰指令,解析編程密鑰指令,并由otp時序發(fā)生器產(chǎn)生該指令對應(yīng)的訪問otp存儲器接口時序,將密鑰數(shù)據(jù)編程至otp存儲器中。密鑰信息由于其具有特殊性,需要保證其信息的安全,因此在編程密鑰信息時,必須采用機臺工作模式完成密鑰信息編程至otp存儲器對應(yīng)區(qū)域;讀取密鑰信息,對讀取出來的密鑰信息進行加擾處理,防止真正編程至otp存儲器件的信息泄露,嚴格保證密鑰的安全性。
進入正常工作模式,參見圖1,為本發(fā)明實施例的otp存儲器存儲分布圖,因此需要對otp相關(guān)區(qū)域編程信息,此時,發(fā)送otp編程信息指令,編程芯片序列號,otp時序發(fā)生器產(chǎn)生編程otp存儲器時序,將芯片序列號編程至otp存儲器中所對應(yīng)區(qū)域。
在正常工作模式下,發(fā)送otp存儲器編程信息指令,經(jīng)過指令譯碼器對指令譯碼,并由otp時序發(fā)生器產(chǎn)生編程otp存儲器時序,送至otp存儲器件,完成編程接口封閉信息、編程系統(tǒng)區(qū)域信息。
參見圖6,是本發(fā)明一個實施例的otp存儲器編程、讀取操作的地址分配及冗余處理圖。編程、讀取操作的地址分配及冗余處理由編程算法模塊電路圖控制實現(xiàn),首先,編程操作對otp存儲器的地址進行容錯處理,即每編程一個數(shù)據(jù)對應(yīng)4位otp存儲器的物理地址,并依次對4位物理地址每一位進行編程,當其中不少于3位地址都編程成功時才可認為所配置的該位數(shù)據(jù)編程成功,否則認為該位數(shù)據(jù)編程失敗。圖6所示,訪問otp存儲器的地址由13位地址構(gòu)成,包括系統(tǒng)地址、邏輯位地址以及物理地址。系統(tǒng)地址及邏輯位地址為選中otp存儲器的具體一個區(qū)域。對于編程地址,一位邏輯地址映射4為物理地址的冗余,并一次對4位地址的每一位進行編程,當其中不少于3位地址都編程成功時才可認為所配置的該位數(shù)據(jù)編程成功,否則認為該位數(shù)據(jù)編程失敗。
其中,所述對otp存儲器4位物理地址中的每一位數(shù)據(jù)編程操作包括,參見圖7,編程算法模塊電路控制編程算法具體流程如下:
配置所要編程的地址,編程地址等于提供的初始編程地址;
在提供的初始編程地址位置施加3個編程脈沖電壓,并記n(表示記錄編程脈沖次數(shù))等于0次;
施加完3個編程脈沖電壓基礎(chǔ)上繼續(xù)施加1個編程脈沖電壓;
編程驗證操作;
通過編程驗證操作得到的數(shù)據(jù)判定編程的數(shù)據(jù)是否為1(otp存儲器編程數(shù)據(jù)為“1”,未編程的數(shù)據(jù)為“0”),若編程數(shù)據(jù)為“1”,則表示本次對該地址的編程操作成功,繼續(xù)按照該方法執(zhí)行下一個地址的編程操作。若編程數(shù)據(jù)為“0”,執(zhí)行下一步;
判定是否在該位置加了16次編程脈沖電壓,判定次數(shù)由n來計數(shù)。若在指定的該otp存儲器地址位置未達到所加16次編程電壓,則繼續(xù)施加脈沖電壓,n此時加一;每施加一次脈沖電壓(即n每增加一)進行編程數(shù)據(jù)是否為“1”的判定,再判定編程脈沖電壓是否編程至16次的循環(huán)判定,在16次編程脈沖操作之類驗證編程數(shù)據(jù)成功,則該地址數(shù)據(jù)編程成功;若在該位置加了16次編程電壓還是數(shù)據(jù)為“0”,則編程失敗。
在正常工作模式下,完成對otp存儲器接口封閉信息、系統(tǒng)區(qū)域信息的編程存儲操作,實現(xiàn)對otp存儲器的訪問。