(57)【特許請求の範囲】
【請求項１】
通信機能を有する他の装置とシリアル通信を行う電子装置であって、
前記電子装置は、ボーレート調整回路を含み前記他の装置とシリアル通信を行うシリアルインタフェース回路と、内部クロック信号を生成するクロック生成回路と、を備えてなり、前記他の装置に接続された状態で前記他の装置からのシリアル信号を受信するように構成され、
前記シリアル信号は、１ビットのスタートビットと、これに続く複数ビットのデータビットと、これに続く１ビットのストップビットで構成されており、
前記ボーレート調整回路は、
（ａ）受信した前記シリアル信号を構成する各ビットの時間幅を前記クロック生成回路で生成された前記内部クロック信号によるカウント動作によって測定する処理と、
（ｂ）前記測定された各ビットの時間幅の最大値と最小値を検出する処理と、
（ｃ）前記測定された各ビットの時間幅の平均値を演算する処理と、
（ｄ）前記各ビットの時間幅の平均値に基づいて最大許容値と最小許容値を演算する処理と、
（ｅ）前記最大値と前記最小値が前記最大許容値と前記最小許容値の範囲内であるか否かを判別する処理と、
（ｆ）前記最大値と前記最小値が前記範囲内である場合に、前記平均値に対応するボーレートを設定する処理と、を実行し、
前記電子装置は、前記他の装置との間のシリアル通信を前記設定したボーレートで実行するように構成されてなる電子装置。
【請求項２】
請求項１記載の電子装置において、
前記電子装置は、さらに、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定したボーレート調整用コマンドの値であるか否かを識別するコマンド識別部を備え、
前記ボーレート調整回路は、
前記シリアル信号を受信した際に、当該シリアル信号に対する前記コマンド識別部の識別結果に関わらずに前記（ａ）〜（ｆ）処理を実行する第１ボーレート設定モードと、
前記シリアル信号を受信した際に、前記（ａ）〜（ｅ）処理を実行し、さらに、前記コマンド識別部が当該シリアル信号の中から前記ボーレート調整用コマンドを識別した場合に前記（ｆ）処理を実行する第２ボーレート設定モードとを備えてなる電子装置。
【請求項３】
請求項２記載の電子装置において、
前記ボーレート調整回路は、リセット信号が入力された際に、その後に受信した、スタートビット、ストップビットならびにそれらの間のデータビットからなる１個の前記シリアル信号を対象に前記第１ボーレート設定モードでの処理を実行するように構成されてなる電子装置。
【請求項４】
請求項３記載の電子装置において、
前記コマンド識別部は、さらに、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定したボーレート調整用の前提コマンドの値であるか否かを識別し、
前記ボーレート調整回路は、前記コマンド識別部が前記ボーレート調整用の前提コマンドを識別した際に、その後に受信した、スタートビット、ストップビットならびにそれらの間のデータビットからなる１個の前記シリアル信号を対象に前記第１ボーレート設定モードでの処理を実行するように構成されてなる電子装置。
【請求項５】
請求項３記載の電子装置において、
前記クロック生成回路は、リングオシレータ回路であるように構成されてなる電子装置。
【請求項６】
請求項３記載の電子装置において、
前記（ｄ）処理での前記最大許容値は、前記平均値の１．５倍であり、
前記（ｄ）処理での前記最小許容値は、前記平均値の０．５倍であるように構成されてなる電子装置。
【請求項７】
請求項３記載の電子装置において、
前記電子装置は、さらに、ＪＴＡＧ規格に基づくＪＴＡＧインタフェース回路と、プロトコル変換部とを備え、
前記コマンド識別部は、さらに、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定したＪＴＡＧアクセス用コマンドの値であるか否かを識別し、
前記プロトコル変換部は、前記コマンド識別部が前記ＪＴＡＧアクセス用コマンドを識別した際に、前記シリアル信号を前記ＪＴＡＧインタフェース回路で必要とされる複数の信号に変換するように構成されてなる電子装置。
【請求項８】
請求項７記載の電子装置において、
前記電子装置は、さらに、不揮発性メモリと、前記不揮発性メモリへの書き込み／読み出し動作を制御するメモリコントローラとを備え、
前記コマンド識別部は、さらに、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定した不揮発性メモリアクセス用コマンドの値であるか否かを識別し、
前記電子装置は、前記コマンド識別部が前記不揮発性メモリアクセス用コマンドを識別した際に、前記シリアル信号を前記メモリコントローラに伝送し、
前記コマンド識別部は、前記電子装置による前記シリアル信号の前記メモリコントローラへの伝送が予め定めた所定の回数行われている間、当該シリアル信号を対象とする各コマンドの識別処理を一時的に停止するように構成されてなる電子装置。
【請求項９】
外部検査装置とシリアル通信で接続され、前記外部検査装置と電子装置に搭載された内部回路との間での通信を可能にする構成を備えた電子装置であって、
前記電子装置は、前記電子装置としての機能を実現する内部回路と、内部クロック信号を生成するクロック生成回路と、前記内部回路とのシリアル通信を実現する制御回路ブロックとを含み、前記内部回路による前記電子装置としての機能を実現する第１動作モードと、前記外部検査装置によるシリアル通信下での前記電子装置の前記内部回路へのアクセスを可能にする第２動作モードとが設定可能に構成されてなり、
前記制御回路ブロックは、前記外部検査装置との間でシリアル通信を行う通信用端子と、前記通信用端子に接続されるシリアルインタフェース回路と、前記シリアルインタフェース回路と前記電子装置の前記内部回路との通信を制御する制御回路と、を備え、前記第２動作モードの際に前記外部検査装置に接続された状態で前記外部検査装置からのシリアル信号を受信するように構成され、
前記シリアル信号は、１ビットのスタートビットと、これに続く複数ビットのデータビットと、これに続く１ビットのストップビットで構成されており、
前記シリアルインタフェース回路は、
前記通信用端子で受信した前記シリアル信号をパラレル信号に変換するシリアル・パラレル変換回路と、
前記内部回路から受信したパラレル信号をシリアル信号に変換し、前記通信用端子に向けて送信するパラレル・シリアル変換回路と、
前記シリアル・パラレル変換回路および前記パラレル・シリアル変換回路の動作タイミングを設定するボーレート調整回路とを備え、
前記ボーレート調整回路は、
（ａ）前記第２動作モードに設定された状態で前記通信用端子を介して受信した前記シリアル信号を対象に、当該シリアル信号を構成する各ビットの時間幅を前記クロック生成回路で生成された前記内部クロック信号によるカウント動作によって測定する処理と、
（ｂ）前記測定された各ビットの時間幅の最大値と最小値を検出する処理と、
（ｃ）前記測定された各ビットの時間幅の平均値を演算する処理と、
（ｄ）前記各ビットの時間幅の平均値に基づいて最大許容値と最小許容値を演算する処理と、
（ｅ）前記最大値と前記最小値が前記最大許容値と前記最小許容値の範囲内であるか否かを判別する処理と、
（ｆ）前記最大値と前記最小値が前記範囲内である場合に、前記平均値に対応するボーレートを設定する処理と、を実行し、
前記制御回路ブロックは、前記外部検査装置との間の前記通信用端子を介したシリアル通信を前記設定したボーレートで実行するように構成されてなる電子装置。
【請求項１０】
請求項９記載の電子装置において、
前記制御回路は、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定したボーレート調整用コマンドの値であるか否かを識別するコマンド識別部を含み、
前記ボーレート調整回路は、
前記シリアル信号を受信した際に、当該シリアル信号に対する前記コマンド識別部の識別結果に関わらずに前記（ａ）〜（ｆ）処理を実行する第１ボーレート設定モードと、
前記シリアル信号を受信した際に、前記（ａ）〜（ｅ）処理を実行し、さらに、前記コマンド識別部が当該シリアル信号の中から前記ボーレート調整用コマンドを識別した場合に前記（ｆ）処理を実行する第２ボーレート設定モードとを備えてなる電子装置。
【請求項１１】
請求項１０記載の電子装置において、
前記ボーレート調整回路は、リセット信号が入力された際に、その後に受信した、スタートビット、ストップビットならびにそれらの間のデータビットからなる１個の前記シリアル信号を対象に前記第１ボーレート設定モードでの処理を実行するように構成されてなる電子装置。
【請求項１２】
請求項１１記載の電子装置において、
前記コマンド識別部は、さらに、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定したボーレート調整用の前提コマンドの値であるか否かを識別し、
前記ボーレート調整回路は、前記コマンド識別部が前記ボーレート調整用の前提コマンドを識別した際に、その後に受信した、スタートビット、ストップビットならびにそれらの間のデータビットからなる１個の前記シリアル信号を対象に前記第１ボーレート設定モードでの処理を実行するように構成されてなる電子装置。
【請求項１３】
請求項１１記載の電子装置において、
前記クロック生成回路は、リングオシレータ回路であるように構成されてなる電子装置。
【請求項１４】
請求項１１記載の電子装置において、
前記（ｄ）処理での前記最大許容値は、前記平均値の１．５倍であり、
前記（ｄ）処理での前記最小許容値は、前記平均値の０．５倍であるように構成されてなる電子装置。
【請求項１５】
請求項１１記載の電子装置において、
前記内部回路は、ＪＴＡＧ規格に基づくＪＴＡＧインタフェース回路を含んだプロセッサ回路を含み、
前記制御回路は、さらに、プロトコル変換部を備え、
前記コマンド識別部は、さらに、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定したＪＴＡＧアクセス用コマンドの値であるか否かを識別し、
前記プロトコル変換部は、前記コマンド識別部が前記ＪＴＡＧアクセス用コマンドを識別した際に、前記シリアル信号を前記ＪＴＡＧインタフェース回路で必要とされる複数の信号に変換するように構成されてなる電子装置。
【請求項１６】
請求項１５記載の電子装置において、
前記内部回路は、さらに、不揮発性メモリと、前記不揮発性メモリへの書き込み／読み出し動作を制御するメモリコントローラとを備え、
前記コマンド識別部は、さらに、前記設定したボーレートに基づいて受信した前記シリアル信号内の前記データビットの値が予め規定した不揮発性メモリアクセス用コマンドの値であるか否かを識別し、
前記制御回路は、前記コマンド識別部が前記不揮発性メモリアクセス用コマンドを識別した際に、前記シリアル信号を前記メモリコントローラに伝送し、
前記コマンド識別部は、前記電子装置による前記シリアル信号の前記メモリコントローラへの伝送が予め定めた所定の回数行われている間、当該シリアル信号を対象とする各コマンドの識別処理を一時的に停止するように構成されてなる電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置に関し、特に、ボーレートを設定可能なシリアル通信回路を備えた電子装置に適用して有効な技術に関する。
【背景技術】
【０００２】
例えば、特許文献１には、データのボーレート（例えば７６ｋｂｐｓ）を表すコマンド（例えば８’ｈ８Ｃ）が予め設けられ、当該コマンドに基づくボーレートを用いて送受信間でデータ通信を行う方法が示されている。送信側は、ボーレートを７６ｋｂｐｓに設定したいときはシリアルデータ８’ｈ８Ｃを送信し、受信側は、それを復号ならびに解読・認識することで自身のボーレートを７６ｋｂｐｓに設定する。
【０００３】
また、特許文献２には、シリアル通信におけるシンクフィールドの異常波形を検出するボーレートエラー検出回路が示されている。当該回路は、まず、シリアルデータ中のエッジに応答してエッジ検出信号を生成し、エッジ検出信号に基づいてスタートビットのビット幅を計測し、計測されたビット幅を表す期待値を生成する。次いで、スタートビット以降のエッジ間の幅を順次計測し、期待値との誤差が許容範囲を超える場合に異常とみなす。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２７２５７１号公報
【特許文献２】特開２０１１−３５４７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、ＭＣＵ（Micro Control Unit）等の半導体集積回路装置（ＩＣチップ）を備えた組み込み装置（電子装置）のデバッグ方式として、ＩＣチップ内に設けられたＪＴＡＧ（Joint Test Action Group）インタフェース等を利用する方式が知られている。当該方式を用いると、例えばＴＣＫ，ＴＤＩ，ＴＤＯ，ＴＭＳ等の複数の外部端子を持つＪＴＡＧインタフェースを介して外部の検査装置からＩＣチップ内のプロセッサ等にアクセスすることができ、プロセッサ等の内部状態を適宜確認しながらプログラムデバッグ等を行うことが可能になる。ただし、ＪＴＡＧインタフェースを用いた場合、複数の外部端子が必要とされるため、ＩＣチップ（ならびに電子装置）の回路面積（コスト）が増大する恐れがある。このため、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）等を代表とするシリアル通信回路を半二重方式の１本の通信線を介してこのようなデバッグ機能を実現することが望まれる。
【０００６】
ＵＡＲＴは、非同期でシリアル通信を行う方式であるため、予めＩＣチップ（被検査装置）側と検査装置側とでボーレートを設定後に通信を行う必要がある。すなわち、検査装置と被検査装置は、それぞれ独立した基準クロック生成回路を備えており、単純に接続した状態では互いに周波数等が異なるクロックで動作しており、互いにクロック周波数を認識できる状態にはなっていない。そこで、例えば、特許文献１のようにボーレートを表す共通のコマンドを用いて、検査装置と被検査装置の間で同じボーレートを設定する方式が考えられる。しかしながら、当該方式は、受信側と送信側の基準クロックが共に安定しており、かつ、お互いの基準クロック周波数が事前に判っていることが必要となる。お互いの基準クロック周波数が判らない場合には、最初のボーレート設定用コマンドの送受信が正しく行われない恐れがある。
【０００７】
このような事態を防止するため、シリアルデータ内に予めシンクフィールドを設け、受信側が、送信側から送出されたシンクフィールドのパルス幅を計測することでボーレートを自動調整するような方式が考えられる。特許文献２には、このようなシンクフィールド内に異常波形が有った場合にそれを検出する回路が示されている。当該回路は、基準となるボーレートをスタートビットで測定し、それを期待値としてスタートビット以降に順次計測したエッジ間隔（パルス幅）の良否を判別することで異常波形を検出している。しかしながら、データビットではなく、スタートビットでボーレートを調整しようとすると、例えばシリアルデータの立ち上がり／立ち下がりのエッジの傾きが異なる場合、スタートビット以降のエッジ間幅がスタートビットと異なってしまうので、ボーレートの調整精度が低下する恐れがある。
【０００８】
また、特許文献２では、ＬＩＮ（Local Interconnect Network）等のシリアル通信プロトコルが用いられる。ＬＩＮプロトコルでは、１個のフレームがヘッダとレスポンスによって構成され、当該ヘッダ内に前述したシンクフィールド（８’ｈ５５のデータ）が含まれている。この場合、フレームを伝送する度にシンクフィールドによるボーレート調整が行われることになるが、例えば前述したようなＩＣチップと検査装置との間のデバッグ用通信の過程で、前述したようなボーレート調整を毎回実行することは、通信効率の低下に繋がる。
【０００９】
例えば、ＩＣチップ内に水晶発振回路を代表とする高精度な基準クロック生成回路を搭載すれば、ボーレート調整を一度行うことで送受信間の周波数設定誤差が小さい状態を比較的長時間にわたって維持できるため、通信効率の改善を図れる場合がある。ただし、デバッグコスト等を低減するためには、水晶振動子等の外付け部品が必要とされる水晶発振回路等を用いずに、ＩＣチップ内蔵の比較的低精度な基準クロック生成回路を用いてデバッグ機能を実現することが望ましい。しかしながら、この場合、送受信間の周波数設定誤差が徐々に拡大し、ボーレートの再調整を行わないことには正常な通信状態を持続できなくなる恐れがある。このように、通信効率と向上とボーレート調整の高精度化はトレードオフの関係となる場合があり、そのバランスを考慮したシリアル通信方式の実現が望まれる。
【００１０】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、シリアル通信回路を備えた電子装置において、高精度なボーレート調整を実現することにある。本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される課題を解決するための手段のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１２】
本発明の一実施の形態による電子装置は、通信機能を有する他の装置とシリアル通信を行うものである。当該電子装置は、ボーレート調整回路を含み他の装置とシリアル通信を行うシリアルインタフェース回路と、内部クロック信号を生成するクロック生成回路と、を備え、他の装置に接続された状態で他の装置からのシリアル信号を受信するように構成される。シリアル信号は、１ビットのスタートビットと、これに続く複数ビットのデータビットと、これに続く１ビットのストップビットで構成される。ここで、ボーレート調整回路は、受信したシリアル信号の各ビットの時間幅を内部クロック信号によるカウント動作によって測定し、その平均値を算出すると共に、その中の最大値と最小値を検出する。また、ボーレート調整回路は、当該平均値に基づいて最大許容値と最小許容値を演算し、当該最大値と最小値が当該最大許容値と最小許容値の範囲内であるか否かを判別する。そして、範囲内である場合、ボーレート調整回路は、前述した平均値に対応するボーレートを設定し、当該電子装置は、他の装置との間のシリアル通信を当該設定したボーレートで実行する。
【発明の効果】
【００１３】
前記一つの実施の形態によれば、シリアル通信回路を備えた電子装置において、高精度なボーレート調整が実現可能になる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施の形態による電子装置において、それに含まれる半導体集積回路装置の構成例を示すブロック図である。
【図２】図１の半導体集積回路装置を含めたシリアル通信システム（デバッグシステム）の主要部の構成例を示すブロック図である。
【図３】図２のオンチップデバッグ用制御ブロックが識別するコマンドの一例を示す説明図である。
【図４】図２のシリアル通信システム（デバッグシステム）において、そのシリアル通信データのフォーマットの一例を示す説明図である。
【図５】図２の半導体集積回路装置において、そのボーレート調整回路の詳細な構成例を示すブロック図である。
【図６】図５のボーレート調整回路におけるクロックカウンタおよび平均値演算部の動作例を示す説明図である。
【図７】図６で算出した基準値がエラーとなる場合の一例を示す説明図である。
【図８】（ａ）、（ｂ）は、図５のボーレート調整回路の詳細な動作例を示すものであり、（ａ）はエラーが無い場合の波形図、（ｂ）はエラーがある場合の波形図である。
【図９】図５のボーレート調整回路において、ボーレートの誤差の影響の一例を表す説明図である。
【図１０】図５のボーレート調整回路において、コマンドの誤認識が生じる場合の一例を示す説明図である。
【図１１】図５のボーレート調整回路において、ボーレートの変更を行いたい場合の動作例を示す説明図である。
【図１２】図２のオンチップデバッグ用制御ブロックにおいて、そのオンチップデバッグ回路の主要な動作例を示す状態遷移図である。
【図１３】図２のシリアル通信システム（デバッグシステム）において、外部検査装置から半導体集積回路装置に向けたフラッシュライトアクセスの動作例を示す説明図である。
【図１４】図２のシリアル通信システム（デバッグシステム）において、外部検査装置から半導体集積回路装置に向けたＪＴＡＧアクセスの動作例を示す説明図である。
【図１５】図２のオンチップデバッグ回路が備えるリセット機能の一例を示す概念図である。
【図１６】図１５における各種リセットソースとその効力範囲の一例を示す説明図である。
【図１７】図６の変形例を示す説明図である。
【図１８】図２の半導体集積回路装置を変形した構成例を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１６】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１７】
また、実施の形態の各機能ブロックを構成する回路素子は、特に制限されないが、公知のＣＭＯＳ（相補型ＭＯＳトランジスタ）等の集積回路技術によって、単結晶シリコンのような半導体基板上に形成される。なお、実施の形態では、ＭＩＳＦＥＴ（Metal Insulator Semiconductor Field Effect Transistor）の一例としてＭＯＳＦＥＴ（Metal Oxide Semiconductor Field Effect Transistor）（ＭＯＳトランジスタと略す）を用いるが、ゲート絶縁膜として非酸化膜を除外するものではない。
【００１８】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１９】
《半導体集積回路装置の全体構成》
図１は、本発明の一実施の形態による電子装置において、それに含まれる半導体集積回路装置の構成例を示すブロック図である。図１に示す半導体集積回路装置ＤＥＶ１は、特に限定はされないが、例えば一つの半導体チップ（ＩＣチップ）によって構成されたＭＣＵ（Micro Control Unit）等となっている。ＤＥＶ１は、特に限定はされないが、例えばプリント配線基板上に複数の部品が実装された組み込み装置（電子装置）の一部品等として使用される。図１のＤＥＶ１は、プロセッサユニットＣＰＵ、フラッシュメモリＦＭＥＭ、フラッシュコントローラＦＣＯＮ、アナログ回路ブロックＡＮＬＧ＿ＢＫ、ディジタル回路ブロックＤＧＴＬ＿ＢＫ、オンチップデバッグ用制御ブロックＯＣＤＢＫ、クロック制御回路ブロックＣＬＫＣＴＬ、リセット制御回路ＲＳＴＣＴＬ、モード制御回路ＭＤＣＴＬを備える。ＣＰＵ、ＦＣＯＮ、ＡＮＬＧ＿ＢＫ、ＤＧＴＬ＿ＢＫ、ＯＣＤＢＫ、およびＣＬＫＣＴＬは、内部バスＢＳによって互いに接続される。
【００２０】
フラッシュコントローラＦＣＯＮは、内部バスＢＳを介して行われるフラッシュメモリＦＭＥＭへのアクセス（読み出しアクセス／書き込みアクセス）を適宜制御する。ＦＭＥＭには、例えば所定のプログラムや、これに伴う各種データ等が格納される。プロセッサユニットＣＰＵは、例えば、ＦＣＯＮを介してＦＭＥＭから所定のプログラム等を読み出し、当該プログラム等に基づく所定の演算処理等を実行する。アナログ回路ブロックＡＮＬＧ＿ＢＫは、各種アナログ回路を含み、代表的には、アナログ・ディジタル変換回路や、ディジタル・アナログ変換回路や、各種センサ回路等を含んでいる。ディジタル回路ブロックＤＧＴＬ＿ＢＫは、各種ディジタル回路を含み、代表的には、タイマ回路や、ダイレクトメモリアクセスコントローラや、各種外部シリアル通信制御回路等を含んでいる。なお、ＤＧＴＬ＿ＢＫには、ＣＰＵのプログラム実行時等で用いられるワーク用のＲＡＭ（Random Access Memory）等も含まれている。
【００２１】
クロック制御回路ブロックＣＬＫＣＴＬは、発振回路ＯＳＣ、自励発振回路ＩＲＣ、位相同期回路ＰＬＬ等を備える。ＯＳＣは、例えば水晶発振回路等であり、外部端子ＰＮ＿ＸＴＡＬに接続される水晶振動子（図示せず）等に基づいて、所定の発振周波数を持つ基準クロック信号を生成する。自励発振回路ＩＲＣは、代表的には複数段のインバータ回路で構成されるリングオシレータ回路等であり、ＤＥＶ１の電源投入により外部部品を必要とせずに基準クロック信号を生成する回路である。ＩＲＣは、リングオシレータ回路に限らず、例えば内部抵抗と内部容量を利用して基準クロック信号を生成するＣＲ発振回路等であってもよい。ＰＬＬは、ＯＳＣ又はＩＲＣによって生成された基準クロック信号に基づいて、その逓倍（代表的には整数倍、場合によっては小数点を含む倍率）の内部クロック信号を生成する。当該内部クロック信号は、ＯＣＤＢＫ、ＣＰＵ、ＦＣＯＮ、ＡＮＬＧ＿ＢＫ、ＤＧＴＬ＿ＢＫに適宜供給される。
【００２２】
モード制御回路ＭＤＣＴＬは、外部端子ＰＮ＿ＭＤから入力されるモード切り替え信号に応じてＤＥＶ１全体の動作モードを切り替える。例えば、ＤＥＶ１は、通常動作モードとデバッグ動作モードを備えている。ＤＥＶ１は、通常動作モードでは、ユーザによって定められるＦＭＥＭ内のプログラム等に基づき、各種内部回路を用いて所望の機能を実現する。一方、デバッグ動作モードは、当該通常動作モードで用いるＦＭＥＭ内のプログラム自体を開発（デバッグ）するため等で使用され、ＤＥＶ１は、オンチップデバッグ用制御ブロックＯＣＤＢＫを有効化し、また、ＤＥＶ１の各種内部回路をデバッグ可能な状態に設定する。
【００２３】
オンチップデバッグ用制御ブロックＯＣＤＢＫは、デバッグ用の外部端子ＰＮ＿ＤＢＧを介してＤＥＶ１のデバッグを行うために必要な各種機能を備える。詳細は後述するが、ＯＣＤＢＫは、例えば、ＰＮ＿ＤＢＧからＣＰＵの内部レジスタへのアクセス機能の一部や、ＰＮ＿ＤＢＧからＦＭＥＭへのアクセス機能の一部等を備えている。リセット制御回路ＲＳＴＣＴＬは、外部端子ＰＮ＿ＲＳＴからのリセット信号に応じてＤＥＶ１内の各種内部回路のリセットを行う。また、ＲＳＴＣＴＬは、例えばパワーオンリセット回路を備え、ＤＥＶ１の電源投入を検出してＤＥＶ１内の各種内部回路のリセットを行う。
【００２４】
《シリアル通信システム（デバッグシステム）の主要部の構成》
図２は、図１の半導体集積回路装置を含めたシリアル通信システム（デバッグシステム）の主要部の構成例を示すブロック図である。図２には、図１の半導体集積回路装置ＤＥＶ１におけるデバッグに関連する部分の構成例と、そのデバッグで用いられる外部検査装置ＥＱＴＳＴとが示されている。ＥＱＴＳＴのテスト用外部端子ＰＮ＿ＴＳＴとＤＥＶ１のデバッグ用外部端子ＰＮ＿ＤＢＧは、１本のシリアル配線ＷＲ＿ＤＢＧによって接続され、ＥＱＴＳＴとＤＥＶ１は、ＷＲ＿ＤＢＧを介して半二重双方向シリアル通信を行う。ＷＲ＿ＤＢＧは、ここでは、プルアップ抵抗Ｒｕｐを介して電源電圧ＶＣＣにプルアップされている。
【００２５】
ＥＱＴＳＴは、特に限定はされないが、例えばパーソナルコンピュータ等であり、外部端子ＰＮ＿ＴＳＴと接地電源電圧ＧＮＤの間にソース・ドレイン経路が結合されたＮＭＯＳトランジスタ（オープンドレイン出力バッファ回路）ＭＮｅと、ＰＮ＿ＴＳＴを入力とする入力バッファ回路ＩＢＦｅを備える。ＥＱＴＳＴは、クロック信号ＣＬＫｅに同期してＰＮ＿ＴＳＴを介した送受信動作を行う。例えば、‘Ｈ’レベルを送信する際にはＭＮｅのゲートをオフレベルに駆動し、‘Ｌ’レベルを送信する際にはＭＮｅのゲートをオンレベルに駆動し、受信動作の際には、ＩＢＦｅを介してＰＮ＿ＴＳＴの論理レベルを取り込む。
【００２６】
半導体集積回路装置ＤＥＶ１は、図１にも示したように、オンチップデバッグ用制御ブロックＯＣＤＢＫと、プロセッサユニットＣＰＵと、フラッシュコントローラＦＣＯＮおよびフラッシュメモリＦＭＥＭと、自励発振回路ＩＲＣと、リセット制御回路ＲＳＴＣＴＬを備える。ＩＲＣは、例えば図１に示す位相同期回路ＰＬＬを介して内部クロック信号ＣＬＫｄを生成し、ＲＳＴＣＴＬは、内部リセット信号ＲＳＴｄ＿Ｎを生成する。ＣＰＵは、ＪＴＡＧ（Joint Test Action Group）規格に基づいてＣＰＵの各内部レジスタ等へのアクセスを実現するＪＴＡＧインタフェース回路ＪＴＡＧＩＦを備える。
【００２７】
ＯＣＤＢＫは、ＮＭＯＳトランジスタ（オープンドレイン出力バッファ回路）ＭＮｄと、入力バッファ回路ＩＢＦｄと、シリアルインタフェース回路ＳＩＦと、オンチップデバッグ回路ＯＣＤを備える。ＥＱＴＳＴの場合と同様に、ＭＮｄは、外部端子ＰＮ＿ＤＢＧとＧＮＤの間にソース・ドレイン経路が結合され、送信シリアルデータＤＢＧＯ＿Ｎに応じてゲートが駆動される。また、ＩＢＦｄは、受信動作時にＰＮ＿ＤＢＧのデータを取り込み、受信シリアルデータＤＢＧＩを出力する。シリアルインタフェース回路ＳＩＦは、ボーレート調整回路ＢＲＣＴＬと、シリアル・パラレル変換回路ＳＰＣと、パラレル・シリアル変換回路ＰＳＣを備える。
【００２８】
シリアル・パラレル変換回路ＳＰＣは、受信動作時に、前述した受信シリアルデータＤＢＧＩを受信パラレルデータＤＢＧＰＩに変換する。パラレル・シリアル変換回路ＰＳＣは、送信動作時に、送信パラレルデータＤＢＧＰＯを前述した送信シリアルデータＤＢＧＯ＿Ｎに変換する。ボーレート調整回路ＢＲＣＴＬは、受信シリアルデータＤＢＧＩからボーレートを検出し、その検出結果に基づいてＳＰＣおよびＰＳＣの動作タイミングを設定する。詳細は後述するが、当該動作タイミングは、ここでは、内部クロック信号ＣＬＫｄのカウント数によって設定される。オンチップデバッグ回路ＯＣＤは、受信パラレルデータＤＢＧＰＩの値（コマンド）に応じてデバッグ用内部状態の変更を行う。詳細は後述するが、デバッグ用内部状態の中には、アイドル状態、ＪＴＡＧアクセス状態、フラッシュアクセス状態が含まれる。
【００２９】
図３は、図２のオンチップデバッグ用制御ブロックが識別するコマンドの一例を示す説明図である。図３における各コマンドの詳細内容については以降において順次説明を行うものとし、ここでは、その概要について説明を行う。オンチップデバッグ用制御ブロックＯＣＤＢＫは、受信シリアルデータＤＢＧＩとして、８ビットのヘキサ（１６進数）（８’ｈ）でコマンド「８’ｈ５５」を受信するか、コマンド「８’ｈ６５」に続いてコマンド「８’ｈ５５」を受信すると、ボーレート調整回路ＢＲＣＴＬを用いてボーレート調整を行う。前者はボーレートの微調整を行う際に使用され、後者はボーレートを比較的大きく変更する際に使用される。
【００３０】
ＯＣＤＢＫは、ＤＢＧＩとして、コマンド「８’ｈＥＡ」かコマンド「８’ｈ６Ａ」を受信すると、オンチップデバッグ回路ＯＣＤを介してフラッシュアクセス状態に遷移する。ＯＣＤは、コマンド「８’ｈ６Ａ」によってフラッシュアクセス状態に遷移した際には、以降に入力されるシリアルインタフェース回路ＳＩＦからの所定の回数分の受信パラレルデータＤＢＧＰＩをフラッシュコントローラＦＣＯＮを介してＦＭＥＭに書き込む。一方、コマンド「８’ｈＥＡ」によってフラッシュアクセス状態に遷移した際には、ＦＣＯＮを介して所定の回数分ＦＭＥＭからのデータ読み出しを行い、その各パラレルデータをＤＢＧＰＯとしてＳＩＦに送信する。
【００３１】
ＯＣＤＢＫは、ＤＢＧＩとして８ビットのバイナリ（２進数）（８’ｂ）でコマンド「８’ｂｘｘｘｘｘｘ００」（ｘ：ドントケア）を受信すると、ＯＣＤを介してＪＴＡＧアクセス状態に遷移する。ＯＣＤは、ＪＴＡＧアクセス状態では、シリアルインタフェース回路ＳＩＦからのＤＢＧＰＩをＪＴＡＧ規格に基づくフォーマットにプロトコル変換し、当該変換後の信号をＣＰＵのＪＴＡＧＩＦに送信する。ここでは、ＪＴＡＧＩＦに向けて８ビット分のデータを送信する。また、ＯＣＤは、これに伴いＪＴＡＧＩＦから順次送出されるデータ（ここでは８ビット分）を収集し、それをＤＢＧＰＯとしてＳＩＦに送信する。ＯＣＤＢＫは、ＤＢＧＩとしてコマンド「８’ｈＦＦ」を受信すると、リセット信号を生成する。なお、図３に示すコマンド割り付けは、詳細は後述するが、下位２ビットによって動作の大まかな判別が可能となっている点が特徴となっている。
【００３２】
以上のように、図２のようなデバッグシステムを用いると、外部検査装置ＥＱＴＳＴからシリアル配線ＷＲ＿ＤＢＧを介して半導体集積回路装置ＤＥＶ１内のＣＰＵの各内部レジスタやフラッシュメモリＦＭＥＭ等にアクセスすることが可能になる。これによって、例えばＣＰＵの各内部レジスタ等の状態を確認しながら、ＦＭＥＭ内に格納されるプログラムのデバッグ等を実現することが可能になる。この際に、１本の端子（ＰＮ＿ＤＢＧ）によってデバッグを行う方式となっているため、例えば、ＪＴＡＧインタフェースが持つ複数本の端子によってデバッグを行う方式などと比較して、ＤＥＶ１の小型化、低コスト化等を含めてデバッグコストの低減などが図れる。
【００３３】
また、外部の水晶振動子等を必要としない自励発振回路ＩＲＣからの内部クロック信号ＣＬＫｄを用いてＥＱＴＳＴとＤＥＶ１との間でデバッグ用の通信を行う方式となっているため、これによってもデバッグコストの低減などが図れる。ただし、リングオシレータ等を代表とするＩＲＣは、製造ばらつきや温度・電圧ばらつき等を考慮すると、各半導体チップ間で例えば±１０％程度の誤差が生じる恐れがある。このため、ＥＱＴＳＴとＤＥＶ１との間で確実な通信を行うためには、ＥＱＴＳＴとＤＥＶ１と間で、動作タイミングの誤差がある程度の範囲内に収まっている状態をデバッグ期間にわたって維持するための工夫が必要とされる。その一つとして、特許文献２に示されるように、各フレームにシンクフィールドを設ける方式が考えられるが、この場合、各フレームに存在するシンクフィールドによって通信効率が低下する恐れがある。そこで、本実施の形態による方式を用いることが有益となる。
【００３４】
《シリアル通信データのフォーマット》
図４は、図２のシリアル通信システム（デバッグシステム）において、そのシリアル通信データのフォーマットの一例を示す説明図である。図４に示すように、外部検査装置ＥＱＴＳＴと半導体集積回路装置ＤＥＶ１との間のシリアル配線ＷＲ＿ＤＢＧには、スタートビット（１ビット）ＳＴＲ、ストップビット（１ビット）ＳＴＰ、ならびにその間のデータビット（８ビット）ＤＡＴの計１０ビットを単位（１フィールド）とするシリアル通信データが伝送される。スタートビットＳＴＲは‘Ｌ’レベル、ストップビットＳＴＰは‘Ｈ’レベルであり、いずれも１ビット分の期間を持つ。また、ＤＡＴは、ここでは最下位ビット（ＬＳＢ）から最上位ビット（ＭＳＢ）に向けて順に伝送される。
【００３５】
《ボーレート調整回路の詳細構成》
図５は、図２の半導体集積回路装置において、そのボーレート調整回路の詳細な構成例を示すブロック図である。図５のボーレート調整回路ＢＲＣＴＬは、クロックカウンタＣＫＣＵＮＴ、ビットカウンタＢＩＴＣＵＮＴ、立ち下がりエッジカウンタＦＥＧＣＵＮＴを備える。ＣＫＣＵＮＴ，ＢＩＴＣＵＮＴ，ＦＥＧＣＵＮＴは、図４に示した受信シリアルデータＤＢＧＩの各フィールド毎にカウント動作を行い、フィールドが変わるとカウンタ値をリセットする。なお、各フィールドの検出は、スタートビットＳＴＲおよびストップビットＳＴＰを検出する図示しない回路によって行われる。ＣＫＣＵＮＴは、ＤＢＧＩ内で互い隣接する各エッジの期間（すなわち各‘Ｈ’パルス幅及び各‘Ｌ’パルス幅）を内部クロック信号ＣＬＫｄでカウントする。ＢＩＴＣＵＮＴは、ＤＢＧＩにおけるエッジの数をカウントする。ＦＥＧＣＵＮＴは、ＤＢＧＩにおける立ち下がりエッジの数をカウントする。
【００３６】
図５のボーレート調整回路ＢＲＣＴＬは、更に、平均値演算部ＡＶＧＣ、最大値検出部ＭＡＸＤ、最小値検出部ＭＩＮＤ、許容値判定部ＭＸＭＮＪＧＥ、ボーレート設定可否判定部ＢＲＪＧＥ、ボーレート設定レジスタＲＥＧ＿ＢＲを備える。ＡＶＧＣは、ＣＫＣＵＮＴによる各カウント数の平均値を演算する。ＭＡＸＤはＣＫＣＵＮＴによる各カウント数の最大値を検出ならびに保持し、ＭＩＮＤはＣＫＣＵＮＴによる各カウント数の最小値を検出ならびに保持する。ＭＸＭＮＪＧＥは、ＡＶＧＣの演算結果から最大許容値および最小許容値を演算し、当該各許容値を判定基準としてＭＡＸＤによる最大値とＭＩＮＤによる最小値の良否を判定する。具体的には、ＭＡＸＤによる最大値とＭＩＮＤによる最小値が、ＭＸＭＮＪＧＥによる最大許容値と最小許容値の範囲内に収まっている場合にはＯＫ信号を出力し、範囲外である場合にはＮＧ信号を出力する。
【００３７】
ボーレート設定可否判定部ＢＲＪＧＥは、立ち下がりエッジカウンタＦＥＧＣＵＮＴのカウント数が所定の回数であった場合で、かつ許容値判定部ＭＸＭＮＪＧＥからＯＫ信号が出力された場合には、設定完了信号（イネーブル信号）ＡＤＪＣＭＰを出力する。一方、ＦＥＧＣＵＮＴのカウント数が所定の回数であった場合で、かつＭＸＭＮＪＧＥからＮＧ信号が出力された場合には、エラー信号ＡＤＪＥＲＲを出力する。この際に、詳細は後述するが、ＢＲＪＧＥは、当該ＡＤＪＣＭＰ，ＡＤＪＥＲＲの生成を、シリアル・パラレル変換回路ＳＰＣ（又はオンチップデバッグ回路ＯＣＤ）によるコマンド「８’ｈ５５」／コマンド「８’ｈ６５」の認識結果や、内部リセット信号ＲＳＴｄ＿Ｎの入力状況を反映して行う。ボーレート設定レジスタＲＥＧ＿ＢＲは、ＡＤＪＣＭＰが生成された場合に平均値演算部ＡＶＧＣの演算結果を格納することでボーレートの設定値を更新する。
【００３８】
《ボーレート調整回路の基本動作》
図５のボーレート調整回路ＢＲＣＴＬは、概略的には例えば次のように動作する。図６は、図５のボーレート調整回路におけるクロックカウンタおよび平均値演算部の動作例を示す説明図である。図６に示すように、ボーレート調整回路ＢＲＣＴＬ内のクロックカウンタＣＫＣＵＮＴは、ボーレートの設定精度を上げるために、スタートビットＳＴＲとボーレート調整用コマンド「８’ｈ５５」の計９ビットを内部クロック信号ＣＬＫｄでカウントし、各ビットの時間幅を測定する。平均値演算部ＡＶＧＣは、当該各ビットの時間幅を合計した値を測定した分のビット数（ここでは９）で割ることで平均値を算出し、当該算出結果を基準値とする。なお、特に限定はされないが、除算結果の小数部は四捨五入する。
【００３９】
図６の例では、９ビット分のクロックカウント数は（７＋６＋７＋７＋６＋７＋７＋７＋６）であり、それを９で割った結果を四捨五入することで基準値として「７」が得られる。この場合、ボーレートは、内部クロック信号ＣＬＫｄのクロック周波数（ここでは１２．５ＭＨｚとする）を「７」で割った結果である１．７８６Ｍｂｐｓとなる。なお、特に限定はされないが、ＣＬＫｄのクロック周波数（図１のＩＲＣの基準クロック周波数）は、図１のＯＳＣの基準クロック周波数（例えば２０ＭＨｚ程度）よりもある程度低い方が望ましい。これによって、半導体集積回路ＤＥＶ１のタイミング設計をＯＳＣの基準クロック周波数を勘案して行えば、仮にＣＬＫｄのクロック周波数がばらついた場合でもＤＥＶ１をＣＬＫｄによって問題なく動作させることが可能になる。
【００４０】
図７は、図６で算出した基準値がエラーとなる場合の一例を示す説明図である。図７に示すように、受信シリアルデータＤＢＧＩの１ビット分のクロックサイクル数の最大値が最小値の３倍よりも大きい場合、ボーレート調整回路ＢＲＣＴＬは、基準値によるボーレートの設定を行わずに、許容値判定部ＭＸＭＮＪＧＥによってエラーを検出する。これは、図７に示すように、ＤＢＧＩの各ビットの値をビット期間の中央でのサンプリングによって検出するものとして、‘Ｈ’パルスと‘Ｌ’パルスのパルス幅の比が１／３から３の範囲外では、サンプリングが正しく行われない場合や、ストップビットＳＴＰの検出が困難となる場合が生じるためである。
【００４１】
基準値によるボーレートの設定が行われた場合、当該設定値は、次のボーレート調整が行われる時まで（コマンド「８’ｈ５５」がくるまで）ボーレート設定レジスタＲＥＧ＿ＢＲで保持され、外部検査装置ＥＱＴＳＴとの間のシリアル通信で使用される。一方、ボーレート設定可否判定部ＢＲＪＧＥによってエラー信号ＡＤＪＥＲＲが生成された場合、ここでは、オンチップデバッグ回路ＯＣＤ等が、ＥＱＴＳＴ側に向けたエラー通知信号として、例えば約１０ｍｓ間、送信シリアルデータＤＢＧＯ＿Ｎに‘Ｈ’レベルを出力する。なお、詳細は省略するが、エラー通知信号は、このようなボーレート調整に失敗した時以外にも、ストップビットが正しく検出されなかった時や、送受信を同時に行いデータ同士がぶつかった時等にも生成される。
【００４２】
図８（ａ）、図８（ｂ）は、図５のボーレート調整回路の詳細な動作例を示すものであり、図８（ａ）はエラーが無い場合の波形図、図８（ｂ）はエラーがある場合の波形図である。図８（ａ）、図８（ｂ）に示すように、図５のボーレート調整回路ＢＲＣＴＬは、より詳細には例えば次のように動作する。
【００４３】
［１］外部検査装置ＥＱＴＳＴから半導体集積回路装置ＤＥＶ１へ送信される受信シリアルデータＤＢＧＩの１ビット分のボーレートを測定するために、図５のクロックカウンタＣＫＣＵＮＴは、ＤＢＧＩの最初の立ち下がりエッジを起点として、内部クロック信号ＣＬＫｄによるカウント動作を行う（ｃｙｃｌｅ＿ｃｏｕｎｔ）。また、これと並行して、図５のビットカウンタＢＩＴＣＵＮＴは、ＤＢＧＩのエッジ（立ち上がり／立ち下がり）を検出し、その都度カウントアップを行う（ｂｉｔ＿ｃｏｕｎｔ）。
【００４４】
［２］クロックカウンタＣＫＣＵＮＴによるスタートビット（１ビット）ＳＴＲとデータビット（８ビット）ＤＡＴの計９ビット期間のカウント動作が終わった後、図５の平均値演算部ＡＶＧＣは、当該カウント値をビットカウンタＢＩＴＣＵＮＴのカウント値で除算することで、１ビット当りのクロックカウント値の平均値を演算する。図８（ａ）の例では、９ビット分のクロックカウント値は（８＋７＋８＋７＋８＋８＋７＋８＋８）であり、それをＢＩＴＣＵＮＴのカウント値（ここでは９）で除算し、四捨五入を行った結果、「８」が得られる。
【００４５】
［３］また、図７に示したように、受信シリアルデータＤＢＧＩの‘Ｌ’パルスと‘Ｈ’パルスの比が３：１（または１：３）以上になると、データの正しいサンプリングやストップビットＳＴＰの検出が困難となる恐れがある。そこで、図８（ａ）に示すように、図５の最大値検出部ＭＡＸＤは、クロックカウンタＣＫＣＵＮＴのカウント値とビットカウンタＢＩＴＣＵＮＴによるエッジ検出信号に基づき各ビット毎のＣＫＣＵＮＴのカウント値を認識し、その中の最大値（ここでは「８」）（ｍａｘ）を検出ならびに保持する。同様に、図５の最小値検出部ＭＩＮＤは、ＣＫＣＵＮＴのカウント値とＢＩＴＣＵＮＴによるエッジ検出信号に基づき各ビット毎のＣＫＣＵＮＴのカウント値を認識し、その中の最小値（ここでは「７」）（ｍｉｎ）を検出ならびに保持する。
【００４６】
また、図５の許容値判定部ＭＸＭＮＪＧＥは、図８（ａ）に示すように、平均値演算部ＡＶＧＣで得られた値（ここでは「８」）に基づき、その０．５倍を最小許容値（ここでは「４」）（ｃｙｃｌｅ＿ｃｏｕｎｔ＿ｍｉｎ）、１．５倍を最大許容値（ここでは「Ｃ」）（ｃｙｃｌｅ＿ｃｏｕｎｔ＿ｍａｘ）として演算する。そして、最大値検出部ＭＡＸＤの検出値および最小値検出部ＭＩＮＤの検出値の両方が許容値判定部ＭＸＭＮＪＧＥによる最小許容値と最大許容値の範囲内に収まっている場合には、ＯＫ信号を生成する。一方、ＭＡＸＤの検出値およびＭＩＮＤの検出値の少なくとも一方がＭＸＭＮＪＧＥによる最小許容値と最大許容値の範囲外である場合にはＮＧ信号を生成する。
【００４７】
［４］図５のボーレート設定可否判定部ＢＲＪＧＥは、許容値判定部ＭＸＭＮＪＧＥからＯＫ信号が出力され、かつ、立ち下がりエッジカウンタＦＥＧＣＵＮＴによって５回の立ち下がりエッジが検出された場合に、設定完了信号（イネーブル信号）ＡＤＪＣＭＰを生成する。一方、ＭＸＭＮＪＧＥからＮＧ信号が出力され、かつ、ＦＥＧＣＵＮＴによって５回の立ち下がりエッジが検出された場合に、エラー信号ＡＤＪＥＲＲを生成する。ＦＥＧＣＵＮＴは、受信シリアルデータＤＢＧＩによるコマンドがボーレート調整用コマンド「８’ｈ５５」であることを検証するために設けられる。
【００４８】
図８（ａ）の場合には、ＭＡＸＤの検出値（「８」）とＭＩＮＤの検出値（「７」）が共に最小許容値（「４」）と最大許容値（「Ｃ」）の範囲内に収まっているため、許容値判定部ＭＸＭＮＪＧＥからＯＫ信号が出力され、これを受けて、ボーレート設定可否判定部ＢＲＪＧＥは、設定完了信号（イネーブル信号）ＡＤＪＣＭＰを生成する。一方、図８（ｂ）の場合には、ＭＩＮＤの検出値（「３」）が最小許容値（「４」）範囲外であるため、ＭＸＭＮＪＧＥからＮＧ信号が出力され、これを受けて、ＢＲＪＧＥはＡＤＪＣＭＰを生成せずに、エラー信号ＡＤＪＥＲＲを生成する。なお、ＡＤＪＣＭＰ，ＡＤＪＥＲＲの生成は、実際には、シリアル・パラレル変換回路ＳＰＣによるコマンド識別結果や、内部リセット信号ＲＳＴｄ＿Ｎの入力状況を反映して行われる。
【００４９】
［５］図５のボーレート設定レジスタＲＥＧ＿ＢＲは、ボーレート設定可否判定部ＢＲＪＧＥから設定完了信号（イネーブル信号）ＡＤＪＣＭＰが生成された際に、平均値演算部ＡＶＧＣの演算結果（ここでは「８」）をラッチする。
【００５０】
以上のように、複数ビットの平均値によってボーレートを検出すると共に、各ビットが当該平均値の０．５倍〜１．５倍の範囲内に収まっていることを検証することで、高精度なボーレート調整が可能になり、また併せて波形品質の検証を行うことが可能になる。これによって信頼性が高いシリアル通信が実現可能になる。なお、ここでは、０．５倍〜１．５倍の範囲としたが、必ずしもこの範囲に限定されるものではなく、ある程度のマージンを考慮して例えば０．６倍〜１．４倍等とすることも可能である。
【００５１】
《信号の送受信動作》
次に、ボーレート調整回路ＢＲＣＴＬによるボーレート設定を用いた信号の送受信動作について説明する。図５に示すように、ボーレート設定レジスタＲＥＧ＿ＢＲで保持されるボーレートは、シリアル・パラレル変換回路ＳＰＣおよびパラレル・シリアル変換回路ＰＳＣに入力される。受信動作の際、ＳＰＣは、このボーレートによって受信シリアルデータＤＢＧＩをサンプリングしながら受信パラレルデータＤＢＧＰＩに変換し、オンチップデバッグ回路ＯＣＤに送出する。具体的には、ＳＰＣは、内部に備えたカウンタを用いて、そのカウンタ値がＲＥＧ＿ＢＲのボーレート（基準値）に達するまで内部クロック信号ＣＬＫｄをカウントし、当該カウント動作を、スタートビットＳＴＲ、データビットＤＡＴ、ストップビットＳＴＰの計１０ビット分行う。そして、この１０ビット分の各カウント動作毎に、カウント値が基準値の中央の値になった時点でサンプリングを行うことで各ビットの値を各ビット期間の中央の位置で判別する。
【００５２】
一方、送信動作の際、パラレル・シリアル変換回路ＰＳＣは、オンチップデバッグ回路ＯＣＤからの送信パラレルデータＤＢＧＰＯを取り込み、それをボーレート設定レジスタＲＥＧ＿ＢＲで保持されるボーレートによって送信シリアルデータＤＢＧＯ＿Ｎに変換する。具体的には、ＰＳＣは、内部に備えたカウンタを用いて、そのカウンタ値がＲＥＧ＿ＢＲのボーレート（基準値）に達するまで内部クロック信号ＣＬＫｄをカウントし、当該カウント動作を、スタートビットＳＴＲ、データビットＤＡＴ、ストップビットＳＴＰの計１０ビット分行う。そして、この１０ビット分の各カウント動作毎に、ＤＢＧＰＯの各ビットを１ビットずつ順次送出する。
【００５３】
《ボーレート調整回路のコマンド別動作》
＜ボーレート初期設定（リセット後のコマンド「８’ｈ５５」）＞
図５において、内部リセット信号ＲＳＴｄ＿Ｎが入力されると、ボーレート調整回路ＢＲＣＴＬ（具体的にはボーレート設定可否判定部ＢＲＪＧＥ）はボーレート設定用動作モードに遷移する。図２の外部検査装置ＥＱＴＳＴは、ＢＲＣＴＬ（ＢＲＪＧＥ）がボーレート設定用動作モードに遷移したのち、受信シリアルデータＤＢＧＩとして、ボーレート調整用コマンド「８’ｈ５５」を出力する。初期状態では、ＥＱＴＳＴと半導体集積回路装置ＤＥＶ１は動作周波数を互いに認識できず、コマンドの送受信も困難な状態となっている。このため、リセット後にはコマンド「８’ｈ５５」が発行されるというルールのもとで、ＢＲＣＴＬは、図５〜図８で述べたようにして、当該リセット後のコマンド「８’ｈ５５」からボーレートを検出し、許容値判定部ＭＸＭＮＪＧＥによってＯＫ信号が出力された場合に、ボーレート設定レジスタＲＥＧ＿ＢＲの設定を行う。なお、この際に、ＢＲＣＴＬ（ＢＲＪＧＥ）は、初期状態ではコマンド認識が困難であるため、図５に示したシリアル・パラレル変換回路ＳＰＣからのコマンド認識信号を無視して、ＲＳＴｄ＿Ｎのみでボーレート設定用動作モードに遷移する。
【００５４】
＜ボーレート補正（単独のコマンド「８’ｈ５５」）＞
図９は、図５のボーレート調整回路において、ボーレートの誤差の影響の一例を表す説明図である。図９のケース１に示すように、‘Ｈ’パルスと‘Ｌ’パルスの幅の比率を１：１として、ボーレートの誤差が５％未満であれば、データを正しくシリアル・パラレル変換することができる。許容される誤差が５％である理由のひとつは、図９のケース３に示すように、ストップビットＳＴＰが正しく検出できなくなる恐れがあるためである。ビットの検出をビット期間の中央でサンプリングするため、スタートビットＳＴＲの立ち下がりからストップビットＳＴＰのサンプリングまでは９．５ビット分の期間がある。ここで、送信したいデータのボーレートが設定されているボーレートと−５％の誤差があったとすると、ストップビットＳＴＰを検出するときには誤差が蓄積されて１ビット分の５０％のずれが生じ、ＳＴＰが正確に検出できなくなってしまう恐れがある。
【００５５】
また、許容される誤差が５％であるもうひとつの理由は、図９のケース２に示すように、正しいシリアル・パラレル変換が困難となる恐れがあるためである。送信したいデータのボーレートが設定されているボーレートと＋５％の誤差があった場合、シリアル・パラレル変換が正しく行われずに、異なったデータに変換されてしまう恐れがある。図９のケース２の例では、本来「８’ｈ５５」である筈のデータが「８’ｈＡＤ」に変換されている。そこで、このような５％以上の誤差が生じないように、受信シリアルデータＤＢＧＩが入力される毎にボーレート調整回路ＢＲＣＴＬを動作させ、ＤＢＧＩの値がコマンド「８’ｈ５５」であった場合にはボーレート補正を行う仕組みを備えている。すなわち、図５の内部クロック信号ＣＬＫｄの周波数は、例えば、温度変動や電圧変動等に応じて経時的に誤差が拡大していく恐れがある。このため、誤差が５％以上となる前に外部検査装置ＥＱＴＳＴから半導体集積回路装置ＤＥＶ１に向けて定期的にコマンド「８’ｈ５５」を単独で発行することでボーレート補正を行えるようにする仕組みを備えている。
【００５６】
この際には、図５〜図８で述べたようにしてボーレートの補正が行われるが、前述した「＜ボーレート初期設定＞」の場合と異なり、ストップビットＳＴＰを検出したのちに事後的にコマンドが「８’ｈ５５」であるか否かを判別する必要がある。このため、図５において、ボーレート調整回路ＢＲＣＴＬ（具体的にはＢＲＪＧＥ）は、ＳＰＣ（又はＯＣＤ）を介してコマンド識別信号（「８’ｈ５５」）が発行され、かつＦＥＧＣＵＮＴによって５回の立ち下がりエッジが検出され、かつ、ＭＸＭＮＪＧＥからＯＫ信号が出力された際に、ボーレート設定レジスタＲＥＧ＿ＢＲの更新を行う。
【００５７】
この際に、仮に、立ち下がりエッジカウンタＦＥＧＣＵＮＴのみによってコマンド「８’ｈ５５」を識別しようとすると、例えば、図１０に示すようなデータを受信した際に、コマンド「８’ｈ５５」の誤認識が生じる恐れがある。図１０は、図５のボーレート調整回路において、コマンドの誤認識が生じる場合の一例を示す説明図である。図１０の例では、半導体集積回路装置ＤＥＶ１が、「８’ｈ３３」のデータを連続して２回受信している。この２フィールド分の「８’ｈ３３」のデータは、あたかも１フィールド分の「８’ｈ５５」と同じように見えてしまう場合がある。この場合、ＦＥＧＣＵＮＴが５回の立ち下がりの検出に伴いコマンド「８’ｈ５５」であると誤解釈してしまうことにより、誤ったボーレート補正が行われる恐れがある。
【００５８】
そこで、ここでは、シリアル・パラレル変換回路ＳＰＣ（又はオンチップデバッグ回路ＯＣＤ）によるコマンド識別結果を併用して用いている。ＳＰＣは、それ以前にボーレート設定レジスタＲＥＧ＿ＢＲによって保持されているボーレートを用いたサンプリングによってコマンド識別を行うため、図１０のようなコマンドの誤認識を防止できる。なお、立ち下がりエッジカウンタＦＥＧＣＵＮＴを設けない場合には、前述した「＜ボーレート初期設定＞」の場合のように、ＳＰＣの正常の動作が困難となる際に、コマンド「８’ｈ５５」の検証が不十分となる恐れがあるため、この観点でＦＥＧＣＵＮＴを設けることが有益となる。
【００５９】
なお、内部クロック信号ＣＬＫｄの周波数誤差が徐々に拡大していくような場合には、前述したように、定期的なボーレート補正を行うことで、正常なシリアル通信を維持できるが、何らかの原因でＣＬＫｄの周波数誤差が急激に拡大したような場合にはボーレート補正が困難となり得る。仮に周波数偏移が急減に＋５％を超えた場合には、図９に示したように、ストップビットＳＴＰを正しく認識できないのでエラーを検出することができる。また、周波数偏移が急減に−５％を超えた場合には、シリアル・パラレル変換回路ＳＰＣで「８’ｈ５５」ではないデータとして変換されるので、ボーレートは補正されない。
【００６０】
＜ボーレート変更（コマンド「８’ｈ６５」→コマンド「８’ｈ５５」）＞
図１１は、図５のボーレート調整回路において、ボーレートの変更を行いたい場合の動作例を示す説明図である。例えば、外部検査装置ＥＱＴＳＴ側は、現在設定されているボーレートとは異なるボーレートでデータを送信したい場合がある。「＜ボーレート補正＞」で述べたように、５％以上のボーレート変更を行いたい場合には、単独のコマンド「８’ｈ５５」でボーレートを変更することはコマンド自体の認識ができなくなるため困難となる。
【００６１】
このような場合、図１１に示すように、ＥＱＴＳＴから、ボーレートを調整する前提であるコマンド「８’ｈ６５」を変更前のボーレートで送信した後、ボーレート調整用コマンド「８’ｈ５５」を変更後のボーレートで送信する。そうすると、ボーレート調整回路ＢＲＣＴＬ（具体的にはボーレート設定可否判定部ＢＲＪＧＥ）は、シリアル・パラレル変換回路ＳＰＣ（又はＯＣＤ）を介してコマンド「８’ｈ６５」を認識したのち、前述した「＜ボーレート初期設定＞」における内部リセット信号ＲＳＴｄ＿Ｎの場合と同様に、ボーレート設定用動作モードに遷移する。以降、前述した「＜ボーレート初期設定＞」の場合と同様にしてボーレートの変更が行われる。
【００６２】
以上のように、３通りのボーレート設定方式を設けることで、外部検査装置ＥＱＴＳＴと半導体集積回路装置ＤＥＶ１との間で、任意なボーレートを高精度に設定することが可能になる。また、ＤＥＶ１において低コストな発振回路を用いた場合でも、ＥＱＴＳＴとＤＥＶ１との間で正常なシリアル通信を行える状態を十分な期間にわたって維持することが可能になる。この際には、特許文献２に示されるように、各フレームにシンクフィールドを設けてボーレート補正を行う方式ではなく、コマンド「８’ｈ５５」を任意のタイミングで発行することでボーレート補正を行う方式を用いているため、通信効率の向上が図れる。
【００６３】
《オンチップデバッグ回路の詳細》
図１２は、図２のオンチップデバッグ用制御ブロックにおいて、そのオンチップデバッグ回路の主要な動作例を示す状態遷移図である。図１２に示すように、オンチップデバッグ回路ＯＣＤは、アイドル状態ＩＤＬＥと、フラッシュアクセス状態ＦＡＣＣＳと、ＪＴＡＧアクセス状態ＪＡＣＣＳを備えている。ＦＡＣＣＳは、更に、フラッシュコントローラライト状態ＦＣＯＮ＿ＷＴと、フラッシュコントローラリード状態ＦＣＯＮ＿ＲＤを備える。ＪＡＣＣＳは、更に、５個のＪＴＡＧサブアクセス状態ＪＴＡＧ＿０〜ＪＴＡＧ＿４を備える。
【００６４】
図３等でも述べたように、オンチップデバッグ回路ＯＣＤは、アイドル状態ＩＤＬＥにおいて、コマンド「８’ｈ５５」又は「８’ｈ６５」が入力された場合やコマンド「８’ｈＦＦ」が入力された場合は、当該各コマンドはボーレート調整用のコマンドやリセット用コマンドであるためＩＤＬＥを維持する。また、ＯＣＤは、ＩＤＬＥにおいて、コマンド「８’ｈ６Ａ」が入力された場合はフラッシュコントローラライト状態ＦＣＯＮ＿ＷＴに遷移し、コマンド「８’ｈＥＡ」が入力された場合はフラッシュコントローラリード状態ＦＣＯＮ＿ＲＤに遷移する。ＦＣＯＮ＿ＷＴ，ＦＣＯＮ＿ＲＤでは、図２で述べたように、ＯＣＤを介してシリアルインタフェースＳＩＦとフラッシュコントローラＦＣＯＮ（フラッシュメモリＦＭＥＭ）との間のデータ送受信が行われる。図１２において、ＯＣＤは、ＦＣＯＮ＿ＷＴ又はＦＣＯＮ＿ＲＤの期間で予め定められた所定の回数のデータ送受信を行ったのち、アイドル状態ＩＤＬＥに戻る。
【００６５】
また、オンチップデバッグ回路ＯＣＤは、アイドル状態ＩＤＬＥにおいて、コマンド「８’ｂｘｘｘｘｘｘ００」が入力された場合、ＪＴＡＧサブアクセス状態ＪＴＡＧ＿０に遷移する。その後、コマンド「８’ｂｘｘｘｘｘｘ００」が順次入力される毎に、ＪＴＡＧ＿１→ＪＴＡＧ＿２→ＪＴＡＧ＿３と遷移し、その後、自動的にＪＴＡＧ＿４に遷移したのちアイドル状態ＩＤＬＥに戻る。このＪＴＡＧ＿０〜ＪＴＡＧ＿４では、ボーレート調整用のコマンド（「８’ｈ５５」又は「８’ｈ６５」）が受け付け可能となっており、ＪＴＡＧアクセスを行いながら前述したボーレート補正やボーレート変更を行うことも可能となっている。なお、ＪＴＡＧアクセス状態ＪＡＣＣＳでは、図２で述べたように、ＯＣＤを介してシリアルインタフェースＳＩＦとＣＰＵ内のＪＴＡＧＩＦとの間のデータ送受信が行われる。
【００６６】
《フラッシュアクセス状態の詳細》
図１２等で述べたように、外部検査装置ＥＱＴＳＴから半導体集積回路装置ＤＥＶ１へコマンド「８’ｈ６Ａ」を送信すると、ＤＥＶ１がフラッシュコントローラライト状態ＦＣＯＮ＿ＷＴに遷移し、ＥＱＴＳＴからフラッシュコントローラＦＣＯＮの内部レジスタへ直接ライトアクセスが可能になる。また、ＥＱＴＳＴからＤＥＶ１へコマンド「８’ｈＥＡ」を送信すると、ＤＥＶ１がフラッシュコントローラリード状態ＦＣＯＮ＿ＲＤに遷移し、ＥＱＴＳＴからＦＣＯＮの内部レジスタへ直接リードアクセスが可能になる。ＦＣＯＮへの処理は、転送データ数が別途設定した所定の回数に達することで完了する。ＦＣＯＮへの処理が完了すると、ＤＥＶ１は、自動的にこの状態から抜け出し、ボーレートの調整が可能なアイドル状態ＩＤＬＥに戻る。
【００６７】
このように、フラッシュアクセス状態ＦＡＣＣＳでは、外部検査装置ＥＱＴＳＴから半導体集積回路装置ＤＥＶ１内部のＪＴＡＧ等を経由せずにフラッシュコントローラＦＣＯＮの内部レジスタに直接アクセスできるために、高速にフラッシュメモリＦＭＥＭのライトおよびリードを行うことが可能になる。これによって、デバッグ効率の向上等が図れる。
【００６８】
図１３は、図２のシリアル通信システム（デバッグシステム）において、外部検査装置から半導体集積回路装置に向けたフラッシュライトアクセスの動作例を示す説明図である。図３等で述べたように、コマンド「８’ｈ５５」と「８’ｈ６５」はボーレート調整用、ボーレート調整用の前提コマンドと準備されているため、当該コマンドと同じ値のデータをフラッシュメモリＦＭＥＭにライトすることが困難となる恐れがある。そこで、図１２等で述べたように、フラッシュアクセス状態ＦＡＣＣＳを設け、フラッシュアクセスをこの状態の期間で行うことで、ボーレートを調整できないかわりに、図１３に示すように、「８’ｈ５５」と「８’ｈ６５」（図１３の例では「８’ｈ５５」）をデータとして扱うことが可能になる。
【００６９】
《ＪＴＡＧアクセス状態の詳細》
図１４は、図２のシリアル通信システム（デバッグシステム）において、外部検査装置から半導体集積回路装置に向けたＪＴＡＧアクセスの動作例を示す説明図である。図１２等に示したように、外部検査装置ＥＱＴＳＴから半導体集積回路装置ＤＥＶ１へコマンド「８’ｂｘｘｘｘｘｘ００」を送信することで、ＤＥＶ１はＪＴＡＧアクセス状態ＪＡＣＣＳに遷移する。ＪＴＡＧアクセス状態では、図１４に示すように、ＥＱＴＳＴからＤＥＶ１へ送信する１フィールドの８ビット情報の中で、下位２ビットをコマンドとして０に設定し、残りの６ビットにＴＣＫビット，ＴＭＳビット，ＴＤＩビットを２組割り当てる。そして、ＥＱＴＳＴからＤＥＶ１に向けて４フィールド分の送信を行うことで、計８ビットのデータ（ＴＤＩ）をＣＰＵのＪＴＡＧＩＦに向けて送出する。
【００７０】
この際に、オンチップデバッグ回路ＯＣＤは、この４フィールドに伴う８個（Ｐｈａｓｅ０〜Ｐｈａｓｅ７）のＴＣＫビットに基づき、８サイクル分のＴＣＫ信号を生成し、併せて８個のＴＭＳビットおよびＴＤＩビットに基づき、８サイクル分のＴＭＳ信号およびＴＤＩ信号を生成する。ここでは、ＴＣＫビットが‘０’の場合にはＴＣＫ信号として立ち上がりエッジを生成し、ＴＣＫビットが‘１’の場合にはＴＣＫ信号として‘Ｈ’レベル信号を生成する。そして、ＯＣＤは、この８サイクル分のＴＣＫ信号、ＴＭＳ信号、ＴＤＩ信号をＣＰＵのＪＴＡＧＩＦに向けて順次送出する。
【００７１】
ＣＰＵのＪＴＡＧＩＦは、この８サイクル分のＴＤＩ信号に応じて８ビット分のＴＤＯ信号を送出する。図２において、オンチップデバッグ回路ＯＣＤは、この８ビット分のＴＤＯ信号を収集し、送信パラレルデータＤＢＧＰＯとしてシリアルインタフェース回路ＳＩＦに送信する。これを受けて、ＳＩＦは、パラレル・シリアル変換回路ＰＳＣを用いて当該ＤＢＧＰＯを送信シリアルデータＤＢＧＯ＿Ｎに変換し、半導体集積回路装置ＤＥＶ１は、図１４に示すように、外部検査装置ＥＱＴＳＴに向けて当該８ビットのＴＤＯ信号を含む１フィールドのシリアルデータを送出する。なお、図１４のＰｈａｓｅ０，１は図１２のＪＴＡＧ＿０に対応し、以降同様にして、図１４のＰｈａｓｅ６，７は図１２のＪＴＡＧ＿３に対応し、図１４のＤＥＶ１からＥＱＴＳＴへの送信は図１２のＪＴＡＧ＿４に対応する。また、図１２から判るように、図１４の動作の合間でボーレート補正又はボーレート変更を適宜行うことも可能となっている。
【００７２】
このようなＪＴＡＧアクセス状態を設けることで、ＪＴＡＧアクセスを効率的に行うことが可能となり、その結果、デバッグ効率の向上等が図れる。すなわち、図３に示したコマンド割り付けの工夫によって、半導体集積回路装置ＤＥＶ１は、１フィールド内の下位２ビットのみでＪＴＡＧアクセス命令と判別することができる。このため、図１４に示したように、外部検査装置ＥＱＴＳＴからＤＥＶ１に向けて１フィールド分のシリアルデータを送信することで、残りの６ビットを活用して２サイクル分のＪＴＡＧ信号（ＴＣＫ，ＴＭＳ，ＴＤＩ）の情報を通知することが可能になる。一方、このようなコマンド割り付けの工夫を行わない場合には、例えば、別途１フィールド分のシリアルデータを用いてＪＴＡＧアクセス状態に一旦遷移し、この状態に遷移したのちにＪＴＡＧ信号の情報を順次通知するような処理が必要となり、フィールド数が増加する。
【００７３】
《リセット機能の詳細》
図１５は、図２のオンチップデバッグ回路が備えるリセット機能の一例を示す概念図である。図１５には、図２の半導体集積回路装置ＤＥＶ１全体のリセット経路が示されている。図１６は、図１５における各種リセットソースとその効力範囲の一例を示す説明図である。図１５に示すように、ＤＥＶ１は、そのリセット経路として、リセット制御回路ＲＳＴＣＴＬから後段に向けて順に、オンチップデバッグ回路ＯＣＤ、ウォッチドッグタイマ回路ＷＤＴ、フラッシュコントローラＦＣＯＮ、プロセッサユニットＣＰＵ、各種周辺回路ＰＥＲＩを備えている。ＷＤＴは、所定の時間が経過した際に後段に向けて強制的にリセット信号を生成し、加えてリセット信号が入力された際にも後段に向けてリセット信号を生成する。ＰＥＲＩは、特に限定はされないが、例えば図１のアナログ回路ブロックＡＮＬＧ＿ＢＫやディジタル回路ブロックＤＧＴＬ＿ＢＫ等に該当する。
【００７４】
リセット制御回路ＲＳＴＣＴＬは、外部端子ＰＮ＿ＲＳＴからリセット信号ＲＳＴが入力された場合か、又はパワーオンリセット回路ＰＯＲからリセット信号が生成された場合に内部リセット信号ＲＳＴｄ＿Ｎを出力する。ここでは、負論理のリセット信号を前提として、ＲＳＴＣＴＬは、アンド演算を用いてＲＳＴｄ＿Ｎを出力している。ＰＯＲは、電源投入を検出した際にリセット信号を生成する。オンチップデバッグ回路ＯＣＤは、ＲＳＴＣＴＬからＲＳＴｄ＿Ｎが入力された場合か、又は図３等に示したように外部検査装置ＥＱＴＳＴからコマンド「８’ｈＦＦ」が入力された場合に後段に向けてリセット信号を生成する。
【００７５】
例えば、デバッグを行う過程で、半導体集積回路装置ＤＥＶ１全体をリセットしたいような場合がある。このような場合、通常、ＪＴＡＧインタフェースがリセット機能を備えているため、外部検査装置ＥＱＴＳＴからＣＰＵ内のＪＴＡＧＩＦに向けて所定のアクセスを行うことが考えられる。しかしながら、この場合、図１６に示すように、当該リセットの効力範囲は、ＣＰＵ並びにその後段の各種周辺回路ＰＥＲＩとなり、フラッシュコントローラＦＣＯＮ等を含めたＤＥＶ１全体には及ばない。一方、ＤＥＶ１全体をリセットするため、外部端子ＰＮ＿ＲＳＴにリセット信号ＲＳＴを印加することが考えられる。この場合、例えば、ＰＮ＿ＲＳＴの直近に接続されたリセットボタン等を手動で押すような作業が必要となるため、特に、ＤＥＶ１とＥＱＴＳＴの距離が離れた状態でデバッグを行うような場合にデバッグ効率が低下する恐れがある。
【００７６】
そこで、図１５に示すように、オンチップデバッグ回路ＯＣＤがコマンド「８’ｈＦＦ」によるリセット機能を備えることで、外部からのリセット信号ＲＳＴの場合とほぼ同様に、ウォッチドッグタイマ回路ＷＤＴやフラッシュコントローラＦＣＯＮ等を含めて半導体集積回路装置ＤＥＶ１のほぼ全体をリセットすることが可能になる。この際には、外部検査装置ＥＱＴＳＴからＤＥＶ１に向けてコマンドを送信すればよいため、ユーザにとっての利便性が高く、デバッグ効率の向上等が図れる。
【００７７】
以上、本実施の形態の電子装置を用いることで、代表的には、高精度なボーレート調整を実現することが可能になる。また、水晶振動子等の外部部品が特に必要とされず、１本のシリアル配線を用いてデバッグを行えるため、デバッグコストの低減が図れる。さらに、デバッグに際して、シリアル通信の際の通信効率の向上を含めてデバッグ効率の向上が図れる。なお、ここでは、デバッグシステムを例として説明を行ったが、勿論、これに限定されるものではなく、一般的なシリアル通信システム（ＵＡＲＴ）に対して同様に適用することが可能である。この場合においても同様に、高精度なボーレート調整の実現や、シリアル通信システムのコスト低減や、シリアル通信システムの通信効率の向上などといった効果が得られる。
【００７８】
《各種変形例》
＜ボーレート調整回路の動作＞
これまでの説明では、図６等に示したように、スタートビット（１ビット）ＳＴＲとそれに続くデータビット（８ビット）ＤＡＴによる計９ビットの平均値を用いてボーレートの算出を行ったが、特にこれに限定されるものではなく、計２ビット以上の平均値であればよい。例えば、１ビットのＳＴＲとそれに続く７ビットのＤＡＴによる計８ビットの平均値を用いると、シフトレジスタ等によって除算処理を実現できるため、計９ビットを用いる場合と比較して除算処理の容易化や除算回路の面積低減等が図れる。この観点で、計４ビットや計２ビット等を用いてもよい。ただし、ビット数は多い方がボーレートの検出精度が高まるため、前述した除算処理も勘案すると、特に計９ビットか計８ビットとすることが望ましい。
【００７９】
＜コマンド割り付け＞
図１７は、図６の変形例を示す説明図である。図１７に示すように、ボーレート調整用のコマンドは、必ずしも「８’ｈ５５」に限定されるものではなく、図１７に示すようにコマンド「８’ｈ３３」や、あるいはその他の値であってもよい。例えば、図１７の例のように、コマンド「８’ｈ３３」の場合には、予めボーレート調整回路ＢＲＣＴＬ（例えば図５のビットカウンタＢＩＴＣＵＮＴ）に、スタートビットＳＴＲ以降のエッジ間のクロックサイクル数が「２」である旨を記憶させておけばよい。ただし、より多くのビット数の平均値を算出することで高精度化を図る観点からは、「８’ｈ５５」であることが望ましい。
【００８０】
また、その他のコマンド割り付けも、特に図３の値に限定されるものではなく、適宜、任意の値に変更することが可能である。ただし、ＪＴＡＧアクセスについては、前述したように、８ビット中の一部のビットによって特定可能となるようにコマンド割り付けを行うことが望ましい。また、ここでは、オンチップデバッグ回路ＯＣＤを介してダイレクトアクセスが可能なモジュールとしてフラッシュコントローラＦＣＯＮやＪＴＡＧを示したが、更にその他のモジュールを追加することも可能である。この場合、当該その他のモジュールに対しても同様にして適宜コマンド割り付けを行い、図１２等に示したような内部状態を設定すればよい。
【００８１】
＜半導体集積回路装置の構成＞
図１８は、図２の半導体集積回路装置を変形した構成例を示すブロック図である。図１８に示す半導体集積回路装置ＤＥＶ２は、図２のＤＥＶ１と比較して、ＤＥＶ２内に発振回路やリセット制御回路を備えずに、外部に発振回路ＯＳＣ’やリセット制御回路ＲＳＴＣＴＬ’を備えた構成となっている。すなわち、例えば、シリアル通信システム内において、半導体集積回路装置ＤＥＶ２の外部に予めクロック信号ＣＬＫを生成する回路やリセット信号ＲＳＴを生成する回路等が備わっている場合、当該ＣＬＫ，ＲＳＴを利用してシリアル通信を行ってもよい。
【００８２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【００８３】
本実施の形態による電子装置は、特に、精度の低い発振器を用いたＭＣＵ（Micro Control Unit）等の半導体集積回路装置を含んだ製品に適用して有益なものであり、これに限らず、非同期シリアル通信機能を備えた製品全般に対して広く適用可能である。具体的には、例えば、ＪＴＡＧ機能やフラッシュメモリ等を搭載した半導体集積回路装置、ならびに当該半導体集積回路装置を備えた通信装置等が挙げられる。
【符号の説明】
【００８４】
ＡＤＪＣＭＰ  設定完了信号（イネーブル信号）
ＡＤＪＥＲＲ  エラー信号
ＡＮＬＧ＿ＢＫ  アナログ回路ブロック
ＡＶＧＣ  平均値演算部
ＢＩＴＣＵＮＴ  ビットカウンタ
ＢＲＣＴＬ  ボーレート調整回路
ＢＲＪＧＥ  ボーレート設定可否判定部
ＢＳ  内部バス
ＣＫＣＵＮＴ  クロックカウンタ
ＣＬＫ  クロック信号
ＣＬＫＣＴＬ  クロック制御回路ブロック
ＣＰＵ  プロセッサユニット
ＤＡＴ  データビット
ＤＢＧＩ  受信シリアルデータ
ＤＢＧＯ  送信シリアルデータ
ＤＢＧＰＩ  受信パラレルデータ
ＤＢＧＰＯ  送信パラレルデータ
ＤＥＶ  半導体集積回路装置
ＤＧＴＬ＿ＢＫ  ディジタル回路ブロック
ＥＱＴＳＴ  外部検査装置
ＦＣＯＮ  フラッシュコントローラ
ＦＥＧＣＵＮＴ  立ち下がりエッジカウンタ
ＦＭＥＭ  フラッシュメモリ
ＧＮＤ  接地電源電圧
ＩＢＦ  入力バッファ回路
ＩＲＣ  自励発振回路
ＪＴＡＧＩＦ  ＪＴＡＧインタフェース回路
ＭＡＸＤ  最大値検出部
ＭＤＣＴＬ  モード制御回路
ＭＩＮＤ  最小値検出部
ＭＮ  ＮＭＯＳトランジスタ
ＭＸＭＮＪＧＥ  許容値判定部
ＯＣＤ  オンチップデバッグ回路
ＯＣＤＢＫ  オンチップデバッグ用制御ブロック
ＯＳＣ  発振回路
ＰＥＲＩ  各種周辺回路
ＰＬＬ  位相同期回路
ＰＮ  外部端子
ＰＯＲ  パワーオンリセット回路
ＰＳＣ  パラレル・シリアル変換回路
Ｒ  抵抗
ＲＥＧ＿ＢＲ  ボーレート設定レジスタ
ＲＳＴＣＴＬ  リセット制御回路
ＳＩＦ  シリアルインタフェース回路
ＳＰＣ  シリアル・パラレル変換回路
ＳＴＰ  ストップビット
ＳＴＲ  スタートビット
ＶＣＣ  電源電圧
ＷＤＴ  ウォッチドッグタイマ回路
ＷＲ＿ＤＢＧ  シリアル配線
【図１】
0005891758.tif 000002
【図２】
0005891758.tif 000003
【図３】
0005891758.tif 000004
【図４】
0005891758.tif 000005
【図５】
0005891758.tif 000006
【図６】
0005891758.tif 000007
【図７】
0005891758.tif 000008
【図８】
0005891758.tif 000009
【図９】
0005891758.tif 000010
【図１０】
0005891758.tif 000011
【図１１】
0005891758.tif 000012
【図１２】
0005891758.tif 000013
【図１３】
0005891758.tif 000014
【図１４】
0005891758.tif 000015
【図１５】
0005891758.tif 000016
【図１６】
0005891758.tif 000017
【図１７】
0005891758.tif 000018
【図１８】
0005891758.tif 000019