(57)【要約】【課題】ボーレートを誤差の許容範囲内に維持可能にすると共に、時間の計測に用いるクロックパルスの周波数を低くする。【解決手段】周期が一定のクロックパルスを発生するクロックジェネレータ３３と、通信ライン１３上に現れた通信信号の所定区間のタイミングを検出するエッジ検出回路４１と、前記所定区間の長さを計数して計数結果を２進数の時間計測値として出力する時間計測タイマ４３と、前記時間計測値の２進数を前記所定区間のビット構成に応じて上位ビット部と下位ビット部とに区分し、前記下位ビット部の中の最上位ビットの値を前記上位ビット部の中の最下位ビットの値に加算する加算器４６とを備えて（−１＜計算誤差≦０）の範囲を（−０．５＜計算誤差≦＋０．５）に修正する。【選択図】図２
2011234128.tif 000002
【特許請求の範囲】
【請求項１】
伝送路を伝送するシリアル通信信号の所定区間の時間長に関する計測結果を利用して送信元のボーレートを検出するシリアル通信用ボーレート検出装置であって、
周期が一定のクロックパルスを発生するクロック発生部と、
前記所定区間のタイミングを検出する区間検出部と、
前記所定区間の間に、前記クロック発生部から出力されるクロックパルスを計数し、計数結果を２進数の時間計測値として出力する時間計測カウンタ部と、
前記時間計測カウンタ部が出力する時間計測値の２進数を、前記所定区間のビット構成に応じて上位ビット部と下位ビット部とに区分し、前記下位ビット部の中の最上位ビットの値を、前記上位ビット部の中の最下位ビットの値に加算するビット加算部と
を備えることを特徴とするシリアル通信用ボーレート検出装置。
【請求項２】
前記ビット加算部は、前記時間計測カウンタ部が出力する時間計測値の２進数の下位３ビットを前記下位ビット部に区分し、それ以外を前記上位ビット部に区分する
ことを特徴とする請求項１に記載のシリアル通信用ボーレート検出装置。
【請求項３】
伝送路を伝送するシリアル通信信号の所定区間の時間長に関する計測結果を利用して送信元のボーレートを検出し、検出されたボーレートに基づいて自局が使用するボーレートを補正するシリアル通信用ボーレート補正装置であって、
周期が一定のクロックパルスを発生するクロック発生部と、
前記所定区間のタイミングを検出する区間検出部と、
前記所定区間の間に、前記クロック発生部から出力されるクロックパルスを計数し、計数結果を２進数の時間計測値として出力する時間計測カウンタ部と、
前記時間計測カウンタ部が出力する時間計測値の２進数を、前記所定区間のビット構成に応じて上位ビット部と下位ビット部とに区分し、前記下位ビット部の中の最上位ビットの値を、前記上位ビット部の中の最下位ビットの値に加算するビット加算部と
を備えることを特徴とするシリアル通信用ボーレート補正装置。
【請求項４】
伝送路を伝送するシリアル通信信号の所定区間の時間長に関する計測結果を利用して送信元のボーレートを検出するためのシリアル通信用ボーレート検出方法であって、
周期が一定のクロックパルスを発生し、
前記所定区間のタイミングを検出し、
前記所定区間の間に前記クロックパルスを計数して計数結果を２進数の時間計測値として取得し、
前記時間計測値の２進数を、前記所定区間のビット構成に応じて上位ビット部と下位ビット部とに区分し、前記下位ビット部の中の最上位ビットの値を、前記上位ビット部の中の最下位ビットの値に加算した結果を出力する
ことを特徴とするシリアル通信用ボーレート検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアル通信システムが通信に使用するボーレート（伝送速度）を実際の通信信号に合わせて自動的に補正するために用いられるシリアル通信用ボーレート検出装置に関する。
【背景技術】
【０００２】
例えば、自動車の制御系の通信ネットワークに接続される通信機器は、通信規格としてＬＩＮ（Local Interconnect Network）やＣＡＮ（Controller Area Network）を採用している場合が多い。車両上には様々な制御系のそれぞれを制御するためにＥＣＵ（Electronic Control Unit）と呼ばれる多数の電子制御装置が搭載されている。複数のＥＣＵが互いに情報を交換したり互いに制御を行うために、これらのＥＣＵは制御系の車載通信ネットワークで接続されている。この車載通信ネットワークに、ＬＩＮやＣＡＮが用いられている。
【０００３】
例えば、車両上で高度な機能を持つ各種センサやアクチュエータを接続したＥＣＵ同士を接続する場合には、比較的低速の通信速度（伝送速度）で構わないので、ＬＩＮを採用した車載通信ネットワークが用いられる場合が多い。ＬＩＮの場合、最大伝送速度は２０ｋｂｐｓである。
【０００４】
ＬＩＮの通信プロトコルは、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）あるいはＳＣＩ（Serial Communication Interface）と呼ぶデータ形式に基づくシリアル通信プロトコルである。そして、単一のマスタノード（マスタとなるＥＣＵ）と複数のスレーブノード（スレーブとなるＥＣＵ）との間を通信ネットワークで接続するために利用される。
【０００５】
ＬＩＮにおけるネットワークへのアクセス制御はタイムトリガ方式である。このため、マスタタスクにはメッセージシーケンスが転送スケジュールとして予め設定されている。マスタノードはＬＩＮクラスタとしてアプリケーションを実行し、ネットワークを管理することができる。つまり、ＬＩＮ内の全ての通信タスクは時間で管理されており、ノード間で送出タイミングの同期が取れている限りメッセージの衝突は起こらない。
【０００６】
ＬＩＮにおいて同期を取るとは、シリアルデータを取得又は送信するためのサンプリングクロックの周期を、基準周期に一致させるように補正することである。通常、マスタノードのボーレートと一致するようにスレーブノードのボーレートを補正することにより同期を取る。スレーブノードは、マスタノードから送信される基準クロック（シンクフィールド）の周期の長さを検出しこれに基づいて、スレーブノードのボーレートを補正する。又、このボーレートの補正はヘッダの到着毎に実行される。
【０００７】
このようにスレーブノード側のボーレートをマスタノードに合わせるように自動的に補正する機能を搭載することにより、スレーブノードには高精度のクロックを生成する水晶発振回路等を設ける必要がなく、コストの低減が可能になる。
【０００８】
ボーレートを自動的に補正する機能を搭載したボーレートジェネレータに関する従来技術が特許文献１に開示されている。特許文献１においては、ボーレートを補正する際のＣＰＵの負担を軽減するための技術を提案している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−３２４６７９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＬＩＮの場合、マスタノードがスレーブノードに送信する通信フレーム（メッセージフレームとも言う）は、図３に示すように構成されている。すなわち、フレームヘッダには、先頭から順にシンクブレークフィールド（ブレークフィールド）、シンクフィールド（同期バイト）、ＩＤフィールド（保護ＩＤ）が並んで配置されている。このヘッダに続いて、最大８バイトのデータフィールドと１バイトのチェックサムを含むレスポンスが転送される。ブレークフィールドは、１３ビット以上のＬｏｗレベル（ドミナントレベル）で構成される。シンクフィールドには予め規定された８ビットのデータ値「０ｘ５５（１６進数表記）」、つまり「０」と「１」が交互に並んだ「０１０１０１０１」が現れる。ＩＤフィールドは、６ビットのＩＤと２ビットのパリティで構成される。
【００１１】
スレーブノードは、伝送路に現れた通信フレームのシンクフィールドを利用して、マスタノード（送信側）が通信に使用しているボーレートを検出することができる。すなわち、シンクフィールドの期間中に「０」と「１」が交互に現れるので、これが切り替わるのに要する時間を測定することにより、ボーレートに相当する時間を検出できる。
【００１２】
この時間を検出する方法として、ＬＩＮの仕様書においては、次の方法が推奨されている。すなわち、シンクフィールドにおいてスタート・ビットの立ち下がりからビット７の立ち下がりまでの８ビット分（「０ｘ５５」に相当する）の時間を計測する。そして、その結果を８で除算する。これで、１ビットのデータの長さに対応する時間が得られる。この時間の逆数がボーレートになる。
【００１３】
特許文献１に開示された従来技術においては、シンクフィールドの８ビット分の時間をカウンタを用いて計測し、計測により得られた時間値（２進数）を下位方向に向かって４ビットシフトする。つまり、時間値（２進数）の下位４ビットを切り捨てて残りの上位ビットだけを抽出する。このシフト動作は、時間値（２進数）を１０進数の「１６」で割ることを意味している。８ビットの時間長を「１６」で割ることにより、（１／２）ビットのデータの長さに対応する時間がボーレートに対応する値として検出される。
【００１４】
ところで、ＬＩＮの仕様では、補正されたボーレートの許容される誤差は、±２％以内である。この要求を満たすためには、上述のようなボーレート検出において、時間を高精度で測定する必要がある。具体的には、時間を計測するカウンタが計数するクロックパルスの周期を十分に短くする必要がある。つまり、１ビットのデータの時間長（Ｔ１）に対応する時間の誤差を±２％以内にするためには、前記クロックパルスの周期を最大でも（Ｔ１／５０）以内にする必要がある。
【００１５】
もしも、前記クロックパルスの周期が（Ｔ１／５０）であれば、１ビットのデータの時間長（Ｔ１）をカウンタで計測する間に、「５０」の値が計数されることになるが、計測時のタイミングのずれによってこの計数値には「±１」以内の計測誤差が発生する。つまり、このカウンタの計測誤差は（１／５０）以内、つまり２％以内になる。
【００１６】
但し、計測して得られる８ビット分の時間から１ビットのデータの時間長（Ｔ１）を除算（２進数のシフト演算）により求める際に、下位ビットの切り捨てを行うので、その計算結果には（−１＜計算誤差≦０）の範囲内の計算誤差も含まれることになる。従って、この計算誤差（絶対値が最大で１以下）と計測誤差（絶対値が最大で１以下）とを考慮すると、最終的な誤差を許容範囲（±２％以内）に維持するためには、前記クロックパルスの周期を最大でも（Ｔ１／１００）以内にする必要がある。
【００１７】
また、現実には２進数で計数や演算を行うことになるので、前記クロックパルスの周期は（Ｔ１／１２８）以内にせざるを得ない。しかしながら、より周期が短い（周波数が高い）クロックパルスを扱う場合には、高速で動作する発振回路やカウンタが必要になるので、回路のコストが高くなり、消費電力の増大も避けられない。
【００１８】
本発明は、上述した事情に鑑みてなされたものであり、その目的は、補正後のボーレートを誤差の許容範囲内に維持可能にすると共に、時間の計測に用いるクロックパルスの周波数を低くすることが可能なシリアル通信用ボーレート検出装置およびシリアル通信用ボーレート補正装置ならびにシリアル通信用ボーレート検出方法を提供することにある。
【課題を解決するための手段】
【００１９】
前述した目的を達成するために、本発明に係るシリアル通信用ボーレート検出装置は、下記（１）〜（２）を特徴としている。
（１）  伝送路を伝送するシリアル通信信号の所定区間の時間長に関する計測結果を利用して送信元のボーレートを検出するシリアル通信用ボーレート検出装置であって、
周期が一定のクロックパルスを発生するクロック発生部と、
前記所定区間のタイミングを検出する区間検出部と、
前記所定区間の間に、前記クロック発生部から出力されるクロックパルスを計数し、計数結果を２進数の時間計測値として出力する時間計測カウンタ部と、
前記時間計測カウンタ部が出力する時間計測値の２進数を、前記所定区間のビット構成に応じて上位ビット部と下位ビット部とに区分し、前記下位ビット部の中の最上位ビットの値を、前記上位ビット部の中の最下位ビットの値に加算するビット加算部と
を備えること。
（２）  上記（１）に記載のシリアル通信用ボーレート検出装置であって、
前記ビット加算部は、前記時間計測カウンタ部が出力する時間計測値の２進数の下位３ビットを前記下位ビット部に区分し、それ以外を前記上位ビット部に区分する
こと。
【００２０】
上記（１）の構成のシリアル通信用ボーレート検出装置によれば、時間の計測に用いるクロックパルスの周波数を低くすることが可能である。すなわち、前記時間計測値から上位ビット部として抽出される値に含まれる前述の計算誤差は（−１＜計算誤差≦０）の範囲内であるが、前記ビット加算部の結果に含まれる計算誤差は（−０．５＜計算誤差≦＋０．５）の範囲に修正される。このため、ボーレートを許容範囲（−２％≦最終誤差≦＋２％）に維持するために必要なクロックパルスの周波数は、前記ビット加算部が存在しない場合と比べて半分程度に低くなる。つまり、前記クロックパルスの周期は（Ｔ１／１２８）から（Ｔ１／６４）に変更することができる。
上記（２）の構成のシリアル通信用ボーレート検出装置によれば、前記時間計測値が８ビットのデータの時間長である場合に、１ビットのデータの時間長（８で除算された結果）が前記上位ビット部として抽出され、前記下位ビット部は前記時間長の小数部になる。
【００２１】
前述した目的を達成するために、本発明に係るシリアル通信用ボーレート補正装置は、下記（３）を特徴としている。
（３）  伝送路を伝送するシリアル通信信号の所定区間の時間長に関する計測結果を利用して送信元のボーレートを検出し、検出されたボーレートに基づいて自局が使用するボーレートを補正するシリアル通信用ボーレート補正装置であって、
周期が一定のクロックパルスを発生するクロック発生部と、
前記所定区間のタイミングを検出する区間検出部と、
前記所定区間の間に、前記クロック発生部から出力されるクロックパルスを計数し、計数結果を２進数の時間計測値として出力する時間計測カウンタ部と、
前記時間計測カウンタ部が出力する時間計測値の２進数を、前記所定区間のビット構成に応じて上位ビット部と下位ビット部とに区分し、前記下位ビット部の中の最上位ビットの値を、前記上位ビット部の中の最下位ビットの値に加算するビット加算部と
を備えること。
【００２２】
上記（３）の構成のシリアル通信用ボーレート補正装置によれば、ボーレート補正誤差を許容範囲に維持するために必要なクロックパルスの周波数を下げることができる。
【００２３】
前述した目的を達成するために、本発明に係るシリアル通信用ボーレート検出方法は、下記（４）を特徴としている。
（４）  伝送路を伝送するシリアル通信信号の所定区間の時間長に関する計測結果を利用して送信元のボーレートを検出するためのシリアル通信用ボーレート検出方法であって、
周期が一定のクロックパルスを発生し、
前記所定区間のタイミングを検出し、
前記所定区間の間に前記クロックパルスを計数して計数結果を２進数の時間計測値として取得し、
前記時間計測値の２進数を、前記所定区間のビット構成に応じて上位ビット部と下位ビット部とに区分し、前記下位ビット部の中の最上位ビットの値を、前記上位ビット部の中の最下位ビットの値に加算した結果を出力する
こと。
【００２４】
上記（４）の構成のシリアル通信用ボーレート検出方法によれば、時間の計測に用いるクロックパルスの周波数を低くすることが可能である。
【発明の効果】
【００２５】
本発明によれば、ボーレートに関する時間の計測に用いるクロックパルスの周波数を低くすることができる。従って、回路コストの低減が可能になり、消費電力の増大も抑制できる。
【００２６】
以上、本発明について簡潔に説明した。更に、以下に説明される発明を実施するための形態を添付の図面を参照して通読することにより、本発明の詳細は更に明確化されるであろう。
【図面の簡単な説明】
【００２７】
【図１】通信システムの構成例を示すブロック図である。
【図２】実施形態のボーレート補正回路の構成を示すブロック図である。
【図３】通信ライン上に現れる通信フレームの構成を示すタイムチャートである。
【図４】シンクフィールドの時間を計測する動作を表すタイムチャートである。
【図５】ボーレート補正値を算出する動作を表す模式図である。
【発明を実施するための形態】
【００２８】
本発明のシリアル通信用ボーレート検出装置およびシリアル通信用ボーレート補正装置ならびにシリアル通信用ボーレート検出方法に関する具体的な実施の形態について、各図を参照しながら以下に説明する。
【００２９】
本発明のシリアル通信用ボーレート検出装置は、例えば図１に示すような構成の通信システムに用いられる。図１に示す通信システムは、単一のマスタノード１０と２つのスレーブノード１１、１２を有し、これらは通信ライン１３を介して互いに接続されている。マスタノード１０は、システム全体の動作を統括するために配下のスレーブノード１１、１２を制御する。各スレーブノード１１、１２はマスタノード１０の指示に従って制御を実施する。
【００３０】
具体的には、図１に示す通信システムは車載通信システムとして利用することを想定している。すなわち、マスタノード１０、スレーブノード１１、１２はそれぞれが車載機器を制御するための電子制御装置（ＥＣＵ）に相当し、これらはＬＩＮの通信規格に適合する通信ネットワークで、つまり通信ライン１３を介して図１に示すように有線で接続されている。なお図１においては、通信関連以外の構成要素について図示を省略してある。
【００３１】
図１に示すように、マスタノード１０にはマイクロコンピュータ（ＣＰＵ）２１、メモリ２２、クロックジェネレータ２３、通信部２４が備わっている。また、通信部２４にはＩ／Ｏ（入力／出力）インタフェース２５とボーレート補正回路２６が備わっている。
【００３２】
マイクロコンピュータ２１は、メモリ２２上に予め用意されているプログラムを実行することにより通信の制御を実施する。メモリ２２上には、マスタタスクとスレーブタスクのプログラムが用意されている。
【００３３】
クロックジェネレータ２３は、通信等の動作に関する基準タイミングを決定するためのクロックパルスを生成する。システム全体の安定した動作を実現するためにマスタノード１０のクロックジェネレータ２３には水晶発振回路が備わっている。クロックジェネレータ２３が生成するクロックパルスの周波数は、マスタノード１０が通信に使用するボーレートの６４倍に定めてある。
【００３４】
ボーレート補正回路２６は、クロックジェネレータ２３が出力するクロックパルスに基づいてシリアル通信動作に必要なタイミング信号を生成する。なお、ボーレート補正回路２６はボーレートを補正する機能（後述する）も含んでいるが、マスタの動作タイミングが基準になるので、マスタノード１０内のボーレート補正回路２６はボーレートの補正動作を実施しない。
【００３５】
Ｉ／Ｏインタフェース２５は、マイクロコンピュータ２１の送信対象データをパラレルデータとして入力しシリアルデータに変換すると共に、決定されたボーレートと前記クロックパルスに応じたタイミングでシリアルデータを通信ライン１３に送出する。また、通信ライン１３から入力されるシリアルデータを前記ボーレートとクロックパルスに応じたタイミングでサンプリングし、取得したデータをパラレルデータに変換してマイクロコンピュータ２１に出力する。
【００３６】
一方、スレーブノード１１には、マイクロコンピュータ（ＣＰＵ）３１、メモリ３２、クロックジェネレータ３３、通信部３４が備わっている。また、通信部３４にはＩ／Ｏ（入力／出力）インタフェース３５とボーレート補正回路３６が備わっている。
【００３７】
マイクロコンピュータ３１は、メモリ３２上に予め用意されているプログラムを実行することにより通信の制御を実施する。メモリ３２上には、スレーブタスクのプログラムが用意されている。
【００３８】
クロックジェネレータ３３は、通信等の動作に関する基準タイミングを決定するためのクロックパルスを生成する。スレーブノード１１のクロックジェネレータ３３が出力するクロックパルスについては高い精度は要求されないので、クロックジェネレータ３３は安価なＣＲ発振回路等で構成することができる。クロックジェネレータ３３が生成するクロックパルスの周波数は、通信に使用するボーレートの６４倍に定めてある。
【００３９】
ボーレート補正回路３６は、クロックジェネレータ３３が出力するクロックパルスに基づいてシリアル通信動作に必要なタイミング信号を生成する。ボーレート補正回路３６には、スレーブノード１１が使用するボーレートの誤差を許容範囲内に維持するための機能が含まれている。ボーレート補正回路３６の構成および動作については後で詳細に説明する。
【００４０】
Ｉ／Ｏインタフェース３５は、マイクロコンピュータ３１の送信対象データをパラレルデータとして入力しシリアルデータに変換すると共に、決定されたボーレートと前記クロックパルスに応じたタイミングでシリアルデータを通信ライン１３に送出する。また、通信ライン１３から入力されるシリアルデータを前記ボーレートとクロックパルスに応じたタイミングでサンプリングし、取得したデータをパラレルデータに変換してマイクロコンピュータ３１に出力する。
スレーブノード１２についても、上述のスレーブノード１１と同様の構成要素が備わっている。
【００４１】
次に通信動作の概要について説明する。マスタノード１０のメモリ２２に備わっているマスタタスクのプログラムをマイクロコンピュータ２１が実行することにより、マスタタスクの処理が行われる。このマスタタスクには、所定の通信フレームを通信ライン１３を介して転送するためのメッセージシーケンスが転送スケジュールとして予め組み込まれている。
【００４２】
マイクロコンピュータ２１がマスタタスクを処理することにより、通信フレームのフレームヘッダが生成され、このフレームヘッダがＩ／Ｏインタフェース２５から通信ライン１３に送出される。このフレームヘッダに対して、このフレームヘッダで指定された特定のスレーブノード（スレーブノード１１又は１２）からのレスポンスが通信ライン１３に現れるので、マイクロコンピュータ２１はレスポンスをＩ／Ｏインタフェース２５を介して受信する。
【００４３】
マスタノード１０のメモリ２２内やスレーブノード１１のメモリ３２内に用意されているスレーブタスクは、通信フレーム毎に転送するデータフィールドを準備する。スレーブタスクは、レスポンスを送信する機能の他に、マスタノードや他のスレーブノードからのレスポンスを受信する機能も有している。
【００４４】
通信フレーム（メッセージフレームとも言う）は、図３に示すように構成されている。すなわち、フレームヘッダには、先頭から順にシンクブレークフィールド（ブレークフィールド）、シンクフィールド（同期バイト）、ＩＤフィールド（保護ＩＤ）が並んで配置されている。このヘッダに続いて、最大８バイトのデータフィールドと１バイトのチェックサムを含むレスポンスが転送される。ブレークフィールドは、１３ビット以上のＬｏｗレベル（ドミナントレベル）で構成される。シンクフィールドには予め規定された８ビットのデータ値「０ｘ５５（１６進数表記）」、つまり「０」と「１」が交互に並んだ「０１０１０１０１」が現れる。ＩＤフィールドは、６ビットのＩＤと２ビットのパリティで構成される。
【００４５】
スレーブノードは、伝送路に現れた通信フレームのシンクフィールドを利用して、マスタノード（送信側）が通信に使用しているボーレートを検出することができる。すなわち、シンクフィールドの期間中に「０」と「１」が交互に現れるので、これが切り替わるのに要する時間を測定することにより、ボーレートに相当する時間を検出できる。
【００４６】
本実施形態におけるボーレート補正回路３６の具体的な構成が図２に示されている。図２に示すように、ボーレート補正回路３６はボーレート検出回路４０、ボーレート初期値レジスタ５１、データセレクタ５２、カウンタ５３、一致検出回路５４を備えている。また、ボーレート検出回路４０にはエッジ検出回路４１、エッジカウンタ４２、時間計測タイマ４３、計測値保持部４４、計測値保持部４５、加算器４６、ボーレート補正値レジスタ４７が備わっている。
【００４７】
通信ライン１３の通信信号（図３に示すようなシリアル信号）にシンクフィールド（１１ビット以上のＬレベル）が現れると、図示しない回路からエッジ検出回路４１に対しシンクフィールド検出信号が入力される。エッジ検出回路４１は、このシンクフィールド検出信号に応答して、シリアル信号の立下りエッジ検出動作を開始する。すなわち、エッジ検出回路４１は、シンクフィールドのスタートビットの立下りエッジを検出した時に、シンクフィールド開始信号（計測開始信号）をエッジカウンタ４２及び時間計測タイマ４３に出力する。また、エッジ検出回路４１はシンクフィールド内で立下りエッジを検出する毎にエッジ検出信号をエッジカウンタ４２に出力する。エッジ検出回路４１の検出動作は、クロックジェネレータ３３から出力されるクロックパルスに同期して実施される。
【００４８】
エッジカウンタ４２は、エッジ検出回路４１から出力される前記シンクフィールド開始信号に応答して動作を開始し、前記エッジ検出信号をカウントする。つまり、エッジカウンタ４２はシンクフィールドにおける立下りエッジの数を計数する。エッジカウンタ４２は、シンクフィールド開始信号（図４中の計測開始信号）を受信してから所定の回数までエッジ検出信号を計数すると、時間計測タイマ４３及びボーレート補正値レジスタ４７に対し、シンクフィールド終了信号（図４中の計測終了信号）を出力する。
【００４９】
時間計測タイマ４３は、クロックジェネレータ３３が出力する周期が一定のクロックパルスを計数することにより時間を測定する。具体的には、時間計測タイマ４３は、エッジ検出回路４１が出力する前記シンクフィールド開始信号（計測開始信号）が現れてからエッジカウンタ４２が出力するシンクフィールド終了信号（計測終了信号）が現れるまでの時間長をクロックパルスの数で計測する。従って、図４に示す「計測時間」の長さに対応する値を時間計測タイマ４３が出力する。
【００５０】
時間計測タイマ４３は、計測結果である前記「計測時間」を、図５に示すカウント値Ｄ１のようなビットＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ５、Ｂ６、Ｂ７、Ｂ８、Ｂ９、Ｂ１０で構成される１０ビットのデータとして出力する。ここで、１０ビットのカウント値Ｄ１においては最下位ビット（ＬＳＢ）がＢ１、最上位ビット（ＭＳＢ）がＢ１０である。
【００５１】
ところで、前記「計測時間」はシンクフィールドにおいて８ビットのシリアルデータが現れるのに要した時間に相当する。従って、ボーレートの逆数である１ビットあたりのデータの時間長を得るには、前記「計測時間」を「８」で除算すればよい。２進数の計算においては、データの下位の３ビットを切り捨てることが「８」で除算することを意味する。つまり、図５に示すカウント値Ｄ１において、「Ｂ１、Ｂ２、Ｂ３」を下位ビット部、「Ｂ４、Ｂ５、Ｂ６、Ｂ７、Ｂ８、Ｂ９、Ｂ１０」を上位ビット部として区分した場合に、上位ビット部だけを抽出することで、１ビットあたりのデータの時間長が得られる。
【００５２】
但し、切り捨てた下位ビット部については計算誤差になる。この場合の計算誤差の範囲は、除算後に抽出される上位ビット部の値を１０進数の整数として考えると、（−１＜計算誤差≦０）になる。つまり、マイナス方向にのみ偏って計算誤差が生じる。この計算誤差は、ボーレートの誤差を許容範囲内に維持するための制御において重要な意味を持つ。
【００５３】
すなわち、ＬＩＮの仕様では、ボーレートの許容される誤差が（−２％≦誤差≦＋２％）の範囲内であるのに対し、ボーレートの検出誤差にマイナス方向にのみ偏っている計算誤差が含まれることになるので、時間計測の際に発生する誤差をより大きく減らす必要がある。そのためには、クロックジェネレータ３３が出力するクロックパルスの周波数を十分に高くしなければならない。
【００５４】
図２に示したボーレート検出回路４０においては、クロックジェネレータ３３が出力するクロックパルスの周波数が比較的低い（周期が長い）場合であっても、ボーレートを許容範囲（−２％≦誤差≦＋２％）に維持できるように特別な工夫が施されている。
【００５５】
計測値保持部４４は、時間計測タイマ４３が計測を完了した時に、時間計測タイマ４３から出力される「計測時間（図５中のＤ１）」の上位ビット部（Ｂ４〜Ｂ１０）を入力して保持する。計測値保持部４５は、時間計測タイマ４３が計測を完了した時に、時間計測タイマ４３から出力される「計測時間（図５中のＤ１）」の下位ビット部（Ｂ１〜Ｂ３）のうち最上位のビット（Ｂ３）を入力して保持する。
【００５６】
加算器４６は、計測値保持部４４が保持している７ビットの値（Ｂ４〜Ｂ１０）と、計測値保持部４５が保持している１ビットの値（Ｂ３）とを入力してそれらを２進数として加算する。加算器４６の加算の結果がボーレート補正値レジスタ４７に保持される。
【００５７】
例えば、図５の左側（プラス補正）に示すように、下位ビット部（Ｂ１〜Ｂ３）の最上位のビット（Ｂ３）が「１」の場合には、これと上位ビット部（Ｂ４〜Ｂ１０）とが加算器４６で加算されるので、ビット（Ｂ３）の影響が結果（ボーレート補正値）に反映される。一方、図５の右側（マイナス補正）に示すように、下位ビット部（Ｂ１〜Ｂ３）の最上位のビット（Ｂ３）が「０」の場合には、これと上位ビット部（Ｂ４〜Ｂ１０）とが加算器４６で加算された結果（ボーレート補正値）には下位ビット部（Ｂ１〜Ｂ３）の影響が現れない。
【００５８】
つまり、加算器４６における加算処理では、図５に示すように下位ビット部（Ｂ１〜Ｂ３）の最上位のビット（Ｂ３）だけを上位ビット部（Ｂ４〜Ｂ１０）に加算することになる。これは、前述の（−１＜計算誤差≦０）の範囲を（−０．５＜計算誤差≦＋０．５）に修正することを意味している。
【００５９】
これにより、時間計測タイマ４３が計数するクロックパルスの周波数が比較的低い場合でも、前記計算誤差によって生じるボーレートのずれを許容範囲（−２％≦誤差≦＋２％）内に維持することが可能になる。具体的には、加算器４６で図５に示す加算処理を行わない場合には、ボーレートのずれを許容範囲に維持するために、クロックパルスの周波数をボーレートの１２８倍以上にせざるを得ない。しかし、加算器４６で加算処理を行うことにより、クロックパルスの周波数がボーレートの６４倍であってもボーレートのずれを許容範囲に維持できる。
【００６０】
ボーレート初期値レジスタ５１は、予め定めたボーレートの初期値を定数として保持している。マイクロコンピュータ３１は、実際のボーレートが不明の初期状態においては、ボーレート初期値レジスタ５１が保持しているボーレートの初期値をデータセレクタ５２を介して一致検出回路５４に印加する。そして、ボーレート検出回路４０が上述の動作を完了し、ボーレート補正値レジスタ４７に計測値であるボーレート補正値が保持された後で、マイクロコンピュータ３１はデータセレクタ５２を切り替えて、ボーレート補正値レジスタ４７のボーレート補正値を一致検出回路５４に印加する。
【００６１】
カウンタ５３は、クロックジェネレータ３３が出力するクロックパルスを計数する。一致検出回路５４は、カウンタ５３の計数値と、ボーレート初期値レジスタ５１のボーレート初期値、又はボーレート補正値レジスタ４７のボーレート補正値とを比較してそれらの一致の有無を識別し、一致検出信号を出力する。この一致検出信号は、Ｉ／Ｏインタフェース３５に入力され、通信ライン１３上に現れるシリアルデータから情報を取得するためのサンプリングクロック信号や、シリアルデータを送信するためのシフトクロック信号を生成するためのタイミング信号として利用される。
【００６２】
Ｉ／Ｏインタフェース３５は、前記サンプリングクロック信号に応じたタイミングで、通信ライン１３から入力されるシリアルデータを取得し、パラレルデータに変換する。変換されたデータはマイクロコンピュータ３１により読み出される。また、マイクロコンピュータ３１から送信用に出力されたパラレルデータの各ビットを前記シフトクロック信号に応じたタイミングでシリアルデータとして順次に通信ライン１３に出力する。
【００６３】
上述のように、スレーブノード１１、１２に備わっているボーレート補正回路３６は、マスタノード１０が通信ライン１３に送出した通信信号の実際のボーレートを検出し、この検出値に追従するようなボーレート補正値を生成して通信のタイミングを自動的に補正する。従って、クロックジェネレータ３３が生成するクロックパルスについては、高い精度や安定度を要求されない。そのため、ＣＲ発振回路のような安価な回路をクロックジェネレータ３３が採用しても問題は生じない。
【００６４】
また、ボーレートのずれを許容範囲（−２％≦誤差≦＋２％）内に維持するためには、ボーレートに比べて十分に周波数の高いクロックパルスを用いて時間計測タイマ４３で時間長の計測を行う必要がある。しかし、ボーレート検出回路４０内の加算器４６が前述のような処理を行うので、クロックパルスの周波数をボーレートの６４倍程度まで下げてもボーレートのずれを許容範囲に維持できる。
【００６５】
クロックパルスの周波数を下げることにより、クロックジェネレータ３３自体やこれが出力するクロックパルスを処理する回路のコストを低減することができ、これらの回路が消費する電力を低減することも可能になる。
【００６６】
なお、図２に示した回路構成のように、ボーレート補正回路として専用のハードウェアを搭載することにより、マイクロコンピュータ３１が実行する処理の負担を軽減することができる。しかし、マイクロコンピュータ３１の処理能力に十分に余裕があるような場合には、ボーレート検出回路４０などの処理をマイクロコンピュータ３１の内部処理、すなわちプログラムの実行により実現することができるので、専用のハードウェアの搭載を部分的に省略することもできる。
【００６７】
以上のように、本発明のシリアル通信用ボーレート検出装置およびシリアル通信用ボーレート補正装置ならびにシリアル通信用ボーレート検出方法は、例えば車載制御システムのように、ＬＩＮなどの規格に従って複数ユニット間でデータ通信を行う通信システムに適用することができる。そして、本発明の実施により、ボーレート検出等の際に利用するクロックパルスの周波数を下げることが可能になり、回路コストの低減や、消費電力の低減が実現する。
【符号の説明】
【００６８】
１０  マスタノード
１１，１２  スレーブノード
１３  通信ライン
２１，３１  マイクロコンピュータ（ＣＰＵ）
２２，３２  メモリ
２３，３３  クロックジェネレータ
２４，３４  通信部
２５，３５  Ｉ／Ｏインタフェース
２６，３６  ボーレート補正回路（シリアル通信用ボーレート補正装置）
４０  ボーレート検出回路（シリアル通信用ボーレート検出装置）
４１  エッジ検出回路
４２  エッジカウンタ
４３  時間計測タイマ
４４，４５  計測値保持部
４６  加算器
４７  ボーレート補正値レジスタ
５１  ボーレート初期値レジスタ
５２  データセレクタ
５３  カウンタ
５４  一致検出回路
【図１】
2011234128.tif 000003
【図２】
2011234128.tif 000004
【図３】
2011234128.tif 000005
【図４】
2011234128.tif 000006
【図５】
2011234128.tif 000007