(57)【特許請求の範囲】
【請求項１】
外部からデータが供給される第１のデータバスと、
前記第１のデータバスに入力側が接続されたトライステートバッファと、
前記トライステートバッファの出力側と接続された第２のデータバスと、
前記第２のデータバスと接続された電気的書き換え可能な不揮発性メモリと、
前記第１のデータバスのデータと前記第２のデータバスのデータとを比較する比較回路と、
前記比較回路の出力と書換え信号との論理積演算を行う論理回路と、
前記論理回路の出力をクロック信号として入力し、ハイレベル信号をデータ信号として出力し、その出力で前記トライステートバッファを制御するフリップフロップと、
前記書換え信号を前記フリップフロップの出力に基づき、前記不揮発性メモリの読出し許可信号または書換え許可信号として切替えて出力する切替回路とを備え、
前記切替回路は、前記比較回路から出力される比較結果が一致である場合、前記読出し許可信号を出力し、前記比較結果が不一致である場合、前記書換え許可信号を出力するように制御され、
前記トライステートバッファは、比較結果が一致である場合ハイインピーダンスを出力し、前記比較結果が不一致である場合、前記第１のデータバスのデータを前記第２のデータバスに出力するように制御を行い、
前記不揮発性メモリは、前記読出し許可信号が出力されたとき所定アドレスのデータを前記第２のデータバスに出力し、前記書換え許可信号が出力されたとき前記所定アドレスのデータを前記第２のデータバスのデータで書換えることを特徴とする半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する分野】
本発明は半導体装置に関し、特に、ＰＲＯＭのデータの機密保持を可能とした半導体装置に関する。
【０００２】
【従来の技術】
従来、読み出し専用メモリ（以下ＲＯＭと呼ぶ）やＰＲＯＭに記憶されているデータの機密保持に関して、あらかじめＲＯＭやＰＲＯＭ以外にキーコード（セキュリティコード）を格納しておいて、外部から入力したコードが一致すれば前記ＲＯＭあるいはＰＲＯＭのデータを外部に読み出すことを可能とする技術が知られている。また、特開昭６３−１０８６００号公報に示された技術では、ＲＯＭに格納されている全データと外部から入力したデータを比較し、その比較結果のみを外部に出力することで、データの機密を保持するようにしている。
【０００３】
ここで、従来技術として、特開昭６３−１０８６００号公報に開示されている技術について、図面を用いてその動作を説明する。図９は、その従来例を示すブロック図である。
【０００４】
図９において、９０１はＲＯＭであり、このＲＯＭ９０１は、アドレスバス９０２から供給されるアドレス情報に基づき、当該アドレス情報で指定されたアドレスに記憶されている情報を、データバス９０３に出力する。アドレスカウンタ９０４は、外部から供給されるパルス数を計数してその計数値をアドレスバス９０２に供給するとともに、ＲＯＭ９０１のサイズ分の計数を終了すると、カウント終了信号を出力手段としての出力制御回路９０５に送出する。比較手段としてのコンパレータ９０６は、ＲＯＭ９０１からデータバス９０３に読み出された情報を外部から供給された情報ＥＸと比較して、その比較結果が不一致の場合には、記憶手段としての不一致フラグ９０７をセットする。出力制御回路９０５は、アドレスカウンタ９０４からカウント終了信号の供給を受けると、不一致フラグ９０７の内容を外部に出力する。
【０００５】
従って上記の、出力制御回路９０５、コンパレータ９０６および不一致フラグ９０７を有する半導体装置は、ＲＯＭ９０１に記憶されている情報の検査に際して、外部からパルスを供給してアドレスカウンタ９０４を歩進させれば、コンパレータ９０６が、ＲＯＭ９０１から順次読み出される情報を外部から供給される正常な情報ＥＸと比較し、ＲＯＭ９０１の情報と外部の情報が不一致の場合不一致フラグ９０７がセットされ、一致の場合不一致フラグ９０７はセットされない。この不一致フラグ９０７の情報はカウント終了信号に応答して読み出されるので、ＲＯＭ９０１に記憶されている情報の適否は外部で判断できるものの、情報の内容は判別できないため、情報の機密は保持される。
【０００６】
【発明が解決しようとする課題】
しかしながら、従来の技術では、入力データの一致の達成を機密保持の絶対条件としているため、電源の再投入やシステムのリセットを繰り返し、データの照合を何回も実施することが出来る。このためデータの解読が技術的に可能であるという問題があった。また、キーコード等を保持するための記憶素子やキーコードそのものの管理が別途必要となる問題があった。
【０００７】
そこで本発明は、僅かな回路を備えることで、特にＰＲＯＭに格納されている情報を読み出さずに情報の正否を判断可能とするだけでなく、データの照合を一度間違えるとＰＲＯＭに記憶されている情報を書換え、以後の解読を不可能とすることで、情報の機密を保持する半導体装置を提供することを目的とする。さらに、正規のユーザが情報の正否を判定する際に、誤ってＰＲＯＭの情報を書きつぶすことがないように、誤書き込み対策を施した半導体装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記の課題を解決するため、本発明の半導体装置は、外部からデータが供給される第１のデータバスと、前記第１のデータバスに入力側が接続されたトライステートバッファと、前記トライステートバッファの出力側と接続された第２のデータバスと、前記第２のデータバスと接続された電気的書き換え可能な不揮発性メモリと、前記第１のデータバスのデータと前記第２のデータバスのデータとを比較する比較回路と、前記比較回路の出力と書換え信号との論理積演算を行う論理回路と、前記論理回路の出力をクロック信号として入力し、ハイレベル信号をデータ信号として出力し、その出力で前記トライステートバッファを制御するフリップフロップと、前記書換え信号を前記フリップフロップの出力に基づき、前記不揮発性メモリの読出し許可信号または書換え許可信号として切替えて出力する切替回路とを備える。前記切替回路は、前記比較回路から出力される比較結果が一致である場合、前記読出し許可信号を出力し、前記比較結果が不一致である場合、前記書換え許可信号を出力するように制御され、前記トライステートバッファは、比較結果が一致である場合ハイインピーダンスを出力し、前記比較結果が不一致である場合、前記第１のデータバスのデータを前記第２のデータバスに出力するように制御を行い、前記不揮発性メモリは、前記読出し許可信号が出力されたとき所定アドレスのデータを前記第２のデータバスに出力し、前記書換え許可信号が出力されたとき前記所定アドレスのデータを前記第２のデータバスのデータで書換えることを特徴とする。
【００１１】
【発明の実施の形態】
以下本発明の実施の形態について、図面を参照して説明する。
【００１２】
図１は、本発明の実施の形態における半導体装置１の基本的な構成を示すブロック図である。１１はＰＲＯＭであり、アドレスバス１０１とＮビットのデータバス１０３に接続されている。２はデータ制御回路であり、信号線１０６の出力を受けた場合はデータバス１０３のデータを変換して出力し、それ以外の場合はデータバス１０３のデータを出力する。１２は比較回路であり、データバス１０２を通じて半導体装置外部から入力されるＮビットのデータとデータバス１０３のデータを比較し、比較結果が不一致の場合、不一致信号を信号線１０５に出力する。３はメモリ制御回路であり、比較回路１２の出力に応じて、外部から入力される信号線１０４の信号（書換え信号）を信号線１０７に出力するか、信号線１０８に出力するかを制御する。また、メモリ制御回路３は、比較回路１２の不一致信号が入力された場合、切替信号を信号線１０６に出力する。
【００１３】
なお本実施の形態では、データバス１０２とデータバス１０３で取り扱うデータは、説明の便宜上同一のビット数で構成されるものとするが、実際にはそれぞれ任意のビット数で構成され、必ずしも同じビット数である必要はない。
【００１４】
また、アドレスバス１０１に入力されるアドレス信号は、一定期間経過すると自動的にインクリメントされ、それに同期してデータバス１０２に順次データが入力される。加えて信号線１０４から入力される書換え信号は、一回のアドレス信号入力中に一回だけ”１”データのパルス信号が入力されるものとする。さらにＰＲＯＭ１１は、信号線１０７から”１”データが入力されると、アドレスバス１０１に指定された領域に格納されているデータをデータバス１０３に出力し、信号線１０８から”１”データが入力されると、アドレスバス１０１に指定された領域のデータがデータバス１０３のデータに書き換えられるものとする。
【００１５】
以上のような基本的な構成における、データ制御回路２とメモリ制御回路３の、より具体的な構成に基づく各実施の形態について、以下に図面を用いて説明する。
【００１６】
（実施の形態１）
図２に、実施の形態１における半導体装置に用いられるデータ制御回路２とメモリ制御回路３のブロック図を示す。
【００１７】
最初に、データ制御回路２について説明する。２１はトライステートバッファであり、信号線１０６から”１”データを受けるとデータバス１０２のデータをデータバス１０３に出力し、それ以外は”Ｈｉ−ｚ”を出力する。従って、比較回路１２は、信号線１０６の出力が”１”以外の場合は、データバス１０２と１０３のデータを比較することになる。ここで、本発明の実施の形態において、トライステートバッファ２１は、実際にはＮビット分備えられているものとする（図示省略）。
【００１８】
次に、メモリ制御回路３について説明する。ＡＮＤ回路３１は、信号線１０５と信号線１０４のデータをＡＮＤ出力する。フリップフロップ３２は、ＡＮＤ回路３１の出力信号を受けると、その立ち上がりエッジに同期して”１”データを信号線１０６に出力する。切替回路３３は信号線１０４の信号を、信号線１０６のデータが”１”の場合信号線１０８に出力し、それ以外の場合は信号線１０７に出力する。ここでフリップフロップ３２は、半導体装置もしくは外部から初期値”０”データにリセットされているものとする。
【００１９】
以上のように構成されたデータ制御回路２とメモリ制御回路３について、その動作を説明する。
【００２０】
まず、外部から供給されるデータとＰＲＯＭ１１のデータが一致している場合の動作について説明する。ＰＲＯＭ１１には、外部から任意のアドレス信号と比較したいデータ信号と書換え信号が供給される。フリップフロップ３２は初期値”０”に設定されているため、切替回路３３は信号線１０４の信号を信号線１０７に出力する。また、ＰＲＯＭ１１は、アドレス信号が入力されると指定されたアドレスのデータをデータバス１０３に出力する。この時、フリップフロップ３２の出力が”０”でありデータ制御回路２１は”Ｈｉ−ｚ”を出力しているため、データバス１０３のデータは比較回路１２に供給されている。従って、比較回路１２は、外部から供給されるデータバス１０２のデータとＰＲＯＭ１１のデータを比較する。比較されたデータは一致するので、比較回路１２は”０”データを、信号線１０５に出力する。ＡＮＤ回路３１は”０”を出力するので、フリップフロップ３２はデータの比較が終了しても初期値”０”を出力し続ける。その結果、データの比較は正常に実施されたことになり、順次アドレスをインクリメントしていっても、データの比較が不一致となるまでは同様の動作が繰り返される。
【００２１】
次に、外部から供給されるデータとＰＲＯＭ１１のデータが不一致である場合の動作について説明する。データの不一致が発生すると、比較回路１２は”１”データを信号線１０５に出力する。ＡＮＤ回路３１は”１”を出力するため、フリップフロップ３２はその立ち上がりエッジに同期して”１”データを出力し、以後その値を保持し続ける。切替回路３３は、信号線１０４の書換え信号を信号線１０８に出力する。トライステートバッファ２１はデータバス１０２のデータをデータバス１０３に出力する。その結果、データバス１０３は本来のデータとは異なるデータに変換されることになる。信号線１０８から”１”データが入力されると、ＰＲＯＭ１１のアドレス信号で指定された領域には、データバス１０３の変換されたデータが書き込まれる。以後、順次アドレス信号をインクリメントすると、データバス１０２のデータとデータバス１０３のデータが異なる場合は、ＰＲＯＭ１１のデータがデータバス１０２のデータに書き換えられることになる。
【００２２】
以上のように、外部から供給されるデータとＰＲＯＭのデータを照合するだけでなく、不一致の場合はＰＲＯＭのデータそのものを書き換えてしまう。従って、以後データを照合しても、誤ったデータと照合することになるため情報の解読が不可能となる。その結果、データの照合は一度だけになるので、実質正規のユーザ以外が機密データを解読することが不可能である。
【００２３】
（実施の形態２）
図３は、実施の形態２におけるメモリ制御回路３のブロック図を示す。データ制御回路２は、実施の形態１で述べたものと同一である。
【００２４】
タイミング発生回路３６は、クロック信号を信号線３０１、３０２、および３０３に出力する。ＡＮＤ回路３１は、信号線１０５と信号線１０４のデータをＡＮＤ出力する。フリップフロップ３２は、信号線３０３のデータが”１”のとき、ＡＮＤ回路３１の出力信号を受けると、その立ち上がりエッジに同期して”１”データを出力する。フリップフロップ３４は、信号線１０５が”１”の時信号線３０１の信号を受けると、その立ち上がりエッジに同期して”１”データを格納する。同様に、フリップフロップ３５は、信号線１０５が”１”の時信号線３０２の信号を受けると、その立ち上がりエッジに同期して”１”データを格納する。デコーダ３７は、フリップフロップ３２、３４、および３５の出力を受けると同時に、切替信号を信号線１０６に出力するとともに、併せてデコード信号を信号線１０９に出力する。
【００２５】
切替回路３３は、信号線１０６のデータが”１”の場合、信号線１０４の信号を信号線１０８に出力し、それ以外の場合は信号線１０７に出力する。
【００２６】
図４にタイミング発生回路３６のタイミングチャートを示す。タイミング発生回路３６は、最初のアドレスがＰＲＯＭ１１に入力されると１回だけパルス信号を信号線３０１に出力し（図中（Ａ）部）、以後順次アドレスが入力されても信号線３０１にはパルスを出力しない。同様に２番目のアドレスが入力されると信号線３０２には１回だけパルス信号が出力される（図中（Ｂ）部）。さらに３番目以降のアドレスが入力される時は、信号線３０３にのみパルス信号が出力され、信号線１０４の信号を出力することが可能となる。デコーダ３７は、表１に示すデコード結果が得られるデコード回路である。
【００２７】
【表１】
0004663162.tif 000002
【００２８】
さらに、フリップフロップ３２、３４および３５は、半導体装置もしくは外部から、初期値”０”データにリセットされているものとする。
【００２９】
以上のように構成されたメモリ制御回路３を用いた本発明の実施例について、その動作を説明する。
【００３０】
まず第１の動作例として、外部から供給されるデータとＰＲＯＭ１１のデータが一致している場合の動作について説明する。図５に、その場合のタイミングチャートを示す。
【００３１】
ＰＲＯＭ１１には、外部から任意のアドレス信号と、比較したいデータ信号と、書換え信号が供給される。ＰＲＯＭ１１は、アドレス信号が入力されると、指定されたアドレスのデータをデータバス１０３に出力する。比較回路１２は、外部から供給されるデータバス１０２のデータとＰＲＯＭ１１のデータを比較する。この時データが一致しているため（図中（Ａ）〜（Ｄ））、信号線１０５は”０”であり、タイミング発生回路３６から信号線３０１、３０２および３０３にクロック信号が発生しても、フリップフロップ３２、３４および３５は初期値”０”を維持する。従って表１に示すように、デコーダ３７は、信号線１０９に”０，０”を出力し、信号線１０６に”０”を出力する。
【００３２】
切替回路３３は、信号線１０４の書換え信号を信号線１０７に出力する。この時、デコーダ３７の切替信号は”０”であり、データ制御回路２１は”Ｈｉ−ｚ”を出力しているため、ＰＲＯＭ１１から出力されたデータが、次のアドレス信号が入力されるまで比較回路１２に供給されている。以上のようにデータの比較が実施され、順次アドレスをインクリメントしていっても、データの比較が不一致となるまでは同様の動作が繰り返される。
【００３３】
次に第２の動作例として、外部から供給される最初のデータとＰＲＯＭ１１の最初のデータが不一致の場合の動作について説明する。
【００３４】
図６にその場合のタイミングチャートを示す。データの不一致が発生すると（図中タイミング（Ｆ））、比較回路１２は”１”データを信号線１０５に出力する。この時フリップフロップ３４は、タイミング発生回路３６から出されるクロック信号の立ち上がりエッジに同期して信号線１０５の”１”データを格納し、以後出力を保持する。デコーダ３７は、それぞれ”０，０”と”１”を信号線１０９と信号線１０６に出力する（表１）。切替回路３３は、信号線１０６の”１”データを受け、信号線１０４の書換え信号を信号線１０８に出力する。トライステートバッファ２１は、信号線１０６の”１”データを受けデータバス１０３のデータをデータバス１０２のデータに変換する。結果として、ＰＲＯＭ１１は信号線１０８から書換え信号を入力され、指定されたアドレス領域のデータは、本来とは異なるデータバス１０２のデータに書き換えられる。信号線１０６の”１”データは維持されつづけるので、以後、アドレス信号をインクリメントしてもデータの照合は実施されず、ＰＲＯＭ１１は外部から与えられるデータに順次書き換えられる。
【００３５】
このような処理によれば、例えば、データの照合を開始する際に最初のデータをユーザーＩＤとしておくと、このユーザーＩＤが不一致の場合は正規のユーザー以外と判断して、無条件にＰＲＯＭのデータを書換えるという処理ができる。また、デコーダ３７のデコード値”０，０”を”処理エラーなし”と位置付けておくと、正規のユーザー以外には処理が誤っていることを認識できない。
【００３６】
次に第３の動作例として、外部から供給される２番目のデータとＰＲＯＭ１１から読み出される２番目のデータが不一致である場合の動作について説明する。図７にその場合のタイミングチャートを示す。最初のデータは一致しているので、フリップフロップ３４は初期値”０”を保持している。２番目のデータの不一致が発生すると、比較回路１２は”１”データを信号線１０５に出力する。この時フリップフロップ３５は、タイミング発生回路３６から出されるクロック信号の立ち上がりエッジに同期して信号線１０５の”１”データを格納し、以後出力を保持する（図中タイミング（Ｄ））。デコーダ３７は、それぞれ”０，１”と”０”を信号線１０９と信号線１０６に出力する（表１）。切替回路３３は信号線１０６の”０”データを受け、信号線１０４の書換え信号を信号線１０７に出力する。トライステートバッファ２１は信号線１０６の”０”データを受け、”Ｈｉ−ｚ”を出力する。結果として、ＰＲＯＭ１１は信号線１０７から信号を入力されると、指定されたアドレス領域のデータをデータバス１０３に出力する。フリップフロップ３４と３５はデータを保持しているので、デコーダ３７も出力を保持する。従って、２番目のデータが不一致判定されたにも関わらず、以後アドレス信号をインクリメントしてもデータの書換えは実施されない。
【００３７】
このような処理によれば、例えば、データの照合を開始する際に最初のデータをユーザーＩＤ、２番目のデータをＲＯＭ−ＩＤとしておくと、ユーザーＩＤが一致してＲＯＭ−ＩＤが不一致の場合は、正規のユーザーではあるが、誤ってＰＲＯＭのデータと異なるデータとを照合してしまったと判断して、正しいデータと照合できるまでＰＲＯＭのデータを保護しておくことが可能である。また、デコーダ３７のデコード値”０，１”を”処理エラーあり”と位置付けておくと、正規のユーザーは直に状況を把握することができる。
【００３８】
次に第４の動作例として、外部から供給される３番目以降のデータとＰＲＯＭ１１から読み出される３番目以降のデータが不一致の場合の動作について説明する。
【００３９】
図８に、その場合のタイミングチャートを示す。１番目と２番目のデータは一致しているので、フリップフロップ３４と３５はそれぞれ初期値”０”を保持している。３番目以降のデータの不一致が発生すると、比較回路１２は”１”データを信号線１０５に出力する。この時フリップフロップ３２は、信号線１０４の信号の立ち上がりエッジに同期して信号線１０５の”１”データを格納し、以後出力を保持する（図中タイミング（Ｆ））。デコーダ３７は、それぞれ”１，０”と”１”を信号線１０９と信号線１０６に出力する（表１）。切替回路３３は、信号線１０６の”１”データを受け、信号線１０４の書換え信号を信号線１０８に出力する。トライステートバッファ２１は信号線１０６の”１”データを受け、データバス１０３のデータをデータバス１０２のデータに変換する。結果として、ＰＲＯＭ１１は信号線１０８から書換え信号を入力され、指定されたアドレス領域のデータは本来とは異なるデータバス１０２のデータに書き換えられる。信号線１０６の”１”データは維持されつづけるので、以後、アドレス信号をインクリメントしてもデータの照合は実施されず、ＰＲＯＭ１１は外部から与えられるデータに順次書き換えられる。
【００４０】
このような処理によれば、仮に、第２、第３の動作例で示したユーザーＩＤやＲＯＭ−ＩＤが解読されたとしても、実施の形態１と同様に以降のデータの照合において、一度間違えると二度と照合ができなくなるため、ＰＲＯＭのデータの機密は保持される。また、デコーダ３７のデコード値”１，０”を”処理エラーあり”と位置付けておくと、正規のユーザーは直に状況を把握することができる。
【００４１】
以上の、第１〜第４の動作例のように、ＰＲＯＭのデータにユーザーＩＤとＲＯＭ−ＩＤを設定しておき、データの照合と書換えに対して処理のステップを設けることで、データの機密保持レベルを低下させることなく、正規のユーザーが使用する際に誤ってＰＲＯＭデータを書換えてしまうことを防止することが可能となる。
【００４２】
【発明の効果】
以上のように本発明によれば、ＰＲＯＭに接続されているデータバスを制御するデータ制御回路と比較回路、メモリへの書換え読出しを制御するメモリ制御回路を用いることで、データの照合だけでなく、一度照合を間違えるとＰＲＯＭに記憶されているデータを書き換えてしまうことにより、以後の照合を不可能とし、より高度にデータの機密を保持することができる。
【００４３】
さらに、ＰＲＯＭのデータそのものをセキュリティコード（鍵データ、暗号）として扱うことが可能なので、セキュリティコード記憶素子等の余分な回路や情報を持つ必要がないという効果がある。また、一度の処理で、ＰＲＯＭのデータの読出しと書換えを実施するので、例えば市販されているＰＲＯＭライター等で前記処理を実行する場合、ＰＲＯＭライター内の制御回路や制御プログラムを簡素化することが可能である。
【００４４】
加えて、ＰＲＯＭのデータにユーザーＩＤとＲＯＭ−ＩＤを設定しておき、データの照合と書換えに対して処理のステップを設けることで、データの機密保持レベルを低下させることなく、正規のユーザーが使用する際に誤ってＰＲＯＭデータを書換えてしまうことを防止することが可能となる。
【図面の簡単な説明】
【図１】  本発明の実施の形態における半導体装置の概略構成を示すブロック図
【図２】  実施の形態１におけるデータ制御回路とメモリ制御回路の概略構成を示すブロック図
【図３】  実施の形態２におけるメモリ制御回路の概略構成を示すブロック図
【図４】  実施の形態２におけるタイミング発生回路のタイミングチャート
【図５】  実施の形態２における第１例のタイミングチャート
【図６】  実施の形態２における第２例のタイミングチャート
【図７】  実施の形態２における第３例のタイミングチャート
【図８】  実施の形態２における第４例のタイミングチャート
【図９】  従来例の半導体装置の概略構成を示すブロック図
【符号の説明】
１  半導体装置
２  データ制御回路
３  メモリ制御回路
１１  ＰＲＯＭ
１２  比較回路
２１  トライステートバッファ
３１  ＡＮＤ回路
３２、３４、３５  フリップフロップ
３３  切替回路
３６  タイミング発生回路
３７  デコーダ
１０１  アドレスバス
１０２  データバス
１０３  データバス
１０４〜１０９  信号線
３０１、３０２、３０３  信号線
９０１  ＲＯＭ
９０２  アドレスバス
９０３  データバス
９０４  アドレスカウンタ
９０５  出力制御回路
９０６  コンパレータ
９０７  不一致フラグ
【図１】
0004663162.tif 000003
【図２】
0004663162.tif 000004
【図３】
0004663162.tif 000005
【図４】
0004663162.tif 000006
【図５】
0004663162.tif 000007
【図６】
0004663162.tif 000008
【図７】
0004663162.tif 000009
【図８】
0004663162.tif 000010
【図９】
0004663162.tif 000011