(57)【特許請求の範囲】
【請求項１】
外部からの命令信号により論理が書き換え可能な論理集積回路と、
前記論理集積回路の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理集積回路の第２の論理状態に係わる第２の情報とを比較し、前記第１、第２の情報が一致しないときは前記論理集積回路の論理の前記第１の論理状態から第２の論理状態への書き換えを禁止する手段とを備え、
前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、
前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報として記憶する記憶手段をさらに備えたことを特徴とする半導体装置。
【請求項２】
前記論理集積回路は、３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、
前記半導体装置はさらに、
前記第１、第２の情報が一致したときに、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報のうち、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、
前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、
アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備えたことを特徴とする請求項１記載の半導体装置。
【請求項３】
外部からの命令信号により論理が書き換え可能な論理集積回路と、
前記命令信号に応じて、前記論理集積回路の現在の第１の論理状態に係わる第１の情報を検出し、前記現在より前の前記論理集積回路の第２の論理状態に係わる第２の情報と比較し、前記第１、第２の情報が一致しないときは前記論理集積回路の論理が前記第２の論理状態から前記第１の論理状態へ書き換えられたと判定する判定手段とを備え、
前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、
前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報として記憶する記憶手段をさらに備えたことを特徴とする半導体装置。
【請求項４】
前記判定手段は、前記論理集積回路の論理が書き換えられたと判定した場合に判定信号を出力することを特徴とする請求項３記載の半導体装置。
【請求項５】
前記判定手段は、定期的に前記判定動作を行うことを特徴とする請求項３記載の半導体装置。
【請求項６】
外部からの命令信号により論理が書き換え可能な論理集積回路と、
前記命令信号と少なくとも１つの基準信号とを比較し、前記命令信号と前記基準信号が同じ信号である場合に前記論理集積回路の論理の書き換えを禁止する禁止手段とを備え、
前記論理集積回路は３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、
前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、
アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備えたことを特徴とする半導体装置。
【請求項７】
前記基準信号として複数種類の信号を予め記憶する記憶手段をさらに備え、
前記禁止手段は、前記命令信号と前記複数種類の信号とを比較することを特徴とする請求項６記載の半導体装置。
【請求項８】
前記論理集積回路は、各々が所定の演算機能を有する複数の演算手段と、
前記命令信号に従って前記複数の演算手段の相互配線を変更して前記論理を書き換える配線手段とを備えたことを特徴とする請求項６記載の半導体装置。
【請求項９】
前記論理集積回路は、ＦＰＧＡ（Field Programmable Gate Array ）を含むことを特徴とする請求項６記載の半導体装置。
【請求項１０】
前記多値メモリセルは、制御ゲートと浮遊ゲートとを有することを特徴とする請求項６記載の半導体装置。
【請求項１１】
前記多値メモリセルは、ＭＮＯＳ、マスクＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＰＲＯＭ、ＦＲＡＭ、及びフラッシュ不揮発性メモリの少なくともいずれか一つであることを特徴とする請求項６記載の半導体装置。
【請求項１２】
前記命令信号に応じて前記論理集積回路の論理を書き換える書き換え手段をさらに備えたことを特徴とする請求項６記載の半導体装置。
【請求項１３】
前記論理集積回路の論理を読み出す読み出し手段をさらに備えたことを特徴とする請求項６記載の半導体装置。
【請求項１４】
前記ビット情報並替え手段は、前記一つの符号の誤り訂正能力に応じて、前記複数の多値メモリセルの一つに記憶する同一符号におけるビットの数を制御することを特徴とする請求項６記載の半導体装置。
【請求項１５】
前記ビット情報並替え手段は、前記複数の多値メモリセルの一つが記憶するビット数がｍであるときに、ｍ個のビット情報を前記１個の多値メモリセルに記憶させるように、符号長ｎの符号ｍ個をｍ×ｎ配列の各行として並べ替えることを特徴とする請求項６記載の半導体装置。
【請求項１６】
外部からの命令信号により論理が書き換え可能な論理集積回路の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理集積回路の第２の論理状態に係わる第２の情報とを比較し、
前記第１、第２の情報が一致しないときは前記論理集積回路の論理の前記第１の論理状態から前記第２の論理状態への書き換えを禁止するステップを含み、
前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、
前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報とすることを特徴とする論理書き換え防止方法。
【請求項１７】
機密保持機能を有する半導体装置であって、
少なくとも一時的に符号処理プログラムを保持し、前記符号処理プログラムに対応した命令信号を出力する制御手段と、
前記命令信号が与えられて前記プログラムに従って論理を変更して、少なくともデータ及び前記データに関わるアドレスの何れか一方に符号処理を施す論理が可変な論理手段と、
前記データを記憶する第１の記憶手段と、
前記論理手段の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理手段の第２の論理状態に係わる第２の情報とを比較し、前記第１、第２の情報が一致しないときは前記論理手段の論理の前記第１の論理状態から前記第２の論理状態への書き換えを禁止する手段とを備え、
前記第１の情報及び前記第２の情報は、前記論理手段に含まれる複数論理素子に関する情報であり、
前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理手段が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報として記憶する記憶手段をさらに備えたことを特徴とする半導体装置。
【請求項１８】
機密保持機能を有する半導体装置であって、
少なくとも一時的に符号処理プログラムを保持し、前記符号処理プログラムに対応した命令信号を出力する制御手段と、
前記命令信号が与えられて前記プログラムに従って論理を変更して、少なくともデータ及び前記データに関わるアドレスの何れか一方に符号処理を施す論理が可変な論理手段と、
前記データを記憶する第１の記憶手段と、
前記命令信号と少なくとも一つの基準信号とを比較し、前記命令信号と前記基準信号が同じ信号である場合に前記論理手段の論理の書き換えを禁止する禁止手段とを備え、
前記論理手段は３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、
前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、  前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、
アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備えたことを特徴とする半導体装置。
【請求項１９】
前記基準信号として複数種類の信号を予め記憶する第２の記憶手段をさらに備え、
前記禁止手段は、前記命令信号と前記複数種類の信号とを比較することを特徴とする請求項１８記載の半導体装置。
【請求項２０】
前記論理手段は、各々が所定の演算機能を有する複数の演算手段と、
前記命令信号に従って前記複数の演算手段の相互配線を変更して前記論理を書き換える配線手段とを備えたことを特徴とする請求項１８記載の半導体装置。
【請求項２１】
前記論理手段は、ＦＰＧＡ（Field Programmable Gate Array ）を含むことを特徴とする請求項１８記載の半導体装置。
【請求項２２】
前記多値メモリセルは、制御ゲートと浮遊ゲートとを有することを特徴とする請求項１８記載の半導体装置。
【請求項２３】
前記命令信号に応じて前記論理手段の論理を書き換える書き換え手段をさらに備えたことを特徴とする請求項１８記載の半導体装置。
【請求項２４】
前記論理手段の論理を読み出す読み出し手段をさらに備えたことを特徴とする請求項１８記載の半導体装置。
【請求項２５】
前記論理手段は、少なくとも暗号化及び復号化処理の何れか一方を含む前記符号処理を行うことを特徴とする請求項１８記載の半導体装置。
【請求項２６】
前記論理手段は、前記データが前記第１の記憶手段に記憶される前に少なくとも前記データ及び前記アドレスの何れか一方を暗号化する前記符号処理を行うことを特徴とする請求項１８記載の半導体装置。
【請求項２７】
前記論理手段は、前記データが前記第１の記憶手段から出力される際に少なくとも前記データ及び前記データに関わるアドレスの何れか一方を暗号化する前記符号処理を行うことを特徴とする請求項１８記載の半導体装置。
【請求項２８】
前記論理手段は、前記データが前記第１の記憶手段から出力される際に少なくとも前記データ及び前記データに関わるアドレスの何れか一方を復号化する前記符号処理を行うことを特徴とする請求項１８記載の半導体装置。
【請求項２９】
前記第１の記憶手段は、少なくともマスクＲＯＭ及び電気的に書き換え可能な不揮発性記憶装置の何れか一方を含むことを特徴とする請求項１８記載の半導体装置。
【請求項３０】
前記半導体装置は、
端末機との間で非接触で前記データの送受信を行うアンテナ手段と、
前記アンテナ手段の受信出力から電源電圧を発生し、且つ前記端末機から送られた信号を復調すると共に、前記端末機に送信する前記データを重畳した高周波電流を生成して前記アンテナ手段に出力する高周波処理手段とを備えたことを特徴とする請求項１８記載の半導体装置。
【請求項３１】
機密保持機能を有し、論理が変更可能な論理回路と、前記論理回路を制御する制御装置とを備えた半導体装置の符号処理方法であって、
前記制御装置に符号処理プログラムを供給する供給ステップと、
前記制御装置から前記プログラムに対応した命令信号を出力させる出力ステップと、
前記命令信号を前記論理回路に与えて前記プログラムに従って前記論理回路の論理を変更する論理変更ステップと、
前記変更した論理によって少なくともデータ及び前記データに関わるアドレスの何れか一方に符号処理を施す符号処理ステップと、
前記データを記憶装置に記憶するステップとを含み、
前記論理変更ステップは、
前記論理回路の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理回路の第２の論理状態に係わる第２の情報とを比較し、
前記第１、第２の情報が一致しないときは前記論理回路の論理の前記第１の論理状態から前記第２の論理状態への書き換えを禁止するステップを含み、
前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、
前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報とすることを特徴とする符号処理方法。
【請求項３２】
論理が変更可能であって、暗号化プログラム及び復号化プログラムの何れか一方が与えられ、前記プログラムに対応した命令信号により前記論理が変更され、前記変更された論理により信号を処理する論理手段を備えた機密保持機能を有する半導体装置であって、前記論理手段は、
前記命令信号により論理が書き換え可能な論理集積回路と、
前記命令信号と少なくとも一つの基準信号とを比較し、前記命令信号と前記基準信号が同じ信号である場合に前記論理集積回路の論理の書き換えを禁止する禁止手段とを備え、
前記論理集積回路は３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、
前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、
アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備えたことを特徴とする半導体装置。
【請求項３３】
外部からの命令信号により論理が書き換え可能で、３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備えた論理集積回路の論理集積回路における前記命令信号と少なくとも一つの基準信号とを比較し、
前記命令信号が前記基準信号と同じ信号である場合に、前記論理集積回路の論理の書き換えを禁止し、
前記命令信号が前記基準信号とは異なる信号である場合に、第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メメモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替え、
前記並べ替えられたビット情報に対応する複数の電圧を発生し、
アドレス情報を受けて、前記電圧を、前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して、前記論理の書き換えを行うステップを含むことを特徴とする論理書き換え方法。
【請求項３４】
外部からの命令信号により論理が書き換え可能で、３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備えた論理集積回路の論理書き換えを防止するプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、
前記プログラムは、コンピュータに、
前記論理集積回路における前記命令信号と少なくとも一つの基準信号とを比較する手順と、
前記命令信号が前記基準信号と同じ信号である場合に、前記論理集積回路の論理の書き換えを禁止する手順と、
前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号を入力する手順と、
前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メメモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手順と、
前記並べ替えられたビット情報に対応する複数の電圧を発生する手順と、
アドレス情報を受けて、前記電圧を、前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して、前記論理の書き換えを行う手順とを実行させることを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理を電気的に変更可能な論理集積回路や機密保持機能を備えた半導体装置、該論理集積回路の論理の破壊を防ぐための論理書き換え防止方法、論理書き換え方法、符号処理方法、及びそのソフトウェアを記憶した記憶媒体に関するものである。
【０００２】
【従来の技術】
近年では、論理集積回路の開発期間の短縮や、消費者への出荷後の更新等を目的として、論理を変更可能（書換可能）な論理集積回路の需要が高まってきている。この書換可能な論理集積回路は、その論理を自在に書換可能なものであり、これにより、全く異なる論理機能を有する回路をも実現できるものである。このような論理集積回路は、携帯電話等の通信機器、コンピュータのアドオンボード、ビデオゲーム装置やカラオケ機器等に幅広く用いられている。
【０００３】
一方、近年では特に、コンピュータの書換可能な記憶装置、例えば、ハードディスク装置やフロッピーディスク装置、或いはＢＩＯＳ記憶用フラッシュメモリ等を不正に書き換えるプログラムが拡がっており、問題となっている。
このようなプログラムは、ウィルスプログラムとも呼ばれており、通信媒体や、フロッピーディスク等の入替可能な記憶媒体等を介して、他のコンピュータに次々と感染して拡散するようになされている。そして、ウィルスプログラムによっては、コンピュータの記憶内容を破壊することで、動作を不能にしたりするものもあり、コンピュータの使用者に多大な損害を与えている。
そこで、コンピュータの書換可能な記憶装置に対しては、ワクチンプログラム等、ウィルスプログラムの感染を予防したり治癒させる手段が開発され、広く用いられるようになっている。
例えば、特開平８−１７９９４２号公報には、ウィルスプログラムの存在を検出するようになされたコンピュータシステムが開示されている。また、特開平８−２２３９０号公報には、ウィルスプログラムによりコンピュータ内のデータソフトウェアが書き換えられたかを検出するシステムが開示されている。
【０００４】
また、従来より、機密保持機能を有する半導体装置が提案されている。
例えば、特開平４−２３２５８８号公報に開示されている装置は、特に、ＩＣカードを使用する際のセキュリティ保持に関するもので、基本ソフトウエア等が格納されるＲＯＭ、暗号化ソフト及び暗号化キーを記憶するＥＥＰＲＯＭ、製造者の識別番号等が記憶されるＲＡＭ、暗号化動作を制御するＣＰＵを備えている。
また、特開平４−１１４２０号公報には、暗号化対象のＩＤデータを記憶する不揮発性メモリと、ＩＤデータを暗号化する暗号化回路、制御回路等を備えたワンチップマイクロコンピュータが開示されている。また、特開昭６３−２９３６３７号公報には、暗号化されたプログラム及びデータを格納する不揮発性メモリ（ＲＯＭ）、暗号化及び復号化のためのキーを記憶する揮発性メモリ（ＲＡＭ）、この暗号化キーを用いて暗号化されたデータを記憶する書換え可能なメモリ（ＥＥＰＲＯＭ）を備えたマイクロコンピュータが開示されている。
このような半導体装置では、ＥＥＰＲＯＭは、電荷蓄積の有無によって情報を保持しているので、構造解析によって記憶しているプログラムを解読することは不可能である。このため、機密データを暗号化・復号化するための論理を解読することはできない。したがって、マスクＲＯＭ内の暗号化された機密データを復号化することは極めて困難であり、解読されることは殆どない。
【０００５】
【発明が解決しようとする課題】
ところで、前述したような書換可能な論理集積回路は、その需要の高まりと、より安全性が求められる用途に用いられるようになったことから、コンピュータの記憶装置と同様に、ウィルスプログラムに対する対抗（免疫）機能、すなわちウィルスプログラムによる論理の破壊に対する論理防衛機能を有する必要が生じるようになった。
しかしながら、書換可能な論理集積回路でのウィルスプログラムに対する対抗方法（論理防衛方法）が存在しなかった。
すなわち、特開平８−１７９９４２号公報や特開平８−２２３９０号公報等に開示されているような従来のウィルスプログラムに対する対抗方法は、ＣＰＵで用いられるコンピュータシステム全体の動作制御を行うためのデータを対象としており、書換可能な論理集積回路の論理がウィルスプログラムにより書き換えられることを防ぐことはできなかった。
したがって、従来の書換可能な論理集積回路は、ウィルスプログラムにより論理が不正に書き換えられてしまう、というウィルスによる論理の破壊の問題を避けることができなかった。
【０００６】
一方、前述したような機密保持機能を有する半導体装置において、この装置が具備するＥＥＰＲＯＭは、１ビットの情報を記憶するのに必要な面積が大きいので、高集積化が困難であるという問題があった。また、この装置では、機密データを暗号化・復号化するためにＣＰＵにプログラムを処理させなくてはならないため、データの出力に時間がかかる上に、データを出力している間はＣＰＵが他の処理を行うことができない問題があった。さらには、この装置でも、ウィルスプログラムに感染する可能性が充分あり、ウィルスプログラムの感染により、装置の記憶内容が破壊され、動作不能となる問題があった。
したがって、従来の機密保持機能を有する不揮発性半導体装置では、高集積化が難しく、安価に提供することができない問題があった。また、記憶データを高速に出力できない上に、データを出力している間は演算装置が他の処理を行うことができないという問題もあった。さらには、ウィルスによる記憶内容の破壊の問題もあり、正確な動作を常に保証することができなかった。
【０００７】
そこで、本発明は、上記の欠点を除去するために成されたもので、書換可能な論理集積回路の論理の破壊を確実に防ぐことを可能とすることを第１の目的とする。
また、論理の破壊を確実に防ぐ機能を書換可能な論理集積回路に具備させるための論理防衛の方法を提供することを第２の目的とする。
また、論理の破壊を確実に防ぐ機能を書換可能な論理集積回路に具備させるためのソフトウェアを記憶した記憶媒体を提供することを第３の目的とする。
また、記憶内容の機密保持機能を備えた半導体装置の高速動作を可能にするとともに、安価に製造できるようにし、さらには正確なその動作を常に保証することを可能とすることを第４の目的とする。
また、記憶内容の機密保持機能、及び正確な動作を常に保証するための機能を半導体装置に具備させるための暗号化及び復号化の方法を提供することを第５の目的とする。
また、記憶内容の機密保持機能、及び正確な動作を常に保証するための機能を半導体装置に具備させるためのソフトウエアを記憶した記憶媒体を提供することを第６の目的とする。
また、端末機との間で非接触でデータの送受信を行うことができる機密保持機能、及び正確な動作を常に保証するための機能を備えた半導体装置を提供することを第７の目的とする。
【０００８】
【課題を解決するための手段】
第１の発明は、外部からの命令信号により論理が書き換え可能な論理集積回路と、前記論理集積回路の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理集積回路の第２の論理状態に係わる第２の情報とを比較し、前記第１、第２の情報が一致しないときは前記論理集積回路の論理の前記第１の論理状態から第２の論理状態への書き換えを禁止する手段とを備え、前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報として記憶する記憶手段をさらに備えたことを特徴とする半導体装置である。
第１の発明の一態様では、前記論理集積回路は、３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、前記半導体装置はさらに、前記第１、第２の情報が一致したときに、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報のうち、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備える。
第２の発明は、外部からの命令信号により論理が書き換え可能な論理集積回路と、前記命令信号に応じて、前記論理集積回路の現在の第１の論理状態に係わる第１の情報を検出し、前記現在より前の前記論理集積回路の第２の論理状態に係わる第２の情報と比較し、前記第１、第２の情報が一致しないときは前記論理集積回路の論理が前記第２の論理状態から前記第１の論理状態へ書き換えられたと判定する判定手段とを備え、前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報として記憶する記憶手段をさらに備えたことを特徴とする半導体装置である。
第２の発明の一態様では、前記判定手段は、前記論理集積回路の論理が書き換えられたと判定した場合に判定信号を出力する。
第２の発明の一態様では、前記判定手段は、定期的に前記判定動作を行う。
第３の発明は、外部からの命令信号により論理が書き換え可能な論理集積回路と、前記命令信号と少なくとも１つの基準信号とを比較し、前記命令信号と前記基準信号が同じ信号である場合に前記論理集積回路の論理の書き換えを禁止する禁止手段とを備え、前記論理集積回路は３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備えたことを特徴とする半導体装置である。
第３の発明の一態様では、前記基準信号として複数種類の信号を予め記憶する記憶手段をさらに備え、前記禁止手段は、前記命令信号と前記複数種類の信号とを比較する。
第３の発明の一態様では、前記論理集積回路は、各々が所定の演算機能を有する複数の演算手段と、前記命令信号に従って前記複数の演算手段の相互配線を変更して前記論理を書き換える配線手段とを備える。
第３の発明の一態様では、前記論理集積回路は、ＦＰＧＡ（Field Programmable Gate Array ）を含む。
第３の発明の一態様では、前記多値メモリセルは、制御ゲートと浮遊ゲートとを有する。
第３の発明の一態様では、前記多値メモリセルは、ＭＮＯＳ、マスクＲＯＭ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＰＲＯＭ、ＦＲＡＭ、及びフラッシュ不揮発性メモリの少なくともいずれか一つである。
第３の発明の一態様では、前記命令信号に応じて前記論理集積回路の論理を書き換える書き換え手段をさらに備える。
第３の発明の一態様では、前記論理集積回路の論理を読み出す読み出し手段をさらに備える。
第３の発明の一態様では、前記ビット情報並替え手段は、前記一つの符号の誤り訂正能力に応じて、前記複数の多値メモリセルの一つに記憶する同一符号におけるビットの数を制御する。
第３の発明の一態様では、前記ビット情報並替え手段は、前記複数の多値メモリセルの一つが記憶するビット数がｍであるときに、ｍ個のビット情報を前記１個の多値メモリセルに記憶させるように、符号長ｎの符号ｍ個をｍ×ｎ配列の各行として並べ替える。
第４の発明は、外部からの命令信号により論理が書き換え可能な論理集積回路の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理集積回路の第２の論理状態に係わる第２の情報とを比較し、前記第１、第２の情報が一致しないときは前記論理集積回路の論理の前記第１の論理状態から前記第２の論理状態への書き換えを禁止するステップを含み、前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報とすることを特徴とする論理書き換え防止方法である。
第５の発明は、機密保持機能を有する半導体装置であって、少なくとも一時的に符号処理プログラムを保持し、前記符号処理プログラムに対応した命令信号を出力する制御手段と、前記命令信号が与えられて前記プログラムに従って論理を変更して、少なくともデータ及び前記データに関わるアドレスの何れか一方に符号処理を施す論理が可変な論理手段と、前記データを記憶する第１の記憶手段と、前記論理手段の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理手段の第２の論理状態に係わる第２の情報とを比較し、前記第１、第２の情報が一致しないときは前記論理手段の論理の前記第１の論理状態から前記第２の論理状態への書き換えを禁止する手段とを備え、前記第１の情報及び前記第２の情報は、前記論理手段に含まれる複数論理素子に関する情報であり、前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理手段が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報として記憶する記憶手段をさらに備えたことを特徴とする半導体装置である。
第６の発明は、機密保持機能を有する半導体装置であって、少なくとも一時的に符号処理プログラムを保持し、前記符号処理プログラムに対応した命令信号を出力する制御手段と、前記命令信号が与えられて前記プログラムに従って論理を変更して、少なくともデータ及び前記データに関わるアドレスの何れか一方に符号処理を施す論理が可変な論理手段と、前記データを記憶する第１の記憶手段と、前記命令信号と少なくとも一つの基準信号とを比較し、前記命令信号と前記基準信号が同じ信号である場合に前記論理手段の論理の書き換えを禁止する禁止手段とを備え、前記論理手段は３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備えたことを特徴とする半導体装置である。
第６の発明の一態様では、前記基準信号として複数種類の信号を予め記憶する第２の記憶手段をさらに備え、前記禁止手段は、前記命令信号と前記複数種類の信号とを比較する。
第６の発明の一態様では、前記論理手段は、各々が所定の演算機能を有する複数の演算手段と、前記命令信号に従って前記複数の演算手段の相互配線を変更して前記論理を書き換える配線手段とを備える。
第６の発明の一態様では、前記論理手段は、ＦＰＧＡ（Field Programmable Gate Array ）を含む。
第６の発明の一態様では、前記多値メモリセルは、制御ゲートと浮遊ゲートとを有する。
第６の発明の一態様では、前記命令信号に応じて前記論理手段の論理を書き換える書き換え手段をさらに備える。
第６の発明の一態様では、前記論理手段の論理を読み出す読み出し手段をさらに備える。
第６の発明の一態様では、前記論理手段は、少なくとも暗号化及び復号化処理の何れか一方を含む前記符号処理を行う。
第６の発明の一態様では、前記論理手段は、前記データが前記第１の記憶手段に記憶される前に少なくとも前記データ及び前記アドレスの何れか一方を暗号化する前記符号処理を行う。
第６の発明の一態様では、前記論理手段は、前記データが前記第１の記憶手段から出力される際に少なくとも前記データ及び前記データに関わるアドレスの何れか一方を暗号化する前記符号処理を行う。
第６の発明の一態様では、前記論理手段は、前記データが前記第１の記憶手段から出力される際に少なくとも前記データ及び前記データに関わるアドレスの何れか一方を復号化する前記符号処理を行う。
第６の発明の一態様では、前記第１の記憶手段は、少なくともマスクＲＯＭ及び電気的に書き換え可能な不揮発性記憶装置の何れか一方を含む。
第６の発明の一態様では、前記半導体装置は、端末機との間で非接触で前記データの送受信を行うアンテナ手段と、前記アンテナ手段の受信出力から電源電圧を発生し、且つ前記端末機から送られた信号を復調すると共に、前記端末機に送信する前記データを重畳した高周波電流を生成して前記アンテナ手段に出力する高周波処理手段とを備える。
第７の発明は、機密保持機能を有し、論理が変更可能な論理回路と、前記論理回路を制御する制御装置とを備えた半導体装置の符号処理方法であって、前記制御装置に符号処理プログラムを供給する供給ステップと、前記制御装置から前記プログラムに対応した命令信号を出力させる出力ステップと、前記命令信号を前記論理回路に与えて前記プログラムに従って前記論理回路の論理を変更する論理変更ステップと、前記変更した論理によって少なくともデータ及び前記データに関わるアドレスの何れか一方に符号処理を施す符号処理ステップと、前記データを記憶装置に記憶するステップとを含み、前記論理変更ステップは、前記論理回路の現在の第１の論理状態に係わる第１の情報と、前記命令信号に含まれる前記論理回路の第２の論理状態に係わる第２の情報とを比較し、前記第１、第２の情報が一致しないときは前記論理回路の論理の前記第１の論理状態から前記第２の論理状態への書き換えを禁止するステップを含み、前記第１の情報及び前記第２の情報は、前記論理集積回路に含まれる複数論理素子に関する情報であり、前記複数論理素子の中で前記第１の論理状態を構成するために用いられる第１の素子数、前記第１の論理状態を構成するためには用いられない第２の素子数、前記第１又は第２の素子数を示す信号に圧縮を施して得た符号、又は前記論理集積回路が前記第１の論理状態に書き換えられた日付けの少なくともいずれか一つを前記第１の情報とすることを特徴とする符号処理方法である。
第８の発明は、論理が変更可能であって、暗号化プログラム及び復号化プログラムの何れか一方が与えられ、前記プログラムに対応した命令信号により前記論理が変更され、前記変更された論理により信号を処理する論理手段を備えた機密保持機能を有する半導体装置であって、前記論理手段は、前記命令信号により論理が書き換え可能な論理集積回路と、前記命令信号と少なくとも一つの基準信号とを比較し、前記命令信号と前記基準信号が同じ信号である場合に前記論理集積回路の論理の書き換えを禁止する禁止手段とを備え、前記論理集積回路は３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備え、前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号が与えられ、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手段と、前記並べ替えられたビット情報が与えられて、これらの情報に対応した複数の電圧を発生する手段と、アドレス情報を受けて、前記電圧を前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して前記論理を書き換える手段とを備えたことを特徴とする半導体装置である。
第９の発明は、外部からの命令信号により論理が書き換え可能で、３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備えた論理集積回路の論理集積回路における前記命令信号と少なくとも一つの基準信号とを比較し、前記命令信号が前記基準信号と同じ信号である場合に、前記論理集積回路の論理の書き換えを禁止し、前記命令信号が前記基準信号とは異なる信号である場合に、第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メメモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替え、前記並べ替えられたビット情報に対応する複数の電圧を発生し、アドレス情報を受けて、前記電圧を、前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して、前記論理の書き換えを行うステップを含むことを特徴とする論理書き換え方法である。
第１０の発明は、外部からの命令信号により論理が書き換え可能で、３値以上の異なる記憶状態の一つを保持する複数の多値メモリセルを備えた論理集積回路の論理書き換えを防止するプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、前記プログラムは、コンピュータに、前記論理集積回路における前記命令信号と少なくとも一つの基準信号とを比較する手順と、前記命令信号が前記基準信号と同じ信号である場合に、前記論理集積回路の論理の書き換えを禁止する手順と、前記命令信号が前記基準信号とは異なる場合に、任意の符号化方法によって符号化された少なくとも第１の符号と第２の符号を入力する手順と、前記第１の符号を構成する複数の第１のビット情報と前記第２の符号を構成する複数の第２のビット情報の内、桁が同じビット情報同士が一組として前記複数の多値メメモリセルの一つに記憶されるように前記複数の第１と第２のビット情報を並べ替える手順と、前記並べ替えられたビット情報に対応する複数の電圧を発生する手順と、アドレス情報を受けて、前記電圧を、前記複数の多値メモリセルの内の前記アドレス情報に対応するメモリセルに印加して、前記論理の書き換えを行う手順とを実行させるものである。
【０１１２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。
【０１１３】
（１）第１の実施の形態
本発明に係る半導体装置は、例えば、図１に示すような論理集積回路１００により実施される。
【０１１４】
すなわち、論理集積回路１００は、論理防衛機能を有し、ＥＥＰＲＯＭ型の書換可能な論理集積回路であり、配線行列（ＰＩＡ：Programable Interconnect Array）１０１と、ＰＩＡ１０１に接続された複数のマクロセル１０２1 〜１０２n と、複数のマクロセル１０２1 〜１０２n に対応して接続された複数のＩ／Ｏ回路１０４1 〜１０４n と、ＰＩＡ１０１の書換制御回路１０３とを具備している。
【０１１５】
まず、マクロセル１０２1 〜１０２n は各々、カウンタ機能、ＡＮＤ機能、ラッチ機能等、演算ロジックの標準的なライブラリからなり、ＰＩＡ１０１により、高速且つ一定の遅延で相互に接続可能なようになされている。
【０１１６】
ＰＩＡ１０１は、グローバルなバスからなり、このＰＩＡ１０１によるマクロセル１０２1 〜１０２n の接続は、書換制御回路１０３により制御される。
【０１１７】
具体的には、ＰＩＡ１０１は、例えば、図２に示すように、ｍ本の信号線０〜ｍからなるバスライン２０１と、バスライン２０１に接続された入力部２００xin 及び出力部２００xoutとを具備している。
入力部２００xin 及び出力部２００xoutは、複数のマクロセル１０２1 〜１０２n のうち、任意のマクロセル１０２x に対応するものであり、他のマクロセルについても、出力部２００xout及び入力部２００xin と同様の構成をした出力部及び入力部が各々対応して設けられている。
尚、この図２では、説明の簡単のために、マクロセル１０２x に対応した入力部２００xin 及び出力部２００xoutを図示した。他のマクロセルに対応した入力部及び出力部についても、マクロセル１０２x に対応した入力部２００xin 及び出力部２００xoutと同様であるため、その詳細は省略するものとする。
【０１１８】
入力部２００xin は、信号線０〜ｍに対応して接続されたＥＥＰＲＯＭメモリセル２０２x0〜２０２xmと、信号線０〜ｍに対応して接続されると共にＥＥＰＲＯＭメモリセル２０２x0〜２０２xmに対応して接続されたＡＮＤ回路２０３x0〜２０３xmと、ＡＮＤ回路２０３x0〜２０３xmに接続されたＯＲ回路２０４x とを具備しており、ＯＲ回路２０４x は、マクロセル１０２x に対して出力するようになされている。
出力部２００xoutは、ＥＥＰＲＯＭメモリセル２０５x0，２０５x1，・・・と、マクロセル１０２x 及びＥＥＰＲＯＭメモリセル２０５x0，２０５x1，・・・に対応して接続されたＡＮＤ回路２０３x0，２０３x1，・・・と、ＡＮＤ回路２０３x0，２０３x1，・・・に接続されたＯＲ回路２０７x とを具備しており、ＯＲ回路２０４x は、信号線０に対して出力するようになされている。
【０１１９】
さらに、図３に示すように、各メモリセル２０２は、マルチプレクサ４０１、選択回路４０２に接続され、マルチプレクサ４０１には書込み回路４０３、センス回路４０４が接続されている。さらに、これらの回路４０１、４０２、４０３、４０４は、書換制御回路１０３に含まれる制御回路３０１に接続されている。尚、図２では、メモリセル２０２xo、２０２x1、・・・、２０２xmと上記各回路との接続関係のみを示しているが、図２のメモリセル２０５xo、２０５x1、・・・も当然上記各回路と接続されている。
【０１２０】
このようなＰＩＡ１０１では、特に、ＥＥＰＲＯＭメモリセル２０２x0〜２０２xmは、その記憶状態によって、２入力のＡＮＤ回路２０３x0〜２０３xmの一方の入力をコントロールしており、これにより、マクロセル１０２x と他のマクロセルの接続が制御される。
具体的には、例えば、ＥＥＰＲＯＭメモリセル２０２x0のしきい値が”Ｌ”のとき、ＡＮＤ回路２０３x0には”Ｌ”が入力されるため、バス線のデータがマクロセル１０２x に出力されない。一方、”Ｈ”であれば出力される。
このようにしてＥＥＰＲＯＭメモリセル２０２0 〜２０２m に設定されている値を書き換えることで、マクロセル１０２x と他のマクロセルの接続を制御できる。
【０１２１】
したがって、マクロセル１０２1 〜１０２n の相互の接続は、ＰＩＡ１０１の各マクロセルに対応したＥＥＰＲＯＭメモリセル（以下、これを総称して「複数のＥＥＰＲＯＭメモリセル２０２」と言う）の記憶状態によって制御される。すなわち、複数のＥＥＰＲＯＭメモリセル２０２の記憶状態を書き換えることで、マクロセル１０２1 〜１０２n の相互の接続を変更することが可能となる。この結果、全く異なる論理（論理機能）を有する論理集積回路１００を得ることも可能となる。
【０１２２】
このような複数のＥＥＰＲＯＭメモリセル２０２の記憶状態の書換え（以下、「ＰＩＡ１０１の書換え」とも言う）は、書換制御回路１０３によって行われる。
【０１２３】
書換制御回路１０３には、例えば、図示していない外部回路からの命令信号が入力用の信号線１０５を介して与えられている。
書換制御回路１０３は、その命令信号が書換命令信号であった場合に、その書換命令信号に従ってＰＩＡ１０１を書き換える。
【０１２４】
ここで、例えば、書換制御回路１０３に与えられる外部からの書換命令信号が、論理集積回路１００の論理の破壊を目的とした書換命令信号（ウィルス）である場合が考えられる。
そこで、書換制御回路１０３は、以下のような構成により、書換命令信号（ウィルス）から論理集積回路１００の論理が破壊されることを防ぐ機能（論理防衛機能）を実現している。
【０１２５】
例えば、図４に示すように、書換制御回路１０３は、信号線１０５からの命令信号が供給される制御回路３０１と、制御回路３０１の制御プログラムが格納されるプログラム用メモリ３０２と、ＰＩＡ１０１の記憶状態が記憶されるメモリ３０４と、所定のタイマ値が設定されるタイマ３０３とを具備している。
そして、プログラム用メモリ３０２には、例えば、図５、６に示すようなフローチャートに従った制御プログラムが予め設定されており、これらの制御プログラムのいずれかが制御回路３０１により読み出され実行されることで、書換制御回路１０３は、以下のように動作する。
尚、、第１の実施の形態では、図５に示すフローチャートに従った制御プログラムが制御回路３０１により読み出され実行されるものとして説明する。
【０１２６】
先ず、制御回路３０１は、ＰＩＡ１０１の現在の記憶状態、例えば、複数のＥＥＰＲＯＭメモリセル２０２のうち、例えば、”Ｈ”の値をマルチプレクサ４０１、センス回路４０４を介して検出し”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの数（ゲート数）を第１の暗号鍵（第１の情報）として、ＥＥＰＲＯＭ等からなるメモリ３０４に記憶する（ステップＳ４００）。
【０１２７】
次に、制御回路３０１は、信号線１０５を介して外部から書換命令信号が入力されたか否かを判別し（ステップＳ４１０）、該書換命令信号が入力された場合には、次のステップＳ４２０に進み、入力されていない場合には、ステップＳ４１０に戻り命令信号判別動作を繰り返す。
【０１２８】
ステップＳ４２０では、制御回路３０１は、入力された書換命令信号を受け取る。
そして、制御回路３０１は、ステップＳ４２０で受け取った書換命令信号に含まれる、使用者又は第三者が書き換え時に設定した第２の暗号鍵（第２の情報）であるＥＥＰＲＯＭメモリセルの数（ゲート数）とメモリ３０４に記憶されている第１の暗号鍵である”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの数（ゲート数）とを比較する（ステップＳ４３０）。
【０１２９】
ステップＳ４３０の判別の結果、第１の暗号鍵と第２の暗号鍵が異なる場合、制御回路３０１は、ステップＳ４２０で受け取った書換命令信号を無効として書き換えを禁止し（ステップＳ４５０）、ステップＳ４１０に戻る。
【０１３０】
一方、ステップＳ４３０の判別の結果、第１の暗号鍵と第２の暗号鍵とが一致した場合、制御回路３０１は、ステップＳ４２０で受け取った書換命令信号を有効として書換命令信号に従って、選択回路４０２を介して書き換えるべきメモリセルを特定し、書込み回路４０３によりＥＥＰＲＯＭメモリセル２０２を書き換え（ステップＳ４４０）、ステップＳ４１０に戻る。
【０１３１】
上述のように、本実施の形態では、ＰＩＡ１０１において、現在”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの数を第１の暗号鍵として、使用者又は第三者が書き換え時に設定し書換命令に含まれる第２の暗号鍵であるＥＥＰＲＯＭメモリセルの数（ゲート数）と比較して、第１の暗号鍵の示す数と書換命令による第２の暗号鍵の示す数とに相違がないか否かを検査して、その検査結果が「相違有り」の場合には、論理集積回路１００の論理の書き換えを禁止するように構成した。
このように構成することで、ＰＩＡ１０１を書き換えるためには、すなわち論理集積回路１００の論理を変えるためには、現在”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの数を正確に知らないと書き換えが禁止される。そして、その現在の数は、書き換え可能な論理集積回路１００の現在の論理を正確に知っている者にしか知りえないため、論理集積回路１００の論理を変えられる可能性はない。
【０１３２】
（２）第２の実施の形態
本実施例の形態において上述した第１の実施の形態と異なる点は、第１の実施の形態では上述のように暗号鍵による検査結果が「相違無い」場合は論理集積回路１００の論理の書き換えを許可し、「相違有り」の場合には書き換えを禁止して使用者による書き換えを可能にし、一方第三者による例えば不正な書き換えを防止するようにしたのに対し、第２の実施の形態では使用者が当分の間、書き換えを行わないような場合において、書き換えられた後に、暗号鍵による検査を行い、検査結果が「相違有り」の場合には論理集積回路１００を使用することに対して警告を発するように構成した。
本実施例の形態においては、図４のプログラム用メモリ３０２に予め設定された図６に示すフローチャートに従った制御プログラムが制御回路３０１により読み出され実行されることで、書換制御回路１０３は、以下のように動作する。
【０１３３】
先ず、制御回路３０１は、所定のタイマ値をタイマ３０３に設定する（ステップＳ４０１）。
【０１３４】
次に、制御回路３０１は、ＰＩＡ１０１の記憶状態、例えば、複数のＥＥＰＲＯＭメモリセル２０２のうち、例えば、”Ｈ”の値をマルチプレクサ４０１、センス回路４０４を介して検出し、”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの数（ゲート数）を暗号鍵として（第２の情報）、ＥＥＰＲＯＭ等からなるメモリ３０４に記憶する（ステップＳ４０２）。
【０１３５】
次に、制御回路３０１は、信号線１０５を介して外部から書換命令信号が入力されたか否かを判別し（ステップＳ４０３）、該書換命令信号が入力された場合には、次のステップＳ４０４に進み、入力されていない場合には、後述のステップＳ４０６に進む。
【０１３６】
ステップＳ４０４では、制御回路３０１は、入力された書換命令信号を受け取る。
そして、制御回路３０１は、ステップＳ４０４で受け取った書換命令信号に従って、選択回路４０２を介して書き換えるべきメモリセルを特定し、書込み回路４０３によりＥＥＰＲＯＭメモリセル２０２を書き換え（ステップＳ４０５）、次のステップＳ４０６に進む。
【０１３７】
ステップＳ４０６では、制御回路３０１は、タイマ３０３がタイムアップしたか否かを判別し、タイムアップでない場合には上述したステップＳ４０３に戻り、それ以降のステップ処理を繰り返し実行する。
【０１３８】
ステップＳ４０６の判別の結果、タイマ３０３がタイムアップした場合、制御回路３０１は、ステップＳ４０２でメモリ３０４に記憶した暗号鍵であるＰＩＡ１０１の記憶状態と、現在のＰＩＡ１０１の記憶状態、すなわち”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの現在の数（第１の情報）とを比較する（ステップＳ４０７）。
【０１３９】
ステップＳ４０７の判別の結果、メモリ３０４のＰＩＡ１０１の記憶状態と、現在のＰＩＡ１０１の記憶状態とが異なる場合、制御回路３０１は、論理集積回路１００の論理が「不正に」書換えられたと認識し、その認識を示す警告（判定）信号を外部出力して、本処理を終了する。この警告信号により、使用者は、この書換可能な論理集積回路１００の論理が「不正に」書き換えられたことを認識できる。
【０１４０】
一方、ステップＳ４０７の判別の結果、メモリ３０４のＰＩＡ１０１の記憶状態と、現在のＰＩＡ１０１の記憶状態とが一致した場合、制御回路３０１は、書き換えが行われていないと認識し、再度タイマ３０３を所定のタイマ値に設定し（ステップＳ４０８）、上述したステップＳ４０３に戻り、それ以降のステップ処理を繰り返し実行する。
【０１４１】
上述のように、本実施の形態では、ＰＩＡ１０１において、”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの数を暗号鍵として用い、設定されたその数と、現在のその数とに相違がないか否かを、定期的に検査して、その検査結果が「相違有り」の場合には、論理集積回路１００の論理が書き換えられたと認識し、継続してこの論理集積回路１００を使用することに対して警告を発するように構成した。
このように、論理集積回路１００の論理を定期的に検査することにより、例えば、第三者により不正に書き換えられた論理集積回路１００を使用者が不用意に使用してしまうことを防止できる。
尚、使用者が論理集積回路１００の論理を書き換えたい場合は、第１の実施の形態で説明したように、図４のプログラムメモリ３０２に予め設定された図５に示すフローチャートに従った制御プログラムを制御回路３０１により読み出し実行すれば良い。
【０１４２】
尚、上述した第１、２の実施の形態では、”Ｈ”の値が設定されているＥＥＰＲＯＭメモリセルの数を暗号鍵として用いるようにしたが、これに限らず、例えば、”Ｌ”の数を暗号鍵として用いてもよいし、或いは、”Ｈ”又は”Ｌ”の値が設定されているＥＥＰＲＯＭメモリセルの数を示す信号に圧縮等を施した符号を暗号鍵として用いてもよい。或いは、論理が最後に書き換えられた日付けや論理が最後に書き換えられた時点での未使用のマクロセルの数等の情報を暗号鍵として用いてもよい。
【０１４３】
さらに、第２の実施の形態では、”Ｈ”又は”Ｌ”の値が設定されているＥＥＰＲＯＭメモリセル２００のアドレスを暗号鍵として、メモリ３０４のルックアップテーブルに記憶しておき、図６に示すフローチャートのステップＳ４０５において、”Ｈ”又は”Ｌ”の値が書き換えられたメモリセル２００のアドレスを図３のセンス回路４０４を介して図４の制御回路３０１に読み込み、ステップＳ４０７にて、暗号鍵であるアドレスと書き換え後の現在のアドレスとを比較し、アドレスが異なればメモリセル２００の”Ｈ”又は”Ｌ”の値が書き換えられと認識し、ステップＳ４０９で警告信号を出力するようにしてもよい。
【０１４４】
このように、”Ｈ”又は”Ｌ”の値が設定されているＥＥＰＲＯＭメモリセル２００のアドレスを暗号鍵として、メモリ３０４のルックアップテーブルに記憶しておけば、メモリセル２００の値が書き換えられた場合に、ルックアップテーブルのアドレスを参照して、図３の選択回路４０２によりメモリセルを選択し、書込み回路４０３により書き換えられた前の論理状態に戻すことができる。さらに上記アドレスを示す信号に圧縮等を施した符号を暗号鍵として用いてもよい。尚、これらの暗号鍵の履歴表を第三者には分からない論理集積回路１００の内部又は外部のルックアップテーブルに持ち、履歴表を参照して暗号鍵を定期的に変更することにより不正な書き換えに対する安全性が高まる。
【０１４５】
また、上記第１、第２実施例で説明したメモリセル２００を多値メモリで構成すると、メモリセルに書き込まれる”Ｈ”又は”Ｌ”の値の組合せが複雑になり、この複雑な”Ｈ”又は”Ｌ”の値の組合せを暗号鍵として用いることにより不正な書き換えに対する安全性がさら高まる。
以下に図中のメモリセル２００を多値メモリで構成した場合の”Ｈ”又は”Ｌ”の値の書き込み、読み出し方法の一例について説明する。
【０１４６】
（書き込み方法：例１）
ここでの多値メモリは、制御ゲートと、少なくとも３通りの異なる記憶状態を持たせることが可能な電荷蓄積層とを有し、その少なくとも３通り以上の記憶状態のうち、ある記憶状態を格納する多値メモリセルである。このような多値メモリとして、例えば、ＥＥＰＲＯＭ（フラッシュＥＥＰＲＯＭ）を用いる。
【０１４７】
そこで、まず、ＥＥＰＲＯＭについて説明すると、該ＥＥＰＲＯＭは、図７に示すようなメモリセル９００（図２のメモリセル２００に対応）を複数配列した構成としている。
メモリセル９００は、上記図７に示すように、ｐ型シリコン基板９０１の表面領域にｎ型不純物拡散層からなるドレイン（一対の不純物拡散層）９０２及びソース９０３が各々形成され、これらの間がチャネル領域９０４となった構成としている。そして、チャネル領域９０４の上に、厚さ１０ｎｍ程度のＳｉＯ2 膜からなるトンネル絶縁膜９０５が形成され、その上に、低抵抗ポリシリコンからなる浮遊ゲート（電荷蓄積層）９１３、層間絶縁膜９０６、及び低抵抗ポリシリコンからなる制御ゲート９１０が順次形成されている。また、ドレイン９０２には、ビット線９１１が接続され、ソース９０３には、ソース線９１２が接続されている。
【０１４８】
このような構成のメモリセル９００を有するＥＥＰＲＯＭに、例えば、”００”〜”１１”の４値のデータを書き込む場合について説明する。
尚、”１”、”０”は、上述した第１、第２の実施の形態における”Ｈ”、”Ｌ”に対応する。
【０１４９】
対象メモリセルに”１１”を書き込む場合、図３の選択回路４０２により選択されたビット線９１１を接地し、ソース線９１２を開放し、選択された制御ゲート（ワード線）９１０に１０〜１５Ｖ程度のパルス電圧を、図３のマルチプレクサ４０１を介して書込回路４０３により印加する。これにより、対象メモリセルの浮遊ゲート９１３に電圧が誘起され、この浮遊ゲート９１３とドレイン９０２の電圧差に応じて、ファウラーノルドハイムトンネリングにより、浮遊ゲート９１３に所定量の電荷が注入されることになる。そして、対象メモリセルの閾値が７Ｖ程度に上昇する。この状態を”１１”とする。
このとき、対象メモリセル以外の他のメモリセルのビット線に３Ｖ程度の電圧を印加しておくことで、他のメモリセルでは、ファウラーノルドハイムトンネリングが起こらず、したがって、データの書き込みは行われない。
【０１５０】
また、同様にして、対象メモリセルに”１０”を書き込む場合、選択されたビット線９１１を接地し、ソース線９１２を開放し、選択された制御ゲート（ワード線）９１０に１Ｖ程度のパルス電圧を印加する。これにより、対象メモリセルの閾値が５Ｖ程度に上昇する。この状態を”１０”とする。
また、同様にして、対象メモリセルに”０１”を書き込む場合、選択されたビット線９１１を接地し、ソース線９１２を開放し、選択された制御ゲート（ワード線）９１０に２Ｖ程度のパルス電圧を印加する。これにより、対象メモリセルの閾値が３Ｖ程度に上昇する。この状態を”０１”とする。
また、同様にして、対象メモリセルに”００”を書き込む場合、選択されたビット線９１１を接地し、ソース線９１２を開放し、選択された制御ゲート（ワード線）９１０に３Ｖ程度のパルス電圧を印加する。これにより、対象メモリセルの閾値が１Ｖ程度に上昇する。この状態を”００”とする。
【０１５１】
尚、図３の書き込み回路４０３により、上述のような書き込み動作を行うためには、書き込み回路４０３を、例えば、特開平６−１９５９８７号に開示されているプログラム回路のように構成すればよい。
【０１５２】
（書き込み方法：例２）
以下、図８を参照しながら本発明の書き込み方法の第２の実施形態を具体的に説明する。
【０１５３】
本実施の形態で対象としている多値記憶ＥＥＰＲＯＭは、各メモリセルのしきい値電圧が、記憶する２ビットの情報（００、０１、１０、１１）に対応して、４値（０、２、４、６Ｖ）に設定されている４値メモリで、バースト誤り訂正符号として、符号長ｎ、バースト誤り訂正能力Ｌの符号Ｃをｍ回交錯する交錯法を用いている。
【０１５４】
本装置の書き換えは、まず、図４の制御回路３０１より記憶内容８ビットの入力を受ける毎に、図３の書き込み回路４０３は、これを４×２ビットの情報ビット（ｍ１１，ｍ２１，ｍ３１，ｍ４１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２）に分割し、この情報ビットから３×２ビットの検査ビット（ｐ１１，ｐ２１，ｐ３１）（ｐ１２，ｐ２２，ｐ３２）を生成する。
そして、これらの情報ビット（ｍ１１，ｍ２１，ｍ３１，ｍ４１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２）及び検査ビット（ｐ１１，ｐ２１，ｐ３１）（ｐ１２，ｐ２２，ｐ３２）から２個の符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｐ１１，ｐ２１，ｐ３１）と、（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｐ１２，ｐ２２，ｐ３２）とを生成する。
【０１５５】
このようにして生成した２個の符号語を書き込み回路４０３に備えられるビット情報分散手段に与え、図８に示すように、２×７配列の各行に交錯させて並べる。そして、７個のメモリセルのそれぞれに、ｍ１１とｍ１２，ｍ２１とｍ２２、ｍ３１とｍ３２、ｍ４１とｍ４２、ｐ１１とｐ１２、ｐ２１とｐ２２、ｐ３１とｐ３２の組み合わせで順次記憶する。
【０１５６】
尚、情報ビットの並べ替えが行われた入力情報は、書き込み回路４０３に備えられる電圧発生及び電圧制御回路に与えられ、情報ビットに応じた電圧が発生される。そして、この発生された電圧が図３のマルチプレクサ４０１を介してメモリセル２０２に加えられ、各メモリセルに所定のしきい値電圧が設定される。
すなわち、図８において、メモリセル１の上位ビットがｍ１１，下位ビットがｍ１２となり、同様にメモリセル２にｍ２１とｍ２２、メモリセル３にｍ３１とｍ３２、メモリセル４にｍ４１とｍ４２、メモリセル５にｍ５１とｍ５２、メモリセル６にｐ２１，ｐ２２，メモリセル７にｐ３１，ｐ３２が納められる。
【０１５７】
それぞれの符号語は、後で詳細に説明するように、１個の誤りが生じても訂正が可能であり、図８のように、例えばメモリセル３のしきい値電圧が変化して、長さ２のバースト誤りが生じても、各符号語に対しては１個の誤りになるので訂正が可能である。すなわち、７個のメモリセルのうち、１個のメモリセルのしきい値電圧が変化し、例えば“０１”の記憶内容が“１０”に変化するバースト誤りが発生しても、一つの符号語について見れば誤りは１ビットであるから訂正が可能である。
【０１５８】
（書き込み方法：例３）
ここで対象とする装置は、各メモリセルのしきい値電圧が、記憶する３ビットの情報（０００、００１、０１０、０１１、１００、１０１、１１０、１１１）に対応して、８値（０、１、２、３、４、５、６、７Ｖ）に設定される８値メモリにも適用できる。
【０１５９】
本装置の書き換えは、先ず、記憶内容１２ビットの入力を受ける毎に、これを４×３ビットの情報ビット（ｍ１１，ｍ２１，ｍ３１，ｍ４１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３）に分割し、この情報ビットから３×３ビットの検査ビット（ｐ１１，ｐ２１，ｐ３１）（ｐ１２，ｐ２２，ｐ３２）（ｐ１３，ｐ２３，ｐ３３）を得る。
【０１６０】
そしてこれら情報ビット、検査ビットから３個の符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｐ１１，ｐ２１，ｐ３１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｐ１２，ｐ２２，ｐ３２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｐ１３，ｐ２３，ｐ３３）を、３×７配列の各行に並べ、７個のメモリセルにそれぞれ、ｍ１１とｍ１２とｍ１３、ｍ２１とｍ２２とｍ２３、ｍ３１とｍ３２とｍ３３、ｍ４１とｍ４２とｍ４３、ｐ１１とｐ１２とｐ１３、ｐ２１とｐ２２とｐ２３、ｐ３１とｐ３２とｐ３３を記憶する。
【０１６１】
すなわち、図９において、メモリセル１の上位ビットがｍ１１，下位ビットがｍ１２となり、同様にメモリセル２にｍ２１とｍ２２、メモリセル３にｍ３１とｍ３２、メモリセル４にｍ４１とｍ４２、メモリセル５にｍ５１とｍ５２、メモリセル６にｐ６１，ｐ６２，メモリセル７にｐ７１，ｐ７２が納められる。
【０１６２】
それぞれの符号語は、１個の誤りが生じても訂正が可能であり、したがって、図９に示すように、長さ３のバースト誤りが生じても、各符号語に対しては１個の誤りになるので訂正が可能である。すなわち、７個のメモリセルのうち、１個のメモリセルのしきい値電圧が変化して、例えば“１００”の記憶内容が“０１１”に変化するバースト誤りが発生しても、訂正が可能である。
【０１６３】
（「書き込み方法：例３」の変形例１）
ここで対象とする装置は、各メモリセルの閾値電圧が、記憶する３ビット情報（０００，００１，０１０，０１１，１００，１０１，１１０，１１１）に対応して、８値（０，１，２，３，４，５，６，７Ｖ）に設定される８値メモリである。この変形例１においては、符号語を構成する各ビットのうち、２個の誤りまでは誤り訂正が可能な所定の線型符号化規則に従った場合について例示する。
【０１６４】
本装置による書き換えにおいては、先ず、記憶内容が所定ビット、例えば、ｋビットの入力を受ける毎に、これを３つの（ｋ／３）ビットの各情報ビットに分割する。そして、各情報ビットから冗長ビットを得て、１４ビットの符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｍ５１，ｍ６１，ｍ７１，ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｍ５２，ｍ６２，ｍ７２）と、７ビットの符号語（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｍ５３，ｍ６３，ｍ７３）を作成する。
すなわち、この１４ビット及び７ビットの各符号語のうち、各々所定数のビットが情報ビットであり、残りが誤り訂正用の冗長ビットである。
【０１６５】
次に、１４ビットの符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｍ５１，ｍ６１，ｍ７１，ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｍ５２，ｍ６２，ｍ７２）を、７ビットずつの符号列（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｍ５１，ｍ６１，ｍ７１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｍ５２，ｍ６２，ｍ７２）に分割する。そして、符号列ａ（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｍ５１，ｍ６１，ｍ７１）及び符号列ｂ（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｍ５２，ｍ６２，ｍ７２）と、１個の符号列ｃ（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｍ５３，ｍ６３，ｍ７３）とを、３×７配列の各行に並べ、図１０（Ａ）に示すように、７個のメモリセルに各々、ｍ１１とｍ１２とｍ１３、ｍ２１とｍ２２とｍ２３、ｍ３１とｍ３２とｍ３３、ｍ４１とｍ４２とｍ４３、ｍ５１とｍ５２とｍ５３、ｍ６１とｍ６２とｍ６３、ｍ７１とｍ７２とｍ７３を記憶する。
【０１６６】
すなわち、図１０（Ａ）において、メモリセル１の上位ビットがｍ１１、中位ビットがｍ１２、下位ビットがｍ１３となり、同様にメモリセル２にｍ２１とｍ２２とｍ２３、メモリセル３にｍ３１とｍ３２とｍ３３、メモリセル４にｍ４１とｍ４２とｍ４３、メモリセル５にｍ５１とｍ５２とｍ５３、メモリセル６にｍ６１とｍ６２とｍ６３、メモリセル７にｍ７１とｍ７２とｍ７３が収められる。
【０１６７】
符号列ａ，ｂ及び符号語ｃは、１個の誤りが生じても訂正が可能であり、したがって、図１０（Ａ）に示すように、例えば、３番目のメモリセルの長さ３のバースト誤りが生じても、各符号列ａ，ｂ及び符号語ｃに対しては、各々１個の誤りとなり、このとき符号列ａ，ｂから構成される符号語に対しては、２個の誤りとなるので、訂正が可能となる。
すなわち、７個のメモリセルのうち、１個のメモリセルの閾値電圧が変化して、例えば、”１００”の記憶内容が”０１１”に変化するバースト誤りが発生しても、訂正が可能となる。
【０１６８】
（「書き込み方法：例３」の変形例２）
ここでの対象とする装置は、各メモリセルの閾値電圧が、記憶する３ビットの情報（０００，００１，０１０，０１１，１００，１０１，１１０，１１１）に対応して、８値（０，１，２，３，４，５，６，７Ｖ）に設定される８値メモリである。この変形例２においては、符号語を構成する各ビットのうち、１個の誤りまでは誤り訂正が可能であり、２個の誤りまでは誤り検出が可能な符号化規則に従った場合について例示する。
【０１６９】
本装置による書き換えにおいては、先ず、記憶内容が１２ビットの入力を受ける毎に、これを４×３ビットの情報ビット（ｍ１１，ｍ２１，ｍ３１，ｍ４１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３）に分割し、ハミング符号化により、この情報ビットから３×３ビットの冗長ビット（ｐ１１，ｐ２１，ｐ３１）（ｐ１２，ｐ２２，ｐ３２）（ｐ１３，ｐ２３，ｐ３３）を得る。
【０１７０】
続いて、３個の符号列（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｐ１１，ｐ２１，ｐ３１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｐ１２，ｐ２２，ｐ３２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｐ１３，ｐ２３，ｐ３３）の各々について、各ビット全てのＥＸ−ＯＲを算出し、その結果として得られた各冗長ビットｑ１，ｑ２，ｑ３を各符号列に付加して、３個の符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｐ１１，ｐ２１，ｐ３１，ｑ１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｐ１２，ｐ２２，ｐ３２，ｑ２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｐ１３，ｐ２３，ｐ３３，ｑ３）を作成する。
【０１７１】
そして、これら３個の符号語を３×８配列の各行に並べ、図１０（Ｂ）に示すように、８個のメモリセルに各々、ｍ１１とｍ１２とｍ１３、ｍ２１とｍ２２とｍ２３、ｍ３１とｍ３２とｍ３３、ｍ４１とｍ４２とｍ４３、ｐ１１とｐ１２とｐ１３、ｐ２１とｐ２２とｐ２３、ｐ３１とｐ３２とｐ３３、ｑ１とｑ２とｑ３を記憶する。
【０１７２】
すなわち、図１０（Ｂ）において、メモリセル１の上位ビットがｍ１１、中位ビットがｍ１２、下位ビットがｍ１３となり、同様にメモリセル２にｍ２１とｍ２２とｍ２３、メモリセル３にｍ３１とｍ３２とｍ３３、メモリセル４にｍ４１とｍ４２とｍ４３、メモリセル５にｐ１１とｐ１２とｐ１３、メモリセル６にｐ２１とｐ２２とｐ２３、メモリセル７にｐ３１とｐ３２とｐ３３、メモリセル８にｑ１とｑ２とｑ３が収められる。
【０１７３】
各々の符号語は、１個の誤りが生じても訂正可能であり、したがって、図１０（Ｂ）に示すように、例えば、３番目のメモリセルに長さ３のバースト誤りが生じても、各符号語に対しては、１個の誤りとなるので、訂正が可能となる。
すなわち、８個のメモリセルのうち、１個のメモリセルの閾値電圧が変化して、例えば、”１００”の記憶内容が”０１１”に変化するバースト誤りが発生しても、訂正が可能となる。さらに、極めて稀なことであるとは思われるが、例えば、もう１つのメモリセルに１〜３のバースト誤りが生じた場合、少なくとも１つの符号語に対しては、２個の誤りとなるが、このとき当該２個の誤りを検出することができ、そのうち１個については訂正可能となる。
【０１７４】
（書き込み方法：例４）
ここでの対象とする装置は、各メモリセルの閾値電圧が、記憶する４ビットの情報（００００，０００１，００１０，００１１，０１００，０１０１，０１１０，０１１１，１０００，１００１，１０１０，１０１１，１１００，１１０１，１１１０，１１１１）に対応して、１６値（０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４，１５Ｖ）に設定される１６値メモリである。
【０１７５】
本装置による書き換えにおいては、先ず、記憶内容１６ビットの入力を受ける毎に、これを４×４ビットの情報ビット（ｍ１１，ｍ２１，ｍ３１，ｍ４１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３）（ｍ１４，ｍ２４，ｍ３４，ｍ４４）に分割し、この情報ビットから３×４ビットの冗長ビット（ｐ１１，ｐ２１，ｐ３１）（ｐ１２，ｐ２２，ｐ３２）（ｐ１３，ｐ２３，ｐ３３）（ｐ１４，ｐ２４，ｐ３４）を作成する。
【０１７６】
そして、４個の符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｐ１１，ｐ２１，ｐ３１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｐ１２，ｐ２２，ｐ３２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｐ１３，ｐ２３，ｐ３３）（ｍ１４，ｍ２４，ｍ３４，ｍ４４，ｐ１４，ｐ２４，ｐ３４）を、４×７配列の各行に並べ、図１１に示すように、７個のメモリセルに各々、ｍ１１とｍ１２とｍ１３とｍ１４、ｍ２１とｍ２２とｍ２３とｍ２４、ｍ３１とｍ３２とｍ３３とｍ３４、ｍ４１とｍ４２とｍ４３とｍ４４、ｐ１１とｐ１２とｐ１３とｐ１４、ｐ２１とｐ２２とｐ２３とｐ２４、ｐ３１とｐ３２とｐ３３とｐ３４を記憶する。
【０１７７】
すなわち、図１１において、メモリセル１の１位ビットがｍ１１、２位ビットがｍ１２、３位ビットがｍ１３、４位ビットがｍ１４となり、同様にメモリセル２にｍ２１とｍ２２とｍ２３とｍ２４、メモリセル３にｍ３１とｍ３２とｍ３３とｍ３４、メモリセル４にｍ４１とｍ４２とｍ４３とｍ４４、メモリセル５にｐ１１とｐ１２とｐ１３とｐ１４、メモリセル６にｐ２１とｐ２２とｐ２３とｐ２４、メモリセル７にｐ３１とｐ３２とｐ３３とｐ３４が収められる。
【０１７８】
各々の符号列は、１個の誤りが生じても訂正が可能であり、したがって、図１１に示すように、例えば、３番目のメモリセルの長さ４のバースト誤りが生じても、各符号列に対しては、各々１個の誤りとなるので、訂正が可能となる。
すなわち、７個のメモリセルのうち、１個のメモリセルの閾値電圧が変化して、例えば、”１０００”の記憶内容が”００１１”に変化するバースト誤りが発生しても、訂正が可能となる。
【０１７９】
（「書き込み方法：例４」の変形例１）
ここでの対象とする装置は、各メモリセルの閾値電圧が、記憶する４ビットの情報（００００，０００１，００１０，００１１，０１００，０１０１，０１１０，０１１１，１０００，１００１，１０１０，１０１１，１１００，１１０１，１１１０，１１１１）に対応して、１６値（０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４，１５Ｖ）に設定される１６値メモリである。この変形例３においては、符号語を構成する各ビットのうち、２個の誤りまでは誤り訂正が可能な所定の線型符号化規則に従った場合について例示する。
【０１８０】
本装置による書き換えにおいては、先ず、記憶内容が所定ビット、例えば、ｐビットの入力を受ける毎に、これを４つの（ｐ／３）ビットの各情報ビットに分割する。そして、各情報ビットから冗長ビットを得て、２つの１４ビットの符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｍ５１，ｍ６１，ｍ７１，ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｍ５２，ｍ６２，ｍ７２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｍ５３，ｍ６３，ｍ７３，ｍ１４，ｍ２４，ｍ３４，ｍ４４，ｍ５４，ｍ６４，ｍ７４）を作成する。
すなわち、この１４ビットの各符号語のうち、各々所定数のビットが情報ビットであり、残りが誤り訂正用の冗長ビットである。
【０１８１】
次に、１４ビットの各符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｍ５１，ｍ６１，ｍ７１，ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｍ５２，ｍ６２，ｍ７２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｍ５３，ｍ６３，ｍ７３，ｍ１４，ｍ２４，ｍ３４，ｍ４４，ｍ５４，ｍ６４，ｍ７４）を、各々７ビットずつの符号列（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｍ５１，ｍ６１，ｍ７１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｍ５２，ｍ６２，ｍ７２）及び（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｍ５３，ｍ６３，ｍ７３）（ｍ１４，ｍ２４，ｍ３４，ｍ４４，ｍ５４，ｍ６４，ｍ７４）に分割する。そして、各符号列を、４×７配列の各行に並べ、図１２（Ａ）に示すように、７個のメモリセルに各々、ｍ１１とｍ１２とｍ１３とｍ１４、ｍ２１とｍ２２とｍ２３とｍ２４、ｍ３１とｍ３２とｍ３３とｍ３４、ｍ４１とｍ４２とｍ４３とｍ４４、ｍ５１とｍ５２とｍ５３とｍ５４、ｍ６１とｍ６２とｍ６３とｍ６４、ｍ７１とｍ７２とｍ７３とｍ７４を記憶する。
【０１８２】
すなわち、図１２（Ａ）において、メモリセル１の１位ビットがｍ１１、２位ビットがｍ１２、３位ビットがｍ１３、４位ビットがｍ１４となり、同様にメモリセル２にｍ２１とｍ２２とｍ２３とｍ２４、メモリセル３にｍ３１とｍ３２とｍ３３とｍ３４、メモリセル４にｍ４１とｍ４２とｍ４３とｍ４４、メモリセル５にｍ５１とｍ５２とｍ５３とｍ５４、メモリセル６にｍ６１とｍ６２とｍ６３とｍ６４、メモリセル７にｍ７１とｍ７２とｍ７３とｍ７４が収められる。
【０１８３】
各々の符号列は、１個の誤りが生じても訂正が可能であり、したがって、図１２（Ａ）に示すように、例えば、３番目のメモリセルの長さ４のバースト誤りが生じても、各符号列に対しては、各々１個の誤りとなり、このとき２つの符号列から構成される各符号語に対しては、２個の誤りとなるので、訂正が可能となる。
すなわち、７個のメモリセルのうち、１個のメモリセルの閾値電圧が変化して、例えば、”１０００”の記憶内容が”００１１”に変化するバースト誤りが発生しても、訂正が可能となる。
【０１８４】
（「書き込み方法：例４」の変形例２）
ここでの対象とする装置は、各メモリセルの閾値電圧が、記憶する４ビットの情報（００００，０００１，００１０，００１１，０１００，０１０１，０１１０，０１１１，１０００，１００１，１０１０，１０１１，１１００，１１０１，１１１０，１１１１）に対応して、１６値（０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４，１５Ｖ）に設定される１６値メモリである。この変形例４においては、符号語を構成する各ビットのうち、１個の誤りまでは誤り訂正が可能であり、２個の誤りまでは誤り検出が可能な符号化規則に従った場合について例示する。
【０１８５】
本装置による書き換えにおいては、先ず、記憶内容が１６ビットの入力を受ける毎に、これを４×４ビットの情報ビット（ｍ１１，ｍ２１，ｍ３１，ｍ４１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３）（ｍ１４，ｍ２４，ｍ３４，ｍ４４）に分割し、ハミング符号化により、この情報ビットから３×４ビットの冗長ビット（ｐ１１，ｐ２１，ｐ３１）（ｐ１２，ｐ２２，ｐ３２）（ｐ１３，ｐ２３，ｐ３３）（ｐ１４，ｐ２４，ｐ３４）を得る。
【０１８６】
続いて、４個の符号列（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｐ１１，ｐ２１，ｐ３１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｐ１２，ｐ２２，ｐ３２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｐ１３，ｐ２３，ｐ３３）（ｍ１４，ｍ２４，ｍ３４，ｍ４４，ｐ１４，ｐ２４，ｐ３４）の各々について、各ビット全てのＥＸ−ＯＲを算出し、その結果として得られた各冗長ビットｑ１，ｑ２，ｑ３，ｑ４を各符号列に付加して、４個の符号語（ｍ１１，ｍ２１，ｍ３１，ｍ４１，ｐ１１，ｐ２１，ｐ３１，ｑ１）（ｍ１２，ｍ２２，ｍ３２，ｍ４２，ｐ１２，ｐ２２，ｐ３２，ｑ２）（ｍ１３，ｍ２３，ｍ３３，ｍ４３，ｐ１３，ｐ２３，ｐ３３，ｑ３）（ｍ１４，ｍ２４，ｍ３４，ｍ４４，ｐ１４，ｐ２４，ｐ３４，ｑ４）を作成する。
【０１８７】
そして、これら４個の符号語を４×８配列の各行に並べ、図１２（Ｂ）に示すように、８個のメモリセルに各々、ｍ１１とｍ１２とｍ１３とｍ１４、ｍ２１とｍ２２とｍ２３とｍ２４、ｍ３１とｍ３２とｍ３３とｍ３４、ｍ４１とｍ４２とｍ４３とｍ４４、ｐ１１とｐ１２とｐ１３とｐ１４、ｐ２１とｐ２２とｐ２３とｐ２４、ｐ３１とｐ３２とｐ３３とｐ３４、ｑ１とｑ２とｑ３とｑ４を記憶する。
【０１８８】
すなわち、図１２（Ｂ）において、メモリセル１の１位ビットがｍ１１、２位ビットがｍ１２、３位ビットがｍ１３、４位ビットがｍ１４となり、同様にメモリセル２にｍ２１とｍ２２とｍ２３とｍ２４、メモリセル３にｍ３１とｍ３２とｍ３３とｍ３４、メモリセル４にｍ４１とｍ４２とｍ４３とｍ４４、メモリセル５にｐ１１とｐ１２とｐ１３とｐ１４、メモリセル６にｐ２１とｐ２２とｐ２３とｐ２４、メモリセル７にｐ３１とｐ３２とｐ３３とｐ３４、メモリセル８にｑ１とｑ２とｑ３とｑ４が収められる。
【０１８９】
各々の符号語は、１個の誤りが生じても訂正可能であり、したがって、図１２（Ｂ）に示すように、例えば、３番目のメモリセルに長さ４のバースト誤りが生じても、各符号語に対しては、１個の誤りとなるので、訂正が可能となる。
すなわち、８個のメモリセルのうち、１個のメモリセルの閾値電圧が変化して、例えば、”１０００”の記憶内容が”０１１１”に変化するバースト誤りが発生しても、訂正が可能となる。さらに、極めて稀なことであるとは思われるが、例えば、もう１つのメモリセルに１〜４のバースト誤りが生じた場合、少なくとも１つの符号語に対しては、２個の誤りとなるが、このとき当該２個の誤りを検出することができ、そのうち１個については訂正可能となる。
【０１９０】
尚、上述の変形例３及び４に示した符号化方法以外にも、有用であると考えられる方法がある。
例えば、先ず、６４個の元データに”０”のデータを５６ビット付加して、合計１２０ビット長の情報ビットを得る。続いて、１２０ビットの情報ビットから、１２７ビット長のハミング符号を作成する。続いて、１２７ビット全てのＥＸ−ＯＲを算出し、その結果を追加１２８ビット長の符号を得る。その後、先に追加した５６ビットの”０”を除去し、７２ビット長の符号語を得る。
このような符号化方法は、符号語を構成する各ビットのうち、１個の誤りまでは誤り訂正が可能であり、２個の誤りまでは誤り検出が可能としており、主記憶装置用のＳＥＣ／ＤＥＤ符号（single-error-correcting/double-error-detecting code ）として、頻繁に利用されている。
【０１９１】
ここで、１つの符号語について、１個の誤りが生じても訂正が可能な具体例を説明する。下記の表１は、４情報ビットに３検査ビットを付加したハミング符号を示している。
0003728098.tif 000002
【０１９２】
この符号で、１、２、４桁目は検査ビットであり、（１、３、５、７）、（２、３、６、７）及び（４、５、６、７）の各桁の組で偶数パリティになるように検査ビットが決められている。例えば、１０進数「１２」に対応する符号“０１１１１００”を書き込んでおいたところ、誤りが発生して、“０１０１１００”と読み出された場合、表１に示したように、誤りがある桁を２進数（この場合は０１１）で得ることができるので、誤りが発生しても容易に、かつ確実に訂正することができる。
【０１９３】
尚、この符号は、情報ビット数がさらに多い場合にまで拡張することができ、ｎ個の情報ビットに対して必要な検査ビット数ｍは次式で表される。
２m ＝ｎ＋ｍ＋１                ・・・（１式）
【０１９４】
以上の説明では、本発明を浮遊ゲート型のメモリセルを有する不揮発性記憶装置に実施した場合を例に挙げて説明をしたが、多値記憶を行わせるメモリセルとしては、浮遊ゲート型のものに限らず、ＭＮＯＳ型のものでも良い。また、本発明は、ＥＥＰＲＯＭ以外にも、ＥＰＲＯＭやＰＲＯＭ、更には、例えば、電界効果トランジスタのチャネル領域にイオン注入する不純物の量を制御することによりしきい値を変化させて記憶状態を得るマスクＲＯＭにも適用することが可能である。また、４値と８値の場合を例に挙げたが、決してこの値に限定されるものでもない。
【０１９５】
さらに、本発明の書き込み方法はＤＲＡＭにも適用できる。この場合、書き込み時にプリチャージを行うことは言うまでもない。
【０１９６】
また、誤り訂正符号を得る方法として交錯法を例に説明をしたが、メモリセルに記憶する情報量に応じたバースト長の誤りを訂正できる誤り訂正符号であれば、交錯法以外の方法、例えば、巡回符号または短縮化巡回符号でもよい。
【０１９７】
一方、上述のようにして、メモリセルへ書き込まれたデータを暗号鍵として図５のステップＳ４００、図６のステップＳ４０２で読み出すには、図３のセンス回路４０４を図１３に示すような回路で構成すれば良い。
以下に図１３に示すセンス回路４０４によりメモリセルに書き込まれたデータを暗号鍵として読み出す動作を説明する。
【０１９８】
多値メモリとして構成されたメモリセル２０２に設定された下位ビットに相当する閾値電圧Ｖｔｈ１が、インバータ４０、トランジスタ４１、４２からなる出力バッファを介して、センスアンプ４３の反転入力端子に与えられる。センスアンプ４３の非反転入力端子には、トランジスタ４７に設定された判定電圧Ｖ４７が、インバータ４６、トランジスタ４４、４５からなる出力バッファを介して与えられる。
【０１９９】
閾値電圧Ｖｔｈ１が判定電圧Ｖ４７より小さい場合、センスアンプ４３の出力は、Ｈｉｇｈｔになるので、メモリセル２０２に記憶された下位ビットＤ０は”１”と判定される。センスアンプ４３の出力がＨｉｇｈｔなので、トランジスタ５２がオンする一方、インバータ５３によりトランジスタ５４がオフする。したがって、トランジスタ５２に設定された判定電圧Ｖ５２が、インバータ５１、トランジスタ４９、５０からなる出力バッファを介して、センスアンプ４８の非反転入力端子に与えられる。そして、メモリセル２０２に設定された上位ビットに相当する閾値電圧Ｖｔｈ２が、出力バッファ１を介して、センスアンプ４８の反転入力端子に与えられる。
【０２００】
閾値電圧Ｖｔｈ２が判定電圧Ｖ５２より小さい場合、センスアンプ４８の出力はＨｉｇｈｔになるので、メモリセル２０２に記憶された上位ビットＤ１は”１”と判定される。一方、閾値電圧Ｖｔｈ２が判定電圧Ｖ５２より大きい場合、センスアンプ４８の出力はＬｏｗになるので、メモリセル２０２に記憶された上位ビットＤ１は”０”として読み出される。
【０２０１】
また、閾値電圧Ｖｔｈ１が判定電圧Ｖ４７より大きい場合、センスアンプ４３の出力は、Ｌｏｗになるので、メモリセル２０２に記憶された下位ビットＤ０は”０”と判定される。センスアンプ４３の出力がＬｏｗなので、トランジスタ５２がオフする一方、インバータ５３によりトランジスタ５４がオンする。したがって、トランジスタ５２に設定された判定電圧Ｖ５４が、出力バッファを介して、センスアンプ４８の非反転入力端子に与えられる。そして、メモリセル２０２に設定された上位ビットに相当する閾値電圧Ｖｔｈ２が、出力バッファを介して、センスアンプ４８の反転入力端子に与えられる。
【０２０２】
閾値電圧Ｖｔｈ２が判定電圧Ｖ５４より小さい場合、センスアンプ４８の出力はＨｉｇｈｔになるので、メモリセル２０２に記憶された上位ビットＤ１は”１”として読み出される。一方、閾値電圧Ｖｔｈ２が判定電圧Ｖ５４より大きい場合、センスアンプ４８の出力はＬｏｗになるので、メモリセル２０２に記憶された上位ビットＤ１は”０”として読み出される。
【０２０３】
このようにして、図５のステップＳ４００、図６のステップＳ４０２で読み出された値が暗号鍵として図４に示すメモリ３０４に記憶される。
【０２０４】
尚、上記第１、第２の実施の形態では、メモリセル２００としてＥＥＰＲＯＭメモリセルを用いた場合について説明したが、例えば、特開平８ー１２４３７８に開示されているＦＲＡＭ（強誘電体）多値メモリセルを用いても良い。
具体的には、ゲート絶縁膜に強誘電体膜を用いた電解効果型トランジスタ（ＦＥＭＦＥＴ）で図２の各メモリセル２００を構成し、強誘電体膜の分極状態が変わることにより各メモリセルのしきい値電圧の変化を利用して、各１メモリセルに３値”Ｈ”、”Ｌ”、”ーＨ”を記憶させる。ＦＲＡＭ（強誘電体）メモリセルをメモリセル２００として用いることにより、ＥＥＰＲＯＭメモリセルよりさらに複雑な暗号鍵を構成することができ、第３者による不正な書き換えに対する安全性が一層高まる。
さらにメモリセル２００として、ＭＮＯＳ、マスクＲＯＭ、ＥＰＲＯＭ、ＰＲＯＭ、フラッシュ不揮発性メモリによる多値メモリセルを用いてもよい。
【０２０５】
（３）第３の実施の形態
本実施の形態において、上述した第１、２の実施の形態と異なる点は、書換制御回路１０３の構成を、例えば、図１４に示すような構成としたことである。
尚、ここでは、第１の実施の形態と異なる点についてのみ具体的に説明する。
【０２０６】
すなわち、本実施の形態においては、書換制御回路１０３は、信号線１０５からの命令信号が供給される制御回路３１１と、制御回路３１１の制御プログラムが格納されるプログラム用メモリ３１２と、論理集積回路１００の論理の破壊を目的とした命令信号のパターンデータ（基準信号）を複数種類記憶されるパターンメモリ３１３とを具備している。
そして、プログラム用メモリ３１２には、例えば、図１５に示すようなフローチャートに従った制御プログラムが予め設定されており、この制御プログラムが制御回路３１１により読み出され実行されることで、書換制御回路１０３は、以下のように動作する。
【０２０７】
先ず、制御回路３１１は、信号線１０５を介して外部から書換命令信号が入力されたか否かを判別し（ステップＳ４１１）、該書換命令信号が入力された場合には、次のステップＳ４１２に進み、入力されていない場合には、書換命令信号入力待ち状態となる。
【０２０８】
ステップＳ４１２では、制御回路３１１は、入力された書換命令信号を受け取る。
【０２０９】
そして、制御回路３１１は、パターンメモリ３１３に記憶されている複数種類のパターンデータの中に、ステップＳ４１２で受け取った書換命令信号に対応したパターンデータが存在するか否かを判別する（ステップＳ４１３）。
具体的には、パターンメモリ３１３には、論理集積回路１００の論理の破壊を目的とした書換命令信号（ウィルス）として考えられる信号に対応した複数種類のパターンデータが予め記憶されている。このパターンメモリ３１３のパターンデータと、受け取った書換命令信号のパターンデータとを比較することで、該書換命令信号が書換命令信号（ウィルス）であるか否かを知ることができる。
【０２１０】
このようなステップＳ４１３の判別の結果、受け取った書換命令信号に対応したパターンデータが存在した場合、制御回路３１１は、論理集積回路１００の論理の破壊を目的とした書換命令信号（ウィルス）が入力されたと認識し、該書換命令信号（ウィルス）を無効として、何も行わずに前述したステップＳ４１１に戻り、それ以降のステップ処理を繰り返し実行する。
【０２１１】
一方、ステップＳ４１３の判別の結果、受け取った書換命令信号に対応したパターンデータが存在しない場合、制御回路３１１は、その受け取った書換命令信号を有効とし、該書換命令信号に従って、複数のＥＥＰＲＯＭメモリセル２０２を書き換え（ステップＳ４１５）、前述したステップＳ４１１に戻り、それ以降のステップ処理を繰り返し実行する。
【０２１２】
前述のように、本実施の形態では、外部より書換命令信号を受け取ると、この書換命令信号が、論理集積回路１００の論理の破壊を目的とした書換命令信号（ウィルス）であるか否かを判別し、その判別の結果、書換命令信号（ウィルス）でなかった場合のみ、複数のＥＥＰＲＯＭメモリセル２０２の書き換えを行うようにする。
このように構成することで、論理集積回路１００の論理の破壊を目的とした書換命令信号（ウィルス）が論理集積回路１００に入力されたとしても、その書換命令信号は、書換命令信号（ウィルス）であると判別され、複数のＥＥＰＲＯＭメモリセル２０２の書き換えは行われないため、論理集積回路１００の論理の不正な書換えは不可能となる。
したがって、本実施の形態においても、論理集積回路１００の不正な書換えによる論理の破壊を確実に防ぐことができるので、書換可能な論理集積回路１００は論理の破壊に対して耐久性のあるものとして提供することができる。尚、パターンメモリ３１３に記憶するパターンデータは新しいウイルスパターンが発見され次第、パターンメモリ３１３に追加記憶することにより論理の破壊に対する耐久性がさらに高まる。
【０２１３】
尚、前述した第１、２及び第３の実施の形態では、論理集積回路１００をＥＥＰＲＯＭ型のものとしたが、これに限らず、例えば、ＳＲＡＭ型のものとしてもよい。
【０２１４】
（４）第４の実施の形態
本発明に係るの機密保持機能を備えた半導体装置は、例えば、図１６に示すような半導体装置５００に適用される。
【０２１５】
この半導体装置５００は、前記図１６に示すように、マスクＲＯＭ５０１ａとＥＥＰＲＯＭ５０１ｂと含む記憶装置５０１を具備し、情報を記憶するために必要な面積の小型化を図ることと、記憶内容を書き換え可能にすることの両方をバランス良く可能にしている。そして、マスクＲＯＭ５０１ａに暗号化された機密内容のデータを記憶している。このマスクＲＯＭ５０１ａに記憶した内容は暗号化してあるため、顕微鏡等を用いて構造解析しても、記憶内容を解読することはほとんど不可能である。
【０２１６】
また、半導体装置５００は、ＳＲＡＭ型のＦＰＧＡ（Field Programmable Gate Array ）５０２と、演算装置であるＣＰＵ（中央演算装置）５０３とを具備している。
【０２１７】
ここで、ＦＰＧＡとは、汎用論理集積回路として広く使われるようになってきた大規模ＰＬＤ（Programmable Logic Device ）のことであり、入力データを演算して出力データを得るための論理をユーザが電気的にプログラムすることができる回路、すなわち論理を電気的に書換可能な論理集積回路であり、しかもハード的に演算を行うため高速な回路である。
そこで、ＦＰＧＡ５０２は、第１、第２及び第３の実施の形態における論理集積回路１００と同様の構成としており、前述したような論理防衛機能を有している。
尚、ＦＰＧＡ５０２の構成及びその機能については、第１、第２及び第３の実施の形態における論理集積回路１００と同様であるため、その詳細な説明は省略する。
【０２１８】
さらに、記憶されたデータの外部出力先である外部装置６００が、出力端子５０９を介して接続されている。
外部装置６００には、記憶再生装置６０１及び記憶媒体６０２が設けられている。
【０２１９】
マスクＲＯＭ５０１ａに記憶された機密内容のデータの復号化の方法は、ＦＰＧＡ５０２が、ＣＰＵ５０３で用いる論理上のアドレスＡＤ−１からマスクＲＯＭ５０１ａの構造上のアドレス（暗号化されてばらばらの位置に記憶された一群のデータを復号化して読み出すためのアドレス）ＡＤ−２に変換することによって行う。すなわち、ＦＰＧＡ５０２は、後述するように、ＣＰＵ５０３から出力された論理上のアドレスＡＤ−１の入力を受け、それをマスクＲＯＭ５０１ａの構造上のアドレスＡＤ−２に変換してマスクＲＯＭ５０１ａに出力する。
【０２２０】
以下に、半導体装置５００の動作の一例を、図１７のフローチャートに基づいて説明する。
【０２２１】
前記図１７において、ステップＳ７０１で電源が投入され、半導体装置５００が記憶内容の外部出力先と接続されると、ステップＳ７０２でＣＰＵ５０３が動作し、記憶内容の外部出力先に対してＦＰＧＡ５０２に設定する論理演算のプログラムＰを指定するように要求する。
【０２２２】
この要求に応答して、記憶再生装置６０１は、記憶媒体６０２から読み出したプログラムのデータを再生し、半導体装置５００に送信する。
次に、そのプログラムをステップＳ７０３でデータＩ／Ｏ部５０４により受信すると、ＣＰＵ５０３は、ステップＳ５０４で受信したデータを解釈しながらＦＰＧＡ５０２をプログラムする論理演算のプログラムＰを出力する。
【０２２３】
尚、ＦＰＧＡ５０２は、前述した論理防衛機能により、ＦＰＧＡ５０２をプログラムする論理演算のプログラムＰ（例えば、ウィルスプログラムであったの場合）によりＦＰＧＡ５０２の論理が破壊されたか否か、或いは、該プログラムＰがウィルスプログラムのようなＦＰＧＡ５０２の論理の破壊を目的としたプログラムであるか否かを判別することで、ＦＰＧＡ５０２の論理の破壊を確実に防ぐようになされている。これにより、不正なデータが入力された場合は、半導体装置５００に記憶されたデータを正しく出力できる状態にはならないようになっている。ＦＰＧＡ２のプログラムは、前述した命令信号に対応したものであり、予め多数配置されているトランジスタをＯＮにしたり、ＯＦＦにしたりすることで、ＡＮＤ回路やＯＲ回路を任意に組むことによって行う。
【０２２４】
ところで、予め固定のロジックを組んである論理回路では、顕微鏡等を用いてゲートアレイの配線を辿れば、ＡＮＤ回路やＯＲ回路を識別することができ、その論理回路に設定されている論理を容易に解読することができる。
【０２２５】
これに対して、本実施の形態のように論理防衛機能を有するＦＰＧＡ５０２を用いた場合は、トランジスタにチャージされる電荷の有無によって任意のロジックを後から組むので、顕微鏡等を用いて構造解析しても、設定された論理を解読することはほとんど不可能であると共に、その論理を破壊することもほとんど不可能である。
【０２２６】
このプログラムが終了すると、次に、ＣＰＵ５０３は、ステップＳ７０５でデータの出力が可能になったことを示す信号をデータＩ／Ｏ部５０４を介して外部出力先に送信する。これに対応して、外部出力先からあるアドレスのデータの出力が要求され、ステップＳ６でそのアドレスをデータＩ／Ｏ部５０４で受信すると、ＣＰＵ５０３は、この受信したアドレスＡＤ−１をＦＰＧＡ５０２に出力する。
【０２２７】
すると、ＦＰＧＡ５０２は、ステップＳ７で、ステップＳ７０４にて設定されたプログラムに基づいて、論理上のアドレスＡＤ−１を基にマスクＲＯＭ５０１ａの構造上のアドレスＡＤ−２を演算し、それをマスクＲＯＭ５０１ａに出力する。
そして、次のステップＳ７０８で、マスクＲＯＭ５０１ａは、ＦＰＧＡ５０２により演算された構造上のアドレスＡＤ−２に従ってデータＤをＣＰＵ３に出力する。ＣＰＵ５０３は、入力されたデータＤを、データＩ／Ｏ部５０４を介して外部出力先に出力する。
【０２２８】
このように、第４の実施の形態では、暗号化された記憶内容を復号化するのにＦＰＧＡ５０２を使っているため、ＦＰＧＡ５０２のプログラムが終了した後はデータの出力を高速に行うことができる。しかも、そのデータ出力の間はＣＰＵ５０３はデータの出力のみを行っているので、ＣＰＵ５０３は他の演算を行うことができる。この場合、マスクＲＯＭ５０１ａに記憶されたデータ等を用いて、ＣＰＵ５０３が独自のデータ処理を行うことができることは言うまでもない。さらに、ＦＰＧＡ５０２は、ＥＥＰＲＯＭに比べて回路規模が小さく集積化が容易なので、半導体装置５００は安価に提供することができる。
【０２２９】
また、ＦＰＧＡ５０２に論理防衛機能を持たせることで、ＦＰＧＡ５０２に設定された論理の破壊を確実に防ぐようになされているため、半導体装置５００での正確な動作を常に保証することができ、半導体装置５００はより高性能に提供することができる。
【０２３０】
尚、本実施の形態では、ＦＰＧＡ５０２としてＳＲＡＭ型のものを用いた。この場合、電源を切るとＦＰＧＡ５０２の記憶データが破壊されるため、電源を再び入れたときにはＦＰＧＡ５０２のプログラムをやり直さなければならない。しかし、この問題はＳＲＡＭ型のＦＰＧＡの代わりに、ＥＥＰＲＯＭ型のＦＰＧＡを使用することによって回避することができる。
【０２３１】
以下に、前記図１６に示したＥＥＰＲＯＭ５０１ｂに暗号化されたデータを記憶するための暗号化動作の一例を、図１８のフローチャートに基づいて説明する。
【０２３２】
前記図１８において、ステップＳ７１０で電源が投入され、半導体装置５００が記憶すべきデータの外部入力元に備えられる、例えば、記憶再生装置６０１及び記憶媒体６０２と接続されると、ステップＳ７１１でＣＰＵ５０３が動作し、外部入力先に対してＦＰＧＡ５０２に設定する論理演算のプログラムを指定するように要求する。
【０２３３】
この要求に応答して、記憶再生装置６０１が記憶媒体６０２からプログラムデータを再生し、半導体装置に送信する。次に、ステップＳ７１２で、そのプログラムをデータＩ／Ｏ部５０４により受信すると、ＣＰＵ５０３は、ステップＳ７１３で受信したデータを解釈しながらＦＰＧＡ５０２をプログラムする。
尚、上述したように、ＦＰＧＡ５０２は、前述した論理防衛機能を有するため、不正なデータが入力された場合は、半導体装置５００へデータを正しく入力できる状態にはならないようになっている。
【０２３４】
このプログラムが終了すると、次にＣＰＵ５０３は、ステップＳ７１４で、データの出力が可能になったことを示す信号をデータＩ／Ｏ部５０４を介して外部出力先に送信する。これに応答して、外部入力元からあるアドレスのデータの入力が要求され、ステップＳ７１５でその論理上のアドレスＡＤ−１をデータＩ／Ｏ部５０４で受信すると、ＣＰＵ５０３は、この受信した論理上のアドレスＡＤ−１をＦＰＧＡ５０２に出力する。
【０２３５】
すると、ＦＰＧＡ５０２は、ステップＳ７１６で、ステップＳ７０４（前記図２０）にて設定されたプログラムに基づいて、論理上のアドレスＡＤ−１からＥＥＰＲＯＭ５０１ｂの構造上のアドレスＡＤ−２を演算し、それをＥＥＰＲＯＭ５０１ｂに出力する。そして、次のステップＳ７１７で外部入力元からデータをデータＩ／Ｏ部５０４を介してＣＰＵ５０３に入力し、これを構造上のアドレスＡＤ−２としてＥＥＰＲＯＭ５０１ｂに記憶する。
尚、ユーザが外部から暗号化キーを変える場合には、ＦＰＧＡ５０２に記憶させておいてもよい。
【０２３６】
このように、半導体装置５００では、記憶すべきデータを暗号化するのにも論理防衛機能を有するＦＰＧＡ５０２を使っているため、ＦＰＧＡ５０２のプログラムが終了した後はデータの入力を高速に行うことができ、正確なその動作を常に保証することができる。しかも、そのデータ入力の間はＣＰＵ５０３を使っていないので、ＣＰＵ５０３は他の演算を行うことができる。
【０２３７】
ここで、ステップＳ７１６でＦＰＧＡ５０２による構造上のアドレスＡＤ−２の演算方法の一例を説明する。
【０２３８】
例えば、ＥＥＰＲＯＭ５０１ｂのアドレスが００００ｈからＦＦＦＦｈまであるとする。この場合、ＥＥＰＲＯＭ５０１ｂの容量に応じて記憶すべきデータの順列が００００ｈ番からＦＦＦＦｈ番まで存在する。そして、記憶すべきデータの順列を一定の法則に基づいて並べ直し、ＥＥＰＲＯＭ５０１ｂに記憶する。
【０２３９】
具体的なデータの並べ直しの方法として、下記の表１に示すように、例えば、ＡＢＡＢｈのデータにつき、ＡＢＡＢｈを２進表示して（１０１０  １０１１
１０１０  １０１１）2 とし、さらにこの値を左シフトして（０１０１  ０１１１  ０１０１  ０１１１）2 とする。つまり、５７５７ｈ番目に並べなおす。
【０２４０】
【表１】
0003728098.tif 000003
【０２４１】
並べ直されて生成された新しい順列で、外部から与えられたデータがデータＩ／Ｏ部５０４、ＣＰＵ５０３を介してＥＥＰＲＯＭ５０１ｂの各番地に記憶される。したがって、ＥＥＰＲＯＭ５０１ｂに記憶されるデータの順列は元のデータの順列とは異なる暗号化されたものとなり、元のデータを解読するのは困難となる。
【０２４２】
前記暗号化処理されて記憶装置６００に記憶されたデータを復号化（前記図８のステップＳ７０７）するには、ＣＰＵ５０３からＦＰＧＡ５０２に入力された論理上のアドレスＡＤ−１から左シフトした構造上のアドレスＡＤ−２を算出し、そのアドレスをデコードするプログラムをＦＰＧＡ５０２に書き込んでおけば、このプログラムにより復号化されたデータを読み出すことができる。
【０２４３】
具体的なデータの並べ直しのさらなる方法としては、前述した表１において、例えば、ＡＢＡＢｈ番地のデータにつき、ＡＢＡＢｈ番地を２進表示して（１０１０  １０１１  １０１０  １０１１）2 とし、この値と適当に決めた乱数（１１００  ０１１０  １１１１  ０１１１）2 との排他的論理和をとって得た値（０１１０  １１０１  ０１０１  １１００）2 、つまり６Ｂ５Ａｈ番目に並べ直す。
【０２４４】
そして、並べ直され生成された新しい順列で、外部から与えられたデータをデータＩ／Ｏ部５０４、ＣＰＵ５０３を介してＥＥＰＲＯＭ５０１ｂの各番地に記憶する。
【０２４５】
例えば、個人情報を記憶する場合において、新たな個人情報を追加したり、既存の個人情報を修正したりしたいという要求が多くある場合には、マスクＲＯＭ５０１ａの容量を小さくするとともに、ＥＥＰＲＯＭ５０１ｂの記憶容量を大きくすることで、書換え可能なメモリ領域を大きくすることが可能である。なお、ＥＥＰＲＯＭ５０１ｂの代わりにＤＲＡＭ等の揮発性メモリを用いることも可能である。
【０２４６】
尚、前述した暗号化、復号化処理において、ＥＥＰＲＯＭ５０１ｂを用いた場合には、ＦＰＧＡ５０２にアドレッシングのプログラムを書き込んでおけばよい。
【０２４７】
ＦＰＧＡを利用した情報処理装置としては、例えば特開平７−１６８７５０号公報に開示されている。この装置では、プログラムデータが記憶されたメモリにＦＰＧＡが接続され、ＣＰＵの制御の下で、メモリに記憶されたプログラムデータに従ってＦＰＧＡの論理回路を制御するようにしている。
【０２４８】
しかし、前記公報の図１に示されたように、この装置ではメモリに記憶されたＦＰＧＡによりＣＰＵと周辺機器との間でデータ通信を行うに過ぎないものであり、本実施の形態のように、ＦＰＧＡに暗号化・復号化プログラムを保持しておく。そして、ＣＰＵから与えられたデータによりプログラムされたＦＰＧＡで暗号化されたデータをメモリに記憶し、前記記憶された暗号化データを復号することは開示されていない。
また、ＦＰＧＡに論理防衛機能を持たせることで、装置での正確な動作を常に保証することも開示されていない。
【０２４９】
（５）第５の実施の形態
本発明に係る機密保持機能を備えた半導体装置は、例えば、図１９に示すような半導体装置５１０に適用される。
【０２５０】
この半導体装置５１０は、前記図１９に示すように、前述した第４の実施の形態における半導体装置５００と同様に、マスクＲＯＭ５１１ａ及びＥＥＰＲＯＭ５１１ｂよりなる記憶装置５１１と、ＦＰＧＡ５１２と、ＣＰＵ５１３とを具備しており、ＦＰＧＡ５１２をデータの暗号化あるいは復号化を行うインタフェース回路として用いている。
また、ＦＰＧＡ５１２は、第４の実施の形態におけるＦＰＧＡ５０２と同様に、論理防衛機能を有している。
【０２５１】
本実施の形態において、第４の実施の形態と異なる点は、外部出力先により指定されたアドレスがＣＰＵ５１３から記憶装置５１１に直接入力されるとともに、そのアドレスに従って記憶装置５１１より出力される構造上のデータＤ−２がＦＰＧＡ５１２によって論理上のデータＤ−１に変換され、ＣＰＵ５１３に入力されていることである。
【０２５２】
すなわち、本実施の形態においては、記憶装置５１１に記憶されている機密データの復号化の方法は、ＦＰＧＡ５１２が、マスクＲＯＭ５１１ａより読み出された構造上のデータ（暗号化されたままのデータ）Ｄ−２からＣＰＵ５１３で用いる論理上のデータＤ−１に変換することによって行う。
【０２５３】
換言すれば、ＦＰＧＡ５１２は、マスクＲＯＭ５１１ａからの構造上のデータＤ−２の入力を受け、それをＣＰＵ５１３の論理上のデータＤ−１に変換してＣＰＵ５１３に出力する。
【０２５４】
半導体装置５１０の動作は、電源が投入され、データの出力が可能な状態となるまでは、前記図１２のステップＳ７０１〜Ｓ７０５と同様である。しかし、この第４の実施の形態では、その後の動作が第３の実施の形態と異なる。
【０２５５】
すなわち、図２０に示すように、外部出力先からあるアドレスのデータの出力が要求され、ステップＳ７０６ａでそのアドレスをデータＩ／Ｏ部５１４で受信すると、ＣＰＵ５１３は、この受信したアドレスをＦＰＧＡ５１２に出力する。
【０２５６】
すると、ＦＰＧＡ５１２は、ステップＳ７０７ａにおいて、ステップＳ７０４で設定されたプログラムに基づいて論理上のデータを演算する。そして、次のステップＳ７０８で前記演算した論理上のデータを、ＣＰＵ５１３から与えられたＥＥＰＲＯＭ５１１ｂのアドレスに記憶する。
【０２５７】
一方、図２１に示すように、ＦＰＧＡ５１２からあるアドレスのデータの出力が要求され、ステップＳ７１５ａでそのアドレスをデータＩ／Ｏ部５１４で受信すると、ＣＰＵ５１３は、この受信したアドレスＡＤを記憶装置５１１に出力する。
【０２５８】
すると、ＦＰＧＡ５１２は、ステップＳ７１３で設定されたプログラムに基づいて、ステップＳ７１６ａで構造上のデータＤ−２を演算する。そして、次のステップＳ７１７で構造上のデータＤ−２をＥＥＰＲＯＭ５１１ｂのＣＰＵ５１３から与えられたアドレスに記憶する。
【０２５９】
このように、第５の実施の形態では、記憶すべきデータを暗号化するのにも論理防衛機能を有するＦＰＧＡ５１２を使っているため、ＦＰＧＡ５１２のプログラムが終了した後はデータの入力を高速に行うことができ、その正確な動作を常に保証することができる。しかも、そのデータを出力する間はＣＰＵ５１３はデータ入力しか行っていないので、ＣＰＵ５１３は他の演算を行うことができる。
【０２６０】
ここで、前記図２１のステップＳ７１６ａで行うＦＰＧＡ５１２による構造上のデータの演算方法の一例を説明する。
【０２６１】
ＥＥＰＲＯＭ５１１ｂの一つのアドレスにつき一つのワード（語長）が取り出され、一つのワード当たり１６ビットのデータが含まれているとする。この１６ビットのデータを一定の法則に基づいて並べ直し、ＥＥＰＲＯＭ５１１ｂに記憶する。
【０２６２】
例えば、ＡＢＡＢｈという１６ビットのデータについて、ＡＢＡＢｈを２進表示して（１０１０  １０１１  １０１０  １０１１）2 とし、さらにこの値を左シフトして（０１０１  ０１１１  ０１０１  ０１１１）2 とする。つまり、データ５７５７ｈをＥＥＰＲＯＭ５１１ｂに記憶する。
【０２６３】
この結果、ＥＥＰＲＯＭ５１１ｂに記憶されたデータは、元のデータとは異なる暗号化されたものとなり、元のデータを解読するのは困難となる。前記暗号化処理されてＥＥＰＲＯＭ５１１ｂに記憶されたデータを復号化（前記図１５のステップＳ７０７ａ）するには、得られた１６ビットのデータを左シフトするプログラムをＦＰＧＡ５１２に書き込んでおけば、このプログラムにより復号化されたデータを読み出すことができる。
【０２６４】
尚、この第５の実施の形態でも第４の実施の形態と同様に、ユーザ側で記憶内容を電気的に自由に書き換えたいとのニーズに対応するために、書換え可能なＥＥＰＲＯＭ５１１ｂの記憶容量を大きくすることも可能である。この場合は、ＦＰＧＡ５１２に暗号化のためのプログラムを設定し、ＣＰＵ５１３から供給されるデータをＦＰＧＡ５１２で暗号化してＥＥＰＲＯＭ５１１ｂに供給するようにすれば良い。
【０２６５】
また、前記暗号化、復号化処理において、前記図１９のＥＥＰＲＯＭ５１１ｂにデータを書き込んだ場合には、ＦＰＧＡ５１２にアドレッシングのプログラムを書き込んでおけばよい。
【０２６６】
また、第５の実施の形態でもＦＰＧＡ５１２として、ＳＲＡＭ型のものを用いる形態を示しているが、この場合は、電源を切るとＦＰＧＡ５１２の記憶データが破壊されるため、電源を再び入れたときにはＦＰＧＡ５１２のプログラムをやり直さなければならない。しかし、この問題はＳＲＡＭ型のＦＰＧＡの代わりにＥＥＰＲＯＭ型のＦＰＧＡを使用することによって回避することができる。
【０２６７】
この場合には、ＦＰＧＡ５１２にプログラムする複数のプログラムにそれぞれコードを割り当て、ＦＰＧＡ５１２にプログラムする時にはこの複数のプログラムから選択された１つのプログラムに従ってＦＰＧＡ５１２をプログラムする。このとき、プログラムのコードも記憶しておく。
【０２６８】
一旦プログラムされたＦＰＧＡ５１２にアクセスするときには、まず記憶されたプログラムコードがＣＰＵ５１３を通じて外部機器に出力され、外部機器はこのプログラムコードを元に、この半導体装置５１０に対するアクセスの仕方を変更してアクセスする。すなわち、半導体装置５１０と外部機器は、プログラムコードを共通の鍵として使用し、秘密情報の解読を協調して行うことができる。
【０２６９】
例えば、外部機器の方で１バイトずつのアドレスに対して所定ビットずつビットシフトを施してこの半導体装置５１０に供給する。そして、ＦＰＧＡ５１２では、それを逆方向にビットシフトして記憶装置５１１に対するアドレスとすることで暗号化する場合に利用できる。
【０２７０】
この場合、ＥＥＰＲＯＭ５１１ｂに記憶する内容自体は共通でも、ビットシフト量をＦＰＧＡ５１２の書き込み時に変更することで複数の暗号化が達成でき、頻繁にＦＰＧＡ５１２を書き換えることにより、機密性をより高めることができる。なお、実際の暗号化では、ビットシフトと逆シフトといったような単純な変換ではなく、周辺機器側でより複雑な変換が行われる。
【０２７１】
また、前記図１６及び図１９に示した半導体装置５００及び５１０において、記憶装置５０１及び５１１には暗号化していないデータを記憶しておき、それをＦＰＧＡ５０２及びＦＰＧＡ５１２で暗号化して出力するようにすることも可能である。例えば、半導体装置と外部出力先との間で行われる通信が傍受され機密内容が漏れることを防止するため、通信内容を暗号化する必要がある場合にこの方法を応用することができる。
【０２７２】
この場合は、例えば、第４の実施の形態において、ＣＰＵ５０３よりデータＩ／Ｏ部５０４を介して外部出力先に出力する機密データの暗号化は、次のように行う。
例えば、ＣＰＵ５０３は、外部出力先から受信したデータを解釈しながら、暗号化を行うためのプログラムをＦＰＧＡ５０２にセットする。そして、ＦＰＧＡ５０２が、ＣＰＵ５０３から供給される論理上のアドレスＡＤ−１を構造上のアドレスＡＤ−２に変換することによって行うようにしても良い。
【０２７３】
さらに、例えば、第５の実施の形態において、ＣＰＵ５１３よりデータＩ／Ｏ部５１４を介して外部出力先に出力する機密データの暗号化は、次のように行う。
例えば、ＣＰＵ５１３は、外部出力先から受信したデータを解釈しながら、暗号化を行うためのプログラムをＦＰＧＡ２０にセットする。そして、ＦＰＧＡ５１２が、その後マスクＲＯＭ５１１ａから読み出される構造上のデータ（暗号化されていない）Ｄ−２からＣＰＵ５１３で用いる論理上のデータ（暗号化されたデータ）Ｄ−１に変換することによって暗号化を行う。
【０２７４】
（６）第６の実施の形態
第６の実施の形態として、前記した第４の実施の形態と第５の実施の形態とを組み合わせることにより、アドレスとデータとの両者をＦＰＧＡで暗号化・復号化する演算を行い、その演算を常に正確に行うことを保証した装置を考えることができる。
この場合は、前記図１６に示したアドレス変換用のＦＰＧＡ５０２２と、前記図１４に示したデータ変換用のＦＰＧＡ５１２とを設け、それぞれに対して適当なプログラムをセットすることで実現することができる。
【０２７５】
（７）第７の実施の形態
本発明に係る機密保持機能を備えた半導体装置は、例えば、図２２に示すような半導体装置８００に適用される。
【０２７６】
この半導体装置８００は、前記図２２に示すように、前記図１９に示した半導体装置５１０にＲＦ部８１０及びアンテナ回路８２０を設けたものである。
尚、本実施の形態においては、記憶装置５１１としてマスクＲＯＭ５１１ａの他に、可変データを格納するＥＥＰＲＯＭ５１１ｂを設けている。また、本実施の形態でも、ＦＰＧＡ５１２に論理防衛機能を持たせた構成としている。
【０２７７】
アンテナ回路８２０は、コイル８２１とコンデンサ８２２からなる並列共振回路からなり、半導体装置の電源電力を図示しない端末機から受け取る機能と、端末機との間でデータ信号の送受信を行う機能とを兼ねたものであり、例えば、１ＭＨｚ以上の高周波のキャリア信号による無線の信号伝送を行うことができるようにしている。
【０２７８】
このような構成により、コイル８２１を通じて端末機からの電波を受信すると、その受信電力がＲＦ部８１０に供給される。ＲＦ部８１０は高周波処理を行うために設けられた回路であり、供給された受信電力から内部で使用する電源電圧を発生するとともに、受信電力中に含まれる信号成分を復調し、この復調した信号をＩ／Ｏ部５１４に出力する。Ｉ／Ｏ部５１４から先の動作は、前述した動作と同様である。
【０２７９】
一方、半導体装置８００から信号を出力する場合には、前述した動作と逆の動作となる。すなわち、ＲＦ部８１０は、Ｉ／Ｏ部５１４から与えられた信号成分をキャリアに重畳して高周波電流を生成する。そして、生成した高周波電流をアンテナ回路８２０に供給し、端末機に向けて送信する。
尚、端末機との間で信号の送受信を行うときには、端末機から動作電力が送られているので、半導体装置８００は送信電力を得ることができる。
【０２８０】
前述したように、本実施の形態における半導体装置８００は、端末機と非接触でデータの送受信を行うことができるので、非接触型のＩＣカードに内蔵する半導体装置として好適に使用することができる。
また、ＦＰＧＡ５１２に論理防衛機能を持たせているので、外部からの不正なデータによる記憶内容の破壊を確実に防ぎ、正確な動作を常に保証した半導体装置として好適に使用することができる。
【０２８１】
例えば、交通手段における定期券として使用した場合、端末機である改札口を非接触で通過することができるので、通行がスムースとなり、ラッシュアワー時における改札口の混雑を大幅に緩和することができるようになる。このように、定期券として使用した場合、定期券の有効期限等のように、内部に格納するデータを書き換える必要が生じる。
また、この場合には、定期券の記憶内容の破壊に対しても確実に防ぐことができる。例えば、第３者によりその記憶内容が書き換えられ不正に使用されるということも防ぐことができる。
【０２８２】
前記図１７に示したように、本実施の形態の半導体装置８００は、マスクＲＯＭ５１１ａの他にＥＥＰＲＯＭ５１１ｂを有しているので、ＥＥＰＲＯＭ５１１ｂに可変データを格納するようにしておくことにより、何回でも繰り返し使用することができる。
尚、データを書き換える場合にも、非接触で行うことができるので、金属の接点を介してデータの送受を行う場合と比較して、内蔵しているデータの秘密を保持し易い利点もある。
【０２８３】
また、本実施の形態の場合には、端子８３０を設けているので、端末機と接触して使用するＩＣカードとしても良好に使用することができる。
尚、前記図１７においては、アンテナ回路８２０が装置本体から突出して示しているが、アンテナ回路８２０は、実際には装置本体の表面上に配置される。
【０２８４】
尚、前述した実施の形態を実現するために、前記図３、図１６、図１９、及び図２２の各デバイスを動作させるように、各デバイスと接続された装置或いはシステム内のコンピュータ（ＣＰＵ或いはＭＰＵ）に対し、前述した実施の形態を実現するためのソフトウェアのプログラムコードを供給し、そのコンピュータに格納されたプログラムに従って前記各デバイスを動作させることによって実施したものも本発明の範疇に入る。
【０２８５】
この場合、前記ソフトウェアのプログラムコード自体が前述した実施の形態を実現することになり、そのプログラムコード自体及びそのプログラムコードをコンピュータに供給するための手段、例えば、そのプログラムコードを格納した記憶媒体は本発明を構成する。
【０２８６】
例えば、図３において、制御回路３０１には記憶再生装置３０４及び記憶媒体３０５が接続される。記憶再生装置３０４により、記憶媒体３０５に格納されているプログラムコードが読み出され制御回路３０１を動作させる。
さらに、図１６において、外部出力先（外部入力先）に設けられる記憶再生装置６０１及び記憶媒体６０２がデータＩ／Ｏ部５０４を介してＣＰＵ５０３に接続される。記憶再生装置６０１により、記憶媒体６０２に格納されているプログラムコードが読み出されデータＩ／Ｏ部５０４を介してＣＰＵ５０３を動作させる。
【０２８７】
前記プログラムコードを記憶する記憶媒体としては、例えば、フロッピーディスク、ハードディスク、光ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０２８８】
【発明の効果】
以上説明したように本発明によれば、論理防衛機能を有し、論理の破壊に対する耐久性のある電気的に書換可能な論理集積回路を提供することができる。また、書換可能な論理集積回路を備える装置に対して、正確な動作を常に保証する機能を持たせることができる。
【０２８９】
また、記憶手段と、制御手段（中央演算装置等）と、電気的に書き換え可能な論理手段とを備え、前記論理手段は、論理防衛機能を有し、論理の破壊に対する耐久性のあるものである。そして、暗号化、復号化の際には、前記制御手段により設定される暗号化、復号化プログラムに従って論理手段を書き換えるるようにするとともに、前記論理が書き換えられた論理手段により記憶手段へ入力するデータの暗号化、及び前記暗号化されたデータの復号を行うようにしたので、構造解析によって論理が解読されないようにする構成を従来よりも小規模に実現することができると共に、そのときの正確な動作を常に保証することができる。しかも、前記論理手段に設定された論理がハードウェア的に実行されるので処理を速くすることができ、その処理の間に制御手段で他の処理を行うようにすることもできる。これにより、記憶内容の機密保持機能、及び正確な動作を常に保証する機能を備え、高速な動作が可能でかつ安価な半導体装置を提供することができる。
【０２９０】
さらに、端末機に対して非接触でデータの送受信を行うことができるので、内部に記憶しているデータを不測に読み取られたり、破壊されたりする危険を無くすことができる。これにより、例えば、ＩＣカードに内蔵して使用するのに好適な半導体装置を提供することができる。
【図面の簡単な説明】
【図１】第１の実施の形態において、本発明を適用した論理集積回路の構成を示すブロック図である。
【図２】前記論理集積回路のＰＩＡの構成を示す回路図である。
【図３】前記ＰＩＡの各メモリセルの構成を示す回路図である。
【図４】前記論理集積回路の書換制御回路の構成を示すブロック図である。
【図５】第１の実施の形態において、前記書換制御回路により実行される処理プログラムの一例を説明するためのフローチャートである。
【図６】第２の実施の形態において、前記書換制御回路により実行される処理プログラムの一例を説明するためのフローチャートである。
【図７】ＥＥＰＲＯＭメモリセルの構造を示す断面図である。
【図８】本発明を適用した書き込み方法の一例（例２）を説明するための図である。
【図９】本発明を適用した書き込み方法の一例（例３）を説明するための図である。
【図１０】前記書き込み方法（例３）の変形例１、２を説明するための図である。
【図１１】本発明を適用した書き込み方法の一例（例４）を説明するための図である。
【図１２】本発明を適用した書き込み方法の一例（例４）の変形例１、２を説明するための図である。
【図１３】センス回路の構成を示す回路図である。
【図１４】第３の実施の形態における前記書換制御回路の構成を示すブロック図である。
【図１５】第３の実施の形態において、前記書換制御回路により実行される処理プログラムの一例を説明するためのフローチャートである。
【図１６】第４の実施の形態において、本発明を適用した半導体装置の構成を示すブロック図である。
【図１７】第４の実施の形態において、前記半導体装置の復号化動作の一例を示すフローチャートである。
【図１８】第４の実施の形態において、前記半導体装置の暗号化動作の一例を示すフローチャートである。
【図１９】第５の実施の形態において、本発明を適用した半導体装置の構成を示すブロック図である。
【図２０】第５の実施の形態において、前記半導体装置の復号化動作の一例を示すフローチャートである。
【図２１】前記半導体装置の暗号化動作の一例を示すフローチャートである。
【図２２】第７の実施の形態において、本発明を適用した半導体装置の構成を示すブロック図である。
【符号の説明】
１００  論理集積回路
１０１  ＰＩＡ
１０２X マクロセル
１０４X Ｉ／Ｏ回路
１０５  入力用信号線
１０６  出力用信号線
【図１】
0003728098.tif 000004
【図２】
0003728098.tif 000005
【図３】
0003728098.tif 000006
【図４】
0003728098.tif 000007
【図５】
0003728098.tif 000008
【図６】
0003728098.tif 000009
【図７】
0003728098.tif 000010
【図８】
0003728098.tif 000011
【図９】
0003728098.tif 000012
【図１０】
0003728098.tif 000013
【図１１】
0003728098.tif 000014
【図１２】
0003728098.tif 000015
【図１３】
0003728098.tif 000016
【図１４】
0003728098.tif 000017
【図１５】
0003728098.tif 000018
【図１６】
0003728098.tif 000019
【図１７】
0003728098.tif 000020
【図１８】
0003728098.tif 000021
【図１９】
0003728098.tif 000022
【図２０】
0003728098.tif 000023
【図２１】
0003728098.tif 000024
【図２２】
0003728098.tif 000025