(57)【特許請求の範囲】
【請求項１】
バスを介した書き込みのアクセスまたは読み出しのアクセスが発生したときに、アクセス先が前記バスに接続された保護対象のモジュールであるか否かに拘わらず、前記バスに出力されたアドレスおよびデータの少なくとも一方の一部の値を取得し、取得した値を用いて比較コードを生成する比較コード生成部と、
前記比較コードの生成後に前記モジュールに対する書き込みのアクセスが発生したときに、前記モジュールに書き込まれるデータと共に前記バスに出力された期待値と、前記比較コードとを比較する比較部と、
前記比較部の比較結果に基づいて、前記モジュールに対する前記書き込みを許可するか否かを決定する書き込み制御部と
を備えていることを特徴とする誤書き込み防止回路。
【請求項２】
前記比較コード生成部は、前記バスに出力されたアドレスおよびデータの少なくともアドレスの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする請求項１記載の誤書き込み防止回路。
【請求項３】
前記比較コード生成部は、前記バスに出力されたアドレスおよびデータのそれぞれの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする請求項１記載の誤書き込み防止回路。
【請求項４】
前記比較コード生成部は、前記バスに出力されたアドレスの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする請求項１記載の誤書き込み防止回路。
【請求項５】
前記モジュールに対して実施された書き込みの回数をカウントするカウンタ部を有し、
前記書き込み制御部は、前記モジュールに対する書き込みを前記比較結果に基づいて許可したとき、予め設定された回数の書き込みが前記モジュールに対して実施されるまで、前記モジュールに対する書き込みを許可すること
を特徴とする請求項１記載の誤書き込み防止回路。
【請求項６】
前記比較コード生成部に保持されている前記比較コードを取得し、取得した前記比較コードを前記期待値として前記比較部に出力する処理部を有し、
前記比較コード生成部は、前記処理部に前記比較コードを出力した後、少なくとも前記モジュールに対して書き込みが実施されるまで、前記比較コードを更新しないこと
を特徴とする請求項１記載の誤書き込み防止回路。
【請求項７】
前記比較部の前記比較結果を有効にするか無効にするかを設定する比較制御部を有し、
前記書き込み制御部は、前記比較結果が無効のとき、前記モジュールに対する書き込みを前記比較結果に拘わらず許可すること
を特徴とする請求項１記載の誤書き込み防止回路。
【請求項８】
バスに接続された保護対象のモジュールと、前記モジュールへの書き込みを制御する誤書き込み防止回路とを備え、
前記誤書き込み防止回路は、
前記バスを介した書き込みのアクセスまたは読み出しのアクセスが発生したときに、アクセス先が前記モジュールであるか否かに拘わらず、前記バスに出力されたアドレスおよびデータの少なくとも一方の一部の値を取得し、取得した値を用いて比較コードを生成する比較コード生成部と、
前記比較コードの生成後に前記モジュールに対する書き込みのアクセスが発生したときに、前記モジュールに書き込まれるデータと共に前記バスに出力された期待値と、前記比較コードとを比較する比較部と、
前記比較部の比較結果に基づいて、前記モジュールに対する前記書き込みを許可するか否かを決定する書き込み制御部とを備えていること
を特徴とする半導体装置。
【請求項９】
前記比較コード生成部は、前記バスに出力されたアドレスおよびデータの少なくともアドレスの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする請求項８記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤書き込み防止回路および半導体装置に関する。
【背景技術】
【０００２】
マイクロコントローラ等の半導体装置では、保護対象のモジュール（例えば、レジスタ）に対する誤書き込みを防止するための対策が施されている。この種の半導体装置は、例えば、保護対象のモジュールにライトデータを書き込む際に、所定のシーケンスを実施することにより、誤書き込みを防止する。例えば、“００”、“０１”、“１０”、“１１”、“ライトデータ”の順に保護対象のモジュールにアクセスするシーケンスが実施されたときのみ、ライトデータが保護対象のモジュールに書き込まれる。この場合、ライトデータを書き込む前に、４回（“００”、“０１”、“１０”、“１１”）の書き込み動作（所定のシーケンス）が実施される。一般的に、所定のシーケンスで実施される書き込み動作等の回数の増加に伴い、保護対象のモジュールのセキュリティは、向上する。
【０００３】
また、保護対象のレジスタ毎に設定されたマスターキーコードを用いて誤書き込みを防止するマイクロコントローラが提案されている（例えば、特許文献１）。この種のマイクロコントローラは、例えば、マスターキーコードを記憶する記憶部を有し、マスターキーコードと一致する入力キーコードを受けたときに、保護対象のレジスタに対する書き込みを許可する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２０４３８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ライトデータを書き込む前に所定のシーケンスを実施する構成では、保護対象のモジュールにライトデータを書き込む際に、所定のシーケンスを実施する時間を別途設ける必要がある。例えば、上述したシーケンスでは、保護対象のモジュールへの１回の書き込みに対して、４回の書き込みをするための余計な時間が必要である。このため、保護対象のモジュールに対する書き込み時間は増加する。
【０００６】
本発明の目的は、書き込み時間の増加を抑制しつつ、保護対象のモジュールに対する誤書き込みを防止することである。
【課題を解決するための手段】
【０００７】
本発明の一形態では、誤書き込み防止回路は、バスを介した書き込みのアクセスまたは読み出しのアクセスが発生したときに、アクセス先がバスに接続された保護対象のモジュールであるか否かに拘わらず、バスに出力されたアドレスおよびデータの少なくとも一方の一部の値を取得し、取得した値を用いて比較コードを生成する比較コード生成部と、比較コードの生成後にモジュールに対する書き込みのアクセスが発生したときに、モジュールに書き込まれるデータと共にバスに出力された期待値と、比較コードとを比較する比較部と、比較部の比較結果に基づいて、モジュールに対する書き込みを許可するか否かを決定する書き込み制御部とを有している。
【発明の効果】
【０００８】
書き込み時間の増加を抑制しつつ、保護対象のモジュールに対する誤書き込みを防止できる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態における誤書き込み防止回路の例を示している。
【図２】図１に示した保護対象のモジュールにライトデータを書き込む際のデータ構成の一例を示している。
【図３】図１に示した誤書き込み防止回路が搭載される半導体装置の一例を示している。
【図４】別の実施形態における誤書き込み防止回路の一例を示している。
【図５】図４に示した誤書き込み防止回路の動作の一例を示している。
【図６】別の実施形態における誤書き込み防止回路の一例を示している。
【図７】図６に示した誤書き込み防止回路の動作の一例を示している。
【図８】別の実施形態における誤書き込み防止回路の一例を示している。
【図９】図８に示した誤書き込み防止回路の動作の一例を示している。
【図１０】別の実施形態における誤書き込み防止回路の一例を示している。
【図１１】別の実施形態における誤書き込み防止回路の一例を示している。
【図１２】別の実施形態における半導体装置の一例を示している。
【図１３】図１２に示した半導体装置に搭載される誤書き込み防止回路の一例を示している。
【発明を実施するための形態】
【００１０】
以下、実施形態を図面を用いて説明する。
【００１１】
図１は、一実施形態における誤書き込み防止回路１０の例を示している。誤書き込み防止回路１０は、例えば、保護対象のモジュール２０に対する書き込みを制御する。保護対象のモジュール２０は、例えば、バスＢＵＳに接続されたレジスタであり、Ｉ／Ｏ設定等の重要な情報を記憶する。なお、保護対象のモジュール２０は、レジスタに限定されない。例えば、保護対象のモジュール２０は、レジスタ以外のメモリでもよい。誤書き込み防止回路１０はおよびモジュール２０は、半導体装置の少なくとも一部を構成する。
【００１２】
誤書き込み防止回路１０は、例えば、バスＢＵＳに接続された比較コード生成部ＣＧと、バスＢＵＳに接続された比較部ＣＯＭＰと、書き込み制御部ＷＣＴＬとを有している。バスＢＵＳには、例えば、データＤＡＴＡＩ、アドレスＡＤＲ、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳ等が出力される。なお、データＤＡＴＡＩは、書き込み動作時にバスＢＵＳに出力されるデータである。読み出し動作時には、例えば、図３に示すように、データＤＡＴＡＯ（以下、リードデータとも称する）がバスＢＵＳに出力される。
【００１３】
比較コード生成部ＣＧは、例えば、アドレスＡＤＲｐ、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳを受け、比較コードＣＯＤＥを比較部ＣＯＭＰに出力する。なお、アドレスＡＤＲｐは、書き込み動作時および読み出し動作時のいずれかにバスＢＵＳに出力されるアドレスＡＤＲの一部（例えば、下位４ビット）である。
【００１４】
例えば、比較コード生成部ＣＧは、ライトストローブ信号ＷＲＳに基づく書き込みタイミングおよびリードストローブ信号ＲＤＳに基づく読み出しタイミングに同期して、バスＢＵＳに出力されたアドレスＡＤＲｐ（アドレスＡＤＲの一部）の値を取得する。そして、比較コード生成部ＣＧは、例えば、取得したアドレスＡＤＲｐの値を用いて比較コードＣＯＤＥを生成する。
【００１５】
このように、比較コード生成部ＣＧは、保護対象のモジュール２０に対する書き込みが実施される前に、バスＢＵＳ上の情報（例えば、バスＢＵＳに出力されたアドレスＡＤＲｐの値）を用いて比較コードＣＯＤＥを生成する。したがって、この実施形態では、保護対象のモジュール２０内に固定の比較コードを設けなくともよい。このため、誤書き込み防止回路１０は、誤書き込み対策の無い既存のモジュールに対しても、誤書き込みを防止できる。
【００１６】
さらに、バスＢＵＳ上の情報を用いて比較コードＣＯＤＥが生成されるため、比較コードＣＯＤＥは、固定されない。このため、この実施形態では、期待値ＤＡＴＡＩｅと固定された比較コードＣＯＤＥとを比較する構成に比べて、保護対象のモジュール２０のセキュリティを向上できる。
【００１７】
なお、比較コード生成部ＣＧは、互いに異なるタイミングで取得した複数のアドレスＡＤＲｐの値を用いて比較コードＣＯＤＥを生成してもよいし、１つのアドレスＡＤＲｐの値を用いて比較コードＣＯＤＥを生成してもよい。例えば、互いに異なるタイミングで取得した複数のアドレスＡＤＲｐの値を用いて比較コードＣＯＤＥを生成したときには、比較コードＣＯＤＥに時系列の要素が含まれるため、保護対象のモジュール２０のセキュリティは、向上する。
【００１８】
比較部ＣＯＭＰは、保護対象のモジュール２０に書き込まれるライトデータ（例えば、図２に示すライトデータＤＡＴＡＩｗ）に対応する期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとを比較する。例えば、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとの比較は、特別なシーケンス（ライトデータを書き込む前の比較用の書き込み動作等）のための時間を別途設けることなく、常に実施される。そして、比較部ＣＯＭＰは、比較結果を書き込み制御部ＷＣＴＬに通知する。例えば、比較部ＣＯＭＰの出力信号（比較結果）は、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致しているとき、アサートされる。
【００１９】
書き込み制御部ＷＣＴＬは、ライトストローブ信号ＷＲＳおよび比較部ＣＯＭＰの比較結果を受け、モジュール２０用のライトストローブ信号ＷＲＳＩをモジュール２０に出力する。例えば、書き込み制御部ＷＣＴＬは、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致しているとき、ライトストローブ信号ＷＲＳのアサートに応答して、ライトストローブ信号ＷＲＳＩをアサートする。これにより、モジュール２０に対する書き込みは、許可される。
【００２０】
また、例えば、書き込み制御部ＷＣＴＬは、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが不一致のとき、ライトストローブ信号ＷＲＳの状態に拘わらず、ライトストローブ信号ＷＲＳＩをネゲートする。これにより、モジュール２０に対する書き込みは、禁止される。すなわち、書き込み制御部ＷＣＴＬは、比較部ＣＯＭＰの比較結果に基づいて、モジュール２０に対する書き込みを許可するか否かを決定する。
【００２１】
なお、誤書き込み防止回路１０の構成は、この例に限定されない。例えば、誤書き込み防止回路１０は、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとの比較を実施するか否かをＣＰＵ３０等により制御されてもよい。この場合、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとの比較が許可されている期間、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとの比較が常に実施される。
【００２２】
また、例えば、比較コード生成部ＣＧは、バスＢＵＳに出力されたデータ（データＤＡＴＡＩや図３に示すデータＤＡＴＡＯ）の一部の値を取得し、取得した値を用いて比較コードＣＯＤＥを生成してもよい。あるいは、比較コード生成部ＣＧは、バスＢＵＳに出力されたアドレスＡＤＲおよびデータのそれぞれの一部の値を取得し、取得した値を用いて比較コードＣＯＤＥを生成してもよい。すなわち、比較コード生成部ＣＧは、バスＢＵＳに出力されたアドレスＡＤＲおよびデータの少なくとも一方の一部の値を取得し、取得した値を用いて比較コードＣＯＤＥを生成する。
【００２３】
図２は、図１に示した保護対象のモジュール２０にライトデータを書き込む際のデータ構成の一例を示している。なお、図２は、バスＢＵＳのデータバスのバス幅が３２ビットで、モジュール２０のデータバス幅が１６ビットのときのデータＤＡＴＡＩの一例を示している。
【００２４】
例えば、データＤＡＴＡＩは、下位１６ビット（０ビット−１５ビット）がモジュール２０に書き込まれるライトデータＤＡＴＡＩｗに割り当てられ、上位１６ビット（１６ビット−３１ビット）が期待値ＤＡＴＡＩｅに割り当てられる。この場合、保護対象のモジュール２０への１回の書き込みに対して、データＤＡＴＡＩが１回出力されればよい。期待値ＤＡＴＡＩｅとライトデータＤＡＴＡＩｗとが一緒に出力されるため、書き込み時間の増加が抑制される。例えば、データＤＡＴＡＩの下位１６ビット（ライトデータＤＡＴＡＩｗ）は、データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）が比較コードＣＯＤＥと一致したとき、モジュール２０に書き込まれる。なお、モジュール２０では、例えば、データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）は破棄される。
【００２５】
ここで、モジュール２０のデータバス幅（例えば、３２ビット）がバスＢＵＳのデータバスのバス幅と一致しているときには、保護対象のモジュール２０への１回の書き込みに対して、データＤＡＴＡＩが２回出力される。この場合、１６ビットの期待値ＤＡＴＡＩｅおよび１６ビットのライトデータＤＡＴＡＩｗを含むデータＤＡＴＡＩが２回出力されてもよいし、１６ビットの期待値ＤＡＴＡＩｅを含むデータＤＡＴＡＩと３２ビットのライトデータＤＡＴＡＩｗを含むデータＤＡＴＡＩとが順次出力されてもよい。
【００２６】
すなわち、モジュール２０のデータバス幅がバスＢＵＳのデータバスのバス幅と一致している構成では、２回の書き込み動作により、モジュール２０にライトデータＩＤＡＴＡＩｗを書き込むことができる。したがって、モジュール２０のデータバス幅がバスＢＵＳのデータバスのバス幅と一致している構成においても、例えば、モジュール２０にライトデータＩＤＡＴＡＩｗを書き込む前に複数回の書き込み動作（所定のシーケンス）を実施する構成に比べて、書き込み時間を短くできる。すなわち、モジュール２０のデータバス幅がバスＢＵＳのデータバスのバス幅と一致している構成においても、書き込み時間の増加を抑制しつつ、保護対象のモジュール２０に対する誤書き込みを防止できる。
【００２７】
なお、データＤＡＴＡＩに対する期待値ＤＡＴＡＩｅの割り当ては、この例に限定されない。例えば、期待値ＤＡＴＡＩｅのデータ幅は、保護対象のモジュール２０のセキュリティレベルやバスＢＵＳ構成等に応じて決定される。
【００２８】
図３は、図１に示した誤書き込み防止回路１０が搭載される半導体装置１００の一例を示している。半導体装置１００は、例えば、誤書き込み防止回路１０、保護対象のモジュール２０、ＣＰＵ３０、保護対象以外のモジュール４０、４２および選択部５０を有している。誤書き込み防止回路１０、モジュール２０、４０、４２、ＣＰＵ３０および選択部５０は、バスＢＵＳに接続されている。なお、半導体装置１００の最小構成は、誤書き込み防止回路１０および保護対象のモジュール２０である。
【００２９】
誤書き込み防止回路１０は、例えば、データＤＡＴＡＩに含まれる期待値ＤＡＴＡＩｅ、アドレスＡＤＲｐ（アドレスＡＤＲの一部）、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳを、バスＢＵＳを介して受け、ライトストローブ信号ＷＲＳＩをモジュール２０に出力する。例えば、誤書き込み防止回路１０は、保護対象のモジュール２０に対する書き込みが実施される前に、ジュール２０、４０、４２に対する書き込み動作や読み出し動作が実施される度に、アドレスＡＤＲｐを取得する。そして、誤書き込み防止回路１０は、例えば、互いに異なるタイミングで取得した複数のアドレスＡＤＲｐの値を用いて比較コードＣＯＤＥを生成する。
【００３０】
モジュール２０は、例えば、データバス幅が１６ビットのレジスタであり、アドレスＡＤＲをデコードするアドレスデコーダＡＤＥＣを有している。なお、アドレスデコーダＡＤＥＣは、モジュール２０の外部に設けられてもよい。モジュール２０は、例えば、データＤＡＴＡＩ、アドレスＡＤＲおよびリードストローブ信号ＲＤＳを、バスＢＵＳを介して受ける。さらに、モジュール２０は、ライトストローブ信号ＷＲＳＩを誤書き込み防止回路１０から受ける。
【００３１】
例えば、書き込み動作時には、ライトストローブ信号ＷＲＳＩおよびアドレスＡＤＲに基づいて、データＤＡＴＡＩ（より詳細には、図２に示したライトデータＤＡＴＡＩｗ）がモジュール２０に書き込まれる。また、読み出し動作時には、リードストローブ信号ＲＤＳおよびアドレスＡＤＲに基づいて、モジュール２０からデータＤＡＴＡＯが出力される。
【００３２】
ＣＰＵ３０は、例えば、半導体装置１００の動作を制御する。例えば、ＣＰＵ３０は、モジュール２０、４０、４２に対する書き込み動作や読み出し動作を制御する。なお、ＣＰＵ３０は、誤書き込み防止回路１０の動作を制御してもよい。例えば、ＣＰＵ３０は、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとの比較を実施するか否かを制御してもよい。すなわち、誤書き込み防止回路１０は、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとの比較を実施するか否かをＣＰＵ３０等により制御されてもよい。
【００３３】
モジュール４０、４２は、例えば、データバス幅が３２ビットのレジスタである。例えば、ジュール４０、４２は、データＤＡＴＡＩ、アドレスＡＤＲ、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳを、バスＢＵＳを介して受ける。また、例えば、モジュール４０、４２は、データＤＡＴＡＯを、選択部５０を介してバスＢＵＳに出力する。
【００３４】
例えば、書き込み動作時には、ライトストローブ信号ＷＲＳおよびアドレスＡＤＲに基づいて、データＤＡＴＡＩがモジュール４０、４２に書き込まれる。また、読み出し動作時には、リードストローブ信号ＲＤＳおよびアドレスＡＤＲに基づいて、モジュール４０、４２からデータＤＡＴＡＯが出力される。
【００３５】
選択部５０は、モジュール２０、４０、４２からデータＤＡＴＡＯを受け、有効なデータＤＡＴＡＯをバスＢＵＳに出力する。例えば、選択部５０からバスＢＵＳに出力されるデータＤＡＴＡＯは、リードストローブ信号ＲＤＳおよびアドレスＡＤＲに基づいてモジュール２０、４０、４２のいずれかから読み出されたデータＤＡＴＡＯである。
【００３６】
以上、この実施形態では、誤書き込み防止回路１０は、比較コードＣＯＤＥと期待値ＤＡＴＡＩｅとの比較結果に基づいて、保護対象のモジュール２０に対する書き込みを許可するか否かを決定する。また、この実施形態では、例えば、特別なシーケンス動作の書き込み時間を設けることなく、比較コードＣＯＤＥと期待値ＤＡＴＡＩｅとの比較が実施される。したがって、この実施形態では、特別なシーケンス動作の書き込み時間等の余計な時間を省くことができ、書き込み時間の増加を抑制できる。この結果、この実施形態では、書き込み時間の増加を抑制しつつ、保護対象のモジュール２０に対する誤書き込みを防止できる。また、この実施形態では、比較コードＣＯＤＥが可変であるため、比較コードＣＯＤＥを変更する頻度を調整することにより、システム上でのセキュリティレベルを調整することができる。
【００３７】
図４は、別の実施形態における誤書き込み防止回路１１の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の誤書き込み防止回路１１では、図１に示した誤書き込み防止回路１０に比較制御部ＣＣＴＬが追加され、比較コード生成部ＣＧおよび書き込み制御部ＷＣＴＬの代わりに比較コード生成部ＣＧ２および書き込み制御部ＷＣＴＬ２がそれぞれ設けられている。誤書き込み防止回路１１のその他の構成は、上述した実施形態と同じである。また、この実施形態の半導体装置は、誤書き込み防止回路１０の代わりに誤書き込み防止回路１１が設けられることを除いて、上述した実施形態と同じである。例えば、半導体装置の最小構成は、誤書き込み防止回路１１および保護対象のモジュール２０である。
【００３８】
誤書き込み防止回路１１は、例えば、比較コード生成部ＣＧ２、比較部ＣＯＭＰ、書き込み制御部ＷＣＴＬ２および比較制御部ＣＣＴＬを有している。例えば、誤書き込み防止回路１１は、期待値ＤＡＴＡＩｅ、アドレスＡＤＲｐ（アドレスＡＤＲの一部）、ライトストローブ信号ＷＲＳ、リードストローブ信号ＲＤＳ、比較制御信号ＣＮＴＳおよびクロックＣＬＫを受け、ライトストローブ信号ＷＲＳＩを出力する。比較制御信号ＣＮＴＳは、例えば、比較コード生成部ＣＧ２および書き込み制御部ＷＣＴＬ２に対する比較許可信号ＣＥＮをアサートするための信号であり、ＣＰＵから出力される。
【００３９】
比較制御部ＣＣＴＬは、例えば、比較制御信号ＣＮＴＳおよびライトストローブ信号ＷＲＳＩを受け、比較許可信号ＣＥＮを比較コード生成部ＣＧ２のＡＮＤ回路ＡＮＤ１および書き込み制御部ＷＣＴＬ２のＡＮＤ回路ＡＮＤ２に出力する。例えば、比較制御部ＣＣＴＬは、ＣＰＵから受ける比較制御信号ＣＮＴＳに応答して、比較許可信号ＣＥＮをアサートし、書き込み制御部ＷＣＴＬ２から受けるライトストローブ信号ＷＲＳＩに応答して、比較許可信号ＣＥＮをネゲートする。これにより、比較制御部ＣＣＴＬは、比較コード生成部ＣＧ２および書き込み制御部ＷＣＴＬ２の動作を制御する。
【００４０】
比較コード生成部ＣＧ２は、例えば、アドレスＡＤＲｐ、ライトストローブ信号ＷＲＳ、リードストローブ信号ＲＤＳ、比較許可信号ＣＥＮおよびクロックＣＬＫを受け、比較コードＣＯＤＥを比較部ＣＯＭＰに出力する。例えば、比較コード生成部ＣＧ２は、ＯＲ回路ＯＲ１、ＡＮＤ回路ＡＮＤ１、フリップフロップ回路ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４およびマルチプレクサＭＵＸ１を有している。
【００４１】
ＯＲ回路ＯＲ１は、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳを受け、ライトストローブ信号ＷＲＳとリードストローブ信号ＲＤＳとの論理和結果をＡＮＤ回路ＡＮＤ１に出力する。ＡＮＤ回路ＡＮＤ１は、ＯＲ回路ＯＲ１の出力信号と比較許可信号ＣＥＮとの論理積結果を、各フリップフロップ回路ＦＦ（ＦＦ１−ＦＦ４）のイネーブル端子ＥＮに出力する。すなわち、各フリップフロップ回路ＦＦのイネーブル端子ＥＮが受けるイネーブル信号は、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳのいずれかと比較許可信号ＣＥＮとがアサートされているときに、アサートされる。
【００４２】
各フリップフロップ回路ＦＦは、例えば、イネーブル端子ＥＮで受けるイネーブル信号がアサートされているとき、端子ＣＫで受けるクロックＣＬＫが立ち上がる度に、入力端子Ｄで受けた信号を取り込み、保持する。例えば、フリップフロップ回路ＦＦ１、ＦＦ２、ＦＦ３の出力端子Ｑは、フリップフロップ回路ＦＦ２、ＦＦ３、ＦＦ４の入力端子Ｄにそれぞれ接続されている。すなわち、フリップフロップ回路ＦＦ１−ＦＦ４は、クロックＣＬＫに同期して動作するシフトレジスタとして機能する。
【００４３】
例えば、フリップフロップ回路ＦＦ１は、クロックＣＬＫが立ち上がる度に、バスＢＵＳに出力されているアドレスＡＤＲの一部（アドレスＡＤＲｐ）の値を取り込み、保持する。また、フリップフロップ回路ＦＦ２、ＦＦ３、ＦＦ４は、クロックＣＬＫが立ち上がる度に、フリップフロップ回路ＦＦ１、ＦＦ２、ＦＦ３にそれぞれ保持されているアドレスＡＤＲｐの値を取り込み、保持する。なお、フリップフロップ回路ＦＦ４に保持されているアドレスＡＤＲｐの値は、例えば、クロックＣＬＫが立ち上がる度に、破棄される。
【００４４】
すなわち、各フリップフロップ回路ＦＦが保持しているアドレスＡＤＲｐの値は、例えば、クロックＣＬＫが立ち上がる度に、更新される。なお、任意のモジュールに対する読み出し動作および書き込み動作のいずれも実施されないアイドルサイクルでは、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳのいずれもネゲートされているため、各フリップフロップ回路ＦＦのイネーブル信号は、ネゲートされる。したがって、アイドルサイクルでは、フリップフロップ回路ＦＦ１−ＦＦ４がそれぞれ保持しているアドレスＡＤＲｐの値（信号ＣＯＤＥａ、ＣＯＤＥｂ、ＣＯＤＥｃ、ＣＯＤＥｄ）は、維持される。
【００４５】
また、各フリップフロップ回路ＦＦ（ＦＦ１−ＦＦ４）の出力端子Ｑは、マルチプレクサＭＵＸ１の入力部に接続される。すなわち、フリップフロップ回路ＦＦ１−ＦＦ４がそれぞれ保持しているアドレスＡＤＲｐの値（信号ＣＯＤＥａ、ＣＯＤＥｂ、ＣＯＤＥｃ、ＣＯＤＥｄ）は、マルチプレクサＭＵＸ１に入力される。
【００４６】
マルチプレクサＭＵＸ１は、例えば、並列直列変換回路として動作し、フリップフロップ回路ＦＦ１−ＦＦ４から受けた４つの信号ＣＯＤＥａ、ＣＯＤＥｂ、ＣＯＤＥｃ、ＣＯＤＥｄを１つの比較コードＣＯＤＥとして比較部ＣＯＭＰに出力する。例えば、マルチプレクサＭＵＸ１は、アドレスＡＤＲｐのビット幅が４ビットのとき、信号ＣＯＤＥａ、ＣＯＤＥｂ、ＣＯＤＥｃ、ＣＯＤＥｄを、比較コードＣＯＤＥの０ビット−３ビット、４ビット−７ビット、８ビット−１１ビット、１２ビット−１５ビットにそれぞれ割り当てる。
【００４７】
すなわち、比較コードＣＯＤＥは、互いに異なるタイミングで取得した４つのアドレスＡＤＲｐの値を用いて生成される。例えば、比較コードＣＯＤＥを構成する信号ＣＯＤＥａ、ＣＯＤＥｂ、ＣＯＤＥｃ、ＣＯＤＥｄでは、信号ＣＯＤＥａは、最後に取得したアドレスＡＤＲｐの値であり、信号ＣＯＤＥｂは、３番目に取得したアドレスＡＤＲｐの値であり、信号ＣＯＤＥｃは、２番目に取得したアドレスＡＤＲｐの値であり、信号ＣＯＤＥｄは、最初に取得したアドレスＡＤＲｐの値である。このように、比較コードＣＯＤＥは、時系列の要素を含む。
【００４８】
比較部ＣＯＭＰは、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとを比較し、比較結果を書き込み制御部ＷＣＴＬに通知する。このように、この実施形態では、時系列の要素を含む比較コードＣＯＤＥと期待値ＤＡＴＡＩｅとを比較するため、時系列の要素を含まない比較コードＣＯＤＥを用いうる構成に比べて、保護対象のモジュール２０のセキュリティを向上できる。
【００４９】
なお、この実施形態では、例えば、書き込み動作や読み出し動作が実施される度にアドレスＡＤＲｐが順次取得されるため、時系列の要素を含む比較コードＣＯＤＥを生成するための時間を別途設けなくともよい。したがって、この実施形態では、書き込み時間の増加を抑制しつつ、保護対象のモジュール２０のセキュリティを向上できる。すなわち、この実施形態では、書き込み時間の増加を抑制しつつ、保護対象のモジュール２０に対する誤書き込みを防止できる。
【００５０】
書き込み制御部ＷＣＴＬ２は、例えば、ライトストローブ信号ＷＲＳ、比較許可信号ＣＥＮおよび比較部ＣＯＭＰの比較結果を受け、ライトストローブ信号ＷＲＳＩを比較制御部ＣＣＴＬおよび保護対象のモジュール２０に出力する。比較部ＣＯＭＰの出力信号（比較結果）は、例えば、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致しているとき、アサートされる。
【００５１】
例えば、書き込み制御部ＷＣＴＬ２は、ライトストローブ信号ＷＲＳ、比較許可信号ＣＥＮおよび比較部ＣＯＭＰの比較結果を受けるＡＮＤ回路ＡＮＤ２を有している。ＡＮＤ回路ＡＮＤ２は、ライトストローブ信号ＷＲＳ、比較許可信号ＣＥＮおよび比較部ＣＯＭＰの出力信号（比較結果）の論理積結果（ライトストローブ信号ＷＲＳＩ）を、比較制御部ＣＣＴＬおよび保護対象のモジュール２０に出力する。
【００５２】
したがって、書き込み制御部ＷＣＴＬ２は、比較許可信号ＣＥＮがアサートされているとき、比較部ＣＯＭＰの比較結果に基づいて、モジュール２０に対する書き込みを許可するか否かを決定する。すなわち、比較許可信号ＣＥＮがアサートされているときの書き込み制御部ＷＣＴＬ２の動作は、上述した実施形態の書き込み制御部ＷＣＴＬと同じである。
【００５３】
例えば、書き込み制御部ＷＣＴＬ２は、比較許可信号ＣＥＮおよびライトストローブ信号ＷＲＳがアサートされ、かつ、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致しているとき、ライトストローブ信号ＷＲＳＩをアサートする。これにより、モジュール２０に対する書き込みは、許可される。また、例えば、書き込み制御部ＷＣＴＬ２は、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが不一致のとき、ライトストローブ信号ＷＲＳおよび比較許可信号ＣＥＮの状態に拘わらず、ライトストローブ信号ＷＲＳＩをネゲートする。これにより、モジュール２０に対する書き込みは、禁止される。
【００５４】
なお、書き込み制御部ＷＣＴＬ２は、例えば、比較許可信号ＣＥＮがネゲートされているときには、比較部ＣＯＭＰの比較結果およびライトストローブ信号ＷＲＳの状態に拘わらず、ライトストローブ信号ＷＲＳＩをネゲートする。すなわち、書き込み制御部ＷＣＴＬ２は、比較許可信号ＣＥＮがネゲートされているときには、モジュール２０に対する書き込みを禁止する。このように、この実施形態では、比較許可信号ＣＥＮをネゲートすることにより、モジュール２０に対する書き込みを禁止できるため、モジュール２０のセキュリティをさらに向上できる。
【００５５】
なお、誤書き込み防止回路１１の構成は、この例に限定されない。例えば、誤書き込み防止回路１１は、比較制御部ＣＣＴＬが省かれてもよい。また、例えば、シフトレジスタを構成するフリップフロップ回路ＦＦの数は、２つでもよいし、３つでもよい。あるいは、シフトレジスタを構成するフリップフロップ回路ＦＦの数は、５つ以上でもよい。
【００５６】
図５は、図４に示した誤書き込み防止回路１１の動作の一例を示している。なお、図５は、保護対象のモジュール２０とは別の２つのモジュール（例えば、図３に示したモジュール４０、４２）に対するアクセスが実施された後に、モジュール２０に対する書き込み動作が実施されるときの誤書き込み防止回路１１の動作の一例を示している。図５では、モジュール２０とは別の２つのモジュールを、図３に示したモジュール４０およびモジュール４２として説明する。例えば、図５に示した動作では、モジュール４０に対する書き込み動作および読み出し動作、アイドルサイクル、モジュール４２に対する書き込み動作および読み出し動作、モジュール２０に対する書き込み動作が順番に実施される。
【００５７】
また、図５の例では、比較コード生成部ＣＧ２により取り込まれるアドレスＡＤＲｐのビット幅は４ビットであり、比較コードＣＯＤＥおよび期待値ＤＡＴＡＩｅのビット幅は１６ビットであり、バスＢＵＳのデータバス幅は３２ビットである。図中の“ｉ”、“ｊ”、“ｋ”、“ｌ”、“ｍ”、“ｎ”、“ｘ”は、４ビットで示される任意の値を示している。なお、この動作の説明においては、図中の“ｘ”は、特に意味のない値である。また、図中の“４３２１”は、モジュール２０に書き込まれる１６ビットのライトデータを示している。
【００５８】
先ず、ＣＰＵの制御信号（図４に示した比較制御信号ＣＮＴＳ）に応答して、比較許可信号ＣＥＮがアサートされる。これにより、比較コードＣＯＤＥは、例えば、読み出し動作および書き込み動作のいずれかが実施される度に、更新される。
【００５９】
期間Ｔ１では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、モジュール４０内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４０に対する書き込み動作が実施される。なお、バスＢＵＳに出力されたアドレス（書き込み対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｉ”である。したがって、期間Ｔ２において、比較コードＣＯＤＥは、“ｘｘｘｉ”に更新される。
【００６０】
期間Ｔ２では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれネゲートおよびアサートされ、モジュール４０内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４０に対する読み出し動作が実施される。なお、バスＢＵＳに出力されたアドレス（読み出し対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｊ”である。したがって、期間Ｔ３において、比較コードＣＯＤＥは、“ｘｘｉｊ”に更新される。
【００６１】
期間Ｔ３では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがネゲートされ、任意のアドレスがバスＢＵＳに出力される。すなわち、期間Ｔ３は、アイドルサイクルである。なお、バスＢＵＳに出力されたアドレスの下位４ビット（アドレスＡＤＲｐ）は、“ｋ”である。期間Ｔ３がアイドルサイクルであるため、期間Ｔ４において、比較コードＣＯＤＥは、更新されない。すなわち、比較コードＣＯＤＥは、“ｘｘｉｊ”に維持される。
【００６２】
期間Ｔ４では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、モジュール４２内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４２に対する書き込み動作が実施される。なお、バスＢＵＳに出力されたアドレス（書き込み対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｌ”である。したがって、期間Ｔ５において、比較コードＣＯＤＥは、“ｘｉｊｌ”に更新される。
【００６３】
期間Ｔ５では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれネゲートおよびアサートされ、モジュール４２内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４２に対する読み出し動作が実施される。なお、バスＢＵＳに出力されたアドレス（読み出し対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｍ”である。したがって、期間Ｔ６において、比較コードＣＯＤＥは、“ｉｊｌｍ”に更新される。これにより、保護対象のモジュール２０に対する書き込み動作時に参照される比較コードＣＯＤＥが生成される。
【００６４】
この例では、比較コードＣＯＤＥは、期間Ｔ１、Ｔ２、Ｔ４、Ｔ５のアドレス（モジュール２０に対する書き込み動作の前に実施された４回のアクセスのアドレス）の情報を含んでいる。すなわち、比較コードＣＯＤＥは、互いに異なるタイミングで取得した複数のアドレスＡＤＲｐの値を用いて生成され、時系列の要素を含む。
【００６５】
期間Ｔ６では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、データＤＡＴＡＩおよびモジュール２０内の領域を示すアドレスがバスＢＵＳに出力される。なお、バスＢＵＳに出力されたアドレス（書き込み対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｎ”である。また、バスＢＵＳに出力されたＤＡＴＡＩは、モジュール２０に対する書き込みを実施するためのデータである。例えば、データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）は、“ｉｊｌｍ”であり、データＤＡＴＡＩの下位１６ビット（ライトデータＤＡＴＡＩｗ）は、“４３２１”である。
【００６６】
このように、期間Ｔ６では、データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）および比較コードＣＯＤＥは、共に“ｉｊｌｍ”であり、互いに一致している。すなわち、期間Ｔ６では、比較許可信号ＣＥＮおよびライトストローブ信号ＷＲＳがアサートされ、かつ、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致している。このため、ライトストローブ信号ＷＲＳＩがアサートされる。なお、期間Ｔ１−Ｔ５以外では、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが不一致のため、ライトストローブ信号ＷＲＳＩはネゲートされている。
【００６７】
ライトストローブ信号ＷＲＳＩがアサートされたため、モジュール２０に対する書き込みが許可される。例えば、ライトデータ（“４３２１”）がモジュール２０に書き込まれる。このように、この実施形態では、保護対象のモジュール２０に対する書き込み動作が実施される前に、比較コードＣＯＤＥに用いられるアドレスＡＤＲｐ（“ｉ”、“ｊ”、“ｌ”、“ｍ”）が取得される。そして、例えば、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが不一致のときには、ライトストローブ信号ＷＲＳＩがネゲートされるため、モジュール２０に対する書き込みは、禁止される。これにより、この実施形態では、モジュール２０に対する誤書き込みを防止できる。
【００６８】
ここで、例えば、モジュール２０を使用する正規のプログラマは、モジュール２０に対する書き込み動作の前に実施されるアクセスを認識している。したがって、プログラマは、モジュール２０にライトデータを書き込む際の期待値ＤＡＴＡＩｅとして、“ｉｊｌｍ”をデータＤＡＴＡＩの上位１６ビットに設定できる。換言すれば、不正な使用者は、モジュール２０にライトデータを書き込む際の期待値ＤＡＴＡＩｅとして、“ｉｊｌｍ”をデータＤＡＴＡＩの上位１６ビットに設定することが困難である。
【００６９】
したがって、この実施形態では、モジュール２０のデータが不正に書き換えられることを防止できる。また、この実施形態では、時系列の要素が比較コードＣＯＤＥに含まれるため、比較コードＣＯＤＥと期待値ＤＡＴＡＩｅとが誤動作等により偶然一致することを低減できる。したがって、この実施形態では、保護対象のモジュール２０のセキュリティを向上できる。
【００７０】
期間Ｔ７では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがネゲートされる。また、ライトストローブ信号ＷＲＳＩが期間Ｔ６にアサートされたため、期間Ｔ７において、比較許可信号ＣＥＮがネゲートされる。例えば、比較制御部ＣＣＴＬは、ライトストローブ信号ＷＲＳＩのアサートに応答して、比較許可信号ＣＥＮをネゲートする。これにより、モジュール２０に対する書き込み動作が終了する。なお、期間Ｔ７では、比較コードＣＯＤＥは、“ｊｌｍｎ”に更新されている。そして、期間Ｔ８では、期間Ｔ７がアイドルサイクルであるため、比較コードＣＯＤＥは、“ｊｌｍｎ”に維持される。
【００７１】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。また、この実施形態では、時系列の要素を含む比較コードＣＯＤＥと期待値ＤＡＴＡＩｅとが一致したときに、保護対象のモジュール２０に対する書き込みが許可される。これにより、この実施形態では、保護対象のモジュール２０のセキュリティをさらに向上できる。また、この実施形態では、例えば、比較コードＣＯＤＥに用いられるアドレスＡＤＲｐは、モジュール４０等に対する通常のアクセスが実施されたとき（期間Ｔ１、Ｔ２、Ｔ４、Ｔ５）、取得される。したがって、この実施形態では、比較コードＣＯＤＥに時系列の要素を含めるための時間を別途設けなくともよい。
【００７２】
すなわち、この実施形態では、モジュール２０に対する誤書き込みを防止するために、特別なシーケンス（ライトデータを書き込む前の比較用の書き込み動作等）を実施するための時間を別途設けなくともよい。これにより、この実施形態では、書き込み時間の増加を抑制しつつ、モジュール２０のセキュリティを向上できる。すなわち、この実施形態では、書き込み時間の増加を抑制しつつ、保護対象のモジュール２０に対する誤書き込みを防止できる。
【００７３】
図６は、別の実施形態における誤書き込み防止回路１２の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の誤書き込み防止回路１２は、図４に示した比較コード生成部ＣＧ２の代わりに、比較コード生成部ＣＧ４を有している。誤書き込み防止回路１２のその他の構成は、図４および図５で説明した実施形態と同じである。また、この実施形態の半導体装置は、誤書き込み防止回路１０の代わりに誤書き込み防止回路１２が設けられることを除いて、図１−図３で説明した実施形態と同じである。例えば、半導体装置の最小構成は、誤書き込み防止回路１２および保護対象のモジュール２０である。
【００７４】
誤書き込み防止回路１２は、例えば、比較コード生成部ＣＧ４、比較部ＣＯＭＰ、書き込み制御部ＷＣＴＬ２および比較制御部ＣＣＴＬを有している。例えば、誤書き込み防止回路１２は、データＤＡＴＡＩｐ、ＤＡＴＡＯｐ、期待値ＤＡＴＡＩｅ、アドレスＡＤＲｐ（アドレスＡＤＲの一部）、ライトストローブ信号ＷＲＳ、リードストローブ信号ＲＤＳ、比較制御信号ＣＮＴＳおよびクロックＣＬＫを受け、ライトストローブ信号ＷＲＳＩを出力する。なお、データＤＡＴＡＩｐは、書き込み動作時にバスＢＵＳに出力されるデータＤＡＴＡＩの一部（例えば、下位４ビット）である。また、データＤＡＴＡＯｐは、読み出し動作時にバスＢＵＳに出力されるデータＤＡＴＡＯの一部（例えば、下位４ビット）である。
【００７５】
比較コード生成部ＣＧ４は、例えば、データＤＡＴＡＩｐ、ＤＡＴＡＯｐ、アドレスＡＤＲｐ、ライトストローブ信号ＷＲＳ、リードストローブ信号ＲＤＳ、比較許可信号ＣＥＮおよびクロックＣＬＫを受け、比較コードＣＯＤＥを比較部ＣＯＭＰに出力する。例えば、比較コード生成部ＣＧ４は、データＤＡＴＡＩｐの値およびアドレスＡＤＲｐの値を書き込み動作時に取得し、データＤＡＴＡＯｐの値およびアドレスＡＤＲｐの値を読み出し動作時に取得する。そして、比較コード生成部ＣＧ４は、例えば、取得した値（アドレスＡＤＲｐ等の値）を用いて比較コードＣＯＤＥを生成する。
【００７６】
例えば、比較コード生成部ＣＧ４は、ＯＲ回路ＯＲ１、ＡＮＤ回路ＡＮＤ１、セレクタＳＥＬ、マルチプレクサＭＵＸ２、ＭＵＸ３、フリップフロップ回路ＦＦ５、ＦＦ６を有している。
【００７７】
ＯＲ回路ＯＲ１は、ライトストローブ信号ＷＲＳとリードストローブ信号ＲＤＳとの論理和結果をＡＮＤ回路ＡＮＤ１に出力する。ＡＮＤ回路ＡＮＤ１は、ＯＲ回路ＯＲ１の出力信号と比較許可信号ＣＥＮとの論理積結果を、フリップフロップ回路ＦＦ５、ＦＦ６のイネーブル端子ＥＮに出力する。すなわち、フリップフロップ回路ＦＦ５、ＦＦ６のイネーブル端子ＥＮが受けるイネーブル信号は、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳのいずれかと比較許可信号ＣＥＮとがアサートされているときに、アサートされる。
【００７８】
セレクタＳＥＬは、データＤＡＴＡＩｐ、ＤＡＴＡＯｐおよびライトストローブ信号ＷＲＳを受け、データＤＡＴＡＩｐ、ＤＡＴＡＯｐのいずれかをマルチプレクサＭＵＸ２に出力する。例えば、セレクタＳＥＬは、ライトストローブ信号ＷＲＳがアサートされているとき、データＤＡＴＡＩｐをマルチプレクサＭＵＸ２に出力し、ライトストローブ信号ＷＲＳがネゲートされているとき、データＤＡＴＡＯｐをマルチプレクサＭＵＸ２に出力する。
【００７９】
なお、セレクタＳＥＬは、ライトストローブ信号ＷＲＳの代わりに、リードストローブ信号ＲＤＳを受けてもよい。すなわち、セレクタＳＥＬは、書き込み動作時に、データＤＡＴＡＩｐをマルチプレクサＭＵＸ２に出力し、かつ、読み出し動作時に、データＤＡＴＡＯｐをマルチプレクサＭＵＸ２に出力するように構成されればよい。
【００８０】
マルチプレクサＭＵＸ２は、例えば、並列直列変換回路として動作し、２つの信号を１つの信号に変換して、フリップフロップ回路ＦＦ５の入力端子Ｄに出力する。例えば、データＤＡＴＡＩｐ、ＤＡＴＡＯｐおよびアドレスＡＤＲｐのビット幅が４ビットのとき、マルチプレクサＭＵＸ２は、セレクタＳＥＬから受けた４ビットのデータ（データＤＡＴＡＩｐ、ＤＡＴＡＯｐのいずれか）とバスＢＵＳに出力されているアドレスＡＤＲｐ（アドレスＡＤＲの一部）とを合わせた８ビットのデータを、フリップフロップ回路ＦＦ５の入力端子Ｄに出力する。
【００８１】
フリップフロップ回路ＦＦ５、ＦＦ６は、例えば、イネーブル端子ＥＮで受けるイネーブル信号がアサートされているとき、端子ＣＫで受けるクロックＣＬＫが立ち上がる度に、入力端子Ｄで受けた信号を取り込み、保持する。例えば、フリップフロップ回路ＦＦ５の出力端子Ｑは、フリップフロップ回路ＦＦ６の入力端子Ｄに接続されている。すなわち、フリップフロップ回路ＦＦ５、ＦＦ６は、クロックＣＬＫに同期して動作するシフトレジスタとして機能する。
【００８２】
例えば、フリップフロップ回路ＦＦ５は、クロックＣＬＫが立ち上がる度に、マルチプレクサＭＵＸ２から受けた信号（データＤＡＴＡＩｐ、ＤＡＴＡＯｐのいずれかとアドレスＡＤＲｐ）の値を取り込み、保持する。また、フリップフロップ回路ＦＦ６は、クロックＣＬＫが立ち上がる度に、フリップフロップ回路ＦＦ５に保持されている信号の値を取り込み、保持する。なお、フリップフロップ回路ＦＦ６に保持されている信号の値は、例えば、クロックＣＬＫが立ち上がる度に、破棄される。
【００８３】
すなわち、フリップフロップ回路ＦＦ５、ＦＦ６が保持している信号の値は、例えば、クロックＣＬＫが立ち上がる度に、更新される。なお、アイドルサイクルでは、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳのいずれもネゲートされているため、各フリップフロップ回路ＦＦのイネーブル信号は、ネゲートされる。したがって、アイドルサイクルでは、フリップフロップ回路ＦＦ５、ＦＦ６がそれぞれ保持している信号の値（信号ＣＯＤＥａｂ、ＣＯＤＥｃｄ）は、維持される。
【００８４】
また、フリップフロップ回路ＦＦ５、ＦＦ６の出力端子Ｑは、マルチプレクサＭＵＸ３の入力部に接続される。すなわち、フリップフロップ回路ＦＦ５、ＦＦ６がそれぞれ保持している信号の値（信号ＣＯＤＥａｂ、ＣＯＤＥｃｄ）は、マルチプレクサＭＵＸ１に入力される。
【００８５】
マルチプレクサＭＵＸ３は、例えば、並列直列変換回路として動作し、フリップフロップ回路ＦＦ５、ＦＦ６から受けた２つの信号ＣＯＤＥａｂ、ＣＯＤＥｃｄを１つの比較コードＣＯＤＥとして比較部ＣＯＭＰに出力する。例えば、マルチプレクサＭＵＸ３は、データＤＡＴＡＩｐ、ＤＡＴＡＯｐおよびアドレスＡＤＲｐのビット幅が４ビットのとき、信号ＣＯＤＥａｂ、ＣＯＤＥｃｄを、比較コードＣＯＤＥの０ビット−７ビット、８ビット−１５ビットにそれぞれ割り当てる。
【００８６】
すなわち、比較コードＣＯＤＥは、互いに異なるタイミングで取得した２つの信号ＣＯＤＥａｂ、ＣＯＤＥｃｄを用いて生成され、時系列の要素を含む。また、信号ＣＯＤＥａｂ、ＣＯＤＥｃｄは、アドレスＡＤＲの一部とデータ（データＤＡＴＡＩ、ＤＡＴＡＯ）の一部とを含んでいる。このため、この実施形態では、例えば、アドレスＡＤＲｐのみを用いて生成された比較コードＣＯＤＥに比べて、比較コードＣＯＤＥの不規則性を高くできる。これにより、保護対象のモジュール２０のセキュリティは、向上する。
【００８７】
比較部ＣＯＭＰは、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとを比較し、比較結果を書き込み制御部ＷＣＴＬに通知する。書き込み制御部ＷＣＴＬ２は、例えば、比較許可信号ＣＥＮおよびライトストローブ信号ＷＲＳがアサートされ、かつ、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致しているとき、ライトストローブ信号ＷＲＳＩをアサートする。また、例えば、書き込み制御部ＷＣＴＬ２は、比較許可信号ＣＥＮがネゲートされているときには、比較部ＣＯＭＰの比較結果およびライトストローブ信号ＷＲＳの状態に拘わらず、ライトストローブ信号ＷＲＳＩをネゲートする。
【００８８】
なお、誤書き込み防止回路１２の構成は、この例に限定されない。例えば、誤書き込み防止回路１２は、比較制御部ＣＣＴＬが省かれてもよい。また、例えば、シフトレジスタを構成するフリップフロップ回路ＦＦの数は、３つ以上でもよい。あるいは、比較コード生成部ＣＧ４は、例えば、アドレスＡＤＲｐを用いずに、データの一部（例えば、データＤＡＴＡＩｐ、ＤＡＴＡＯｐ）のみを用いて比較コードＣＯＤＥを生成してもよい。
【００８９】
図７は、図６に示した誤書き込み防止回路１２の動作の一例を示している。なお、図６は、保護対象のモジュール２０とは別の２つのモジュール（例えば、図３に示したモジュール４０、４２）に対するアクセスが実施された後に、モジュール２０に対する書き込み動作が実施されるときの誤書き込み防止回路１２の動作の一例を示している。図７では、モジュール２０とは別の２つのモジュールを、図３に示したモジュール４０およびモジュール４２として説明する。例えば、図７に示した動作では、モジュール４０に対する書き込み動作および読み出し動作、アイドルサイクル、モジュール４２に対する書き込み動作および読み出し動作、モジュール２０に対する書き込み動作が順番に実施される。
【００９０】
また、図７の例では、比較コード生成部ＣＧ４により取り込まれるデータＤＡＴＡＩｐ、ＤＡＴＡＯｐおよびアドレスＡＤＲｐのビット幅は４ビットであり、比較コードＣＯＤＥおよび期待値ＤＡＴＡＩｅのビット幅は１６ビットである。また、バスＢＵＳのデータバス幅は３２ビットである。図中の“ａ”、“ｂ”、“ｃ”、“ｄ”、“ｉ”、“ｊ”、“ｋ”、“ｌ”、“ｍ”、“ｎ”、“ｘ”は、４ビットで示される任意の値を示している。なお、この動作の説明においては、図中の“ｘ”は、特に意味のない値である。また、図中の“４３２１”は、モジュール２０に書き込まれる１６ビットのライトデータを示している。
【００９１】
先ず、ＣＰＵの制御信号（図６に示した比較制御信号ＣＮＴＳ）に応答して、比較許可信号ＣＥＮがアサートされる。これにより、比較コードＣＯＤＥは、例えば、読み出し動作および書き込み動作のいずれかが実施される度に、更新される。
【００９２】
期間Ｔ１では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされる。また、データＤＡＴＡＩおよびモジュール４０内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４０に対する書き込み動作が実施される。なお、バスＢＵＳに出力されたアドレス（書き込み対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｉ”である。また、バスＢＵＳに出力されたデータＤＡＴＡＩの下位４ビット（図６に示したデータＤＡＴＡＩｐ）は、“ａ”である。
【００９３】
したがって、期間Ｔ２において、比較コードＣＯＤＥは、“ｘｘｉａ”に更新される。この例の比較コードＣＯＤＥでは、データＤＡＴＡＩの一部（データＤＡＴＡＩｐ）は、アドレスＡＤＲｐより下位のビットに割り当てられている。なお、アドレスＡＤＲｐとデータＤＡＴＡＩｐとが割り当てられるビットは、互いに逆でもよい。
【００９４】
期間Ｔ２では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれネゲートおよびアサートされ、モジュール４０内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４０に対する読み出し動作が実施され、バスＢＵＳにリードデータ（図６に示したデータＤＡＴＡＯ）が出力される。
【００９５】
なお、バスＢＵＳに出力されたアドレス（読み出し対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｊ”である。また、バスＢＵＳに出力されたリードデータの下位４ビット（データＤＡＴＡＯｐ）は、“ｂ”である。したがって、期間Ｔ３において、比較コードＣＯＤＥは、“ｉａｊｂ”に更新される。
【００９６】
期間Ｔ３では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがネゲートされる。すなわち、期間Ｔ３は、アイドルサイクルである。例えば、アイドルサイクルにバスＢＵＳに出力されているアドレスの下位４ビット（アドレスＡＤＲｐ）は、“ｋ”である。期間Ｔ３がアイドルサイクルであるため、期間Ｔ４において、比較コードＣＯＤＥは、更新されない。すなわち、比較コードＣＯＤＥは、“ｉａｊｂ”に維持される。
【００９７】
期間Ｔ４では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされる。また、データＤＡＴＡＩおよびモジュール４２内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４２に対する書き込み動作が実施される。なお、バスＢＵＳに出力されたアドレス（書き込み対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｌ”である。また、バスＢＵＳに出力されたデータＤＡＴＡＩの下位４ビットは、“ｃ”である。したがって、期間Ｔ５において、比較コードＣＯＤＥは、“ｊｂｌｃ”に更新される。
【００９８】
期間Ｔ５では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれネゲートおよびアサートされ、モジュール４２内の領域を示すアドレスがバスＢＵＳに出力される。これにより、モジュール４２に対する読み出し動作が実施され、バスＢＵＳにリードデータが出力される。
【００９９】
なお、バスＢＵＳに出力されたアドレス（読み出し対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｍ”である。また、バスＢＵＳに出力されたリードデータの下位４ビット（データＤＡＴＡＯｐ）は、“ｄ”である。したがって、期間Ｔ６において、比較コードＣＯＤＥは、“ｌｃｍｄ”に更新される。これにより、保護対象のモジュール２０に対する書き込み動作時に参照される比較コードＣＯＤＥが生成される。
【０１００】
この例では、比較コードＣＯＤＥは、期間Ｔ４のバスＢＵＳ上のアドレスＡＤＲｐおよびデータＤＡＴＡＩの一部（データＤＡＴＡＩｐ）と期間Ｔ５のバスＢＵＳ上のアドレスＡＤＲｐおよびデータＤＡＴＡＯｐとを含んでいる。すなわち、比較コードＣＯＤＥは、互いに異なるタイミングで取得したバスＢＵＳ上の情報を用いて生成され、時系列の要素を含む。なお、この例では、期間Ｔ１、Ｔ２のバスＢＵＳ上の情報は、オーバーフローにより破棄され、期待値ＤＡＴＡＩｅとの比較対象から外れる。したがって、比較許可信号ＣＥＮは、例えば、期間Ｔ４の直前にアサートされるように制御されてもよい。
【０１０１】
期間Ｔ６では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、データＤＡＴＡＩおよびモジュール２０内の領域を示すアドレスがバスＢＵＳに出力される。なお、バスＢＵＳに出力されたアドレス（書き込み対象のアドレス）の下位４ビット（アドレスＡＤＲｐ）は、“ｎ”である。また、バスＢＵＳに出力されたＤＡＴＡＩは、モジュール２０に対する書き込みを実施するためのデータである。例えば、データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）は、“ｌｃｍｄ”であり、データＤＡＴＡＩの下位１６ビット（ライトデータＤＡＴＡＩｗ）は、“４３２１”である。
【０１０２】
データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）および比較コードＣＯＤＥは、共に“ｌｃｍｄ”であり、互いに一致している。すなわち、期間Ｔ６では、比較許可信号ＣＥＮおよびライトストローブ信号ＷＲＳがアサートされ、かつ、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致している。このため、ライトストローブ信号ＷＲＳＩがアサートされる。なお、期間Ｔ１−Ｔ５では、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが不一致のため、ライトストローブ信号ＷＲＳＩはネゲートされている。
【０１０３】
ライトストローブ信号ＷＲＳＩがアサートされたため、モジュール２０に対する書き込みが許可される。例えば、ライトデータ（“４３２１”）がモジュール２０に書き込まれる。なお、例えば、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが不一致のときには、ライトストローブ信号ＷＲＳＩがネゲートされるため、モジュール２０に対する書き込みは、禁止される。これにより、この実施形態では、モジュール２０に対する誤書き込みを防止できる。
【０１０４】
ここで、例えば、モジュール２０を使用する正規のプログラマは、モジュール２０に対する書き込み動作の前に実施されるアクセスを認識している。したがって、プログラマは、モジュール２０にライトデータを書き込む際の期待値ＤＡＴＡＩｅとして、“ｌｃｍｄ”をデータＤＡＴＡＩの上位１６ビットに設定できる。
【０１０５】
期間Ｔ７では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがネゲートされる。また、ライトストローブ信号ＷＲＳＩが期間Ｔ６にアサートされたため、期間Ｔ７において、比較許可信号ＣＥＮがネゲートされる。これにより、モジュール２０に対する書き込み動作が終了する。なお、期間Ｔ７では、比較コードＣＯＤＥは、“ｍｄｎ１”に更新されている。そして、期間Ｔ８では、期間Ｔ７がアイドルサイクルであるため、比較コードＣＯＤＥは、“ｍｄｎ１”に維持される。
【０１０６】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。また、この実施形態では、比較コードＣＯＤＥは、アドレスＡＤＲの一部とデータ（データＤＡＴＡＩ、ＤＡＴＡＯの少なくとも一方）の一部とを含んでいる。これにより、比較コードＣＯＤＥの不規則性が高くなる。このため、この実施形態では、保護対象のモジュール２０のセキュリティをさらに向上できる。
【０１０７】
図８は、別の実施形態における誤書き込み防止回路１３の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の誤書き込み防止回路１３では、図４に示した誤書き込み防止回路１１にカウンタ部ＣＴが追加され、書き込み制御部ＷＣＴＬ２の代わりに書き込み制御部ＷＣＴＬ４が設けられている。誤書き込み防止回路１３のその他の構成は、図４および図５で説明した実施形態と同じである。また、この実施形態の半導体装置は、誤書き込み防止回路１０の代わりに誤書き込み防止回路１３が設けられることを除いて、図１−図３で説明した実施形態と同じである。例えば、半導体装置の最小構成は、誤書き込み防止回路１３および保護対象のモジュール２０である。
【０１０８】
誤書き込み防止回路１３は、例えば、保護対象のモジュール２０に対する書き込みを比較部ＣＯＭＰの比較結果に基づいて許可したとき、予め設定された回数の書き込みがモジュール２０に対して実施されるまで、モジュール２０に対する書き込みを許可する。例えば、誤書き込み防止回路１３は、カウンタ部ＣＴ、比較コード生成部ＣＧ２、比較部ＣＯＭＰ、書き込み制御部ＷＣＴＬ４および比較制御部ＣＣＴＬを有している。
【０１０９】
そして、誤書き込み防止回路１３は、例えば、期待値ＤＡＴＡＩｅ、アドレスＡＤＲｐ（アドレスＡＤＲの一部）、ライトストローブ信号ＷＲＳ、リードストローブ信号ＲＤＳ、比較制御信号ＣＮＴＳ、書き込み回数信号ＷＮＵＭ、アドレスデコード信号ＤＥＣおよびクロックＣＬＫを受け、ライトストローブ信号ＷＲＳＩを出力する。書き込み回数信号ＷＮＵＭは、例えば、モジュール２０に対する書き込み回数を設定するための信号であり、ＣＰＵから出力される。また、アドレスデコード信号ＤＥＣは、例えば、アドレスＡＤＲのデコード結果を示す信号であり、アドレスデコーダ（例えば、図３に示したアドレスデコーダＡＤＥＣ）から出力される。例えば、アドレスデコード信号ＤＥＣは、モジュール２０内の領域を示すアドレスがバスＢＵＳに出力されたとき、アサートされる。
【０１１０】
カウンタ部ＣＴは、例えば、クロックＣＬＫ、書き込み回数信号ＷＮＵＭおよびライトストローブ信号ＷＲＳＩを受け、書き込み許可信号ＷＥＮを書き込み制御部ＷＣＴＬ４に出力する。例えば、カウンタ部ＣＴは、回数比較部ＮＣＯＭＰ、カウント制御部ＣＴＣＮおよびクロックカウンタＣＣＴを有している。
【０１１１】
回数比較部ＮＣＯＭＰは、例えば、ＣＰＵから受けた書き込み回数信号ＷＮＵＭに基づいて、モジュール２０に対する書き込み回数を設定する。そして、回数比較部ＮＣＯＭＰは、書き込み回数信号ＷＮＵＭに基づく設定回数とクロックカウンタＣＣＴのカウント値ＣＴＮＵＭとを比較し、比較結果をカウント制御部ＣＴＣＮに通知する。例えば、設定回数は、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとの比較結果に拘わらず実施されるモジュール２０への書き込み回数である。この場合、設定回数に１を加算した回数の書き込みがモジュール２０に対して実施される。
【０１１２】
カウント制御部ＣＴＣＮは、書き込み制御部ＷＣＴＬ４からのライトストローブ信号ＷＲＳＩおよび回数比較部ＮＣＯＭＰの比較結果を受け、書き込み許可信号ＷＥＮをクロックカウンタＣＣＴおよび書き込み制御部ＷＣＴＬ４に出力する。例えば、カウント制御部ＣＴＣＮは、ライトストローブ信号ＷＲＳＩに応答して、書き込み許可信号ＷＥＮをアサートする。そして、カウント制御部ＣＴＣＮは、設定回数とクロックカウンタＣＣＴのカウント値ＣＴＮＵＭとの一致を示す比較結果に応答して、書き込み許可信号ＷＥＮをネゲートする。
【０１１３】
クロックカウンタＣＣＴは、例えば、モジュール２０に対して実施された書き込み回数を、設定回数に一致するまでカウントする。例えば、クロックカウンタＣＣＴは、書き込み許可信号ＷＥＮおよびライトストローブ信号ＷＲＳＩがアサートされているとき、クロックＣＬＫに同期して、カウントアップする。そして、クロックカウンタＣＣＴは、例えば、設定回数とクロックカウンタＣＣＴのカウント値ＣＴＮＵＭとの一致を示す比較結果に応答して、カウント値ＣＴＮＵＭをリセットする。例えば、クロックカウンタＣＣＴは、書き込み許可信号ＷＥＮがネゲートされたとき、カウント値ＣＴＮＵＭをリセットする。
【０１１４】
書き込み制御部ＷＣＴＬ４は、比較部ＣＯＭＰの比較結果、比較許可信号ＣＥＮ、書き込み許可信号ＷＥＮ、ライトストローブ信号ＷＲＳおよびアドレスデコード信号ＤＥＣを受け、ライトストローブ信号ＷＲＳＩを保護対象のモジュール２０に出力する。例えば、書き込み制御部ＷＣＴＬ４は、ＡＮＤ回路ＡＮＤ３、ＯＲ回路ＯＲ２およびＡＮＤ回路ＡＮＤ４を有している。
【０１１５】
ＡＮＤ回路ＡＮＤ３は、比較許可信号ＣＥＮおよび比較部ＣＯＭＰの比較結果を受ける。そして、ＡＮＤ回路ＡＮＤ３は、比較許可信号ＣＥＮおよび比較部ＣＯＭＰの出力信号（比較結果）の論理積結果を、ＯＲ回路ＯＲ２に出力する。なお、比較部ＣＯＭＰの出力信号（比較結果）は、例えば、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致しているとき、アサートされる。
【０１１６】
ＯＲ回路ＯＲ２は、書き込み許可信号ＷＥＮおよびＡＮＤ回路ＡＮＤ３の出力信号を受ける。そして、ＯＲ回路ＯＲ２は、書き込み許可信号ＷＥＮおよびＡＮＤ回路ＡＮＤ３の出力信号の論理和結果を、ＡＮＤ回路ＡＮＤ４に出力する。
【０１１７】
ＡＮＤ回路ＡＮＤ４は、ライトストローブ信号ＷＲＳ、アドレスデコード信号ＤＥＣおよびＯＲ回路ＯＲ２の出力信号を受ける。そして、ＡＮＤ回路ＡＮＤ４は、ライトストローブ信号ＷＲＳ、アドレスデコード信号ＤＥＣおよびＯＲ回路ＯＲ２の出力信号の論理積結果（ライトストローブ信号ＷＲＳＩ）を、比較制御部ＣＣＴＬ、カウンタ部ＣＴおよび保護対象のモジュール２０に出力する。
【０１１８】
このように、書き込み制御部ＷＣＴＬ４は、例えば、比較許可信号ＣＥＮ、ライトストローブ信号ＷＲＳおよびアドレスデコード信号ＤＥＣがアサートされ、かつ、書き込み許可信号ＷＥＮがネゲートされているとき、比較部ＣＯＭＰの比較結果に基づいて、モジュール２０に対する書き込みを許可するか否かを決定する。
【０１１９】
また、例えば、書き込み制御部ＷＣＴＬ４は、書き込み許可信号ＷＥＮ、ライトストローブ信号ＷＲＳおよびアドレスデコード信号ＤＥＣがアサートされているとき、比較部ＣＯＭＰの比較結果および比較許可信号ＣＥＮの状態に拘わらず、ライトストローブ信号ＷＲＳＩをアサートする。これにより、モジュール２０に対する書き込みは、比較部ＣＯＭＰの比較結果に基づいて許可されてから、書き込み回数信号ＷＮＵＭに基づく設定回数とクロックカウンタＣＣＴのカウント値ＣＴＮＵＭとが一致するまで許可される。
【０１２０】
なお、誤書き込み防止回路１３の構成は、この例に限定されない。例えば、誤書き込み防止回路１３は、比較制御部ＣＣＴＬが省かれてもよい。また、誤書き込み防止回路１３は、例えば、比較コード生成部ＣＧ２の代わりに、比較コード生成部ＣＧ４を有してもよい。
【０１２１】
図９は、図８に示した誤書き込み防止回路１３の動作の一例を示している。なお、図９は、保護対象のモジュール２０とは別の２つのモジュール（例えば、図３に示したモジュール４０、４２）に対するアクセスが実施された後に、モジュール２０に対する書き込み動作が実施されるときの誤書き込み防止回路１３の動作の一例を示している。図９に示した動作では、モジュール２０に対する書き込み動作の前に実施される２つのモジュールに対するアクセス（例えば、モジュール４０、４２に対するアクセス）は、図５と同じである。なお、図９に示した動作では、書き込み回数信号ＷＮＵＭに基づく設定回数は、２回である。
【０１２２】
また、図９の例では、アドレスＡＤＲｐのビット幅は４ビットであり、比較コードＣＯＤＥおよび期待値ＤＡＴＡＩｅのビット幅は１６ビットであり、バスＢＵＳのデータバス幅は３２ビットである。図中の“ｉ”、“ｊ”、“ｋ”、“ｌ”、“ｍ”、“ｎ”、“ｘ”の意味は、図５と同じである。また、図中の“４３２１”、“８７６５”および“ｃｂａ９”は、モジュール２０に書き込まれる１６ビットのライトデータを示している。
【０１２３】
期間Ｔ１−期間Ｔ６までの誤書き込み防止回路１３の動作は、図５に示した期間Ｔ１−Ｔ６と同じである。なお、期間Ｔ１−期間Ｔ６では、書き込み許可信号ＷＥＮがネゲートされ、カウント値ＣＴＮＵＭが０に維持されている。
【０１２４】
例えば、期間Ｔ６では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、データＤＡＴＡＩおよびモジュール２０内の領域を示すアドレスがバスＢＵＳに出力される。モジュール２０内の領域を示すアドレスがバスＢＵＳに出力されたため、アドレスデコード信号ＤＥＣがアサートされる。
【０１２５】
ライトストローブ信号ＷＲＳＩは、データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）と比較コードＣＯＤＥとが一致し、かつ、ライトストローブ信号ＷＲＳおよびアドレスデコード信号ＤＥＣがアサートされているため、アサートされる。これにより、モジュール２０に対する書き込みが許可される。例えば、ライトデータ（“４３２１”）がモジュール２０に書き込まれる。
【０１２６】
期間Ｔ７では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、モジュール２０以外の領域を示すアドレスがバスＢＵＳに出力される。モジュール２０以外の領域を示すアドレスがバスＢＵＳに出力されたため、アドレスデコード信号ＤＥＣがネゲートされる。アドレスデコード信号ＤＥＣがネゲートされるため、ライトストローブ信号ＷＲＳＩは、書き込み許可信号ＷＥＮおよびライトストローブ信号ＷＲＳの状態に拘わらず、ネゲートされる。これにより、モジュール２０に対する書き込みが禁止される。
【０１２７】
また、ライトストローブ信号ＷＲＳＩが期間Ｔ６にアサートされたため、期間Ｔ７において、比較許可信号ＣＥＮおよび書き込み許可信号ＷＥＮがそれぞれネゲートおよびアサートされ、クロックカウンタＣＣＴのカウント動作が開始される。なお、カウント値ＣＴＮＵＭは、ライトストローブ信号ＷＲＳＩがネゲートされているため、更新されない。また、比較コードＣＯＤＥは、期間Ｔ６の書き込み動作に応答して、“ｊｌｍｎ”に更新されている。そして、期間Ｔ８以降では、比較コードＣＯＤＥは、比較許可信号ＣＥＮがネゲートされているため、“ｊｌｍｎ”に維持される。
【０１２８】
期間Ｔ８では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、モジュール２０内の領域を示すアドレスがバスＢＵＳに出力される。このため、アドレスデコード信号ＤＥＣがアサートされる。ライトストローブ信号ＷＲＳ、書き込み許可信号ＷＥＮおよびアドレスデコード信号ＤＥＣがアサートされるため、ライトストローブ信号ＷＲＳＩは、比較部ＣＯＭＰの比較結果に拘わらず、アサートされる。これにより、モジュール２０に対する書き込みが許可される。例えば、ライトデータ（“８７６５”）がモジュール２０に書き込まれる。
【０１２９】
なお、書き込み許可信号ＷＥＮは、カウント値ＣＴＮＵＭが設定回数（２回）に到達していないため、アサート状態に維持される。書き込み許可信号ＷＥＮおよびライトストローブ信号ＷＲＳＩがアサートされているため、カウント値ＣＴＮＵＭは、期間Ｔ９において、“０”から“１”に更新される。すなわち、カウント値ＣＴＮＵＭは、比較部ＣＯＭＰの比較結果に基づく最初の書き込みがモジュール２０に対して実施された後、モジュール２０に対する書き込み動作が実施される度に、カウントアップする。
【０１３０】
期間Ｔ９では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれネゲートおよびアサートされ、モジュール２０以外の領域を示すアドレスがバスＢＵＳに出力される。このため、アドレスデコード信号ＤＥＣがネゲートされる。これにより、ライトストローブ信号ＷＲＳＩがネゲートされる。この結果、モジュール２０に対する書き込みが禁止される。このため、カウント値ＣＴＮＵＭは、更新されない。したがって、書き込み許可信号ＷＥＮは、アサート状態に維持される。
【０１３１】
期間Ｔ１０では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、モジュール２０内の領域を示すアドレスがバスＢＵＳに出力される。このため、アドレスデコード信号ＤＥＣがアサートされる。ライトストローブ信号ＷＲＳ、書き込み許可信号ＷＥＮおよびアドレスデコード信号ＤＥＣがアサートされるため、ライトストローブ信号ＷＲＳＩは、比較部ＣＯＭＰの比較結果に拘わらず、アサートされる。これにより、モジュール２０に対する書き込みが許可される。例えば、ライトデータ（“ｃｂａ９”）がモジュール２０に書き込まれる。
【０１３２】
なお、書き込み許可信号ＷＥＮは、カウント値ＣＴＮＵＭが設定回数（２回）に到達していないため、アサートされている。書き込み許可信号ＷＥＮおよびライトストローブ信号ＷＲＳＩがアサートされているため、カウント値ＣＴＮＵＭは、期間Ｔ１１において、“１”から“２”に更新される。なお、カウント値ＣＴＮＵＭは、“２”に更新されることにより、設定回数（２回）と一致するため、“０”にリセットされる。このため、図９では、期間Ｔ１１のカウント値ＣＴＮＵＭを“０”と記載している。
【０１３３】
期間Ｔ１１では、ライトストローブ信号ＷＲＳおよびリードストローブ信号ＲＤＳがそれぞれアサートおよびネゲートされ、モジュール２０内の領域を示すアドレスがバスＢＵＳに出力される。このため、アドレスデコード信号ＤＥＣがアサートされる。なお、書き込み許可信号ＷＥＮは、カウント値ＣＴＮＵＭが設定回数（２回）に到達したため、ネゲートされる。
【０１３４】
書き込み許可信号ＷＥＮがネゲートされるため、ライトストローブ信号ＷＲＳＩは、ライトストローブ信号ＷＲＳおよびアドレスデコード信号ＤＥＣの状態に拘わらず、ネゲートされる。これにより、モジュール２０に対する書き込みが禁止される。これにより、モジュール２０に対する書き込み動作が終了する。
【０１３５】
なお、誤書き込み防止回路１３の動作は、この例に限定されない。例えば、誤書き込み防止回路１３は、比較部ＣＯＭＰの比較結果に基づく最初の書き込みを含むモジュール２０に対する書き込み回数が設定回数（図９の例では、２回）に到達したとき、モジュール２０に対する書き込み動作を終了してもよい。
【０１３６】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。また、この実施形態では、誤書き込み防止回路１３は、保護対象のモジュール２０に対する書き込みを比較部ＣＯＭＰの比較結果に基づいて許可したとき、予め設定された回数の書き込みがモジュール２０に対して実施されるまで、モジュール２０に対する書き込みを許可する。これにより、この実施形態では、例えば、モジュール２０に対する連続する書き込み（バースト書き込み等）に容易に対応できる。また、この実施形態では、例えば、バースト書き込みのうちの最初の書き込みに対してのみ比較コード生成部ＣＧ２を動作させればよいため、比較コード生成部ＣＧ２の消費電力を低減できる。
【０１３７】
図１０は、別の実施形態における誤書き込み防止回路１４の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の誤書き込み防止回路１４では、図４に示した比較制御部ＣＣＴＬの代わりに比較制御部ＣＣＴＬ２が設けられている。誤書き込み防止回路１４のその他の構成は、図４および図５で説明した実施形態と同じである。なお、誤書き込み防止回路１４は、ＣＰＵ３０を有してもよい。
【０１３８】
また、この実施形態の半導体装置は、誤書き込み防止回路１０の代わりに誤書き込み防止回路１４が設けられることを除いて、図１−図３で説明した実施形態と同じである。なお、この実施形態の半導体装置の最小構成は、例えば、誤書き込み防止回路１４、保護対象のモジュール２０およびＣＰＵ３０である。
【０１３９】
誤書き込み防止回路１４は、例えば、比較コード生成部ＣＧ２、比較部ＣＯＭＰ、書き込み制御部ＷＣＴＬ２および比較制御部ＣＣＴＬ２を有している。例えば、誤書き込み防止回路１４は、期待値ＤＡＴＡＩｅ、アドレスＡＤＲｐ（アドレスＡＤＲの一部）、ライトストローブ信号ＷＲＳ、リードストローブ信号ＲＤＳ、比較制御信号ＣＮＴＳおよびクロックＣＬＫを受け、比較コードＣＯＤＥおよびライトストローブ信号ＷＲＳＩを出力する。
【０１４０】
比較制御部ＣＣＴＬ２は、例えば、比較制御信号ＣＮＴＳおよびライトストローブ信号ＷＲＳＩを受け、比較許可信号ＣＥＮおよびコード生成信号ＣＧＥを出力する。例えば、比較制御部ＣＣＴＬ２は、比較コードＣＯＤＥの生成開始を示すコード比較制御信号ＣＮＴＳに応答して、コード生成信号ＣＧＥをアサートし、比較コードＣＯＤＥの生成終了を示すコード比較制御信号ＣＮＴＳに応答して、コード生成信号ＣＧＥをネゲートする。
【０１４１】
また、例えば、比較制御部ＣＣＴＬ２は、モジュール２０に対する書き込みが実施されることを示す比較制御信号ＣＮＴＳに応答して、比較許可信号ＣＥＮをアサートする。そして、比較制御部ＣＣＴＬ２は、書き込み制御部ＷＣＴＬ２から受けるライトストローブ信号ＷＲＳＩに応答して、比較許可信号ＣＥＮをネゲートする。このように、比較制御部ＣＣＴＬ２は、比較コード生成部ＣＧ２および書き込み制御部ＷＣＴＬ２の動作を制御する。
【０１４２】
比較コード生成部ＣＧ２の動作は、比較許可信号ＣＥＮの代わりにコード生成信号ＣＧＥを受けることを除いて、図４および図５で説明した実施形態と同じである。例えば、比較コード生成部ＣＧ２は、コード生成信号ＣＧＥがアサートされているとき、読み出し動作および書き込み動作のいずれかが実施される度に、比較コードＣＯＤＥを更新する。すなわち、比較コードＣＯＤＥは、コード生成信号ＣＧＥがネゲートされているとき、更新されない。
【０１４３】
また、比較コードＣＯＤＥは、例えば、ＣＰＵ３０および比較部ＣＯＭＰに出力される。例えば、ＣＰＵ３０は、モジュール２０に対する書き込みが実施されることを示す比較制御信号ＣＮＴＳを誤書き込み防止回路１４に出力する前に、誤書き込み防止回路１４から受けた最新の比較コードＣＯＤＥを、データＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）に設定する。これにより、モジュール２０に対する書き込みが実施されるとき、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致する。
【０１４４】
なお、誤書き込み防止回路１４の構成は、この例に限定されない。例えば、誤書き込み防止回路１４は、比較コード生成部ＣＧ２の代わりに、比較コード生成部ＣＧ４を有してもよい。あるいは、誤書き込み防止回路１４は、例えば、比較コード生成部ＣＧ２から取得した比較コードＣＯＤＥをデータＤＡＴＡＩの上位１６ビット（期待値ＤＡＴＡＩｅ）に設定する処理部（ＣＰＵ３０の一部の機能）を有してもよい。
【０１４５】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。また、この実施形態では、コード比較制御信号ＣＮＴＳに基づくコード生成信号ＣＧＥを用いて、期待値ＤＡＴＡＩｅを簡易に生成できる。このため、この実施形態では、誤書き込み防止回路１４等の使用勝手を向上できる。
【０１４６】
図１１は、別の実施形態における誤書き込み防止回路１５の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の誤書き込み防止回路１５は、図４に示した書き込み制御部ＷＣＴＬ４および比較制御部ＣＣＴＬの代わりに、書き込み制御部ＷＣＴＬ６および比較制御部ＣＣＴＬ４をそれぞれ有している。誤書き込み防止回路１５のその他の構成は、図４および図５で説明した実施形態と同じである。また、この実施形態の半導体装置は、誤書き込み防止回路１０の代わりに誤書き込み防止回路１５が設けられることを除いて、図１−図３で説明した実施形態と同じである。例えば、半導体装置の最小構成は、誤書き込み防止回路１５および保護対象のモジュール２０である。
【０１４７】
誤書き込み防止回路１５は、例えば、比較コード生成部ＣＧ２、比較部ＣＯＭＰ、書き込み制御部ＷＣＴＬ６および比較制御部ＣＣＴＬ４を有している。例えば、誤書き込み防止回路１５は、期待値ＤＡＴＡＩｅ、アドレスＡＤＲｐ（アドレスＡＤＲの一部）、ライトストローブ信号ＷＲＳ、リードストローブ信号ＲＤＳ、比較制御信号ＣＮＴＳおよびクロックＣＬＫを受け、ライトストローブ信号ＷＲＳＩを出力する。
【０１４８】
比較制御部ＣＣＴＬ４は、例えば、比較制御信号ＣＮＴＳおよびライトストローブ信号ＷＲＳＩを受け、比較許可信号ＣＥＮおよび解除信号ＣＡＮＣを出力する。例えば、比較制御部ＣＣＴＬ４は、保護を無効にするコード比較制御信号ＣＮＴＳに応答して、解除信号ＣＡＮＣをアサートし、保護を有効にするコード比較制御信号ＣＮＴＳに応答して、解除信号ＣＡＮＣをネゲートする。
【０１４９】
また、例えば、比較制御部ＣＣＴＬ４は、比較コードＣＯＤＥの更新等を許可することを示す比較制御信号ＣＮＴＳに応答して、比較許可信号ＣＥＮをアサートする。そして、比較制御部ＣＣＴＬ４は、書き込み制御部ＷＣＴＬ６から受けるライトストローブ信号ＷＲＳＩに応答して、比較許可信号ＣＥＮをネゲートする。このように、比較制御部ＣＣＴＬ４は、比較コード生成部ＣＧ２および書き込み制御部ＷＣＴＬ６の動作を制御する。なお、比較コード生成部ＣＧ２の動作は、図４および図５で説明した実施形態と同じである。
【０１５０】
書き込み制御部ＷＣＴＬ６は、比較部ＣＯＭＰの比較結果、比較許可信号ＣＥＮ、解除信号ＣＡＮＣおよびライトストローブ信号ＷＲＳを受け、ライトストローブ信号ＷＲＳＩを保護対象のモジュール２０に出力する。例えば、書き込み制御部ＷＣＴＬ６は、ＡＮＤ回路ＡＮＤ３、ＯＲ回路ＯＲ２およびＡＮＤ回路ＡＮＤ５を有している。
【０１５１】
ＡＮＤ回路ＡＮＤ３は、比較許可信号ＣＥＮおよび比較部ＣＯＭＰの比較結果を受ける。そして、ＡＮＤ回路ＡＮＤ３は、比較許可信号ＣＥＮおよび比較部ＣＯＭＰの出力信号（比較結果）の論理積結果を、ＯＲ回路ＯＲ２に出力する。なお、比較部ＣＯＭＰの出力信号（比較結果）は、例えば、期待値ＤＡＴＡＩｅと比較コードＣＯＤＥとが一致しているとき、アサートされる。
【０１５２】
ＯＲ回路ＯＲ２は、解除信号ＣＡＮＣおよびＡＮＤ回路ＡＮＤ３の出力信号を受ける。そして、ＯＲ回路ＯＲ２は、解除信号ＣＡＮＣおよびＡＮＤ回路ＡＮＤ３の出力信号の論理和結果を、ＡＮＤ回路ＡＮＤ５に出力する。ＡＮＤ回路ＡＮＤ５は、ライトストローブ信号ＷＲＳおよびＯＲ回路ＯＲ２の出力信号を受ける。そして、ＡＮＤ回路ＡＮＤ５は、ライトストローブ信号ＷＲＳおよびＯＲ回路ＯＲ２の出力信号の論理積結果（ライトストローブ信号ＷＲＳＩ）を、比較制御部ＣＣＴＬ４および保護対象のモジュール２０に出力する。
【０１５３】
このように、書き込み制御部ＷＣＴＬ６は、例えば、比較許可信号ＣＥＮおよびライトストローブ信号ＷＲＳがアサートされ、かつ、解除信号ＣＡＮＣがネゲートされているとき、比較部ＣＯＭＰの比較結果に基づいて、モジュール２０に対する書き込みを許可するか否かを決定する。
【０１５４】
また、例えば、書き込み制御部ＷＣＴＬ６は、解除信号ＣＡＮＣおよびライトストローブ信号ＷＲＳがアサートされているとき、比較部ＣＯＭＰの比較結果および比較許可信号ＣＥＮの状態に拘わらず、ライトストローブ信号ＷＲＳＩをアサートする。すなわち、書き込み制御部ＷＣＴＬ６は、解除信号ＣＡＮＣがアサートされているとき、ライトストローブ信号ＷＲＳをライトストローブ信号ＷＲＳＩとして出力する。これにより、この実施形態では、例えば、モジュール２０に対する書き込みを保護しなくてよいとき、解除信号ＣＡＮＣをアサートすることにより、期待値ＤＡＴＡＩｅの設定を省くことができる。この結果、この実施形態では、誤書き込み防止回路１５等の使用勝手を向上できる。
【０１５５】
なお、誤書き込み防止回路１５の構成は、この例に限定されない。例えば、比較制御部ＣＣＴＬ４は、解除信号ＣＡＮＣをアサートしたとき、比較許可信号ＣＥＮをネゲートしてもよい。この場合、例えば、モジュール２０に対する書き込みを保護しなくてよいとき、誤書き込み防止回路１５の消費電力を低減できる。また、例えば、誤書き込み防止回路１５は、比較コード生成部ＣＧ２の代わりに、比較コード生成部ＣＧ４を有してもよい。
【０１５６】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。また、この実施形態では、コード比較制御信号ＣＮＴＳに基づく解除信号ＣＡＮＣを用いて、誤書き込み防止回路１５に接続されたモジュール２０に対する保護を有効にするか無効にするか設定できる。このため、この実施形態では、誤書き込み防止回路１５等の使用勝手を向上できる。
【０１５７】
図１２は、別の実施形態における半導体装置１０２の一例を示している。上述した実施形態で説明した要素と同一の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。この実施形態の半導体装置１０２では、図２に示した誤書き込み防止回路１０およびモジュール２０の代わりに誤書き込み防止回路１１およびモジュール２２がそれぞれ設けられ、アドレスデコーダＡＤＥＣがモジュール２２の外部に設けられている。半導体装置１０２のその他の構成は、図１−図３で説明した実施形態と同じである。なお、例えば、半導体装置の最小構成は、誤書き込み防止回路１１、保護対象のモジュール２２およびアドレスデコーダＡＤＥＣである。また、モジュール２２の構成は、アドレスデコーダＡＤＥＣが外部に設けられていることを除いて、モジュール２０と同じである。なお、モジュール２２は、図３に示したライトストローブ信号ＷＲＳＩの代わりにライトストローブ信号ＷＲＳを受ける。
【０１５８】
アドレスデコーダＡＤＥＣは、アドレスＡＤＲをバスＢＵＳを介して受け、アドレスデコード信号ＤＥＣを誤書き込み防止回路１１に出力する。誤書き込み防止回路１１は、アドレスデコード信号ＤＥＣＩをモジュール２２に出力する。すなわち、誤書き込み防止回路１１は、アドレスデコード信号ＤＥＣＩを用いて、モジュール２２に対する書き込みの許可／禁止を制御する。例えば、アドレスデコード信号ＤＥＣＩおよびライトストローブ信号ＷＲＳがアサートされたとき、モジュール２２に対する書き込みが実施される。
【０１５９】
なお、半導体装置１０２の構成は、この例に限定されない。例えば、半導体装置１０２は、誤書き込み防止回路１１の代わりに、誤書き込み防止回路１０、１２−１５のいずれかを有してもよい。この場合、誤書き込み防止回路１０、１２−１５は、アドレスデコード信号ＤＥＣを受け、アドレスデコード信号ＤＥＣＩを出力する。
【０１６０】
図１３は、図１２に示した半導体装置１０２に搭載される誤書き込み防止回路１１の一例を示している。誤書き込み防止回路１１の書き込み制御部ＷＣＴＬ２は、入力信号の一部の種類および出力信号の種類を除いて、図４に示した書き込み制御部ＷＣＴＬ２と同じである。例えば、書き込み制御部ＷＣＴＬ２は、ライトストローブ信号ＷＲＳの代わりにアドレスデコード信号ＤＥＣを受け、ライトストローブ信号ＷＲＳＩの代わりにアドレスデコード信号ＤＥＣＩを出力する。
【０１６１】
また、誤書き込み防止回路１１の比較制御部ＣＣＴＬは、ライトストローブ信号ＷＲＳＩの代わりにアドレスデコード信号ＤＥＣＩを受けることを除いて、図４に示した比較制御部ＣＣＴＬと同じである。誤書き込み防止回路１１のその他の構成および動作は、図４および図５で説明した実施形態と同じである。
【０１６２】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。
【０１６３】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
バスに出力されたアドレスおよびデータの少なくとも一方の一部の値を取得し、取得した値を用いて比較コードを生成する比較コード生成部と、
前記バスに接続された保護対象のモジュールに書き込まれるデータに対応する期待値と前記比較コードとを比較する比較部と、
前記比較部の比較結果に基づいて、前記モジュールに対する書き込みを許可するか否かを決定する書き込み制御部と
を備えていることを特徴とする誤書き込み防止回路。
（付記２）
前記比較コード生成部は、前記バスに出力されたアドレスおよびデータのそれぞれの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする付記１記載の誤書き込み防止回路。
（付記３）
前記比較コード生成部は、前記バスに出力されたアドレスの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする付記１記載の誤書き込み防止回路。
（付記４）
前記比較コード生成部は、前記バスに出力されたデータの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする付記１記載の誤書き込み防止回路。
（付記５）
前記モジュールに対して実施された書き込みの回数をカウントするカウンタ部を有し、
前記書き込み制御部は、前記モジュールに対する書き込みを前記比較結果に基づいて許可したとき、予め設定された回数の書き込みが前記モジュールに対して実施されるまで、前記モジュールに対する書き込みを許可すること
を特徴とする付記１記載の誤書き込み防止回路。
（付記６）
前記比較コード生成部に保持されている前記比較コードを取得し、取得した前記比較コードを前記期待値として前記比較部に出力する処理部を有し、
前記比較コード生成部は、前記期待値生成部に前記比較コードを出力した後、少なくとも前記モジュールに対して書き込みが実施されるまで、前記比較コードを更新しないこと
を特徴とする付記１記載の誤書き込み防止回路。
（付記７）
前記比較部の前記比較結果を有効にするか無効にするかを設定する比較制御部を有し、
前記書き込み制御部は、前記比較結果が無効のとき、前記モジュールに対する書き込みを前記比較結果に拘わらず許可すること
を特徴とする付記１記載の誤書き込み防止回路。
（付記８）
前記比較コード生成部は、前記バスに出力されたアドレスおよびデータの少なくとも一方の一部の値を順次取得し、互いに異なるタイミングで取得した値を用いて前記比較コードを生成すること
を特徴とする付記１記載の誤書き込み防止回路。
（付記９）
前記比較コードの更新を実施するか否かを設定する比較制御部を有し、
前記書き込み制御部は、前記比較コードの更新を実施しないとき、前記モジュールに対する書き込みを前記比較結果に拘わらず禁止すること
を特徴とする付記１記載の誤書き込み防止回路。
（付記１０）
バスに接続された保護対象のモジュールと、前記モジュールへの書き込みを制御する誤書き込み防止回路とを備え、
前記誤書き込み防止回路は、
前記バスに出力されたアドレスおよびデータの少なくとも一方の一部の値を取得し、取得した値を用いて比較コードを生成する比較コード生成部と、
前記モジュールに書き込まれるデータに対応する期待値と前記比較コードとを比較する比較部と、
前記比較部の比較結果に基づいて、前記モジュールに対する書き込みを許可するか否かを決定する書き込み制御部とを備えていること
を特徴とする半導体装置。
（付記１１）
前記比較コード生成部は、前記バスに出力されたアドレスおよびデータのそれぞれの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする付記１０記載の半導体装置。
（付記１２）
前記比較コード生成部は、前記バスに出力されたアドレスの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする付記１０記載の半導体装置。
（付記１３）
前記比較コード生成部は、前記バスに出力されたデータの一部の値を取得し、取得した値を用いて前記比較コードを生成すること
を特徴とする付記１０記載の半導体装置。
（付記１４）
前記誤書き込み防止回路は、前記モジュールに対して実施された書き込みの回数をカウントするカウンタ部を有し、
前記書き込み制御部は、前記モジュールに対する書き込みを前記比較結果に基づいて許可したとき、予め設定された回数の書き込みが前記モジュールに対して実施されるまで、前記モジュールに対する書き込みを許可すること
を特徴とする付記１０記載の半導体装置。
（付記１５）
前記誤書き込み防止回路は、前記比較コード生成部に保持されている前記比較コードを取得し、取得した前記比較コードを前記期待値として前記比較部に出力する処理部を有し、
前記比較コード生成部は、前記期待値生成部に前記比較コードを出力した後、少なくとも前記モジュールに対して書き込みが実施されるまで、前記比較コードを更新しないこと
を特徴とする付記１０記載の半導体装置。
（付記１６）
前記誤書き込み防止回路は、前記比較部の前記比較結果を有効にするか無効にするかを設定する比較制御部を有し、
前記書き込み制御部は、前記比較結果が無効のとき、前記モジュールに対する書き込みを前記比較結果に拘わらず許可すること
を特徴とする付記１０記載の半導体装置。
（付記１７）
前記比較コード生成部は、前記バスに出力されたアドレスおよびデータの少なくとも一方の一部の値を順次取得し、互いに異なるタイミングで取得した値を用いて前記比較コードを生成すること
を特徴とする付記１０記載の半導体装置。
（付記１８）
前記誤書き込み防止回路は、前記比較コードの更新を実施するか否かを設定する比較制御部を有し、
前記書き込み制御部は、前記比較コードの更新を実施しないとき、前記モジュールに対する書き込みを前記比較結果に拘わらず禁止すること
を特徴とする付記１０記載の半導体装置。
【０１６４】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１６５】
１０−１５‥誤書き込み防止回路；２０、２２、４０、４２‥モジュール；３０‥ＣＰＵ；５０‥選択部；１００、１０２‥半導体装置；ＡＤＥＣ‥アドレスデコーダ；ＡＤＲ‥アドレス；ＡＮＤ１−ＡＮＤ５‥ＡＮＤ回路；ＢＵＳ‥バス；ＣＣＴ‥クロックカウンタ；ＣＣＴＬ、ＣＣＴＬ２、ＣＣＴＬ４‥比較制御部；ＣＧ、ＣＧ２、ＣＧ４‥比較コード生成部；ＣＯＤＥ‥比較コード；ＣＯＭＰ‥比較部；ＣＴ‥カウンタ部；ＣＴＣＮ‥カウント制御部；ＤＡＴＡＩ、ＤＡＴＡＯ‥データ；ＤＡＴＡＩｅ‥期待値；ＤＡＴＡＩｗ‥ライトデータ；ＦＦ１−ＦＦ６‥フリップフロップ回路；ＭＵＸ１−ＭＵＸ３‥マルチプレクサ；ＮＣＯＭＰ‥回数比較部；ＯＲ１、ＯＲ２‥ＯＲ回路；ＳＥＬ‥セレクタ；ＷＣＴＬ、ＷＣＴＬ２、ＷＣＴＬ４、ＷＣＴＬ６‥書き込み制御部
【図１】
0005673199.tif 000002
【図２】
0005673199.tif 000003
【図３】
0005673199.tif 000004
【図４】
0005673199.tif 000005
【図５】
0005673199.tif 000006
【図６】
0005673199.tif 000007
【図７】
0005673199.tif 000008
【図８】
0005673199.tif 000009
【図９】
0005673199.tif 000010
【図１０】
0005673199.tif 000011
【図１１】
0005673199.tif 000012
【図１２】
0005673199.tif 000013
【図１３】
0005673199.tif 000014