(57)【要約】【課題】従来の動作モードの設定においては、製品の出荷前と出荷後で動作モードの設定条件を変更することができなかった。【解決手段】本発明の半導体集積回路は、書換え可能な不揮発性メモリと、動作モード設定信号が入力される動作モード設定端子と、動作モード設定信号に基づいてカウント動作を行う第１のカウンタと、を備え、不揮発性メモリは、第１のパルス数設定値を格納し、第１のカウンタのカウント値と第１のパルス数設定値が一致した場合に動作モードの切替えを実行することを特徴とする。【選択図】図１
2008076173.tif 000002
【特許請求の範囲】
【請求項１】
複数の動作モードによる動作が可能な半導体集積回路であって、
書換え可能な不揮発性メモリと、
動作モード設定信号が入力される動作モード設定端子と、
前記動作モード設定信号に基づいてカウント動作を行う第１のカウンタと、を備え、
前記不揮発性メモリは、第１のパルス数設定値を格納し、
前記第１のカウンタのカウント値と前記第１のパルス数設定値とが一致した場合に、前記動作モードの切替えを実行する、
ことを特徴とする半導体集積回路。
【請求項２】
前記不揮発性メモリから読出した前記第１のパルス数設定値を記憶するパルス数設定レジスタと、
前記第１のカウンタと前記パルス数設定レジスタとに接続され、前記第１のカウンタのカウント値と前記パルス数設定レジスタに記憶された前記第１のパルス数設定値とを比較する第１の比較器と、を備える、
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
第１のキーデータを記憶する第１のキーレジスタを備え、
前記不揮発性メモリは、前記第１のパルス数設定値を格納するパルス数設定値格納領域を有し、
前記パルス数設定値格納領域に対する書換え処理は、前記第１のキーデータを参照して実行される、
ことを特徴とする請求項１または２に記載の半導体集積回路。
【請求項４】
前記不揮発性メモリは、選択データと、前記第１のパルス数設定値よりも大きい値である第２のパルス数設定値と、を格納し、
前記選択データが所定のデータである場合、前記第１のカウンタのカウント値と前記第１のパルス数設定値とを比較し、その比較の結果が一致するときに前記動作モードの切替えを実行し、
前記選択データが所定のデータでない場合、前記第１のカウンタのカウント値と前記第２のパルス数設定値とを比較し、その比較の結果が一致するときに前記動作モードの切替えを実行する、
ことを特徴とする請求項１または２に記載の半導体集積回路。
【請求項５】
クロック信号が入力されるクロック端子と、
前記クロック信号のパルス数をカウントする第２のカウンタと、を備え、
前記不揮発性メモリは、第１のモード期間設定値を格納し、
前記第２のカウンタのカウント値が前記第１のモード期間設定値を超えた後は、前記動作モードの切替えを禁止する、
ことを特徴とする請求項１ないし４に記載の半導体集積回路。
【請求項６】
前記不揮発性メモリから読出した前記第１のモード期間設定値を記憶するモード期間設定レジスタと、
前記第２のカウンタと前記モード期間設定レジスタとに接続され、前記第２のカウンタのカウント値と前記モード期間設定レジスタに記憶された前記第１のモード期間設定値とを比較する第２の比較器と、
前記第２の比較器が出力する一致した旨の比較結果を保持する保持回路と、を備える、
ことを特徴とする請求項５に記載の半導体集積回路。
【請求項７】
前記第１の比較器と前記保持回路とに接続されたラッチ回路を備え、
前記ラッチ回路は、前記保持回路の出力に基づいて、前記第１の比較器の出力をラッチする、
ことを特徴とする請求項６に記載の半導体集積回路。
【請求項８】
第２のキーデータを記憶する第２のキーレジスタを備え、
前記不揮発性メモリは、前記第１のモード期間設定値を格納するモード期間設定値格納領域を有し、
前記モード期間設定値格納領域に対する書換え処理は、前記第２のキーデータを参照して実行される、
ことを特徴とする請求項５ないし７に記載の半導体集積回路。
【請求項９】
クロック信号が入力されるクロック端子と、
前記クロック信号のパルス数をカウントする第２のカウンタと、を備え、
前記不揮発性メモリは、第１のモード期間設定値および該第１のモード期間設定値よりも大きい値である第２のモード期間設定値を格納し、
前記選択データが所定のデータである場合、前記第２のカウンタのカウント値が前記第１のモード期間設定値を超えた後は、前記動作モードの切替えを禁止し、
前記選択データが所定のデータでない場合、前記第２のカウンタのカウント値が前記第２のモード期間設定値を超えた後は、前記動作モードの切替えを禁止する、
ことを特徴とする請求項４に記載の半導体集積回路。
【請求項１０】
外部リセット信号が入力されるリセット端子を備え、
前記リセット信号が第１の信号レベルから第２のレベルに変化したときの前記動作モード設定信号の信号レベルを保持し、該保持した信号レベルが所定のレベルである場合には、特定の動作モードのみが設定される、
ことを特徴とする請求項１ないし９に記載の半導体集積回路。
【請求項１１】
複数の動作モードによる動作が可能なマイクロコンピュータであって、
ＣＰＵと、
前記ＣＰＵに電気的に接続され、格納するデータの書換えが可能な不揮発性メモリと、
動作モード設定信号が入力される動作モード設定端子と、
前記動作モード設定信号に基づいてカウント動作を行う第１のカウンタと、を備え、
前記不揮発性メモリは、パルス数設定値を格納し、
前記第１のカウンタのカウント値と前記パルス数設定値とが一致した場合に、前記ＣＰＵは、前記動作モードの切替えに伴う動作変更を実行する、
ことを特徴とするマイクロコンピュータ。
【請求項１２】
前記不揮発性メモリから読出した前記パルス数設定値を記憶するパルス数設定レジスタと、
前記第１のカウンタと前記パルス数設定レジスタとに接続され、前記第１のカウンタのカウント値と前記パルス数設定レジスタに記憶された前記パルス数設定値とを比較する第１の比較器と、を備える、
ことを特徴とする請求項１１に記載のマイクロコンピュータ。
【請求項１３】
第１のキーデータを記憶する第１のキーレジスタを備え、
前記不揮発性メモリは、前記パルス数設定値を格納するパルス数設定値格納領域を有し、
前記パルス数設定値格納領域に対する書換え処理は、前記第１のキーデータを参照して実行される、
ことを特徴とする請求項１１または１２に記載のマイクロコンピュータ。
【請求項１４】
クロック信号が入力されるクロック端子と、
前記クロック信号のクロック数をカウントする第２のカウンタと、を備え、
前記不揮発性メモリは、モード期間設定値を格納し、
前記第２のカウンタのカウント値が前記モード期間設定値を超えた後は、前記ＣＰＵは、前記動作モードの切替えに伴う動作変更を実行しない、
ことを特徴とする請求項１１ないし１３に記載のマイクロコンピュータ。
【請求項１５】
前記不揮発性メモリから読出した前記モード期間設定値を記憶するモード期間設定レジスタと、
前記第２のカウンタと前記モード期間設定レジスタとに接続され、前記第２のカウンタのカウント値と前記モード期間設定レジスタに記憶された前記モード期間設定値とを比較する第２の比較器と、
前記第２の比較器が出力する一致した旨の比較結果を保持する保持回路と、を備える、
ことを特徴とする請求項１４に記載のマイクロコンピュータ。
【請求項１６】
第２のキーデータを記憶する第２のキーレジスタを備え、
前記不揮発性メモリは、前記モード期間設定値を格納するモード期間設定値格納領域を有し、
前記モード期間設置値格納領域に対する書換え処理は、前記第２のキーデータを参照して実行される、
ことを特徴とする請求項１４または１５に記載のマイクロコンピュータ。
【請求項１７】
複数の動作モードによる動作が可能な半導体集積回路の動作モード切替え方法であって、
動作モード設定端子を介して入力されるパルス数をカウントする第１のステップと、
不揮発性メモリに格納されている第１のパルス数設定値を読出す第２のステップと、
前記第１のステップのカウントによるカウント値と前記第２のステップで読出した前記第１のパルス数設定値とを比較する第３のステップと、
前記第３のステップの比較の結果、両者の値が一致した場合に、前記動作モードの切替えを行う第４のステップと、を有する、
ことを特徴とする半導体集積回路の動作モード切替え方法。
【請求項１８】
前記第２のステップで読出した前記第１のパルス数設定値をパルス数設定レジスタに記憶する第５のステップを有し、
前記第３のステップの比較は、前記第１のステップのカウントによるカウント値と前記第５のステップで前記パルス数設定レジスタに記憶した前記第１のパルス数設定値との間で実行される、
ことを特徴とする請求項１７に記載の半導体集積回路の動作モード切替え方法。
【請求項１９】
第４のステップの後、前記不揮発性メモリに格納されている前記第１のパルス数設定値を、前記第１のパルス数設定値よりも大きい値である第２のパルス数設定値へ書換える第６のステップと、
前記不揮発性メモリから前記第２のパルス数設定値を読出す第７のステップと、
前記第１のステップのカウントによるカウント値と前記第７のステップで読出した前記第２のパルス数設定値とを比較する第８のステップと、
前記第８のステップの比較の結果、両者の値が一致した場合に、前記動作モードの切替えを行う第９のステップと、を有する、
ことを特徴とする請求項１７または１８に記載の半導体集積回路の動作モード切替え方法。
【請求項２０】
前記第２のステップの前に、前記不揮発性メモリに格納されている選択データを読出す第１０のステップを有し、
前記第１０のステップで読出した前記選択データが所定のデータである場合には、前記第２ないし第４のステップを実行し、
前記第１０のステップで読出した前記選択データが所定のデータでない場合には、前記不揮発性メモリに格納されている第２のパルス数設定値を読出し、該読出した前記第２のパルス設定値と前記第１のステップのカウントによるカウント値とを比較し、該比較の結果、両者の値が一致した場合に、前記動作モードの切替えを実行する第１１のステップと、を有する、
ことを特徴とする請求項１７に記載の半導体集積回路の動作モード切替え方法。
【請求項２１】
クロック端子を介して入力されるクロック信号のクロック数をカウントする第１２のステップと、
前記不揮発性メモリに格納されているモード期間設定値を読出す第１３のステップと、
前記第１２のステップのカウントによるカウント値と前記第１３のステップで読出した前記モード期間設定値とを比較する第１４のステップと、を有し、
前記第１４のステップの比較の結果、前記第１２のステップのカウントによるカウント値が前記モード期間設定値を超えた場合には、その後の前記動作モードの切替えを禁止する、
ことを特徴とする請求項１７ないし２０に記載の半導体集積回路の動作モード切替え方法。
【請求項２２】
前記第１３のステップで読出した前記モード期間設定値をモード期間設定レジスタに記憶する第１５のステップを有し、
前記第１４のステップの比較は、前記第１２のステップのカウントによるカウント値と前記第１５のステップで前記モード期間設定レジスタに記憶した前記モード期間設定値との間で実行される、
ことを特徴とする請求項２１に記載の半導体集積回路の動作モード切替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路に関し、特にテスト機能を備えた半導体集積回路に関する。
【背景技術】
【０００２】
半導体集積回路には、ユーザが使用する通常動作モードの他に、出荷の際の検査に用いられる特殊な動作モードやデバッグに用いられるエミュレーション動作モードなど様々なテスト動作モードが内蔵されている。また、近年の半導体集積回路は、微細化、高集積化により同一チップ上に様々な回路を搭載するようになり、それに伴ってテスト項目も多岐にわたっており、より多くのテスト動作モードが必要となってきている。
【０００３】
通常、これらの動作モードは、動作モード設定端子と、当該動作モード設定端子から入力される信号に基づいて複数の動作モードから１つの動作モードを選択するテストモード選択回路とを用いて、設定される。
【０００４】
特許文献１の動作モード設定に係る回路図を、図１１に示す。図１１において、１１１は、通常動作モードと各種テスト動作モードとの切替えを行うための動作モード設定端子である。Ｒ１〜Ｒ３は、第１の電圧レベルＶ１と第２の電圧レベルＶ２とを発生させるための分割抵抗である。１１２は、第１の電圧レベルＶ１と動作モード設定端子１１１から入力される信号（入力信号）の電圧（入力電圧Ｖｉｎ）とを比較する第１の比較器であり、第１の比較器の非反転入力端子に入力電圧Ｖｉｎが入力され、第１の比較器の反転入力端子に第１の電圧レベルＶ１が入力される。したがって、Ｖｉｎ≧Ｖ１の場合に、第１の比較器１１２の出力は、‘Ｈ’レベルを出力する。１１３は、第２の電圧レベルＶ２と入力電圧Ｖｉｎとを比較する第２の比較器であり、第２の比較器の非反転入力端子にＶ２が入力され、第２の比較器の反転入力端子に入力電圧Ｖｉｎが入力される。したがって、Ｖ２≧Ｖｉｎの場合に、第２の比較器１１３の出力は、‘Ｈ’レベルを出力する。１１４は、第１の比較器１１２が出力する出力信号の立ち下がりエッジをカウントするカウンタである。また、カウンタ１１４は、第２の比較器１１３の‘Ｈ’レベル出力をリセット信号として入力し、カウント値を「０」とする。１１５は、カウンタ１１４のカウント値を解読し、それに応じた動作モードを選択するための動作モード設定信号を出力するデコーダである。
【０００５】
次に、図１１の回路図の動作を、図１２の波形図を使って説明する。図１２は、動作モード設定端子１１１に入力される入力電圧Ｖｉｎを示す。ｔ＝Ｔ０〜Ｔ１の期間においては、Ｖ２≧Ｖｉｎであるため、第２の比較器１１３の出力信号は‘Ｈ’レベルとなる。カウンタ１１４は、第２の比較器１１３から‘Ｈ’レベル出力を受けて、カウント値を「０」にリセットする。カウント値「０」を受けたデコーダ１１５は、通常動作モードを示す動作モード設定信号を出力する。すなわち、通常動作モードが設定される。
【０００６】
ｔ＝Ｔ１になると、Ｖｉｎ≧Ｖ１となる。そのため、第１の比較器１１２の出力は、‘Ｌ’レベルから‘Ｈ’レベルへ遷移する。また、第２の比較器１１３の出力は、‘Ｈ’レベルから‘Ｌ’レベルへ遷移する。第２の比較器１１３の出力が‘Ｌ’レベルになったため、カウンタ１１４のリセット状態が解除される。
【０００７】
ｔ＝Ｔ２になると、Ｖ１≧Ｖｉｎとなる。そのため、第１の比較器１１２の出力は、‘Ｈ’レベルから‘Ｌ’レベルに遷移する。カウンタ１１４は、第１の比較器１１２の出力の立ち下がりエッジを検出し、カウント値を「０」から「１」にカウントアップする。カウント値「１」を受けたデコーダ１１５は、通常動作モードを示す動作モード設定信号から、テスト動作モード１を示す動作モード設定信号へ出力を切替える。すなわち、ｔ＝Ｔ２において、動作モードの設定が、通常動作モードからテスト動作モード１に変更される。
【０００８】
ｔ＝Ｔ３になると、Ｖｉｎ≧Ｖ１となるため、ｔ＝Ｔ１と同様に、第１の比較器１１２の出力は、‘Ｌ’レベルから‘Ｈ’レベルに遷移する。
【０００９】
ｔ＝Ｔ４になると、再びＶ１≧Ｖｉｎとなるため、カウンタ１１４のカウント値が「１」から「２」にカウントアップする。カウント値が「２」に変更されたことにより、デコーダ１１５は、テスト動作モード１を示す動作モード設定信号から、テスト動作モード１とは異なるテスト動作モード２を示す動作モード設定信号へ出力を切替える。すなわち、ｔ＝Ｔ４において、動作モードの設定が、テスト動作モード１からテスト動作モード２に変更される。
【００１０】
以上のように、カウンタ１１４およびカウンタ１１４のカウント値をデコードするデコーダ１１５を用いることによって、１本の動作モード設定端子１１１のみで複数の動作モードの設定をすることができる。
【００１１】
特許文献１と同様に、１本の端子、カウンタ、デコーダを用いて動作モードを設定する技術が、特許文献２に記載されている。また、特許文献３および４には、通常動作モードと複数種類のテスト動作モードの設定に係る設定端子のピン数を削減する技術が記載されている。さらに、特許文献５および６には、意図しない通常動作モードからテスト動作モードへの切替えを防止する技術が記載されている。
【００１２】
【特許文献１】特開平７−１７４８２９
【特許文献２】特開実６−６５８８１
【特許文献３】特開２００５−２７４３５７
【特許文献４】特開２０００−３０４８３１
【特許文献５】特開２００２−２４４８７８
【特許文献６】特開平１０−１８７４７６
【発明の開示】
【発明が解決しようとする課題】
【００１３】
前述の通り、近年の半導体集積回路は、微細化・高集積化に伴いより多くのテスト動作モードが必要となってきたが、特に半導体集積回路の中でも多機能、高機能を実現するマイクロコンピュータの製品出荷前（出荷時）のテストは、非常に多くのテスト動作モードによるテスト動作を実行する必要がある。この出荷時のテストに要する時間は、製品出荷のスループットに大きく影響し、テスト時間が長くなると、製品コストの上昇につながってしまう。そのため、出荷時のテストの際の動作モードの設定（遷移）に要する時間をなるべく少なくする必要がある。すなわち、製品出荷前には、動作モードの設定をできるだけ簡便にする方が有利となる。
【００１４】
一方、製品出荷後にユーザのシステムで動作する場合には、不具合解析などの特殊なケースを除いて、テスト動作モードを使用することは無く、通常動作モードで動作中に誤ってテスト動作モードに遷移してしまうと、ユーザシステムが異常となってしまう。そのため、簡単にテスト動作モードへ遷移させないことが必要となる。すなわち、製品出荷前とは逆に、製品出荷後には、動作モードの設定をできるだけ複雑にする方が有利となる。
【００１５】
しかしながら、従来の動作モードの設定においては、このように出荷前と出荷後で動作モードの設定条件を変更することができない。
【課題を解決するための手段】
【００１６】
本発明に係る半導体集積回路は、複数の動作モードによる動作が可能な半導体集積回路であって、書換え可能な不揮発性メモリと、動作モード設定信号が入力される動作モード設定端子と、前記動作モード設定信号に基づいてカウント動作を行う第１のカウンタと、を備え、前記不揮発性メモリは、第１のパルス数設定値を格納し、前記第１のカウンタのカウント値と前記第１のパルス数設定値とが一致した場合に、前記動作モードの切替えを実行する、ことを特徴とする。このような構成により、第１のパルス数設定値の変更が可能となり、その結果、本発明の半導体集積回路は、異なる条件で動作モードの切替えを実行することできる。
【００１７】
また、本発明に係るマイクロコンピュータは、複数の動作モードによる動作が可能なマイクロコンピュータであって、ＣＰＵと、前記ＣＰＵに電気的に接続され、格納するデータの書換えが可能な不揮発性メモリと、動作モード設定信号が入力される動作モード設定端子と、前記動作モード設定信号に基づいてカウント動作を行う第１のカウンタと、を備え、前記不揮発性メモリは、パルス数設定値を格納し、前記第１のカウンタのカウント値と前記パルス数設定値とが一致した場合に、前記ＣＰＵは、前記動作モードの切替えに伴う動作変更を実行する、ことを特徴とする。
【００１８】
また、本発明に係る半導体集積回路の動作モード切替え方法は、複数の動作モードによる動作が可能な半導体集積回路の動作モード切替え方法であって、動作モード設定端子を介して入力されるパルス数をカウントする第１のステップと、不揮発性メモリに格納されている第１のパルス数設定値を読出す第２のステップと、前記第１のステップのカウントによるカウント値と前記第２のステップで読出した前記第１のパルス数設定値とを比較する第３のステップと、前記第３のステップの比較の結果、両者の値が一致した場合に、前記動作モードの切替えを行う第４のステップと、を有することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、製品出荷前には簡便な条件を設定し、一方製品出荷後には複雑な条件を設定するというように、異なる（相反する）動作モードの設定条件を設定することが可能となる。その結果、出荷時のテストの時間短縮による製品コストの上昇の抑制と、テスト動作モードへの遷移が原因で引き起こされるユーザシステムの動作異常の発生確率の低減を、同時に実現することが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の好ましい実施の形態について、図面を参照して詳細に説明する。なお、実施の形態においては、マイクロコンピュータを用いて説明をするが、これに限定されることはなく、上述の複数の動作モード（テスト機能）を備えたものであれば、その他一般的な半導体集積回路であってもよい。
【００２１】
実施の形態１
図１は、本発明の実施の形態１に係るマイクロコンピュータ１０のブロック図である。図１に示すように、マイクロコンピュータ１０は、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、メモリコントローラ１２と、不揮発性メモリ１３と、パルス数設定レジスタ１４ａ−１４ｃと、動作モード設定端子１５と、第１のカウンタ１６と、第１の比較器１７ａ−１７ｃと、リセット端子１８と、データ入力端子２１を備える。
【００２２】
メモリコントローラ１２は、ＣＰＵ１１および不揮発性メモリ１３に接続され、不揮発性メモリ１３は、ＣＰＵ１１およびメモリコントローラ１２に接続される。不揮発性メモリ１３は、格納するデータの書換えが可能なメモリであり、例えば、バイト単位の書換えが可能なＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ブロック単位の書換えが可能なフラッシュメモリ、その他ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等があげられる。メモリコントローラ１２は、ＣＰＵ１１から出力される書込みおよび読出し命令を受けて、不揮発性メモリ１３に対するアクセスを行う。メモリコントローラ１２からのアクセスが書込みに関するものである場合には、不揮発性メモリ１３は、メモリコントローラ１２から書込み先を示すアドレスおよび書込みデータを受けて、書込み処理を行う。また、メモリコントローラ１２からのアクセスが読出しに関するものである場合には、不揮発性メモリ１３は、メモリコントローラ１２から読出し先を示すアドレスを受けて、読出し処理を行う。なお、不揮発性メモリ１３は、パルス数設定レジスタ１４ａ−１４ｃに設定されるべき値（パルス数設定値）が格納されているパルス数設定値格納領域２０を有する。
【００２３】
パルス数設定レジスタ１４ａ−１４ｃは、ＣＰＵ１１、リセット端子１８および第１の比較器１７ａ−１７ｃにそれぞれ接続される。パルス数設定レジスタ１４ａ−１４ｃは、ＣＰＵ１１から所定の値をそれぞれ設定される。設定された値は、パルス数設定レジスタ１４ａ−１４ｃから第１の比較器１７ａ−１７ｃへ出力される。また、リセット端子１８から外部リセット信号（‘Ｌ’レベル）が入力されると、パルス数設定レジスタ１４ａ−１４ｃに設定された値は、すべて初期値へリセットされる。ここで、パルス数設定レジスタ１４ａ−１４ｃが、８ビットレジスタであるとすれば、例えば、初期値として、「１１１１１１１１ｂ（２５５）」を選択することができる。
【００２４】
第１のカウンタ１６は、動作モード設定端子１５、第１の比較器１７ａ−１７ｃおよびリセット端子１８に接続される。第１のカウンタ１６は、動作モード設定端子１５を介して入力される動作モード設定信号の入力パルス数（エッジの数）をカウントする。具体的には、第１のカウンタ１６は、アップカウンタとして構成され、動作モード設定信号の立下りエッジ（若しくは立上りエッジ）を受けて、カウントアップ動作を行う。カウント値は、第１の比較器１７ａ−１７ｃへ出力される。また、リセット端子１８から外部リセット信号（‘Ｌ’レベル）が入力されると、第１のカウンタ１６のカウント値は、「０」へリセットされる。なお、第１のカウンタ１６のカウント範囲は、パルス数設定レジスタ１４ａ−１４ｃの大きさに対応して決定される。パルス数設定レジスタ１４ａ−１４ｃが８ビットレジスタである場合には、第１のカウンタ１６は、８ビットカウンタ（カウント範囲は、「０〜２５５」）となる。
【００２５】
第１の比較器１７ａ−１７ｃは、ＣＰＵ１１、パルス数設定レジスタ１４ａ−１４ｃおよび第１のカウンタ１６に接続される。第１の比較器１７ａ−１７ｃは、パルス数設定レジスタ１４ａ−１４ｃから出力される値と第１のカウンタ１６から出力されるカウント値を比較する。第１の比較器１７ａ−１７ｃは、両者の値が一致する場合には、一致を示す‘Ｈ’レベルをＣＰＵ１１へ出力する。一方、両者の値が不一致である場合には、不一致を示す‘Ｌ’レベルをＣＰＵ１１へ出力する。なお、第１の比較器１７は、パルス数設定レジスタ１４の数と同じだけ必要となる。
【００２６】
データ入力端子２１は、ＣＰＵ１１と接続される。データ入力端子は、不揮発性メモリ１３内のパルス数設定値格納領域２０にパルス数設定値を書込む際に、外部からパルス数設定値を入力するための端子として使用される。また、後述するモード期間設定値や第１および第２のキーデータのデータ入力等のための端子としても使用される。
【００２７】
また、図１に示す通り、メモリコントローラ１２は、第１のキーレジスタ１９を有する。第１のキーレジスタ１９は、ＣＰＵ１１からアクセス可能となっている。この第１のキーレジスタ１９の機能の詳細については、後述する。
【００２８】
図２は、本発明の実施の形態１に係る動作モードの一覧を示した表である。動作モードは、第１の比較器１７ａ−１７ｃの出力によって、一意に決まる。図２に示す通り、第１の比較器１７ａ−１７ｃの出力がすべて‘Ｌ’レベルの場合には、ＣＰＵ１１は、通常動作モードを選択する。第１の比較器１７ａの出力のみ‘Ｈ’レベルを示す場合には、ＣＰＵ１１は、テスト動作モード１を選択する。第１の比較器１７ｂの出力のみ‘Ｈ’レベルを示す場合には、ＣＰＵ１１は、テスト動作モード２を選択する。第１の比較器１７ｃの出力のみ‘Ｈ’レベルを示す場合には、ＣＰＵ１１は、テスト動作モード３を選択する。
【００２９】
また、図２は、Ｎ１、Ｎ２、Ｎ３がそれぞれ、パルス数設定レジスタ１４ａ−１４ｃに設定されている場合を示している。つまり、動作モード設定信号のパルス数（エッジの数）を第１のカウンタ１６がカウントし、そのカウント値が、Ｎ１となったときに、第１の比較器１７ａの出力が‘Ｌ’レベル→‘Ｈ’レベルに遷移する。同様に、カウント値が、Ｎ２、Ｎ３になったときに、第１の比較器１７ｂ、１７ｃの出力がそれぞれ‘Ｌ’レベル→‘Ｈ’レベルとなる。
【００３０】
図１の構成によれば、パルス数設定レジスタ１４および第１の比較器１７の個数がそれぞれ３個のため、３通りのテスト動作モードを選択可能となっている。しかしながら、これに限定されることはない。パルス数設定レジスタ１４および第１の比較器１７の個数を増やせば、選択可能となるテスト動作モードも増える。つまり、パルス数設定レジスタ１４および第１の比較器１７をそれぞれＭ個にすれば、選択可能なテスト動作モードは、Ｍ通りとなる。
【００３１】
また、図２の表の通り、動作モード設定信号のエッジ数は、テスト動作モード毎に、異なる値に設定されている。同じ値が設定されてしまうと、同時に２つ以上の第１の比較器１７の‘Ｈ’レベル出力が、ＣＰＵ１１へ出力されることになり、ＣＰＵ１１は、適切にテスト動作モードを選択（認識）することができなくなってしまうからである。
【００３２】
次に、図３を用いて、実施の形態１に係るマイクロコンピュータ１０の動作について説明する。図３は、実施の形態１に係るマイクロコンピュータ１０の動作モードの遷移を示すタイミングチャートである。なお、図３では、一例として、パルス数設定レジスタ１４ａ−１４ｃに設定するパルス数設定値を、「２」、「５」、「７」とする。
【００３３】
まず、リセット端子１８を介して外部リセット信号が‘Ｌ’レベルとなり、パルス数設定レジスタ１４ａ−１４ｃおよび第１のカウンタ１６の出力（カウント値）がリセットされる。図３の通り、パルス数設定レジスタ１４ａ−１４ｃは、「２５５（１１１１１１１１ｂ）」に、第１のカウンタ１６のカウンタ値は、「０（００００００００ｂ）」に設定される。このとき、パルス数設定レジスタ１４ａ−１４ｃに格納された値とカウンタ値は一致しないため、第１の比較器１７ａ−１７ｃの出力は、‘Ｌ’レベルである。なお、動作モード設定信号は、‘Ｈ’レベルとなっている。
【００３４】
ｔ０において、外部リセット信号が、‘Ｌ’レベル→‘Ｈ’レベルとなり、リセットが解除される。リセットの解除後、ＣＰＵ１１は、不揮発性メモリ１３内のパルス数設定値格納領域２０から、メモリコントローラ１２を介して、パルス数設定レジスタ１４ａ−１４ｃに設定するべき値（パルス数設定値）を読出すための読出し命令を出力する。ここでは、パルス数設定レジスタ１４の個数は３個であるため、３個の異なる値（「２」、「５」、「７」）がパルス数設定値として、パルス数設定値格納領域２０に予め格納されている。ＣＰＵ１１は、読出したパルス数設定値（「２」、「５」、「７」）をパルス数設定レジスタ１４ａ−１４ｃに設定する。ｔ１において、パルス数設定レジスタ１４ａに「２」が、パルス数設定レジスタ１４ｂに「５」が、パルス数設定レジスタ１４ｃに「７」が、設定されている。このように、リセットシーケンス（リセット解除後の初期動作）において、不揮発性メモリ１３からのパルス数設定値の読出しおよび読出したパルス数設定値のパルス数設定レジスタ１４ａ−１４ｃへの格納（設定）が行われる。
【００３５】
ｔ２において、動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移する。第１のカウンタ１６は、動作モード設定信号の立下りエッジを受けて、カウント値を「０」→「１」へカウントアップする。また、この期間（図３では、ｔ０〜ｔ３）は、第１の比較器１７ａ−１７ｃのいずれの出力も‘Ｌ’レベルとなっているため、動作モードは、通常動作モードが設定されている。
【００３６】
ｔ３において、動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移し、第１のカウンタ１６のカウント値は、「２」となる。このとき、パルス数設定レジスタ１４ａに設定されている値「２」とカウント値「２」が一致するため、第１の比較器１７ａの出力が、‘Ｌ’レベル→‘Ｈ’レベルに遷移する。第１の比較器１７ａの‘Ｈ’レベル出力を受けたＣＰＵ１１は、通常動作モードからテスト動作モード１へと動作モードが遷移したことを認識し、テスト動作モード１に対応した動作に切替える。
【００３７】
ｔ４において、再び動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移すると、第１のカウンタ１６のカウント値は、「３」となるため、第１の比較器１７ａの出力は、‘Ｌ’レベルとなる。その結果、第１の比較器１７ａ−１７ｃの全ての出力が‘Ｌ’レベルとなる。したがって、ＣＰＵ１１は、テスト動作モード１から通常動作モードへと動作モードが遷移したことを認識し、通常動作モードに対応した動作に切替える。
【００３８】
同様に、ｔ５において、第１のカウンタ１６のカウント値は、「５」となるため、第１の比較器１７ｂは、‘Ｈ’レベル出力となり、テスト動作モード２が設定される。ｔ６になると、再び通常動作モードに戻る。ｔ７において、第１のカウンタ１６のカウント値は、「７」となるため、第１の比較器１７ｃは、‘Ｈ’レベル出力となり、テスト動作モード３が設定される。ｔ８になると、再度通常動作モードに戻る。
【００３９】
以上の通り、パルス数設定レジスタ１４ａ−１４ｃに設定したパルス数設定値と、動作モード設定信号のパルス数（エッジ数）が一致することで、種々の動作モードへの設定が可能となる。
【００４０】
ここで、製品出荷前に行われるテストおける動作モードの遷移について説明する。前述の通り、製品出荷前に行われるテストでは、そのテストにかかる時間をなるべく短くすることが有利となる。実施の形態１に係るマイクロコンピュータ１０は、パルス数設定レジスタ１４ａ−１４ｃに格納されたパルス数設定値と動作モード設定信号のパルス数のカウント値が一致すると、動作モードの遷移が起こる。したがって、パルス数設定レジスタ１４に格納されるパルス数設定値を小さいものとすれば、少ない動作モード設定信号のパルス数で動作モードの遷移をすることができる。すなわち、動作モードの遷移に要する時間を短くすることができる（動作モードの遷移を簡便にすることができる）。その結果、出荷時のテスト全体の時間も短くすることが可能となる。なお、これによる効果は、出荷時にテストしなければならないテスト動作モードが増えれば増えるほど、顕著となる。
【００４１】
図４は、実施の形態１に係る出荷時のテストの際のマイクロコンピュータ１０の動作モードの遷移を示すタイミングチャートである。出荷時のテストでは、所望のテスト動作モードへの遷移をできるだけ早くする方が有利であるため、図４の例では、パルス数設定レジスタ１４ａ−１４ｃに設定するパルス数設定値として、「１」、「２」、「３」を使用する。詳細には、データ入力端子２１から、「１」、「２」、「３」の３個のパルス数設定値をＣＰＵ１１へ入力する。ＣＰＵ１１は、メモリコントローラ１２を介して、不揮発性メモリ１３内のパルス数設定値格納領域２０に、「１」、「２」、「３」のパルス数設定値を予め書込んでおく。これにより、リセットシーケンスにおいて、ＣＰＵ１１は、レジスタ１４ａ−１４ｃに、「１」、「２」、「３」を設定することができる。その結果、出荷時のテストの際のマイクロコンピュータ１０では、全ての動作モードの遷移に必要な動作モード設定信号のパルス入力が、３個あれば足りる状態になり、動作モードの遷移に要する時間を極力少なくすることができる。
【００４２】
基本的な動作は、図３と同様であるため、その説明は省略する。なお、テスト動作モードの遷移は、テストを行いたい順序で実施できるように、パルス数設定レジスタ１４ａ−１４ｃに値を設定する。例えば、「テスト動作モード１」→「テスト動作モード３」→「テスト動作モード２」の順序にてテストを実行する場合には、パルス数設定レジスタ１４ａに「１」を、パルス数設定レジスタ１４ｂに「３」を、パルス数設定レジスタ１４ｃに「２」を設定すればよい。また、１つのテスト動作モードによるテストが終了した後リセットによる初期化処理が必要である場合には、例えば、図４の例では、「リセット→動作モード設定信号のパルスを１個入力→テスト動作モード１→リセット→動作モード設定信号のパルスを２個入力→テスト動作モード２→リセット→動作モード設定信号のパルスを３個入力→テスト動作モード３」のように動作モードを遷移させる。
【００４３】
一方、製品出荷後のユーザシステム動作中においては、不具合解析などの特殊なケースを除いて、テスト動作モードを使用することは無い。通常動作モードで動作中に誤ってテスト動作モードに遷移するようなことがあると、意図しない動作モードに遷移することにより、ユーザシステムが異常となってしまう場合がある。例えば、ユーザシステム動作中に、動作モード設定端子１５からノイズが入ってしまった場合、第１のカウンタ１６は、そのノイズのパルス数（エッジ数）をカウントしてしまう。特に、高周波のノイズが入った場合には、第１のカウンタ１６でカウントされる数も多くなるため、パルス数設定レジスタ１４ａ−１４ｃに設定されているいずれかのパルス数設定値を超えてしまう（一致してしまう）可能性が高くなる。
【００４４】
テスト動作モードでは、テストを行うために、プログラムカウンタ、周辺Ｉ／Ｏレジスタ、ＲＡＭ（全て不図示）に格納された値を書換える場合がある。通常動作モードから誤ってテスト動作モードに遷移してしまうと、これまで使用されていたプログラムカウンタ等の値が破壊されるため、たとえその後に通常動作モードに戻ったとしても、これらの値を復帰することができなければ、正常動作は期待できない。特に、プログラムカウンタの値が破壊された場合には、ユーザプログラムは、異常なアドレスのコードを実行する可能性が高いため、ユーザシステムの暴走を引き起こしてしまう。また、プログラムカウンタの値が破壊されなかったとしても、周辺Ｉ／ＯレジスタやＲＡＭの値が破壊されていると、（たとえ暴走は回避できたとしても、）その後の動作は予想つかないことになってしまう。この場合、完全に暴走するわけでもなく、中途半端に動作しているようになるため、システム異常としての認識が遅れることがあり、完全に暴走する場合に比べ、かえって問題になるケースもある。
【００４５】
したがって、製品出荷後のユーザシステム動作中には、通常動作モードからテスト動作モードへ誤って遷移しないようにすることが重要になる。そこで、出荷時のテストの場合の設定とは逆に、できる限りパルス数設定レジスタ１４に格納するパルス数設定値を大きい値とする。すなわち、動作モード設定端子１５を介して多少ノイズが入ったとしても、パルス数設定レジスタ１４ａ−１４ｃに設定された大きい値であるパルス数設定値と第１のカウンタ１６のカウント値との一致は起こらないため、簡単に通常動作モードからテスト動作モードへ遷移してしまうことを防ぐことができる。
【００４６】
図５は、実施の形態１に係るユーザシステムで動作中のマイクロコンピュータ１０の動作モードの遷移を示すタイミングチャートである。ユーザシステム動作中には、テスト動作モードへの遷移をなるべく簡単に起こらないようにするため、図５の例では、パルス数設定レジスタ１４ａ−１４ｃに設定するパルス数設定値を、「２５１」、「２５２」、「２５３」とする。詳細には、データ入力端子２１から、「２５１」、「２５２」、「２５３」の３個のパルス数設定値をＣＰＵ１１へ入力する。ＣＰＵ１１は、メモリコントローラ１２を介して、不揮発性メモリ１３内のパルス数設定値格納領域２０に格納されている、「１」、「２」、「３」のパルス数設定値を、「２５１」、「２５２」、「２５３」のパルス数設定値に書換えておく。これにより、リセットシーケンスにおいて、ＣＰＵ１１は、レジスタ１４ａ−１４ｃに、「２５１」、「２５２」、「２５３」を設定することができる。したがって、製品の出荷前に、パルス数設定値格納領域２０に格納されるパルス数設定値を、「１」、「２」、「３」のような小さい値から、「２５１」、「２５２」、「２５３」のような大きな値に書換える必要がある。その結果、製品出荷後のマイクロコンピュータ１０では、通常動作モードからテスト動作モードに遷移するためには、最低２５１個の動作モード設定信号のパルス入力が必要とされ、誤ってテスト動作モードへの遷移が生じる可能性を著しく低くすることができる。
【００４７】
基本的な動作については、図３と同様であるため、説明は省略する。なお、図５において、パルス数設定レジスタ１４ａ−１４ｃに設定したパルス数設定値を「２５１〜２５３」としたのは、パルス数設定レジスタ１４ａ−１４ｃの大きさが、８ビットレジスタ（２５５まで格納可能）であるためである。もっと大きな値にして、ノイズにより偶然にも一致してしまう確率をさらに低くしたければ、パルス数設定レジスタ１４ａ−１４ｃを９ビット以上のレジスタにすればいい。換言すれば、使用環境や適用するアプリケーションによって、パルス数設定値やパルス数設定レジスタ１４ａ−１４ｃ自体の大きさを適宜決定すればいい。
【００４８】
このように、製品出荷前と製品出荷後では、不揮発性メモリ１３内のパルス数設定データ格納領域２０に格納されるパルス数設定値は、書き換えられて異なる値となる。すなわち、パルス数設定値格納領域は、自由に書換えを行うことが可能である。このことは、ユーザシステム動作中にユーザシステムの暴走が生じた場合に、ユーザが意図しなくても、パルス数設定値格納領域２０に格納されているパルス数設定値を書換えてしまう可能性があることを意味する。ユーザシステムの暴走により、パルス数設定値が大きい値から小さい値に書換えられてしまうと、ちょっとしたノイズが動作モード設定端子１５から入力した場合でも、すぐに通常動作モードからテスト動作モードへの遷移が生じることになる。このような製品は、上述のような問題点を引き起こすため、ユーザ側において、不具合発生品（不良品）として取り扱われてしまうことになる。
【００４９】
そこで、製品出荷後では、安易に不揮発性メモリ１３内のパルス数設定値格納領域２０に格納されたパルス数設定値が書き換えられないように、パルス数設定値格納領域２０を保護することが必要になる。図１に示す通り、メモリコントローラ１２は、第１のキーレジスタ１９を有する。メモリコントローラ１２は、ＣＰＵ１１からパルス数設定値格納領域２０に対し、書込み命令が指定された場合には、この第１のキーレジスタ１９を参照する。参照した結果、第１のキーレジスタ１９に格納されているデータ（第１のキーデータ）が所定のデータである場合に限り、メモリコントローラ１２は、パルス数設定値格納領域２０の書換えを許可する。一方、第１のキーデータが所定のデータで無い場合には、メモリコントローラ１２は、ＣＰＵ１１からの書込み命令を無効とする。したがって、ＣＰＵ１１は、パルス数設定値格納領域２０に格納されたパルス数設定値の書換えを行うためには、書換え命令を出す前に、第１のキーレジスタ１９に所定のデータと一致する第１のキーデータを書込んでおく必要がある。なお、上述の通り、ＣＰＵ１１は、データ入力端子２１を介して、マイクロコンピュータ１０の外部より、第１のキーデータを取得する。
【００５０】
このような構成により、ユーザシステムの暴走等により、万一、ＣＰＵ１１から不揮発性メモリ１３内のパルス数設定値格納領域２０へ書込み命令が出されてしまうようなことがあっても、実際にそれが実行される確率を著しく低下させることができる。なお、第１のキーレジスタ１９に格納された第１のキーデータと比較される所定のデータは、論理回路等で構成され、製品設計の段階ですでに決められているデータとなる。また、第１のキーレジスタ１９は、メモリコントローラ１２の内部にあると説明したが、メモリコントローラ外部にあってもよい。
【００５１】
また、製品出荷後において、製造元（出荷元）が不具合解析のために各種テスト動作モードを実行する場合には、不揮発性メモリ１３内のパルス数設定値格納領域２０に格納されているパルス数設定値を書換えてから不具合解析を行ってもよい。つまり、データ入力端子２１を介して、所定のデータと一致する第１のキーデータをＣＰＵ１１に入力し、ＣＰＵ１１は、入力された第１のキーデータを第１のキーレジスタ１９に格納してから、不揮発性メモリ１３内のパルス数設定値格納領域２０のパルス数設定値を大きい値から小さい値へ書換える。これにより、テスト動作モードの遷移に係る時間を短くすることができるため、不具合解析を効率よく行うことができる。
【００５２】
このように、本発明の実施の形態１では、動作モードを遷移させるために動作モード設定信号のパルス数（エッジの数）と比較される値（パルス数設定値）は、不揮発性メモリ１３内のパルス数設定値格納領域２０に格納されるため、その値の書換え（変更）が可能である。したがって、出荷時のテストにおいて、非常に多くのテストを行わなければならず、動作させなければならないテスト動作モードが多数存在する場合であっても、パルス数設定値格納領域２０に格納されるパルス数設定値を小さい値とすることで、そのテスト動作モードを設定するための時間を減らすことができる。その結果、出荷時のテストが製品出荷のスループットに及ぼす影響を著しく低減することができる。
【００５３】
一方、製品出荷後のユーザシステムでの動作においては、不揮発性メモリ１３内のパルス数設定値格納領域２０に格納される値（パルス数設定値）を極力大きい値にすることにより、ノイズ等の影響で通常動作モードからテスト動作モードへの想定外の動作モードの遷移が生じる確率を著しく下げることができる。その結果、意図しないテスト動作モードへの遷移が原因で引き起こされるユーザシステムの暴走等を抑制することが可能となる。
【００５４】
以上の通り、本発明の実施の形態１によれば、従来の動作モードの設定においてできなかった出荷前と出荷後で動作モードの設定条件の変更を可能とし、その結果、出荷時のテストの際の時間短縮による製品コストの上昇の抑制と、テスト動作モードへの遷移が原因で引き起こされるユーザシステムの動作異常の発生確率の低減を、同時に実現することが可能となる。
【００５５】
実施の形態２
図６は、本発明の実施の形態２に係るマイクロコンピュータ６０のブロック図である。実施の形態１に係るマイクロコンピュータ１０の構成に加えて、実施の形態２に係るマイクロコンピュータ６０は、モード期間設定レジスタ６１と、クロック端子６２と、第２のカウンタ６３と、第２の比較器６４と、フリップフロップ（ＦＦ）６５と、第１のラッチ回路６６を備え、メモリコントローラ１２は、第１のキーレジスタ１９に加えて、第２のキーレジスタ６７を有する。また、不揮発性メモリ１３は、モード期間設定レジスタ６１に設定されるべき値（モード期間設定値）が格納されているモード期間設定値格納領域６８を有する。なお、実施の形態１と同様の動作をするブロックについては、同一の符号を付して説明を省略する。
【００５６】
モード期間設定レジスタ６１は、ＣＰＵ１１、リセット端子１８および第２の比較器６４に接続される。モード期間設定レジスタ６１は、ＣＰＵ１１から所定の値が設定される。設定された値は、モード期間設定レジスタ６１から第２の比較器６４へ出力される。また、リセット端子１８から外部リセット信号（‘Ｌ’レベル）が入力されると、モード期間設定レジスタ６１に設定された値は、すべて初期値へリセットされる。ここで、モード期間設定レジスタ６１が、１０ビットレジスタである場合には、例えば、初期値として、「１１１１１１１１１１ｂ（１０２３）」を選択することができる。
【００５７】
第２のカウンタ６３は、クロック端子６２、第２の比較器６４およびリセット端子１８に接続される。第２のカウンタ６２は、クロック端子６２を介して入力されるクロック信号（ＣＬＫ）のエッジの数をカウントする。具体的には、第２のカウンタ６３は、アップカウンタとして構成され、ＣＬＫの立上りエッジ（若しくは立下りエッジ）を受けて、カウントアップ動作を行う。第２のカウンタ６３の出力（カウント値）は、第２の比較器６４へ出力される。また、リセット端子１８から外部リセット信号（‘Ｌ’レベル）が入力されると、第２のカウンタ６３のカウント値は、「０」へリセットされる。なお、第２のカウンタ６３のカウント範囲は、モード期間設定レジスタ６１の大きさに対応して決定される。モード期間設定レジスタ６１が１０ビットレジスタである場合には、第２のカウンタ６３は、１０ビットカウンタ（カウント範囲は、「０〜１０２３」）となる。
【００５８】
第２の比較器６４は、モード期間設定レジスタ６１、第２のカウンタ６３およびＦＦ６５に接続される。第２の比較器６４は、モード期間設定レジスタ６１から出力される値と第２のカウンタ６３から出力されるカウント値を比較する。第２の比較器６４は、両者の値が一致する場合には、一致を示す‘Ｈ’レベルＦＦ６５へ出力する。一方、両者の値が不一致である場合には、不一致を示す‘Ｌ’レベルをＦＦ６５へ出力する。
【００５９】
ＦＦ６５は、クロック入力、データ入力、リセット入力およびデータ出力を有する。クロック入力は、第２の比較器６４の出力に接続される。データ入力は、電源ＶＤＤ（‘Ｈ’レベル）に接続される。リセット入力は、リセット端子１８に接続される。データ出力は、第１のラッチ回路６６に接続される。ＦＦ６５は、第２の比較器６４の‘Ｌ’レベルから‘Ｈ’レベルへの遷移における立上りエッジをトリガとして、データ入力に入力されている‘Ｈ’レベルをデータ出力へ転送する。また、ＦＦ６５は、外部リセット信号（‘Ｌ’レベル）を受けて、データ出力を‘Ｌ’レベルとする。
【００６０】
第１のラッチ回路６６は、第１の比較器１７ａ−１７ｃ、ＦＦ６５およびＣＰＵ１１に接続される。第１のラッチ回路６６は、ＦＦ６５の出力に基づいて、第１の比較器１７ａ−１７ｃから入力される信号（値）をＣＰＵ１１へ出力（パス）するか、それとも、ラッチ（保持）している値をＣＰＵ１１へ出力するかを決定する。具体的には、第１のラッチ回路６６は、ＦＦ６５の出力が‘Ｌ’レベルのときには、第１の比較器１７ａ−１７ｃから入力される値をそのままＣＰＵ１１へ出力（パス）する。ＦＦ６５の出力が‘Ｌ’レベルから‘Ｈ’レベルに遷移すると、第１のラッチ回路６６は、第１の比較器１７ａ−１７ｃから入力されている値を保持する。第１のラッチ回路６６は、ＦＦ６５の出力が、‘Ｈ’レベルである間は、保持した値をＣＰＵ１１へ出力し続ける。
【００６１】
なお、第２のキーレジスタ６７は、第１のキーレジスタ１９と同様、ＣＰＵ１１からアクセス可能となっている。この第２のキーレジスタ６７の機能の詳細については、後述する。
【００６２】
次に、図７を用いて、実施の形態２に係るマイクロコンピュータ６０の動作について説明する。図７は、実施の形態２に係るマイクロコンピュータ６０の動作モードの遷移を示すタイミングチャートである。図７では、パルス数設定レジスタ１４ａ−１４ｃに設定するパルス数設定値を小さい値である「１」、「２」、「３」とする。すなわち、小さい値を設定するのが有利な製品出荷前に行われる出荷時のテストの際の動作モードの遷移を想定している。
【００６３】
まず、リセット端子１８を介して外部リセット信号が‘Ｌ’レベルとなり、第１のカウンタ１６の出力（カウント値）が「０（００００００００ｂ）」に、パルス数設定レジスタ１４ａ−１４ｃがそれぞれ「２５５（１１１１１１１１ｂ）」に、第２のカウンタ６３の出力（カウント値）が「０（００００００００００ｂ）」に、モード期間設定レジスタ６１が「１０２３（１１１１１１１１１１ｂ）」に、ＦＦ６５の出力が‘Ｌ’レベルに設定される。このとき、パルス数設定レジスタ１４ａ−１４ｃに設定された値と第１のカウンタ１６の出力は一致しないため、第１の比較器１７ａ−１７ｃの出力は、‘Ｌ’レベルである。また、モード期間設定レジスタ６１に設定された値と第２のカウンタ６３の出力は一致しないため、第２の比較器６４の出力は、‘Ｌ’レベルである。なお、動作モード設定信号は、‘Ｈ’レベルとなっている。
【００６４】
ｔ０において、外部リセット信号が、‘Ｌ’レベル→‘Ｈ’レベルとなり、リセットが解除される。リセットの解除後、ｔ１において、第２のカウンタ６３が、ＣＬＫを受けて、カウント動作を開始する。
【００６５】
ＣＰＵ１１は、不揮発性メモリ１３内のモード期間設定値格納領域６８から、メモリコントローラ１２を介して、モード期間設定レジスタ６１に格納するべき値（モード期間設定値）を読出すための読出し命令を出力し、読出した値をモード期間設定レジスタ６１に設定する。ここでは、データ入力端子２１を介してＣＰＵ１１に入力された値「８」が、モード期間設定値として、モード期間設定値格納領域２０に予め格納されている。ｔ２において、モード期間設定レジスタ６１に「８」が、設定される。
【００６６】
また、ＣＰＵ１１は、不揮発性メモリ１３内のパルス数設定値格納領域２０から、メモリコントローラ１２を介して、パルス数設定レジスタ１４ａ−１４ｃに設定するべき値（パルス数設定値）を読出すための読出し命令を出力し、読出した値をパルス数設定レジスタ１４ａ−１４ｃに設定する。パルス数設定値「１」、「２」、「３」についても、パルス数設定値格納領域２０に、予め格納されている。ｔ３において、パルス数設定レジスタ１４ａに「１」が、パルス数設定レジスタ１４ｂに「２」が、パルス数設定レジスタ１４ｃに「３」が、設定される。
【００６７】
このように、リセットシーケンスにおいて、モード期間設定レジスタ６１とパルス数設定レジスタ１４ａ−１４ｃの設定がそれぞれ行われる。なお、この期間（図７では、ｔ０〜ｔ４）は、第１の比較器１７ａ−１７ｃのいずれの出力も‘Ｌ’レベルとなっているため、動作モードは、通常動作モードが設定されている。
【００６８】
ｔ４において、動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移する。第１のカウンタ１６は、動作モード設定信号の立下りエッジを受けて、カウント値を「０」→「１」へカウントアップする。このとき、パルス数設定レジスタ１４ａに設定されている値「１」と第１のカウンタ１６の出力（カウント値）「１」が一致するため、第１の比較器１７ａの出力が、‘Ｌ’レベル→‘Ｈ’レベルに遷移する。第１のラッチ回路６６は、ＦＦ６５から‘Ｌ’レベル出力を受けているので、第１の比較器１７ａ−１７ｃの出力を、そのままＣＰＵ１１へ出力（パス）する。ＣＰＵ１１は、第１の比較器１７ａの‘Ｈ’レベル出力に基づいて、通常動作モードからテスト動作モード１へと動作モードが遷移したことを認識し、テスト動作モード１に対応した動作に切替える。
【００６９】
ｔ５において、第２のカウンタ６３の出力（カウント値）が「８」となる。このとき、モード期間設定レジスタ６１に設定されている値「８」と第２のカウンタ６３の出力「８」が一致するため、第２の比較器６４の出力が、‘Ｌ’レベル→‘Ｈ’レベルに遷移する。ＦＦ６５は、第２の比較器６４の出力の立上りエッジをトリガとして、データ入力に入力されている‘Ｈ’レベルを、データ出力へ転送する。転送された‘Ｈ’レベル信号は、第１のラッチ回路６６へ入力される。第１のラッチ回路６６は、ＦＦ６５の出力の‘Ｌ’レベル→‘Ｈ’レベルの遷移を受けるので、第１の比較器１７ａ−１７ｃから入力されている値「‘Ｈ’レベル、‘Ｌ’レベル、‘Ｌ’レベル」を保持する。ＦＦ６５は、第２の比較器６４での比較の結果が一致である間は、‘Ｈ’レベルのデータ出力を保持するため、保持回路として動作する。そして、第１のラッチ回路６６は、ＦＦ６５の出力が‘Ｈ’レベルである間は、この値を保持して、ＣＰＵ１１に対し、出力し続ける。したがって、第２のカウンタ６３のカウント値が、モード期間設定レジスタ６１に設定された値と一致する値にまで達すると、第１のラッチ回路６６により、第１の比較器１７ａ−１７ｃの出力のＣＰＵ１１への転送が固定され、動作モードの設定が確定することになる。ここでは、テスト動作モード１に確定したことになる。
【００７０】
再度、テスト動作モードを変更したい場合には、ｔ６のように、外部リセット信号を‘Ｈ’レベル→‘Ｌ’レベルに遷移させることで、リセットをかける。ｔ７において、リセットが解除されると、ｔ８において、第２のカウンタ６３がカウント動作を開始する。また、ｔ９において、モード期間設定レジスタに「８」が、ｔ１０において、パルス数設定レジスタ１７ａ−１７ｃに「１」、「２」、「３」が、それぞれ設定される。
【００７１】
ｔ１１において、動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移すると、第１のカウンタ１６のカウント値が「１」となるため、第１の比較器１７ａの出力は、‘Ｌ’レベル→‘Ｈ’レベルに遷移する。この‘Ｈ’レベル出力は、第１のラッチ回路６６を介して、ＣＰＵ１１へ出力され、その結果、ＣＰＵ１１は、通常動作モードからテスト動作モード１へと動作モードが遷移したことを認識し、テスト動作モード１に対応した動作に切替える。
【００７２】
ｔ１２において、再び動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移すると、第１のカウンタ１６のカウント値が「２」となるため、第１の比較器１７ａの出力が、‘Ｈ’レベル→‘Ｌ’レベルに、第１の比較器１７ｂの出力が、‘Ｌ’レベル→‘Ｈ’レベルにそれぞれ遷移する。したがって、ＣＰＵ１１は、第１のラッチ回路６６を介して、第１の比較器１７ｂの‘Ｈ’レベル出力を受け、テスト動作モード１からテスト動作モード２へと動作モードが遷移したことを認識し、テスト動作モード２に対応した動作に切替える。
【００７３】
ｔ１３において、第２のカウンタ６３の出力（カウント値）が「８」となる。このとき、モード期間設定レジスタ６１に設定されている値「８」と第２のカウンタ６３の出力「８」が一致するため、第２の比較器６４の出力が、‘Ｌ’レベル→‘Ｈ’レベルに遷移する。これにより、ＦＦ６５の‘Ｈ’レベル出力が第１のラッチ回路６６へ出力されるため、第１のラッチ回路６６は、第１の比較器１７ａ−１７ｃから受けている値「‘Ｌ’レベル、‘Ｈ’レベル、‘Ｌ’レベル」を保持し、ＦＦ６５から‘Ｈ’レベル出力を受けている間は、この値を保持してＣＰＵ１１に対して出力し続ける。これにより、第１の比較器１７ａ−１７ｃの出力のＣＰＵ１１への転送が固定され、動作モードの設定が確定することになる。ここでは、テスト動作モード２に確定したことになる。
【００７４】
その後、ｔ１４において、動作モード設定信号が‘Ｈ’レベル→‘Ｌ’レベルに遷移するため、第１のカウンタ１６のカウント値が「３」となり、第１の比較器１７ａ−１７ｃの出力が「‘Ｌ’レベル、‘Ｌ’レベル、‘Ｈ’レベル」となる。しかしながら、第２のカウンタ６３のカウント値は、モード期間設定レジスタ６１に設定されている値（「８」）をすでに超えているために、第１のラッチ回路６６により、ＣＰＵ１１への出力は「‘Ｌ’レベル、‘Ｈ’レベル、‘Ｌ’レベル」で固定（保持）されている。したがって、ｔ１４にて入力された動作モード設定信号のパルスように、ｔ１３以降で入力された動作モード設定信号のパルスは、無効とされ、動作モードの遷移が生じない（禁止された）状態となっている。ここでは、テスト動作モード２からテスト動作モード３への遷移が生じず、テスト動作モード２のままとなっている。
【００７５】
このような構成とすることにより、実施の形態２においては、所定の期間のみ、動作モードの設定（遷移）を認める構成としているため、動作モード設定端子１５を介して、ノイズ等が原因で意図しないパルスが入力されてしまった場合でも、その入力は所定の期間外のものであれば、無効化することができる。
【００７６】
例えば、図７の例では、ｔ１２において、２個目の動作モード設定信号のパルスを入力し、ｔ１３において、テスト動作モード２を確定して、テスト動作モード２によるテストを行う。このとき、実施の形態１の構成では、ｔ１４において、ノイズ等が原因で３個目のパルスが入力されてしまった場合には、動作モードがテスト動作モード３にチェンジしてしまうことになり、それまで実行していたテスト動作モード２によるテストが不完全なまま終了してしまうことになる。しかしながら、実施の形態２の構成では、ｔ１４において、ノイズ等が原因で３個目のパルスが入力されてしまった場合でも、ｔ１３において、すでに動作モードの設定期間は終了しているので、その後のｔ１４において入力されたパルスは無効化され、テスト動作モード２がテスト動作モード３へ遷移してしまうことはない。
【００７７】
特に、製品出荷前のテストにおいては、前述の通り、テスト時間の短縮化の目的で、パルス数設定レジスタ１４ａ−１４ｃに設定される値（パルス数設定値）を小さい値とする。そのため、意図しない動作モード設定信号のパルス入力による誤った動作モードの遷移が生じてしまう可能性が高い。本発明の実施の形態２によれば、その可能性を著しく低減させることができる。
【００７８】
また、製品出荷後のユーザシステム動作中では、実施の形態１にて説明した通り、パルス数設定レジスタ１４ａ−１４ｃに設定される値（パルス数設定値）は、大きい値となる。そのため、不具合解析などで、製品出荷後にテスト動作モードを実行する場合には、多くの動作モード設定信号のパルス入力を必要とする。このとき、モード期間設定レジスタ６１に設定された値が小さいものであると、テスト動作モードに遷移させるために必要な動作モード設定信号のパルス数を入力する前に、動作モードの設定が可能な期間をすぎてしまうことになり、テスト動作モードへの遷移が不可能となってしまう。そのため、製品の出荷時のテストが完了し、当該製品の出荷をする前には、モード期間設定レジスタ６１に設定される値（モード期間設定値）を小さい値から大きな値へと変更する必要がある。具体的には、不揮発性メモリ１３内のモード期間設定データ格納領域６８に格納されたモード期間設定値「８」を、例えば、「１０２０」に書き換えてから製品を出荷する。
【００７９】
なお、実施の形態１のパルス数設定値格納領域２０と同じように、モード期間設定値格納領域６８についても、製品出荷後のユーザシステム動作中にユーザシステムの暴走等により書き換えが行われてしまうようなことがあると問題になる。つまり、モード期間設定値格納領域６８に格納されたモード期間設定値が、小さい値に書き換えられてしまうようなことがあると、動作モードの設定が可能な期間が短くなってしまうことにより、製品出荷後の不具合解析などにおけるテスト動作モードへの設定が不可能になってしまう。このような場合には、モード期間設定値を大きい値に戻すために、モード期間設定値格納領域６８の再書換えが必要になる。
【００８０】
そこで、メモリコントローラ１２は、モード期間設定値格納領域６８の保護のために、第２のキーレジスタ１２を有する。具体的には、メモリコントローラ１２は、第２のキーレジスタ６７に格納されたデータ（第２のキーデータ）を参照し、第２のキーレジスタ６７に格納されている第２のキーデータが所定のデータである場合に限り、モード期間設定値格納領域６８の書換えを許可する。この第２のキーレジスタ６７の機能等は、実施の形態１にて説明した第１のキーレジスタ１９と基本的に同じであるため、その詳細についての説明は省略する。
【００８１】
以上の説明のように、本発明の実施の形態１の効果に加えて、本発明の実施の形態２では、所定の期間のみ、動作モードの遷移を認める構成とすることによって、任意の動作モードで動作中に、ノイズ等が原因により意図しない動作モード設定信号のパルス入力あった場合でも、所定の期間経過後であれば、動作モードが遷移することを防止することができる。
【００８２】
なお、以上の説明では、モード期間設定レジスタ６１の大きさを１０ビットレジスタとし、第２のカウンタ１６を１０ビットカウンタとして説明したが、これに限定されることはなく、無論これ以外であっても構わない。また、第２のキーレジスタ６７は、メモリコントローラ１２の外部にあっても構わない。
【００８３】
実施の形態３
図８は、本発明の実施の形態３に係るマイクロコンピュータ８０のブロック図である。実施の形態１に係るマイクロコンピュータ１０の構成に加えて、実施の形態３に係るマイクロコンピュータ８０は、第２のラッチ回路８１と論理積回路８２ａ−８２ｃを備える。なお、実施の形態１と同様の動作をするブロックについては、同一の符号を付して説明を省略する。
【００８４】
第２のラッチ回路８１は、動作モード設定端子１５、リセット端子１８および論理積回路８２ａ−８２ｃに接続される。第２のラッチ回路８１は、リセット端子１８を介して入力される外部リセット信号に基づいて、動作モード設定端子１５から入力される動作モード設定信号を論理積回路８２ａ−８２ｃへ出力（パス）するか、それとも、ラッチ（保持）している値を論理積回路８２ａ−８２ｃへ出力するかを決定する。具体的には、第２のラッチ回路８１は、外部リセット信号が‘Ｌ’レベルのときには、動作モード設定信号をそのまま論理積回路８２ａ−８２ｃへ出力する。外部リセット信号が‘Ｌ’レベル→‘Ｈ’レベルに遷移すると、第２のラッチ回路８１は、入力されている動作モード設定信号の信号レベル（値）を保持する。第２のラッチ回路８１は、外部リセット信号が、‘Ｈ’レベルである間は、保持した値を論理積回路８２ａ−８２ｃへ出力し続ける。
【００８５】
論理積回路８２ａ−８２ｃは、第１の比較器１７ａ−１７ｃ、第２のラッチ回路およびＣＰＵ１１に接続される。論理積回路８２ａ−８２ｃは、第１の比較器１７ａ−１７ｃの出力と第２のラッチ回路８１の出力の論理積を取り、その結果をＣＰＵ１１へ出力する。
【００８６】
続いて、図９を用いて、実施の形態３に係るマイクロコンピュータ８０の動作について説明する。図９は、実施の形態３に係るマイクロコンピュータ８０の動作モードの遷移を示すタイミングチャートである。図９では、パルス数設定レジスタ１４ａ−１４ｃにパルス数設定値として、「１」、「２」、「３」を設定する。したがって、不揮発性メモリ１３内のパルス数設定値格納領域２０には、パルス数設定値として、「１」、「２」、「３」が予め格納されている。
【００８７】
ｔ０より前のタイミングでは、外部リセット信号が‘Ｌ’レベルとなっているため、第２のラッチ回路８１は、動作モード設定端子１５に印加されている‘Ｈ’レベルを論理積回路８２ａ−８２ｃへ出力（パス）する。また、実施の形態１と同様に、パルス数設定レジスタ１４ａ−１４ｃ（８ビットレジスタ）の値は、「２５５（１１１１１１１１ｂ）」の初期値にリセットされる。
【００８８】
ｔ０において、外部リセット信号が‘Ｌ’レベル→‘Ｈ’レベルに遷移するため、第２のラッチ回路８１は、動作モード設定端子１５に印加されている‘Ｈ’レベルを保持する。第２のラッチ回路８１は、外部リセット信号が‘Ｈ’レベルの間は、保持している値（‘Ｈ’レベル）を、論理積回路８２ａ−８２ｃへ出力し続ける。
【００８９】
また、リセット解除後のｔ１において、ＣＰＵ１１は、パルス数設定レジスタ１４ａ−１４ｃに、「１」、「２」、「３」を設定する。このときの第１の比較器１７ａ−１７ｃの出力は、全て‘Ｌ’レベルとなっている。第２のラッチ回路８１の出力は、‘Ｈ’レベルであるため、論理積回路８２ａ−８２ｃは、第１の比較器１７ａ−１７ｃの「‘Ｌ’レベル、‘Ｌ’レベル、‘Ｌ’レベル」出力を、ＣＰＵ１１へ出力（パス）する。したがって、図９のｔ０〜ｔ２の間は、通常動作モードが設定される。
【００９０】
ｔ２において、動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移し、第１のカウンタ１６の出力とパルス数設定レジスタ１４ａの値が一致して、第１の比較器１７ａの出力が‘Ｈ’レベルとなる。その結果、論理積回路８２ａの出力も‘Ｈ’レベルとなる。ＣＰＵ１１は、第１の比較器１７ａの‘Ｈ’レベル出力に基づいて、通常動作モードからテスト動作モード１へと動作モードが遷移したことを認識し、テスト動作モード１に対応した動作に切替える。
【００９１】
ｔ３において、再び、動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移するため、テスト動作モード２となる。
【００９２】
ｔ４において、外部リセット信号が、‘Ｈ’レベル→‘Ｌ’レベルに遷移し、マイクロコンピュータ８０がリセットされる。第２のラッチ回路８１は、外部リセット信号が‘Ｌ’レベルとなったため、値（‘Ｈ’レベル）をラッチ（保持）することをやめ、動作モード設定信号を、ＣＰＵ１１へ出力（パス）する。ｔ４〜ｔ５の期間において、動作モード設定信号は‘Ｌ’レベルであるため、第２のラッチ回路８１は、‘Ｌ’レベルを出力する。
【００９３】
ｔ５において、外部リセット信号が、‘Ｌ’レベル→‘Ｈ’レベルに遷移すると、第２のラッチ回路８１は、動作モード設定信号の‘Ｌ’レベルを保持する。第２のラッチ回路８１は、外部リセット信号が‘Ｈ’レベルの間は、保持している値（‘Ｌ’レベル）を、論理積回路８２ａ−８２ｃへ出力し続ける。したがって、論理積回路８２ａ−８２ｃの１入力が、‘Ｌ’レベルに固定されてしまうため、論理積回路８２ａ−８２ｃの出力は、その間はずっと‘Ｌ’レベルとなる。すなわち、論理積回路８２ａ−８２ｃの出力は、全て‘Ｌ’レベルとなるため、第２のラッチ回路８１が、‘Ｌ’レベルを出力している限り、通常動作モードが設定されることになる。
【００９４】
したがって、ｔ７、ｔ８、ｔ９において、動作モード設定信号が、‘Ｈ’レベル→‘Ｌ’レベルになり、第１の比較器１７ａ−１７ｃの出力の‘いずれかがＨ’レベルになったとしても、論理積回路８２ａ−８２ｃの出力は変化せず、通常動作モードを維持し続ける。
【００９５】
このように、本発明の実施の形態３では、第２のラッチ回路８１が保持している値に基づいて、テスト動作モードへの動作モードの遷移を許可するか否かを決定する。具体的には、第２のラッチ回路８１が、‘Ｈ’レベルを保持している場合には、動作モード設定信号のパルス数に基づいたテスト動作モードへの遷移を許可する。一方、第２のラッチ回路８１が、‘Ｌ’レベルを保持している場合には、テスト動作モードへの遷移を禁止し、通常動作モードでの動作を維持し続ける。
【００９６】
以上の説明の通り、本発明の実施の形態３では、第２のラッチ回路８１に‘Ｌ’レベルを保持させることによって、特定の動作モード（通常動作モード）以外の動作モードへの遷移を禁止する。これによって、ユーザシステム動作中における特定の動作モード（通常動作モード）から別の動作モード（テスト動作モード）への意図しない動作モードの遷移が生じる確率を、実施の形態１に比べさらに低減させることができる。
【００９７】
実施の形態４
図１０は、本発明の実施の形態４に係るマイクロコンピュータ１００のブロック図である。実施の形態２に係るマイクロコンピュータ６０の構成に加えて、実施の形態４に係るマイクロコンピュータ１００は、メモリコントローラ１２内に第３のキーデータを格納する第３のキーレジスタ１０１と、不揮発性メモリ１３内に選択データを格納する選択データ格納領域１０２を有する。また、不揮発性メモリ１３内のパルス数設定値格納領域２０には、２種類のパルス数設定値（パルス数設定値Ａおよびパルス数設定値Ｂ）が格納され、モード期間設定値格納領域６８には、２種類のモード期間設定値（モード期間設定値Ａおよびモード期間設定値Ｂ）が格納される。なお、実施の形態２と同様の動作をするブロックについては、同一の符号を付して説明を省略する。
【００９８】
メモリコントローラ１２は、第３のキーデータを格納する第３のキーレジスタ１０１を有する。第３のキーレジスタ１０１は、ＣＰＵ１１に接続される。したがって、ＣＰＵ１１は、データ入力端子２１を介して入力された第３のキーデータを、第３のキーレジスタ１０１に設定する（書込む）ことができる。
【００９９】
不揮発性メモリ１３は、選択データを格納するための選択データ格納領域１０２を有する。選択データは、データ入力端子２１から入力され、ＣＰＵ１１が、メモリコントローラ１２を介して、選択データ格納領域１０２へ選択データを設定する（書込む）ことができる。
【０１００】
不揮発性メモリ１３内のパルス数設定値格納領域２０には、パルス数設定値Ａとパルス数設定値Ｂが格納される。パルス数設定値Ａは、小さい値であり、パルス数設定値Ｂは、大きい値とする。つまり、パルス数設定値Ａ＜パルス数設定値Ｂの関係にある。また、不揮発性メモリ１３内のモード期間設定値格納領域６８には、モード期間設定値Ａとモード期間設定値Ｂが格納される。モード期間設定値Ａは、小さい値であり、モード期間設定値Ｂは、大きい値とする。つまり、モード期間設定値Ａ＜モード期間設定値Ｂの関係にある。
【０１０１】
図１０の実施の形態４に係るマイクロコンピュータ１００の動作について説明する。実施の形態２のマイクロコンピュータ６０との相違点は、リセットシーケンスにおけるパルス数設定値のパルス数設定レジスタ１４ａ−１４ｃへの設定およびモード期間設定値のモード期間設定レジスタ６１への設定の仕方ある。その他の点については、実施の形態２のマイクロコンピュータ６０と同じであるため、説明は省略する。
【０１０２】
実施の形態２のマイクロコンピュータ６０では、パルス数設定値格納領域２０には、１種類のパルス数設定値のみが格納されている。また、モード期間設定値格納領域６８にも、１種類のモード期間設定値のみが格納されている。したがって、リセットシーケンスにおいて、ＣＰＵ１１は、１種類のパルス設定値およびモード期間設定値を読出して、パルス数設定レジスタ１４ａ−１４ｃおよびモード期間設定レジスタ６１に格納する。
【０１０３】
しかしながら、実施の形態４のマイクロコンピュータ１００では、パルス数設定値格納領域２０には、２種類のパルス数設定値（パルス数設定値Ａおよびパルス数設定値Ｂ）が格納されている。また、モード期間設定値格納領域６８にも、２種類のモード期間設定値（モード期間設定値Ａおよびモード期間設定値Ｂ）が格納されている。つまり、リセットシーケンスにおいて、ＣＰＵ１１は、どちらの値を読出せばいいのか判断できない。そこで、実施の形態４のマイクロコンピュータ１００では、不揮発性メモリ１３内の選択データ格納領域１０２に格納された選択データに基づいて、ＣＰＵ１１がどちらの値を読出すかを決定する。具体的には、ＣＰＵ１１から読出し命令を受けたメモリコントローラ１２が、選択データを参照し、選択データが所定のデータである場合には、不揮発性メモリ１３からパルス数設定値Ａおよびモード期間設定値Ａを読出し、選択データが所定のデータとは異なるデータである場合には、不揮発性メモリ１３からパルス数設定値Ｂおよびモード期間設定値Ｂを読出すようにする。
【０１０４】
例えば、選択データが１ビットであり、選択データ＝「０」である場合には、ＣＰＵ１１は、パルス数設定値Ａおよびモード期間設定値Ａを読出し、選択データ「１」である場合には、ＣＰＵ１１は、パルス数設定値Ｂおよびモード期間設定値Ｂを読出すようにする。これにより、選択データの値を書換えれば、パルス数設定値やモード設定値それ自体に対する書換えを行わなくても、異なるパルス数設定値やモード期間設定値をリセットシーケンスにおいて、ＣＰＵ１１は読出すことが可能となる。
【０１０５】
ここで、選択データとして、「０」が格納され、パルス数設定値Ａとして、「１」、「２」、「３」が、パルス数設定値Ｂとして、「２５１」、「２５２」、「２５３」が、パルス数設定値格納領域２０に格納され、モード期間設定値Ａとして、「８」が、モード期間設定値Ｂとして、「１０２０」が、モード期間設定値格納領域６８に格納されている場合を例として、説明する。
【０１０６】
製品出荷前のテストにおいては、選択データ格納領域１０２に、選択データとして「０」を書込んでおく。出荷時のテストの際のリセットシーケンスにおいて、ＣＰＵ１１は、パルス数設定値およびモード期間設定値を読出すために、メモリコントローラ１２に対して、読出し命令を出力すると、メモリコントローラ１２は、まず選択データ格納領域１０２から選択データを読出す。読出した選択データは「０」であるため、メモリコントローラ１２は、パルス数設定値格納領域２０からパルス数設定値Ａである「１」、「２」、「３」をそれぞれ読出し、また、モード期間設定値格納領域６８からモード期間設定値Ａである「８」を読出す。読出した値は、ＣＰＵ１１へ出力され、ＣＰＵ１１は、パルス数設定レジスタ１４ａ−１４ｃに、「１」、「２」、「３」を、モード期間設定レジスタ６１に、「８」をそれぞれ設定する。これにより、製品出荷前のテストにおいては、動作モードの遷移に要する時間を短縮することができる。
【０１０７】
一方、出荷時のテストにおいてパスした製品に関しては、選択データの値を「０」→「１」に書換える。したがって、製品出荷後、ユーザシステムで動作するマイクロコンピュータ１００のリセットシーケンスでは、パルス数設定値格納領域２０からパルス数設定値Ｂである「２５１」、「２５２」、「２５３」が、モード期間設定値格納領域６８からモード期間設定値Ｂである「１０２０」が読出される。これにより、製品出荷後のユーザシステム動作中においては、ノイズ等の影響で通常動作モードからテスト動作モードへのユーザが意図しない動作モードの遷移が生じる確率を著しく下げることができる。
【０１０８】
また、選択データ格納領域１０２に格納された選択データが、ユーザシステムの暴走等により、安易に書換わってしまうと、上述までに説明した問題が生じることになる。そこで、選択データ格納領域１０２の保護のために、メモリコントローラ１２は、第３のキーレジスタ１０１を有し、メモリコントローラ１２は、第３のキーレジスタ１０１に格納される第３のキーデータに基づいて、選択データ格納領域１０２への書込み（書換え）を許可するか否かを決定する。この第３のキーレジスタ１０１の機能等は、実施の形態１にて説明した第１のキーレジスタ１９と基本的に同じであるため、その詳細についての説明は省略する。
【０１０９】
以上の説明の通り、本発明の実施の形態４では、実施の形態２と同様の効果を得ることができる。なお、説明では、選択データを１ビット、パルス数設定値およびモード期間設定値をそれぞれ２種類としたが、これに限定されることはなく、また、第３のキーレジスタ１０１は、メモリコントローラ１２の外部であっても構わない。
【０１１０】
本発明の実施の形態に基づいて詳細に説明したが、本発明は、本発明の主旨を変更しない限り、種々の変形が可能である。また、実施の形態３の第２のラッチ回路８１および論理積回路８２ａ−８２ｃの構成を、実施の形態２のマイクロコンピュータ６０に付加すること、すなわち、実施の形態２と実施の形態３とを組み合わせることも可能である。実施の形態４に関しても、実施の形態１に第３のキーレジスタ１０１および選択データ格納領域１０２を付加する構成にしてもよく、さらに実施の形態３の第２のラッチ回路８１および論理回路８２ａ−８２ｃを付加する構成にしてもよい。
【図面の簡単な説明】
【０１１１】
【図１】本発明の実施の形態１に係るマイクロコンピュータ１０のブロック図である。
【図２】本発明の実施の形態１に係る動作モードの一覧を示した表である。
【図３】実施の形態１に係るマイクロコンピュータ１０の動作モードの遷移を示すタイミングチャートである。
【図４】実施の形態１に係る出荷時のテストおけるマイクロコンピュータ１０の動作モードの遷移を示すタイミングチャートである。
【図５】実施の形態１に係るユーザシステムで動作中のマイクロコンピュータ１０の動作モードの遷移を示すタイミングチャートである。
【図６】本発明の実施の形態２に係るマイクロコンピュータ６０のブロック図である。
【図７】実施の形態２に係るマイクロコンピュータ６０の動作モードの遷移を示すタイミングチャートである。
【図８】本発明の実施の形態３に係るマイクロコンピュータ８０のブロック図である。
【図９】実施の形態３に係るマイクロコンピュータ８０の動作モードの遷移を示すタイミングチャートである。
【図１０】本発明の実施の形態４に係るマイクロコンピュータ１００のブロック図である。
【図１１】従来の動作モード設定に係る回路を示す図である。
【図１２】図１１の回路図の動作を説明する動作波形図である。
【符号の説明】
【０１１２】
１０、６０、８０、１００  マイクロコンピュータ
１１            ＣＰＵ
１２            メモリコントローラ
１３            不揮発性メモリ
１４ａ、１４ｂ、１４ｃ    パルス数設定レジスタ
１５、１１１        動作モード設定端子
１６            第１のカウンタ
１７ａ、１７ｂ、１７ｃ、１１２            第１の比較器
１８            リセット端子
１９            第１のキーレジスタ
２０            パルス数設定値格納領域
２１            データ入力端子
６１            モード期間設定レジスタ
６２            クロック端子
６３            第２のカウンタ
６４、１１３        第２の比較器
６５            フリップフロップ（ＦＦ）
６６            第１のラッチ回路
６７            第２のキーレジスタ
６８            モード期間設定値格納領域
８１            第２のラッチ回路
８２ａ、８２ｂ、８２ｃ    論理積回路
１０１            第３のキーレジスタ
１０２            選択データ格納領域
１１４            カウンタ
１１５            デコーダ
ＶＣＣ、ＶＤＤ        電源
【図１】
2008076173.tif 000003
【図２】
2008076173.tif 000004
【図３】
2008076173.tif 000005
【図４】
2008076173.tif 000006
【図５】
2008076173.tif 000007
【図６】
2008076173.tif 000008
【図７】
2008076173.tif 000009
【図８】
2008076173.tif 000010
【図９】
2008076173.tif 000011
【図１０】
2008076173.tif 000012
【図１１】
2008076173.tif 000013
【図１２】
2008076173.tif 000014