(57)【要約】【課題】シリアル通信システムにおいて、ボーレートを補正するノード内のＣＰＵの負担を軽減するシリアル通信回路を提供する。【解決手段】本発明によるボーレートジェネレータ１２は、入力されるシンクフィールド４２のビット数を入力順に計数するエッジカウンタ２２と、エッジカウンタ２２が所定のビット数を計数するまでの時間３３を測定するシンクフィールド測定タイマ２３と、測定時間３３を用いて、シンクフィールド４２における１／２ビット期間であるボーレート補正値３４を生成するボーレート補正回路２４とを具備し、ボーレート補正値３４に基づき、シリアル通信のボーレートを決定する。【選択図】図２
2007324679.tif 000002
【特許請求の範囲】
【請求項１】
入力されるシリアルデータのビット数を計数する第１のカウンタと、
前記第１のカウンタが所定のビット数を計数するまでの時間を基準クロックに基づき測定するタイマと、
前記タイマの測定時間に基づき、前記シリアル通信のボーレートを補正するためのボーレート補正値を出力するボーレート補正回路と、
を具備するシリアル通信用ボーレートジェネレータ。
【請求項２】
請求項１に記載のシリアル通信用ボーレートジェネレータにおいて、
前記基準クロックを計数する第２のカウンタと、
前記第２のカウンタの計数値と前記ボーレート補正値とを比較して一致する時、一致検出信号を出力する一致検出回路と、
を更に備えるシリアル通信用ボーレートジェネレータ。
【請求項３】
請求項２に記載のシリアル通信用ボーレートジェネレータにおいて、
前記ボーレート補正回路から出力される前記ボーレート補正値が格納される第１のレジスタと、
ボーレートの初期値が格納される第２のレジスタと、
前記第２のレジスタ内の初期値と、前記第１のレジスタ内の前記ボーレート補正値のいずれか一方を選択して前記一致検出回路に出力する第１のセレクタと、を更に具備し、
前記一致検出回路は、前記第１のセレクタからの出力値と前記第２のカウンタの計数値とを比較して一致する時、前記一致検出信号を出力する
シリアル通信用ボーレートジェネレータ。
【請求項４】
請求項１に記載のシリアル通信用ボーレートジェネレータにおいて、
前記タイマの測定時間はバイナリ値であり、
前記ボーレート補正回路は、前記タイマのバイナリ値のうち、所定の上位桁を抽出することにより前記ボーレート補正値を生成する
シリアル通信用ボーレートジェネレータ。
【請求項５】
請求項１に記載のシリアル通信用ボーレートジェネレータにおいて、
前記ボーレート補正回路は、
前記タイマの測定値から第１の補正値を生成する補正値生成回路と、
前記ボーレートの上限値である第２の補正値を格納する第３のレジスタと、
前記ボーレートの下限値である第３の補正値を格納する第４のレジスタと、
前記第１の補正値、又は前記第２の補正値、又は前記第３の補正値のいずれか１つを選択して前記ボーレート補正値として出力する第２のセレクタと、
を更に備えるシリアル通信用ボーレートジェネレータ。
【請求項６】
請求項５に記載のシリアル通信用ボーレートジェネレータにおいて、
前記ボーレート補正回路は、前記第１の補正値と前記第２の補正値、又は前記第１の補正値と前記第３の補正値とを比較する比較器を備え、前記第２のセレクタは、前記比較器による比較結果に基づき前記ボーレート補正値を出力する
シリアル通信用ボーレートジェネレータ。
【請求項７】
請求項６に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第１の補正値が前記第２の補正値より大きい場合、前記第２のセレクタは、前記第２の補正値を選択して前記ボーレート補正値として出力する
シリアル通信用ボーレートジェネレータ。
【請求項８】
請求項６に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第１の補正値が前記第３の補正値より小さい場合、前記第２のセレクタは、前記第３の補正値を選択して前記ボーレート補正値として出力する
シリアル通信用ボーレートジェネレータ。
【請求項９】
請求項６に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第１の補正値が前記第２の補正値と前記第３の補正値の範囲内である場合、前記第２のセレクタは、前記第１の補正値を選択して前記ボーレート補正値として出力する
シリアル通信用ボーレートジェネレータ。
【請求項１０】
請求項６に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第２のレジスタ内の初期値は前記第２のセレクタに入力され、
前記第１の補正値が前記第２の補正値と前記第３の補正値との範囲外である場合、前記第２のセレクタは、前記第２のレジスタ内の前記初期値を選択して出力する
シリアル通信用ボーレートジェネレータ。
【請求項１１】
請求項６に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第１の補正値が前記第２の補正値と前記第３の補正値との範囲外である場合、前記第２のセレクタは選択出力を切替えずに維持する
シリアル通信用ボーレートジェネレータ。
【請求項１２】
請求項１から１１いずれか１項に記載のシリアル通信用ボーレートジェネレータにおいて、
前記シリアルデータは、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）通信プロトコルに基づくシンクフィールド内の同期バイトである
シリアル通信用ボーレートジェネレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアル通信のボーレートを補正するシリアル通信用ボーレートジェネレータに関する。
【背景技術】
【０００２】
近年、自動車に搭載されるＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：電子制御装置）同士を結ぶ制御系車載ネットワークが広く普及している。現在、代表的な制御系車載ネットワークの通信プロトコルとしては、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）、ＦｌｅｘＲａｙがある。ＣＡＮは主にパワートレイン系やシャーシ系のネットワークの標準規格として採用されている。ＬＩＮは比較的低速（伝送速度１〜２０ｋｂｐｓ）で使用されるボディ系のシリアル通信ネットワークの標準規格として採用されている。又、ＦｌｅｘＲａｙはＸ−ｂｙ−ｗｉｒｅアプリケーションに対応するように規格化されている。
【０００３】
ＬＩＮは、車載ネットワークにおいて、高度な機能を持つ各種センサやアクチュエータの間でコスト効率の高い通信を実現するために、ＬＩＮコンソーシアムにより標準規格として規定されたシリアル通信プロトコルである。ＬＩＮは、ＣＡＮほどの帯域幅と多様性を必要としない装置間の通信に用いられる。例えば、各種センサからの情報をＣＡＮに渡すまでの通信路として利用される。又、ＣＡＮやＦｌｅｘＲＡｙに比べ、コスト的に安価である。
【０００４】
ＬＩＮの規格では、通信方式として既に普及しているＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）インタフェースが利用される。ＬＩＮのネットワークトポロジは特に規定されていないが、基本的にはバス型トポロジが採用される。ＬＩＮはバスを介して相互に接続される１つのマスタノードと複数のスレーブノードとを具備する。現在は、１つのマスタノードに接続できるスレーブノードの数は最大１５個までと規定されている。マスタノードとスレーブノードはＣＰＵを備えるマイコンが例示される。マスタノードにはマスタタスクを実行するためのプログラムとスレーブタスクを実行するためのプログラムが記憶装置に格納される。マスタタスクはフレームの転送時期や転送先を決定するタスクである。スレーブタスクはフレーム毎に転送するデータフィールドを準備する。スレーブノードではスレーブタスクのみ実行されるため、スレーブタスク用プログラムが記憶装置に格納される。尚、スレーブノードの記憶装置にマスタ用プログラムも格納されていても構わない。スレーブノードとして動作する場合はマスタ用プログラムが実行されないようプログラムで制御すればよい。マスタノードのＣＰＵはマスタタスクを実行することでフレームヘッダをスレーブノードに送信する。スレーブノードのＣＰＵはスレーブタスクを実行し、フレームヘッダに応答してレスポンス（データフィールドを含む）を送信する。マスタノードはスレーブタスクも実行可能なため、ヘッダに続いてデータフィールドを含むレスポンスを送信することができる。
【０００５】
マスタノードがスレーブノードに送信するフレームヘッダには、先頭から順にシンクブレークフィールド（ブレークフィールド）、シンクフィールド（同期バイト）、ＩＤフィールド（保護ＩＤ）が含まれる。又、ヘッダに続いて、最大８バイトのデータフィールドと１バイトのチェックサムを含むレスポンスが転送される。ブレークフィールドは、１３ビット以上のＬｏｗレベル（ドミナントレベル）で構成される。シンクフィールドは８ビットの０ｘ５５のデータ値である。ＩＤフィールドは、６ビットのＩＤと２ビットのパリティで構成される。
【０００６】
ＬＩＮにおけるアクセス方式はタイムトリガ方式である。このため、マスタタスクにはメッセージシーケンスが転送スケジュールとして予め設定されている。マスタノードはＬＩＮクラスタとしてアプリケーションを実行し、ネットワークを管理することができる。つまり、ＬＩＮ内の全てのタスクは時間で管理されているため、同期が取れている限りメッセージの衝突は起こらない。
【０００７】
ＬＩＮにおいて同期を取るとは、シリアルデータを取得又は送信するためのサンプリングクロックの周期を、基準周期に一致させるように補正することである。通常、マスタノードのボーレートと一致するようにスレーブノードのボーレートを補正することにより同期を取る。スレーブノードは、マスタノードから送信される基準クロック（シンクフィールド）に基づき、ボーレートを補正する。又、このボーレートの補正はヘッダの到着毎に実行される。
【０００８】
図１２を参照して、従来技術によるボーレートの補正方法を説明する。図１２は従来技術によるボーレートジェネレータ１２０の構成を示すブロック図である。従来技術によるスレーブノードにおけるボーレートジェネレータ１２０は、ボーレート補正用のソフトウェアを実行することでボーレート補正を実行する。詳細には、ボーレートジェネレータ１２０は、ボーレート設定値１３５を格納するボーレート初期値設定レジスタ１２６と、クロックジェネレータ１１１によって生成されたシステムクロック１１０１をカウントし、カウンタ値１３７として出力するカウンタ１２８と、ボーレート設定値１３５とカウンタ値１３７が一致するタイミングでボーレートを決定するための一致検出信号１３８をＩ／Ｏインタフェース１４０に出力する一致検出回路１２９とを具備する。ボーレート設定値１３５はＣＰＵ１１０による演算によって算出され、例えば１／２ビット期間（１ビット時間の１／２の時間）である。ここで、スレーブノードのＣＰＵ１１０は、マスタノードから入力されるシンクブレークフィールドに応答して、ボーレートを補正するための割り込み処理を実行する。この割り込み処理において、ＣＰＵ１１０はシリアル通信回路外のタイマを起動し、シンクフィールドの期間を測定し、その測定結果からボーレート設定値１３５を算出する。この際、ＣＰＵ１１０はシリアル通信を停止させてから、ボーレート補正設定値１３５をボーレート初期値設定レジスタ１２６に再設定し、ボーレートを補正する。ＣＰＵ１１０はボーレートを補正した後にシリアル通信を再開する。このように、従来技術によるスレーブノードは通信処理を一時中断し、ＣＰＵ１１０による演算によってボーレートを補正する。
【０００９】
又、従来技術として特開２００１−０６９１９４号公報に、シリアル通信におけるボーレートの設定方法が記載されている（特許文献１参照）。特許文献１に記載のボーレートの設定方法では、所定の幅のパルス信号のパルス幅をタイマによってカウントし、その値から装置の動作周波数を算出する。そして、算出された動作周波数に応じてボーレートの設定を行う。この際、パルス幅をＴ、装置内のＣＰＵ動作周波数をφ、タイマのＣＰＵ動作周波数φに対する分周比をｎ、タイマのカウンタ値をｍとすると、φ＝（ｎ×ｍ）／Ｔとなる。特許文献１に記載の方法では、このような動作周波数φを算出し、ボーレートの再設定を行う。
【特許文献１】特開２００１−０６９１９４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従来技術によるボーレート補正では、スレーブノードのＣＰＵがボーレート補正用のソフトウェアを実行してボーレートを補正している。従来技術では、シンクフィールドの期間を測定する際、シリアル通信回路外のタイマを起動する必要がある。又、そのシンクフィールドの期間の測定結果を利用して、ＣＰＵの演算処理によってボーレート補正設定値（例えば１／２ビット期間）を算出する。このように、ボーレート補正を実行する際、ＣＰＵに対する負担は大きく、シリアル通信回路の停止やシリアル通信回路外のタイマの起動といった処理が必要となる。これらの処理には時間がかかるため、シンクフィールドからＩＤフィールドまでの待ち時間を多く設定する必要があり、転送速度を低下させている。
【００１１】
特許文献１に記載された方法では、連続するＬｏｗレベル又はＨｉｇｈレベルのパルス幅を測定して動作周波数を算出している。しかし、ＬＩＮでは、０ｘ５５データであるシンクフィールドはＬｏｗレベルとＨｉｇｈレベルが交互に続くため、１ビットのＬｏｗレベル幅を算出してもプロトコルに基づく正確なボーレートを得ることができない。又、パルス幅Ｔはタイマ周期ｔで割り切れるとは限らないため、算出した動作周波数は誤差を含んでいる。このため、マスタノードとスレーブノードとの動作周波数の違いなどによるボーレート誤差を微調整する目的には適さない。更に、この方法は、タイマ周期ｔ毎に発生する割り込み処理によってカウンタ値ｍをインクリメントするため、ＣＰＵの負担が増大してしまう。
【課題を解決するための手段】
【００１２】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を括弧付きで用いて、［課題を解決するための手段］を説明する。この番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］の記載との対応関係を明らかにするために付加されたものであるが、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１３】
本発明によるボーレートジェネレータ（１２）を搭載したシリアル通信システムは、スレーブノード（２００）と、バス（３００）を介してスレーブノード（２００）に接続され、シンクフィールド（４２）を含むシリアルデータをスレーブノード（２００）に送信するマスタノード（１００）とを具備する。スレーブノード（２００）は、自身のボーレートを補正するための回路を備えたシリアル通信用ボーレートジェネレータ（１２）と、補正されたボーレートに従って、入力されるシリアルデータを取得し、パラレルデータに変換したり、パラレルデータをシリアルデータに変換して出力したりするＩ／Ｏインタフェース（１４）とを備える。
【００１４】
本発明によるシリアル通信用ボーレートジェネレータ（１２）は、シリアル入力されるシリアルデータ（４２）のビット数を計数する第１のカウンタ（２２）と、第１のカウンタ（２２）が所定のビット数を計数するまでの時間（３３）を基準クロック（１０１）に基づき測定するタイマ（２３）と、タイマ（２３）の測定時間に基づき、シリアル通信のボーレートを補正するための補正値（３４）を出力するボーレート補正回路（２４Ａ、２４Ｂ、２４Ｃ）とを具備する。このように本発明によれば、ボーレートを補正するための補正値（３４）をハードウェアで取得できる。このため、ボーレートを補正する際のＣＰＵへの負担を軽減することができる。又、ボーレートを補正するための補正値（３４）をソフトウェアで算出する従来技術に比べ、短時間でボーレートを補正することができる。
【００１５】
又、本発明によるシリアル通信用ボーレートジェネレータ（１２）は、基準クロック（１０１）を計数する第２のカウンタ（２８）と、第２のカウンタ（２８）が計数した計数値（３７）と補正値（３４）とを比較して一致する時、一致検出信号（３８）を出力する一致検出回路（２９）とを更に備えることが好ましい。Ｉ／Ｏインタフェース（１４）は、一致検出信号（３８）によって決定するボーレートで、入力されるシリアルデータを取得する。
【００１６】
更に、本発明によるシリアル通信用ボーレートジェネレータ（１２）は、ボーレート補正回路（２４Ａ、２４Ｂ、２４Ｃ）から出力される補正値（３４）が格納される第１のレジスタ（２５）と、ボーレートの初期値（３５）が格納される第２のレジスタ（２６）と、第２のレジスタ（２６）内の初期値（３５）と、第１のレジスタ（２５）内の補正値（３４）のいずれか一方を選択して一致検出回路に出力する第１のセレクタ（２７）とを更に具備することが好ましい。このように、本発明によれば、現在のボーレートを目標ボーレートに設定するための初期値（３５）と、入力されるシリアルデータ（４２）を用いて測定した補正値（３４）とを選択的に使用してボーレートを決定できる。すなわち、本発明によるシリアル通信用ボーレートジェネレータ（１２）は、初期値（３５）を使用してボーレートを決定するマスタノード（１００）にも、補正値（３４）を使用してボーレートを補正するスレーブノードにも適用できる。
【００１７】
本発明に係るタイマ（２３）の測定時間（３３）はバイナリ値であることが好ましい。この際、ボーレート補正回路（２４Ａ、２４Ｂ、２４Ｃ）は、タイマ（２３）のバイナリ値のうち、所定の上位桁を抽出することにより補正値（３４）を生成する。
【００１８】
第２、第３の態様に係るボーレート補正回路（２４Ｂ、２４Ｃ）は、補正値生成回路（２４１）と、補正値上限レジスタ（２４２）と、補正値下限レジスタ（２４３）と比較器（２４４、２４５）と第２のセレクタ（２４６Ｂ、２４６Ｃ）とを備えることが好ましい。補正値生成回路（２４１）は、タイマ（２３）の測定値（３３）から第１の補正値（３４Ａ）を生成する。補正値上限レジスタ（２４２）には、補正値（３４）の上限値（３４Ｂ）が設定される。又、補正下限レジスタ（２４３）には、補正値（３４）の下限値（３４Ｃ）が設定される。比較器は、補正値生成回路（２４１）で生成された第１の補正値（３４Ａ）が上限値（３４Ｂ）と下限値（３４Ｃ）との範囲内であるか否か比較する。第２のセレクタ（２４６Ｂ、２４６Ｃ）は、比較器（２４４、２４５）の比較結果（Ｃ１、Ｃ２）に基づき第１の補正値（３４Ａ）、又は上限値（３４Ｂ）、又は下限値（３４Ｃ）のいずれか１つを選択して補正値（３４）として出力する。この際、第１の補正値（３４Ａ）が上限値（３４Ｂ）と下限値（３４Ｃ）の範囲内である場合、第２のセレクタ（２４６Ｂ、２４６Ｃ）は、第１の補正値（３４Ａ）を選択して補正値（３４）として出力する。又、第１の補正値（３４Ａ）が上限値（３４Ｂ）と下限値（３４Ｃ）との範囲外である場合、第２のセレクタ（２４６Ｂ、２４６Ｃ）は選択出力を切替えずに維持しても良い。
【００１９】
第２の態様に係るボーレート補正回路（２４Ｂ）では、第１の補正値（３４Ａ）が上限値（３４Ｂ）より大きい場合、第２のセレクタ（２４６Ｂ）は、上限値（３４Ｂ）を選択して補正値（３４）として出力する。又、第１の補正値（３４Ａ）が下限値（３４Ｃ）より小さい場合、第２のセレクタ（２４６Ｂ）は、下限値（３４Ｃ）を選択して補正値（３４）として出力する。
【００２０】
第３の態様に係る第２のセレクタ（２４６Ｃ）には、第２のレジスタ（２６）内の初期値（３５）が入力される。この際、第１の補正値（３４Ａ）が上限値（３４Ｂ）と下限値（３４Ｃ）との範囲外である場合、第２のセレクタ（２４６Ｃ）は、第２のレジスタ（２６）内の初期値（３５）を選択して出力する。
【００２１】
又、本発明に係るシリアルデータ（４２）は、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）通信プロトコルに基づくシンクフィールド内の同期バイトであることが好ましい。本発明によれば、ハードウェアによってシンクフィールド（４２）から補正値（３４）を取得するため、シンクフィールド（４２）に続くＩＤフィールド（４４）までの待ち時間が短縮され、転送速度が向上する。
【発明の効果】
【００２２】
本発明によるシリアル通信回路、これを用いた半導体集積回路、及びシリアル通信システムによれば、ボーレートの補正の際ノード内のＣＰＵの負担を軽減することができる。
【００２３】
又、シリアル通信の転送速度を向上させることができる。
【００２４】
更に、スレーブノードにおけるボーレート誤差を縮小することができる。
【発明を実施するための最良の形態】
【００２５】
以下、添付図面を参照して、本発明によるシリアル通信システムの実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
【００２６】
（全体構成）
以下、図１を参照して、本発明によるシリアル通信システムの実施の形態を説明する。本実施の形態におけるシリアル通信システムとして、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）通信プロトコルを利用したＬＩＮ通信システムを一例に説明する。図１は、本発明によるシリアル通信システムの実施の形態における構成図である。本発明によるシリアル通信システムは、１つのマスタノード１００と、複数のスレーブノード２００、２０１、・・・を具備し、それぞれバス３００を介して接続されている。本実施の形態では、マスタノード１００及びスレーブノード２００としてマイコン（ＭＣＵ：Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）が例示される。尚、スレーブノード２００、２０１、・・・、のそれぞれの構成及び動作は同じであるので、以下の説明では、スレーブノード２００について説明する。又、同様な構成・動作を示す構成要素には同じ参照番号を付して説明する。尚、各スレーブノード２００、２０１、・・・内の構成は同一構成として同一番号を付して説明するが、それぞれ個別の構成を具備しており、本発明の機能を実現すれば、ＣＰＵ１０やクロックジェネレータ１１などは同一構成でなくともよい。
【００２７】
図１を参照して、マスタノード１００は、ＣＰＵ１０と、クロックジェネレータ１１と、シリアル通信回路１５と、記憶装置１３Ａと、を具備する。シリアル通信回路１５は、ボーレートジェネレータ１２と、Ｉ／Ｏインタフェース１４とを備え、スレーブノード２００とシリアル通信を実施する。ここで、シリアル通信回路１５はＵＡＲＴに例示されるシリアル通信用インタフェースである。又、Ｉ／Ｏインタフェース１４はボーレートジェネレータ１２で決定されたボーレートに基づいてスレーブノード２００とシリアル通信を実施する。
【００２８】
マスタノード１００の記憶装置１３Ａには、フレームの転送時期や転送先を決定するマスタタスク１３１と、フレーム毎に転送するデータフィールドを準備するスレーブタスク１３２とが格納されている。詳細には、記憶装置１３Ａにはマスタタスク１３１用のプログラムとスレーブタスク１３２用のプログラムが格納され、ＣＰＵ１０が、それぞれのプログラムを実行することでマスタタスク１３１、及びスレーブタスク１３２の機能を実現する。マスタタスク１３１には、メッセージシーケンスが転送スケジュールとして予め設定されている。マスタノード１００のＣＰＵ１０は、フレームヘッダを生成してＩ／Ｏインタフェース１４を介して各スレーブノード２００、２０１、・・・に送信し、フレームヘッダで指定されたスレーブノード（例えば、スレーブノード２００）からのレスポンスをＩ／Ｏインタフェース１４を介して受信する。スレーブタスク１３２はフレーム毎に転送するデータフィールドを準備する。
【００２９】
図１を参照して、スレーブノード２００は、ＣＰＵ１０と、クロックジェネレータ１１と、シリアル通信回路１５と、記憶装置１３Ｂとを具備する。スレーブノード２００の構成は、記憶装置１３Ｂの構成以外、マスタノード１００の構成と同じである。すなわち、マスタタスク１３１が存在しない点がマスタノード１００と異なる。
【００３０】
記憶装置１３Ｂには、スレーブノード毎に固有のスレーブ用プログラム１３２が格納されている。スレーブノード２００のＣＰＵ１０はスレーブ用プログラムを実行することでスレーブタスク１３２の機能を実現する。スレーブノード２００は、マスタノード１００から転送されるフレームヘッダに基づき、転送するレスポンスを準備する。詳細には、ＣＰＵ１０は、スレーブタスク１３２を実行してレスポンスを生成し、Ｉ／Ｏインタフェース１４を介してマスタノード１００や他のスレーブノード２０１に転送する。又、スレーブタスク１３２は、レスポンスの送信のほかに、マスタノード１００や他のスレーブノード２０１からのレスポンスを受信することが可能である。尚、スレーブノードの記憶装置１３Ｂにマスタ用プログラムも格納されていても構わない。この際、スレーブノードとして動作する場合はマスタ用プログラムが実行されないようプログラムで制御すればよい。
【００３１】
マスタノード１００及びスレーブノード２００のクロックジェネレータ１１は、システムクロック１０１をＣＰＵ１０やボーレートジェネレータ１２に出力する回路である。クロックジェネレータ１１は、例えば外部接続端子に水晶振動子を接続することによって生ずる発振出力に基づいてシステムクロック１０１を生成する。ＣＰＵ１０は、システムクロック１０１を動作クロックとして各種処理を実行する。又、ボーレートジェネレータ１２は、システムクロック１０１に基づいてボーレートを決定する。Ｉ／Ｏインタフェース１４はＣＰＵ１０から転送されるパラレルデータをシリアルデータに変換し、ボーレートジェネレータ１２で決定されたボーレートに従ってバス３００に転送する。あるいは、バス３００から転送されるシリアルデータをボーレートに従ってサンプリングし、取得したデータをパラレルデータに変換してＣＰＵ１０に転送する。
【００３２】
マスタノード１００のＣＰＵ１０はマスタタスク１３１を実行することでフレームヘッダをスレーブノード２００に送信する。又、スレーブタスク１３２を実行することで、フレームヘッダに続いてスレーブノード２００から送信されるレスポンスを受信することができる。あるいは、フレームヘッダに続いてスレーブノード２００へレスポンスを送信することもできる。スレーブノード２００のＣＰＵ１０は、スレーブタスク１３２を実行し、マスタノード１００から転送されるフレームヘッダに応答してレスポンスをマスタノード１００に転送する。
【００３３】
以下、図４を参照して、マスタノード１００がフレームヘッダに続いて、データフィールドを含むレスポンスを転送する場合のフレームスロットの構成を説明する。マスタノード１００がスレーブノード２００に転送するフレームスロットには、フレームヘッダとレスポンスが含まれている。フレームヘッダは、シンクブレークフィールド４１（Ｓｙｎｃｈ  Ｂｒｅａｋ  Ｆｉｅｌｄ、以下ブレークフィールド４１と称す）、シンクフィールド４２（Ｓｙｎｃｈ  Ｆｉｅｌｄ）、ＩＤフィールド４４（Ｉｄｅｎｔｔｉｆｉｅｒ  Ｆｉｅｌｄ）を含む。シンクフィールド４２とＩＤフィールド４４との間は、所定の時間の待ち時間４３が設定される。本実施の形態におけるブレークフィールド４１とシンクフィールド４２のフォーマットは、ＬＩＮ通信プロトコルで規定される。すなわち、マスタノード１００から送信されるブレークフィールド４１は、１３ビット以上のドミナントレベル（Ｌｏｗレベル）の信号であり、受信側のスレーブノード２００は１１ビット以上のＬｏｗレベルを検出してブレークフィールドと判定する。同様にシンクフィールド４２は、スタートビットとストップビットとの間に０ｘ５５（１６進数）のデータ値を有する信号である。すなわちシンクフィールド４２はリセッシブレベル（Ｈｉｇｈレベル）とドミナントレベル（Ｌｏｗレベル）が交互に連続する８ビットのデータを含んでいる。又、ＩＤフィールド４４は、６ビットのＩＤと２ビットのパリティを含む。待ち時間４３は、マスタタスク１３１内のメッセージシナリオに設定された任意な時間である。
【００３４】
ＩＤフィールド４４に引き続き転送されるレスポンスは、データフィールド（Ｄａｔａ  Ｆｉｅｌｄ）４５とチェックサムフィールド４６（Ｃｈｅｃｋ  Ｓｕｍ  Ｆｉｅｌｄ）とが含まれる。データフィールドは、最大８バイトからなるデータフィールド４５１〜４５ｎを含む。レスポンスにはフレームスロットの最後、すなわち最後尾のデータフィールド４５ｎに続いてチェックサムフィールド４６が設けられる。チェックサムフィールド４６はデータ伝送のエラー検出に使用される。
【００３５】
本実施の形態におけるＩ／Ｏインタフェース１４は、例えばＵＡＲＴが用いられる。この場合、バス３００上に転送されるフレームのうち、ブレークフィールド４１以外は、ＵＡＲＴのフレームフォーマットが採用される。
【００３６】
スレーブノード２００のボーレートジェネレータ１２は、マスタノード１００から転送されるシンクフィールド４２を用いて自身のボーレートを補正する。
【００３７】
（第１の実施の形態）
第１の実施の形態におけるマスタノード１００及びスレーブノード２００は、ボーレートジェネレータ１２としてボーレートジェネレータ１２Ａを備える。以下、図２及び図３を参照して、第１の実施の形態におけるボーレートジェネレータ１２Ａの構成の詳細を説明する。
【００３８】
図２は、本発明によるボーレートジェネレータ１２Ａの実施の形態における構成を示すブロック図である。ボーレートジェネレータ１２Ａは、エッジディテクタ２１、エッジカウンタ２２、シンクフィールド測定タイマ２３、ボーレート補正回路２４Ａ、ボーレート補正値格納レジスタ２５、ボーレート初期値設定レジスタ２６、セレクタ２７、一致検出回路２９、カウンタ２８を具備する。
【００３９】
スレーブノード２００にシンクブレークフィールド（１１ビット以上のＬレベル）が入力されると、図示しない回路からエッジディテクタ２１に対しシンクブレークフィールド検出信号３０が入力される。エッジディテクタ２１は、シンクブレークフィールド検出信号３０に応答してバス３００上のシリアルデータの立下りエッジ検出動作を開始する。エッジディテクタ２１は、シンクフィールド４２のスタートビットの立下りエッジを検出するとシンクフィールド開始信号３１をエッジカウンタ２２及びシンクフィールド測定タイマ２３に出力する。又、エッジディテクタ２１はシンクフィールド４２の立下りエッジを検出する毎にエッジ検出信号４０をエッジカウンタ２２に出力する。エッジカウンタ２２は、シンクフィールド開始信号３１に応答して、エッジ検出信号４０をカウントしてシンクフィールド４２の立下りエッジの数を計数する。エッジカウンタ２２は、シンクフィールド開始信号３１を受信してから所定の回数までエッジ検出信号４０を計数すると、シンクフィールド測定タイマ２３及びボーレート補正回路２４Ａに対し、シンクフィールド終了信号３２を出力する。シンクフィールド測定タイマ２３は、クロックジェネレータ１１から入力されるシステムクロック１０１をカウントして時間を測定する。又、シンクフィールド測定タイマ２３は、シンクフィールド開始信号３１を受信してからシンクフィールド終了信号３２を受信するまでの時間を測定時間３３とする。すなわち、シンクフィールド測定タイマ２３は、連続する所定数（ｎ個）のシリアルデータの１ビット時間の総和（以下、ｎビット期間と称す）を測定時間３３とする。尚、本発明によるエッジカウンタ２２は、シンクフィールド開始信号３１を受信してから立下りエッジを４回計数するとシンクフィールド終了信号３２を出力する。この際、シンクフィールド４２は０ｘ５５値であり、測定時間３３は８ビット期間に対応するシステムクロック１０１のカウント数となる。
【００４０】
ボーレート補正回路２４Ａはシンクフィールド終了信号３２をトリガとして、測定時間３３からボーレートを補正するための所定の単位ビット期間を抽出し、ボーレート補正値３４としてボーレート補正値格納レジスタ２５に格納する。本発明によるボーレート補正回路２４Ａは、ボーレート補正値３４として１／２ビット期間をボーレート補正値格納レジスタ２５に格納する。ボーレート補正値格納レジスタ２５は、格納したボーレート補正値３４をセレクタ２７に出力する。ＣＰＵ１０は、ボーレート補正値格納レジスタ２５内に格納されたボーレート補正値３４を読み出し用データ線を介して読み出すことができる。これにより、ボーレート選択信号１０２によりボーレート補正値格納レジスタ２５を選択している場合、現在（補正後）のボーレートを把握することができる。
【００４１】
図３は、第１の実施の形態におけるボーレート補正回路２４Ａの構成を示すブロック図である。補正値生成回路２４１は、シンクフィールド測定タイマ２３から測定時間３３を取得する。ここで、測定時間３３はバイナリ値である。補正値生成回路２４１は、シンクフィールド終了信号３２をトリガとして測定時間３３の下位４ビットを切捨て、測定時間３３の上位８ビットをボーレート補正値３４としてボーレート補正値格納レジスタ２５に格納する。すなわち、補正値生成回路２４１はシンクフィールド４２における８ビット期間に基づき、１／２ビット期間の平均値を抽出してボーレート補正値格納レジスタ２５に格納する。
【００４２】
一方、ＣＰＵ１０はボーレートの初期値をボーレート設定値３５としてボーレート初期値設定レジスタ２６に格納する。ここで、ボーレート設定値３５は、マスタタスク１３１に規定されたボーレートに基づいて予め設定された１／２ビット期間である。セレクタ２７にはボーレート補正値格納レジスタ２５から出力されるボーレート補正値３４とボーレート初期値設定レジスタ２６から出力されるボーレート設定値３５が入力される。セレクタ２７は、ＣＰＵ１０によって出力されるボーレート選択信号１０２に基づき、ボーレート補正値３４とボーレート設定値３５の一方をボーレートの設定に使用するボーレート選択出力３６として一致検出回路２９に出力する。例えば、ボーレート選択信号１０２が“０”に設定されている場合は、ボーレート設定値３５をボーレート選択出力３６として出力し、“１”に設定されている場合はボーレート補正値３４をボーレート選択出力３６として出力する。マスタノード１００のボーレートジェネレータ１２の場合、シンクフィールド４２によってボーレートを補正する必要がないため、ボーレート選択信号１０２は“０”に設定される。尚、セレクタ２７に対してボーレート選択信号１０２をＣＰＵ１０から直接出力しているが、ＣＰＵ１０の外部（例えばボーレートジェネレータの内部）に選択用のフラグを設けて、ＣＰＵ１０がそのフラグを"１"又は"０"に設定してセレクタ２７に供給するようにしても良い。これによりＣＰＵ１０が常に選択信号を出力する必要がない。
【００４３】
カウンタ２８は、クロックジェネレータ１１から出力されるシステムクロック１０１をカウントし、カウンタ値３７を一致検出回路２９に出力する。一致検出回路２９は、ボーレート選択出力３６とカウンタ値３７とが一致するタイミングで一致検出信号３８をＩ／Ｏインタフェース１４に出力する。すなわち、一致検出回路２９は、補正された、あるいは予め設定された１／２ビット期間周期で一致検出信号３８をＩ／Ｏインタフェース１４に出力する。
【００４４】
一致検出信号３８は、Ｉ／Ｏインタフェース１４に入力され、内部で図示しない分周回路によって分周され、シリアルデータから情報を取得するためのサンプリングクロック３９やシリアルデータを送信するためのシフトクロックが生成される。Ｉ／Ｏインタフェース１４は、サンプリングクロック３９に応じてバス３００を介して入力されるシリアルデータを取得し、パラレルデータに変換する。変換されたデータはＣＰＵ１０により読み出される。あるいは、ＣＰＵ１０から転送されたパラレルデータをシフトクロックに応じてシリアルデータとしてバス３００に転送する。
【００４５】
（動作）
以下、図４から図７を参照して、本発明によるシリアル通信システムの第１の実施の形態におけるボーレートの補正動作を説明する。
【００４６】
図５は、本発明によるボーレートジェネレータ１２Ａにおける測定時間３３の測定処理を示すタイミングチャートである。図６は、本発明によるボーレート補正回路２４Ａからボーレート補正値３４が格納されたボーレート補正値格納レジスタ２５の構成図である。図７は、セレクタ２７のボーレート選択出力３６として出力されるボーレート補正値３４を用いてボーレートを補正する処理を示すタイミングチャートである。ここで、マスタノード１００とスレーブノード２００間の通信における目標ボーレートが１５６２５ｂｐｓ、スレーブノード２００のシステムクロック１０１が５ＭＨｚである場合の、スレーブノード２００におけるボーレート補正処理の動作を説明する。この際、システムクロック１０１の１クロック周期を１ｃｌｋと表すと、１ｃｌｋは０．２μｓｅｃ、１ビット時間は３２０ｃｌｋとなる。従って、１／２ビット時間は１６０ｃｌｋとなり、スレーブノード２００のボーレート初期値設定レジスタ２６には１６０（１０進数）のバイナリ値である“１０１０＿００００Ｂ”（以下、Ｂはバイナリ値を示す）が設定される。又、初期設定時（ボーレート補正実施前）には、ボーレート補正値格納レジスタ２５にも同様に“１０１０＿００００Ｂ”が設定される。
【００４７】
図４を参照して、マスタノード１００は、バス３００を介してシンクフィールド４２を含むフレームヘッダをスレーブノード２００に転送する。スレーブノード２００のエッジディテクタ２１は、入力されるブレークフィールド検出信号３０に応答してシンクフィールド４２の測定動作を開始する。エッジディテクタ２１は、シンクフィールド４２のスタートビットを検出すると、シンクフィールド開始信号３１をエッジカウンタ２２及びシンクフィールド測定タイマ２３に出力する。
【００４８】
図５を参照して、エッジカウンタ２２はシンクフィールド開始信号３１を受信後シンクフィールド４２の立下り回数を計数する。シンクフィールド測定タイマ２３はシンクフィールド開始信号３１に応答してシステムクロック１０１に基づき時間を測定する。エッジカウンタ２２は４回目の立ち下がりを計数するとシンクフィールド終了信号３２をシンクフィールド測定タイマ２３に出力する。シンクフィールド測定タイマ２３は、シンクフィールド終了信号３２に応答して時間測定を終了し、測定時間３３をボーレート補正回路２４Ａに出力する。すなわち、シンクフィールド測定タイマ２３は、立下りエッジを４回計数するまでの時間を測定する。又、本実施の形態におけるシンクフィールド４２は０ｘ５５値のデータであるため、測定時間３３は、シンクフィールド４２の８ビット期間に相当する。
【００４９】
マスタノード１００とスレーブノード２００のボーレートが目標通りに一致している場合、測定時間３３は、３２０ｃｌｋ×８＝２５６０ｃｌｋ、すなわちシンクフィールド測定タイマ２３の値は“１０１０＿００００＿００００Ｂ”となる。しかし、マスタノード１００とスレーブノード２００のボーレートがずれている場合、マスタノード１００に合わせてスレーブノード２００側でボーレートの補正が必要となる。以下、スレーブノード２００における測定時間３３が“１０１０＿００１０＿１０００Ｂ”（＝２６００ｃｌｋ）、すなわち１ビット時間は、３２５ｃｌｋ×０．２μｓｅｃ＝６５μｓｅｃであり、測定ボーレートが１５３８４．６ｂｐｓである場合のボーレート補正処理の詳細を説明する。この場合、マスタノード１００の実際のボーレートに対するスレーブノード２００のボーレートの誤差は、（１５６２５−１５３８４．６）／１５３８４．６より、１．５６％となる。スレーブノード２００は、測定した８ビット分の時間である２６００ｃｌｋに基づいてスレーブノード２００のボーレートを補正する。
【００５０】
図６に示すように、補正値生成回路２４１は、測定時間３３の値“１０１０＿００１０＿１０００Ｂ”の下位４ビットを切り捨て、上位８ビットをボーレート補正値３４としてボーレート補正値格納レジスタ２５に自動的に格納する。すなわち、ボーレート補正値３４として“１０１０＿００１０Ｂ”（＝１６２ｃｌｋ）がボーレート補正値格納レジスタ２５に格納される。
【００５１】
ここで、セレクタ２７に入力されるボーレート選択信号１０２が“１”である場合、セレクタ２７はボーレート補正値３４をボーレート選択出力３６として一致検出回路２９に出力する。一方、カウンタ２８はシステムクロック１０１を計数したカウンタ値３７を一致検出回路２９に出力している。セレクタ２７からボーレート選択出力３６が一致検出回路２９に入力されると、その後はボーレート選択出力３６として出力されるボーレート補正値３４との一致検出が実行される。図７を参照して、一致検出回路２９はカウンタ値３７とボーレート選択出力３６とが一致する時、一致検出信号３８を出力する。カウンタ２８は一致検出信号３８に応答してカウンタ値３７がクリアされたのち計数を続ける。このようにして、一致検出回路２９は、１／２ビット期間（１６２ｃｌｋ）周期で一致検出信号３８をＩ／Ｏインタフェース１４に出力することができる。
【００５２】
一致検出信号３８は、図示しない分周回路により２分周され、シリアルデータを取得するためのサンプリングクロック３９としてＩ／Ｏインタフェース１４に入力される。この場合、サンプリングクロック３９の周期は３２４ｃｌｋ＝６４．８μｓｅｃとなる。すなわち、補正されたボーレートは１５４３２．１ｂｐｓとなり、マスタノード１００の実際のボーレートとの誤差は、（１５４３２．１−１５３８４．６）／１５３８４．６より０．３％に抑えられる。
【００５３】
以上のように、スレーブノード２００は、マスタノード１００から転送されたシンクフィールド４２を利用してボーレートを補正することができる。ただし、マスタノード１００は、セレクタ２７にボーレート選択信号１０２として“０”が入力され、ボーレート設定値３５によって自身のボーレートを決定することが好ましい。
【００５４】
本発明によるボーレートジェネレータ１２Ａは、シンクフィールド測定タイマ２３を用いてシンクフィールド４２を測定し、ボーレート補正回路２４Ａによりボーレートの補正を行うためＣＰＵ１０の処理時間であるオーバーヘッドが生じず、シンクフィールド４２とＩＤフィールド４４との間に設定される待ち時間４３を短縮することができる。このため、転送速度を向上させることができる。又、ＣＰＵ１０によってボーレートの補正処理を行わないため、ＣＰＵ１０に対する負担を軽減することができる。
【００５５】
本発明によるボーレートジェネレータ１２Ａは、ＣＰＵ１０によって設定されたボーレート設定値３５と、シンクフィールド４２を測定することによって得られるボーレート補正値３４とを選択的に使用してボーレートを補正することができる。このため、本発明によるボーレートジェネレータ１２Ａは、マスタノード１００又はスレーブ２００のいずれにも具備することができる。又、本発明によるシリアル通信システムは、ボーレートジェネレータ１２Ａをスレーブノード２００だけに具備し、マスタノード１００に替えて従来技術によるマスタノードを具備した形態でも良いことは言うまでもない。しかし、マスタノードとスレーブノードのいずれとしても使用可能な汎用性を重視した装置によりシリアル通信システムを構築する場合、本発明によるマスタノード１００を用いることがより好ましい。
【００５６】
（第２の実施の形態）
以下、図８及び図９を参照して、本発明によるシリアル通信システムの第２の実施の形態を説明する。図１を参照して、第２の実施の形態におけるシリアル通信システムは、ボーレートジェネレータ１２として、ボーレートジェネレータ１２Ｂを具備する。以下、第１の実施の形態と同符号の構成等は動作・機能が同様であるので説明は省略される。
【００５７】
（構成）
図８は、第２の実施の形態におけるボーレートジェネレータ１２Ｂの構成を示すブロック図である。図８を参照して、第２の実施の形態におけるボーレートジェネレータ１２Ｂは、第１の実施の形態におけるボーレート補正回路２４Ａに替えてボーレート補正回路２４Ｂを備える構成である。図９は、第２の実施の形態におけるボーレート補正回路２４Ｂの構成を示すブロック図である。図９を参照して、第２の実施の形態におけるボーレート補正回路２４Ｂは、補正値生成回路２４１、補正上限レジスタ２４２、比較器２４４、２４５、補正下限レジスタ２４３、セレクタ２４６Ｂを備える。第２の実施の形態における補正値生成回路２４１は、第１の実施の形態同様に、測定時間３３から１／２ビット期間を抽出し、ボーレート補正用の第１の補正値３４Ａとしてセレクタ２４６Ｂに出力する。補正上限レジスタ２４２及び補正下限レジスタ２４３には、補正したボーレートが目標となるボーレートから大きく外れることを防ぐための境界値がＣＰＵ１０により設定される。補正上限レジスタ２４２にはボーレート補正用の第２の補正値である補正上限設定値３４Ｂが設定され、補正下限レジスタにはボーレート補正用の第３の補正値である補正下限設定値３４Ｃが設定される。例えば、ボーレート設定値３５に対し１０％増減させた値が、補正上限設定値３４Ｂ、補正下限設定値３４Ｃとして設定される。具体的には、ボーレート設定値３５が１６０ｃｌｋ期間を示す値“１０１０＿００００Ｂ”である場合、補正上限設定値３４Ｂは１７６ｃｌｋ期間を示す値“１０１１＿００００Ｂ”が設定される。又、補正下限設定値３４Ｃは１４４ｃｌｋ期間を示す値“１００１＿００００Ｂ”が設定される。以下、第２の補正値は補正上限設定値３４Ｂ、第３の補正値は補正下限設定値３４Ｃとして説明する。
【００５８】
セレクタ２４６Ｂには、補正値生成回路２４１、補正上限レジスタ２４２、補正下限レジスタ２４３から、それぞれ第１の補正値３４Ａ、補正上限設定値３４Ｂ、補正下限設定値３４Ｃが入力される。セレクタ２４６Ｂは、比較器２４４及び比較器２４５からそれぞれ出力される比較結果Ｃ１及びＣ２に基づいて、ボーレート補正値格納レジスタ２５に格納するボーレート補正値３４を、第１の補正値３４Ａ、補正上限設定値３４Ｂ、補正下限設定値３４Ｃの中から選択して出力する。比較器２４４は、第１の補正値３４Ａと補正上限設定値３４Ｂの大きさを比較し、その比較結果Ｃ１を出力する。同様に、比較器２４５は、第１の補正値３４Ａと補正下限設定値３４Ｃの大きさを比較し、その比較結果Ｃ２を出力する。
【００５９】
例えば、第１の補正値３４Ａが補正上限設定値３４Ｂより大きい場合、比較器２４４は比較結果Ｃ１として“１”を出力し、等しいか小さい場合は“０”を出力する。同様に第１の補正値３４Ａが補正下限設定値３４Ｃより小さい場合、比較器２４５は比較結果Ｃ２として“１”を出力し、等しいか大きい場合は“０”を出力する。すなわち、第１の補正値３４Ａが補正上限設定値３４Ｂと補正下限設定値３４Ｃの範囲内である場合、セレクタ２４６Ｂには比較器２４４と比較器２４５における比較結果Ｃ１、Ｃ２の組合せとして“００”が入力され、第１の補正値３４Ａがボーレート補正値３４として選択出力される。又、第１の補正値３４Ａが補正上限補正値３４Ｂを越えた値である場合、セレクタ２４６Ｂには比較器２４４と比較器２４５における比較結果Ｃ１、Ｃ２の組合せとして“１０”が入力され、補正上限設定値３４Ｂがボーレート補正値３４として選択出力される。又、第１の補正値３４Ａが補正下限補正値３４Ｃより小さい値である場合、セレクタ２４６Ｂには比較器２４４と比較器２４５における比較結果Ｃ１、Ｃ２の組合せとして“０１”が入力され、補正下限設定値３４Ｃがボーレート補正値３４として選択出力される。
【００６０】
このように、第１の補正値３４Ａが、設定された上限値又は下限値から逸脱した場合、第１の補正値３４Ａに替えて、設定された上限値又は下限値を用いてボーレートの補正ができる。すなわち、本実施の形態におけるボーレート補正回路２４Ｂは、伝送経路であるバス３００の障害や雑音等によって正確に測定時間３３を測定できなかった場合、設定された補正上限設定値３４Ｂ、又は補正下限設定値３４Ｃによってボーレートを補正することができる。
【００６１】
（動作）
スレーブノード２００のボーレートジェネレータ１２Ｂは、マスタノード１００から転送されるシンクフィールド４２に基づいてボーレートを補正する。第２の実施の形態におけるボーレートジェネレータ１２Ｂは、ボーレート補正回路２４Ｂにおけるボーレート補正値３４の抽出動作のみが第１の実施の形態と異なる。以下では、ボーレート補正回路２４Ｂにおけるボーレート補正値３４の抽出動作について説明する。
【００６２】
図９を参照して、第２の実施の形態における補正値生成回路２４１は、シンクフィールド測定タイマ２３から測定時間３３を取得すると、シンクフィールド終了信号３２に応答して、第１の補正値３４Ａをセレクタ２４６Ｂ、比較器２４４、及び比較器２４５に出力する。補正値生成回路２４１の動作は第１の実施の形態と同様に、例えば、測定時間３３が“１０１０＿００１０＿１０００Ｂ”の場合、下位４ビットを切り捨て、上位８ビットを第１の補正値３４Ａの値“１０１０＿００１０Ｂ”（＝１６２ｃｌｋ）として出力する。
【００６３】
ここで補正上限レジスタ２４２には、補正上限設定値３４Ｂとして“１０１１＿００００Ｂ”が設定され、補正下限レジスタ２４３には、補正下限設定値３４Ｃとして“１００１＿００００Ｂ”が設定されているものとする。
【００６４】
比較器２４４は、第１の補正値３４Ａと補正上限設定値３４Ｂの大きさを比較し、第１の補正値３４Ａが小さいので、セレクタ２４６Ｂに“０”を出力する。又、比較器２４５は、第１の補正値３４Ａと補正下限設定値３４Ｃの大きさを比較し、第１の補正値３４Ａが大きいのでセレクタ２４６Ｂに“０”を出力する。セレクタ２４６Ｂは、比較器２４４と比較器２４５との比較結果Ｃ１、Ｃ２の組合せ“００”に基づき第１の補正値３４Ａである“１０１０＿００１０Ｂ”をボーレート補正値３４として選択出力し、その出力値がボーレート補正値格納レジスタ２５に格納される。
【００６５】
又、第１の補正値３４Ａが補正上限設定値３４Ｂを越える場合、比較器２４４は比較結果Ｃ１としてセレクタ２４６Ｂに“１”を出力する。セレクタ２４６Ｂは比較結果Ｃ１ “１”に基づき補正上限設定値３４Ｂである“１０１１＿００００Ｂ”をボーレート補正値３４として選択出力し、その出力値がボーレート補正値格納レジスタ２５に格納される。あるいは、第１の補正値３４Ａが補正下限設定値３４Ｃを下回る場合、比較器２４６Ｂは比較結果Ｃ２としてセレクタ２４６Ｂに“１”を出力する。セレクタ２４６Ｂは比較結果Ｃ２“１”に基づき補正下限設定値３４Ｃである“１００１＿００００Ｂ”をボーレート補正値３４として選択出力し、その出力値がボーレート補正値格納レジスタ２５に格納される。
【００６６】
一致検出回路２９は、第１の実施の形態と同様にボーレート補正値格納レジスタ２５に格納されたボーレート補正値３４に基づき一致検出信号３８をＩ／Ｏインタフェース１４に出力する。
【００６７】
以上のように、第２の実施の形態におけるボーレートジェネレータ１２Ｂは、ボーレートを補正するためのボーレート補正値３４の上限と下限が設けられているため、補正したボーレートが予め設定した目標ボーレートから大きく外れることを防止できる。
【００６８】
（第３の実施の形態）
以下、図１０及び図１１を参照して、本発明によるシリアル通信システムの第３の実施の形態を説明する。図１を参照して、第３の実施の形態におけるシリアル通信システムは、ボーレートジェネレータ１２として、ボーレートジェネレータ１２Ｃを具備する。以下、第１及び第２の実施の形態と同符号の構成等は動作・機能が同様であるので説明は省略される。
【００６９】
図１０は、第３の実施の形態におけるボーレートジェネレータ１２Ｃの構成を示すブロック図である。図１０を参照して、第３の実施の形態におけるボーレートジェネレータ１２Ｃは、第１の実施の形態におけるボーレート補正回路２４Ａに替えてボーレート補正回路２４Ｃを備える構成である。又、本実施の形態によるボーレート補正回路２４Ｃには、ボーレート初期値設定レジスタ２６からボーレート設定値３５が入力される。
【００７０】
（構成）
図１１は、第３の実施の形態におけるボーレート補正回路２４Ｃの構成を示すブロック図である。図１０を参照して、第３の実施の形態におけるボーレート補正回路２４Ｃは、第２の実施の形態におけるセレクタ２４６Ｂをセレクタ２４６Ｃに替えた構成である。又、セレクタ２４６Ｃには、ボーレート初期値設定レジスタ２６からボーレート設定値３５が入力される。更に、補正値生成回路２４１は、第２の実施の形態同様に、測定時間３３から１／２ビット期間を抽出し、第１の補正値３４Ａとしてセレクタ２４６Ｃに出力する。
【００７１】
比較器２４４と比較器２４５の構成は第２の実施の形態と同じである。セレクタ２４６Ｃは、比較器２４４及び比較器２４５の比較結果Ｃ１及びＣ２に基づいて、ボーレート設定値３５、又は第１の補正値３４Ａのいずれか一方をボーレート補正値３４として選択出力し、出力値がボーレート補正値格納レジスタ２５に格納される。
【００７２】
セレクタ２４６Ｃは、第１の補正値３４Ａが補正上限設定値３４Ｂと補正下限設定値３４Ｃの範囲内である場合、第１の補正値３４Ａをボーレート補正値３４として選択出力する。又、第１の補正値３４Ａが補正上限補正値３４Ｂを越えた値である場合、ボーレート設定値３５をボーレート補正値３４として選択出力する。又、第１の補正値３４Ａが補正下限補正値３４Ｃより小さい値である場合、ボーレート設定値３５をボーレート補正値３４として選択出力する。
【００７３】
このように、第１の補正値３４Ａが、設定された上限値又は下限値から逸脱した場合、第１の補正値３４Ａに替えて、予めＣＰＵ１０によって設定された目標ボーレートを指定するボーレート設定値３５が用いられてボーレートが補正される。すなわち、本実施の形態におけるボーレート補正回路２４Ｃは、伝送経路の障害や雑音等によって正確に測定時間３３を測定できなかった場合、ＣＰＵ１０によって設定されたボーレート設定値３５によってボーレートを補正することができる。
【００７４】
（動作）
スレーブノード２００のボーレートジェネレータ１２Ｃは、マスタノード１００から転送されるシンクフィールド４２に基づいてボーレートを補正する。第３の実施の形態におけるボーレートジェネレータ１２Ｃは、ボーレート補正回路２４Ｃにおけるボーレート補正値３４の抽出動作のみが第２の実施の形態と異なる。以下、ボーレート補正回路２４Ｃにおけるボーレート補正値３４の抽出動作について説明する。
【００７５】
図１１を参照して、第３の実施の形態における補正値生成回路２４１は、シンクフィールド測定タイマ２３から測定時間３３を取得すると、第２の実施の形態と同様に、シンクフィールド終了信号３２に応答して、第１の補正値３４Ａをセレクタ２４６Ｃ、比較器２４４、及び比較器２４５に出力する。
【００７６】
比較器２４４は、第１の補正値３４Ａと補正上限設定値３４Ｂの大きさを比較し、比較結果Ｃ１としてセレクタ２４６Ｃに“０”又は“１”を出力する。又、比較器２４５は、第１の補正値３４Ａと補正下限設定値３４Ｃの大きさを比較し、比較結果Ｃ２としてセレクタ２４６Ｃに“０”又は“１”を出力する。
【００７７】
セレクタ２４６Ｃは、比較器２４４と比較器２４５の比較結果Ｃ１、Ｃ２の組合せが“００”、すなわちに第１の補正値３４Ａが補正上限設定値３４Ｂと補正下限設定値３４Ｃとの範囲内の大きさである場合、第１の補正値３４Ａをボーレート補正値３４としてボーレート補正値格納レジスタ２５に対して出力する。
【００７８】
又、第１の補正値３４Ａが補正上限設定値３４Ｂを越える場合、比較器２４４は比較結果Ｃ１としてセレクタ２４６Ｃに“１”を出力し、セレクタ２４６Ｃは比較結果Ｃ１“１”に基づきボーレート設定値３５を選択してボーレート補正値３４としてボーレート補正値格納レジスタ２５に対し出力する。あるいは、第１の補正値３４Ａが補正下限設定値３４Ｃを下回る場合、比較器２４５は比較結果Ｃ２としてセレクタ２４６Ｃに“１”を出力し、セレクタ２４６Ｃは 比較結果Ｃ２“１”に基づきボーレート設定値３５を選択してボーレート補正値３４としてボーレート補正値格納レジスタ２５に対し出力する。
【００７９】
一致検出回路２９は、第１の実施の形態と同様にボーレート補正値格納レジスタ２５に格納されたボーレート補正値３４に基づき一致検出信号３８をＩ／Ｏインタフェース１４に出力する。
【００８０】
以上のように、第３の実施の形態におけるボーレートジェネレータ１２Ｃは、第２の実施の形態と同様にボーレートを補正するためのボーレート補正値３４の上限と下限が設けられているため、補正したボーレートが予め設定した目標ボーレートから大きく外れることを防止できる。
【００８１】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。本実施の形態では、１つのマスタノード１００を具備するシリアル通信システムについて説明されたが、複数のマスタノードを具備したシリアル通信システムにおいても適用できる。このようなマルチマスタ方式の場合、スレーブノード２００は、異なるマスタノード毎にボーレートを補正する必要がある。又、ＬＩＮ通信フォーマットの途中に他のマスタノードからシンクブレークフィールドが受信される可能性もある。このため、ボーレートの補正回数はマスタノード１００が１つの場合に比べて増加する。本発明によれば、従来技術によるＣＰＵ処理によるオーバーヘッドを削減でき、ＣＰＵの負担を更に軽減することできる。又、本発明に係るシンクフィールド４２は０ｘ５５値のシリアルデータとしたが、この限りではない。この場合、エッジカウンタ２２がシンクフィールド終了信号３２を出力するカウンタ値を変更してエッジカウンタ２２を構成すれば良い。
【００８２】
又、第２及び第３の実施の形態において、第１の補正値３４Ａが、補正上限設定値３４Ｂと補正下限設定値３４Ｃとの範囲内にない場合、セレクタ２４６Ｂ（２４６Ｃ）は、ボーレート補正値３４の出力を変更せずにそれまでの出力値を維持するようにしても構わない。このような形態では、正確な測定時間３３が測定されない場合、ボーレートジェネレータ１２Ｂ（１２Ｃ）はボーレート補正を実施せず、現在のボーレートを維持することができる。
【００８３】
更に、本発明に係るボーレート補正回路は、第２の実施の形態と第３の実施の形態を組み合わせた形態でも構わない。詳細には、第２の実施の形態に係るセレクタ２４６Ｂにボーレート初期値設定レジスタ２６からボーレート設定値３５が入力され、第１の補正値３４Ａの大きさに基づき、ボーレート設定値３５、第１の補正値３４Ａ、補正上限設定値３４Ｂ、補正下限設定値３４Ｃからボーレート補正値３４が選択される。例えば、このボーレート補正回路は、図示しない回路によって設定されるフラグの制御により、第２の実施の形態で記述の動作と第３の実施の形態で記述の動作を切替えることで、ボーレート補正値３４を決定することができる。
【００８４】
又、第２及び第３の実施の形態において、第１の補正値３４Ａと第２の補正値（補正上限設定値３４Ｂ）又は第３の補正値（補正下限設定値３４Ｃ）をそれぞれ比較する比較器２４４と比較器２４５を備えた構成として説明したが、比較器は２つの独立した構成ではなく１つの比較器として構成するようにしても良い。又、第２の補正値３４Ｂと第３の補正値３４ＣはＣＰＵ１０により設定されることに限らず、予め回路で固定値に設定されていてもよい。
【図面の簡単な説明】
【００８５】
【図１】図１は、本発明によるシリアル通信システムの実施の形態における構成図である。
【図２】図２は、本発明によるボーレートジェネレータの第１実施の形態における構成を示すブロック図である。
【図３】図３は、本発明によるボーレート補正回路の第１の実施の形態のおける構成を示すブロック図である。
【図４】図４は、マスタノードからスレーブノードに転送されるメッセージフレームの構成図である。
【図５】図５は、本発明によるボーレートジェネレータにおける測定時間の測定処理を示すタイミングチャートである。
【図６】図６は、本発明によるボーレート補正回路に入力される測定時間とボーレート補正値格納レジスタの構成図である。
【図７】図７は、同期補正値を用いてボーレートを補正する処理を示すタイミングチャートである。
【図８】図８は、本発明によるボーレートジェネレータの第２の実施の形態における構成を示すブロック図である。
【図９】図９は、本発明によるボーレート補正回路の第２の実施の形態における構成を示すブロック図である。
【図１０】図１０は、本発明によるボーレートジェネレータの第３の実施の形態における構成を示すブロック図である。
【図１１】図１１は、本発明によるボーレート補正回路の第３の実施の形態における構成を示すブロック図である。
【図１２】図１２は、従来技術によるボーレートジェネレータの構成を示すブロック図である。
【符号の説明】
【００８６】
１０、１１０：ＣＰＵ
１１、１１１：クロックジェネレータ
１２、１２Ａ、１２Ｂ、１２Ｃ、１２０：ボーレートジェネレータ
１３Ａ、１３Ｂ：記憶装置
１３１：マスタタスク
１３２：スレーブタスク
１４、１４０：Ｉ／Ｏインタフェース
１５：シリアル通信回路
２１：エッジディテクタ
２２：エッジカウンタ
２３：シンクフィールド測定タイマ
２４Ａ、２４Ｂ、２４Ｃ：ボーレート補正回路
２４１：補正値生成回路
２４２：補正上限レジスタ
２４３：補正下限レジスタ
２４４、２４５：比較器
２５：ボーレート補正値格納レジスタ
２６、１２６：ボーレート初期値設定レジスタ
２７、２４６Ｂ、２４６Ｃ：セレクタ
２８、１２８：カウンタ
２９、１２９：一致検出回路
３０：シンクブレークフィールド検出信号
３１：シンクフィールド開始信号
３２：シンクフィールド終了信号
３３：測定時間
３４：ボーレート補正値
３４Ａ：第１の補正値
３４Ｂ：第２の補正値（補正上限設定値）
３４Ｃ：第３の補正値（補正下限設定値）
３５、１３５：ボーレート設定値
３６：ボーレート選択出力
３７、１３７：カウンタ値
３８、１３８：一致検出信号
３９：サンプリングクロック
４０：エッジ検出信号
４１：シンクブレークフィールド
４２：シンクフィールド
４３：待ち時間
４４：ＩＤフィールド
４５１〜４５ｎ：データフィールド
４６：チェックサムフィールド
１００：マスタノード
２００、２０１：スレーブノード
３００：バス
１０１、１１０１：システムクロック
１０２：ボーレート選択信号
Ｃ１、Ｃ２：比較結果
【図１】
2007324679.tif 000003
【図２】
2007324679.tif 000004
【図３】
2007324679.tif 000005
【図４】
2007324679.tif 000006
【図５】
2007324679.tif 000007
【図６】
2007324679.tif 000008
【図７】
2007324679.tif 000009
【図８】
2007324679.tif 000010
【図９】
2007324679.tif 000011
【図１０】
2007324679.tif 000012
【図１１】
2007324679.tif 000013
【図１２】
2007324679.tif 000014