説明

シリアル通信用ボーレートジェネレータ

【課題】シリアル通信システムにおいて、ボーレートを補正するノード内のCPUの負担を軽減するシリアル通信回路を提供する。
【解決手段】本発明によるボーレートジェネレータ12は、入力されるシンクフィールド42のビット数を入力順に計数するエッジカウンタ22と、エッジカウンタ22が所定のビット数を計数するまでの時間33を測定するシンクフィールド測定タイマ23と、測定時間33を用いて、シンクフィールド42における1/2ビット期間であるボーレート補正値34を生成するボーレート補正回路24とを具備し、ボーレート補正値34に基づき、シリアル通信のボーレートを決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シリアル通信のボーレートを補正するシリアル通信用ボーレートジェネレータに関する。
【背景技術】
【0002】
近年、自動車に搭載されるECU(Electronic Control Unit:電子制御装置)同士を結ぶ制御系車載ネットワークが広く普及している。現在、代表的な制御系車載ネットワークの通信プロトコルとしては、CAN(Controller Area Network)、LIN(Local Interconnect Network)、FlexRayがある。CANは主にパワートレイン系やシャーシ系のネットワークの標準規格として採用されている。LINは比較的低速(伝送速度1〜20kbps)で使用されるボディ系のシリアル通信ネットワークの標準規格として採用されている。又、FlexRayはX−by−wireアプリケーションに対応するように規格化されている。
【0003】
LINは、車載ネットワークにおいて、高度な機能を持つ各種センサやアクチュエータの間でコスト効率の高い通信を実現するために、LINコンソーシアムにより標準規格として規定されたシリアル通信プロトコルである。LINは、CANほどの帯域幅と多様性を必要としない装置間の通信に用いられる。例えば、各種センサからの情報をCANに渡すまでの通信路として利用される。又、CANやFlexRAyに比べ、コスト的に安価である。
【0004】
LINの規格では、通信方式として既に普及しているUART(Universal Asynchronous Receiver Transmitter)インタフェースが利用される。LINのネットワークトポロジは特に規定されていないが、基本的にはバス型トポロジが採用される。LINはバスを介して相互に接続される1つのマスタノードと複数のスレーブノードとを具備する。現在は、1つのマスタノードに接続できるスレーブノードの数は最大15個までと規定されている。マスタノードとスレーブノードはCPUを備えるマイコンが例示される。マスタノードにはマスタタスクを実行するためのプログラムとスレーブタスクを実行するためのプログラムが記憶装置に格納される。マスタタスクはフレームの転送時期や転送先を決定するタスクである。スレーブタスクはフレーム毎に転送するデータフィールドを準備する。スレーブノードではスレーブタスクのみ実行されるため、スレーブタスク用プログラムが記憶装置に格納される。尚、スレーブノードの記憶装置にマスタ用プログラムも格納されていても構わない。スレーブノードとして動作する場合はマスタ用プログラムが実行されないようプログラムで制御すればよい。マスタノードのCPUはマスタタスクを実行することでフレームヘッダをスレーブノードに送信する。スレーブノードのCPUはスレーブタスクを実行し、フレームヘッダに応答してレスポンス(データフィールドを含む)を送信する。マスタノードはスレーブタスクも実行可能なため、ヘッダに続いてデータフィールドを含むレスポンスを送信することができる。
【0005】
マスタノードがスレーブノードに送信するフレームヘッダには、先頭から順にシンクブレークフィールド(ブレークフィールド)、シンクフィールド(同期バイト)、IDフィールド(保護ID)が含まれる。又、ヘッダに続いて、最大8バイトのデータフィールドと1バイトのチェックサムを含むレスポンスが転送される。ブレークフィールドは、13ビット以上のLowレベル(ドミナントレベル)で構成される。シンクフィールドは8ビットの0x55のデータ値である。IDフィールドは、6ビットのIDと2ビットのパリティで構成される。
【0006】
LINにおけるアクセス方式はタイムトリガ方式である。このため、マスタタスクにはメッセージシーケンスが転送スケジュールとして予め設定されている。マスタノードはLINクラスタとしてアプリケーションを実行し、ネットワークを管理することができる。つまり、LIN内の全てのタスクは時間で管理されているため、同期が取れている限りメッセージの衝突は起こらない。
【0007】
LINにおいて同期を取るとは、シリアルデータを取得又は送信するためのサンプリングクロックの周期を、基準周期に一致させるように補正することである。通常、マスタノードのボーレートと一致するようにスレーブノードのボーレートを補正することにより同期を取る。スレーブノードは、マスタノードから送信される基準クロック(シンクフィールド)に基づき、ボーレートを補正する。又、このボーレートの補正はヘッダの到着毎に実行される。
【0008】
図12を参照して、従来技術によるボーレートの補正方法を説明する。図12は従来技術によるボーレートジェネレータ120の構成を示すブロック図である。従来技術によるスレーブノードにおけるボーレートジェネレータ120は、ボーレート補正用のソフトウェアを実行することでボーレート補正を実行する。詳細には、ボーレートジェネレータ120は、ボーレート設定値135を格納するボーレート初期値設定レジスタ126と、クロックジェネレータ111によって生成されたシステムクロック1101をカウントし、カウンタ値137として出力するカウンタ128と、ボーレート設定値135とカウンタ値137が一致するタイミングでボーレートを決定するための一致検出信号138をI/Oインタフェース140に出力する一致検出回路129とを具備する。ボーレート設定値135はCPU110による演算によって算出され、例えば1/2ビット期間(1ビット時間の1/2の時間)である。ここで、スレーブノードのCPU110は、マスタノードから入力されるシンクブレークフィールドに応答して、ボーレートを補正するための割り込み処理を実行する。この割り込み処理において、CPU110はシリアル通信回路外のタイマを起動し、シンクフィールドの期間を測定し、その測定結果からボーレート設定値135を算出する。この際、CPU110はシリアル通信を停止させてから、ボーレート補正設定値135をボーレート初期値設定レジスタ126に再設定し、ボーレートを補正する。CPU110はボーレートを補正した後にシリアル通信を再開する。このように、従来技術によるスレーブノードは通信処理を一時中断し、CPU110による演算によってボーレートを補正する。
【0009】
又、従来技術として特開2001−069194号公報に、シリアル通信におけるボーレートの設定方法が記載されている(特許文献1参照)。特許文献1に記載のボーレートの設定方法では、所定の幅のパルス信号のパルス幅をタイマによってカウントし、その値から装置の動作周波数を算出する。そして、算出された動作周波数に応じてボーレートの設定を行う。この際、パルス幅をT、装置内のCPU動作周波数をφ、タイマのCPU動作周波数φに対する分周比をn、タイマのカウンタ値をmとすると、φ=(n×m)/Tとなる。特許文献1に記載の方法では、このような動作周波数φを算出し、ボーレートの再設定を行う。
【特許文献1】特開2001−069194号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
従来技術によるボーレート補正では、スレーブノードのCPUがボーレート補正用のソフトウェアを実行してボーレートを補正している。従来技術では、シンクフィールドの期間を測定する際、シリアル通信回路外のタイマを起動する必要がある。又、そのシンクフィールドの期間の測定結果を利用して、CPUの演算処理によってボーレート補正設定値(例えば1/2ビット期間)を算出する。このように、ボーレート補正を実行する際、CPUに対する負担は大きく、シリアル通信回路の停止やシリアル通信回路外のタイマの起動といった処理が必要となる。これらの処理には時間がかかるため、シンクフィールドからIDフィールドまでの待ち時間を多く設定する必要があり、転送速度を低下させている。
【0011】
特許文献1に記載された方法では、連続するLowレベル又はHighレベルのパルス幅を測定して動作周波数を算出している。しかし、LINでは、0x55データであるシンクフィールドはLowレベルとHighレベルが交互に続くため、1ビットのLowレベル幅を算出してもプロトコルに基づく正確なボーレートを得ることができない。又、パルス幅Tはタイマ周期tで割り切れるとは限らないため、算出した動作周波数は誤差を含んでいる。このため、マスタノードとスレーブノードとの動作周波数の違いなどによるボーレート誤差を微調整する目的には適さない。更に、この方法は、タイマ周期t毎に発生する割り込み処理によってカウンタ値mをインクリメントするため、CPUの負担が増大してしまう。
【課題を解決するための手段】
【0012】
以下に、[発明を実施するための最良の形態]で使用される番号・符号を括弧付きで用いて、[課題を解決するための手段]を説明する。この番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]の記載との対応関係を明らかにするために付加されたものであるが、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
【0013】
本発明によるボーレートジェネレータ(12)を搭載したシリアル通信システムは、スレーブノード(200)と、バス(300)を介してスレーブノード(200)に接続され、シンクフィールド(42)を含むシリアルデータをスレーブノード(200)に送信するマスタノード(100)とを具備する。スレーブノード(200)は、自身のボーレートを補正するための回路を備えたシリアル通信用ボーレートジェネレータ(12)と、補正されたボーレートに従って、入力されるシリアルデータを取得し、パラレルデータに変換したり、パラレルデータをシリアルデータに変換して出力したりするI/Oインタフェース(14)とを備える。
【0014】
本発明によるシリアル通信用ボーレートジェネレータ(12)は、シリアル入力されるシリアルデータ(42)のビット数を計数する第1のカウンタ(22)と、第1のカウンタ(22)が所定のビット数を計数するまでの時間(33)を基準クロック(101)に基づき測定するタイマ(23)と、タイマ(23)の測定時間に基づき、シリアル通信のボーレートを補正するための補正値(34)を出力するボーレート補正回路(24A、24B、24C)とを具備する。このように本発明によれば、ボーレートを補正するための補正値(34)をハードウェアで取得できる。このため、ボーレートを補正する際のCPUへの負担を軽減することができる。又、ボーレートを補正するための補正値(34)をソフトウェアで算出する従来技術に比べ、短時間でボーレートを補正することができる。
【0015】
又、本発明によるシリアル通信用ボーレートジェネレータ(12)は、基準クロック(101)を計数する第2のカウンタ(28)と、第2のカウンタ(28)が計数した計数値(37)と補正値(34)とを比較して一致する時、一致検出信号(38)を出力する一致検出回路(29)とを更に備えることが好ましい。I/Oインタフェース(14)は、一致検出信号(38)によって決定するボーレートで、入力されるシリアルデータを取得する。
【0016】
更に、本発明によるシリアル通信用ボーレートジェネレータ(12)は、ボーレート補正回路(24A、24B、24C)から出力される補正値(34)が格納される第1のレジスタ(25)と、ボーレートの初期値(35)が格納される第2のレジスタ(26)と、第2のレジスタ(26)内の初期値(35)と、第1のレジスタ(25)内の補正値(34)のいずれか一方を選択して一致検出回路に出力する第1のセレクタ(27)とを更に具備することが好ましい。このように、本発明によれば、現在のボーレートを目標ボーレートに設定するための初期値(35)と、入力されるシリアルデータ(42)を用いて測定した補正値(34)とを選択的に使用してボーレートを決定できる。すなわち、本発明によるシリアル通信用ボーレートジェネレータ(12)は、初期値(35)を使用してボーレートを決定するマスタノード(100)にも、補正値(34)を使用してボーレートを補正するスレーブノードにも適用できる。
【0017】
本発明に係るタイマ(23)の測定時間(33)はバイナリ値であることが好ましい。この際、ボーレート補正回路(24A、24B、24C)は、タイマ(23)のバイナリ値のうち、所定の上位桁を抽出することにより補正値(34)を生成する。
【0018】
第2、第3の態様に係るボーレート補正回路(24B、24C)は、補正値生成回路(241)と、補正値上限レジスタ(242)と、補正値下限レジスタ(243)と比較器(244、245)と第2のセレクタ(246B、246C)とを備えることが好ましい。補正値生成回路(241)は、タイマ(23)の測定値(33)から第1の補正値(34A)を生成する。補正値上限レジスタ(242)には、補正値(34)の上限値(34B)が設定される。又、補正下限レジスタ(243)には、補正値(34)の下限値(34C)が設定される。比較器は、補正値生成回路(241)で生成された第1の補正値(34A)が上限値(34B)と下限値(34C)との範囲内であるか否か比較する。第2のセレクタ(246B、246C)は、比較器(244、245)の比較結果(C1、C2)に基づき第1の補正値(34A)、又は上限値(34B)、又は下限値(34C)のいずれか1つを選択して補正値(34)として出力する。この際、第1の補正値(34A)が上限値(34B)と下限値(34C)の範囲内である場合、第2のセレクタ(246B、246C)は、第1の補正値(34A)を選択して補正値(34)として出力する。又、第1の補正値(34A)が上限値(34B)と下限値(34C)との範囲外である場合、第2のセレクタ(246B、246C)は選択出力を切替えずに維持しても良い。
【0019】
第2の態様に係るボーレート補正回路(24B)では、第1の補正値(34A)が上限値(34B)より大きい場合、第2のセレクタ(246B)は、上限値(34B)を選択して補正値(34)として出力する。又、第1の補正値(34A)が下限値(34C)より小さい場合、第2のセレクタ(246B)は、下限値(34C)を選択して補正値(34)として出力する。
【0020】
第3の態様に係る第2のセレクタ(246C)には、第2のレジスタ(26)内の初期値(35)が入力される。この際、第1の補正値(34A)が上限値(34B)と下限値(34C)との範囲外である場合、第2のセレクタ(246C)は、第2のレジスタ(26)内の初期値(35)を選択して出力する。
【0021】
又、本発明に係るシリアルデータ(42)は、LIN(Local Interconnect Network)通信プロトコルに基づくシンクフィールド内の同期バイトであることが好ましい。本発明によれば、ハードウェアによってシンクフィールド(42)から補正値(34)を取得するため、シンクフィールド(42)に続くIDフィールド(44)までの待ち時間が短縮され、転送速度が向上する。
【発明の効果】
【0022】
本発明によるシリアル通信回路、これを用いた半導体集積回路、及びシリアル通信システムによれば、ボーレートの補正の際ノード内のCPUの負担を軽減することができる。
【0023】
又、シリアル通信の転送速度を向上させることができる。
【0024】
更に、スレーブノードにおけるボーレート誤差を縮小することができる。
【発明を実施するための最良の形態】
【0025】
以下、添付図面を参照して、本発明によるシリアル通信システムの実施の形態を説明する。図面において同一、又は類似の参照符号は、同一、類似、又は等価な構成要素を示している。
【0026】
(全体構成)
以下、図1を参照して、本発明によるシリアル通信システムの実施の形態を説明する。本実施の形態におけるシリアル通信システムとして、LIN(Local Interconnect Network)通信プロトコルを利用したLIN通信システムを一例に説明する。図1は、本発明によるシリアル通信システムの実施の形態における構成図である。本発明によるシリアル通信システムは、1つのマスタノード100と、複数のスレーブノード200、201、・・・を具備し、それぞれバス300を介して接続されている。本実施の形態では、マスタノード100及びスレーブノード200としてマイコン(MCU:Micro Controller Unit)が例示される。尚、スレーブノード200、201、・・・、のそれぞれの構成及び動作は同じであるので、以下の説明では、スレーブノード200について説明する。又、同様な構成・動作を示す構成要素には同じ参照番号を付して説明する。尚、各スレーブノード200、201、・・・内の構成は同一構成として同一番号を付して説明するが、それぞれ個別の構成を具備しており、本発明の機能を実現すれば、CPU10やクロックジェネレータ11などは同一構成でなくともよい。
【0027】
図1を参照して、マスタノード100は、CPU10と、クロックジェネレータ11と、シリアル通信回路15と、記憶装置13Aと、を具備する。シリアル通信回路15は、ボーレートジェネレータ12と、I/Oインタフェース14とを備え、スレーブノード200とシリアル通信を実施する。ここで、シリアル通信回路15はUARTに例示されるシリアル通信用インタフェースである。又、I/Oインタフェース14はボーレートジェネレータ12で決定されたボーレートに基づいてスレーブノード200とシリアル通信を実施する。
【0028】
マスタノード100の記憶装置13Aには、フレームの転送時期や転送先を決定するマスタタスク131と、フレーム毎に転送するデータフィールドを準備するスレーブタスク132とが格納されている。詳細には、記憶装置13Aにはマスタタスク131用のプログラムとスレーブタスク132用のプログラムが格納され、CPU10が、それぞれのプログラムを実行することでマスタタスク131、及びスレーブタスク132の機能を実現する。マスタタスク131には、メッセージシーケンスが転送スケジュールとして予め設定されている。マスタノード100のCPU10は、フレームヘッダを生成してI/Oインタフェース14を介して各スレーブノード200、201、・・・に送信し、フレームヘッダで指定されたスレーブノード(例えば、スレーブノード200)からのレスポンスをI/Oインタフェース14を介して受信する。スレーブタスク132はフレーム毎に転送するデータフィールドを準備する。
【0029】
図1を参照して、スレーブノード200は、CPU10と、クロックジェネレータ11と、シリアル通信回路15と、記憶装置13Bとを具備する。スレーブノード200の構成は、記憶装置13Bの構成以外、マスタノード100の構成と同じである。すなわち、マスタタスク131が存在しない点がマスタノード100と異なる。
【0030】
記憶装置13Bには、スレーブノード毎に固有のスレーブ用プログラム132が格納されている。スレーブノード200のCPU10はスレーブ用プログラムを実行することでスレーブタスク132の機能を実現する。スレーブノード200は、マスタノード100から転送されるフレームヘッダに基づき、転送するレスポンスを準備する。詳細には、CPU10は、スレーブタスク132を実行してレスポンスを生成し、I/Oインタフェース14を介してマスタノード100や他のスレーブノード201に転送する。又、スレーブタスク132は、レスポンスの送信のほかに、マスタノード100や他のスレーブノード201からのレスポンスを受信することが可能である。尚、スレーブノードの記憶装置13Bにマスタ用プログラムも格納されていても構わない。この際、スレーブノードとして動作する場合はマスタ用プログラムが実行されないようプログラムで制御すればよい。
【0031】
マスタノード100及びスレーブノード200のクロックジェネレータ11は、システムクロック101をCPU10やボーレートジェネレータ12に出力する回路である。クロックジェネレータ11は、例えば外部接続端子に水晶振動子を接続することによって生ずる発振出力に基づいてシステムクロック101を生成する。CPU10は、システムクロック101を動作クロックとして各種処理を実行する。又、ボーレートジェネレータ12は、システムクロック101に基づいてボーレートを決定する。I/Oインタフェース14はCPU10から転送されるパラレルデータをシリアルデータに変換し、ボーレートジェネレータ12で決定されたボーレートに従ってバス300に転送する。あるいは、バス300から転送されるシリアルデータをボーレートに従ってサンプリングし、取得したデータをパラレルデータに変換してCPU10に転送する。
【0032】
マスタノード100のCPU10はマスタタスク131を実行することでフレームヘッダをスレーブノード200に送信する。又、スレーブタスク132を実行することで、フレームヘッダに続いてスレーブノード200から送信されるレスポンスを受信することができる。あるいは、フレームヘッダに続いてスレーブノード200へレスポンスを送信することもできる。スレーブノード200のCPU10は、スレーブタスク132を実行し、マスタノード100から転送されるフレームヘッダに応答してレスポンスをマスタノード100に転送する。
【0033】
以下、図4を参照して、マスタノード100がフレームヘッダに続いて、データフィールドを含むレスポンスを転送する場合のフレームスロットの構成を説明する。マスタノード100がスレーブノード200に転送するフレームスロットには、フレームヘッダとレスポンスが含まれている。フレームヘッダは、シンクブレークフィールド41(Synch Break Field、以下ブレークフィールド41と称す)、シンクフィールド42(Synch Field)、IDフィールド44(Identtifier Field)を含む。シンクフィールド42とIDフィールド44との間は、所定の時間の待ち時間43が設定される。本実施の形態におけるブレークフィールド41とシンクフィールド42のフォーマットは、LIN通信プロトコルで規定される。すなわち、マスタノード100から送信されるブレークフィールド41は、13ビット以上のドミナントレベル(Lowレベル)の信号であり、受信側のスレーブノード200は11ビット以上のLowレベルを検出してブレークフィールドと判定する。同様にシンクフィールド42は、スタートビットとストップビットとの間に0x55(16進数)のデータ値を有する信号である。すなわちシンクフィールド42はリセッシブレベル(Highレベル)とドミナントレベル(Lowレベル)が交互に連続する8ビットのデータを含んでいる。又、IDフィールド44は、6ビットのIDと2ビットのパリティを含む。待ち時間43は、マスタタスク131内のメッセージシナリオに設定された任意な時間である。
【0034】
IDフィールド44に引き続き転送されるレスポンスは、データフィールド(Data Field)45とチェックサムフィールド46(Check Sum Field)とが含まれる。データフィールドは、最大8バイトからなるデータフィールド45〜45を含む。レスポンスにはフレームスロットの最後、すなわち最後尾のデータフィールド45に続いてチェックサムフィールド46が設けられる。チェックサムフィールド46はデータ伝送のエラー検出に使用される。
【0035】
本実施の形態におけるI/Oインタフェース14は、例えばUARTが用いられる。この場合、バス300上に転送されるフレームのうち、ブレークフィールド41以外は、UARTのフレームフォーマットが採用される。
【0036】
スレーブノード200のボーレートジェネレータ12は、マスタノード100から転送されるシンクフィールド42を用いて自身のボーレートを補正する。
【0037】
(第1の実施の形態)
第1の実施の形態におけるマスタノード100及びスレーブノード200は、ボーレートジェネレータ12としてボーレートジェネレータ12Aを備える。以下、図2及び図3を参照して、第1の実施の形態におけるボーレートジェネレータ12Aの構成の詳細を説明する。
【0038】
図2は、本発明によるボーレートジェネレータ12Aの実施の形態における構成を示すブロック図である。ボーレートジェネレータ12Aは、エッジディテクタ21、エッジカウンタ22、シンクフィールド測定タイマ23、ボーレート補正回路24A、ボーレート補正値格納レジスタ25、ボーレート初期値設定レジスタ26、セレクタ27、一致検出回路29、カウンタ28を具備する。
【0039】
スレーブノード200にシンクブレークフィールド(11ビット以上のLレベル)が入力されると、図示しない回路からエッジディテクタ21に対しシンクブレークフィールド検出信号30が入力される。エッジディテクタ21は、シンクブレークフィールド検出信号30に応答してバス300上のシリアルデータの立下りエッジ検出動作を開始する。エッジディテクタ21は、シンクフィールド42のスタートビットの立下りエッジを検出するとシンクフィールド開始信号31をエッジカウンタ22及びシンクフィールド測定タイマ23に出力する。又、エッジディテクタ21はシンクフィールド42の立下りエッジを検出する毎にエッジ検出信号40をエッジカウンタ22に出力する。エッジカウンタ22は、シンクフィールド開始信号31に応答して、エッジ検出信号40をカウントしてシンクフィールド42の立下りエッジの数を計数する。エッジカウンタ22は、シンクフィールド開始信号31を受信してから所定の回数までエッジ検出信号40を計数すると、シンクフィールド測定タイマ23及びボーレート補正回路24Aに対し、シンクフィールド終了信号32を出力する。シンクフィールド測定タイマ23は、クロックジェネレータ11から入力されるシステムクロック101をカウントして時間を測定する。又、シンクフィールド測定タイマ23は、シンクフィールド開始信号31を受信してからシンクフィールド終了信号32を受信するまでの時間を測定時間33とする。すなわち、シンクフィールド測定タイマ23は、連続する所定数(n個)のシリアルデータの1ビット時間の総和(以下、nビット期間と称す)を測定時間33とする。尚、本発明によるエッジカウンタ22は、シンクフィールド開始信号31を受信してから立下りエッジを4回計数するとシンクフィールド終了信号32を出力する。この際、シンクフィールド42は0x55値であり、測定時間33は8ビット期間に対応するシステムクロック101のカウント数となる。
【0040】
ボーレート補正回路24Aはシンクフィールド終了信号32をトリガとして、測定時間33からボーレートを補正するための所定の単位ビット期間を抽出し、ボーレート補正値34としてボーレート補正値格納レジスタ25に格納する。本発明によるボーレート補正回路24Aは、ボーレート補正値34として1/2ビット期間をボーレート補正値格納レジスタ25に格納する。ボーレート補正値格納レジスタ25は、格納したボーレート補正値34をセレクタ27に出力する。CPU10は、ボーレート補正値格納レジスタ25内に格納されたボーレート補正値34を読み出し用データ線を介して読み出すことができる。これにより、ボーレート選択信号102によりボーレート補正値格納レジスタ25を選択している場合、現在(補正後)のボーレートを把握することができる。
【0041】
図3は、第1の実施の形態におけるボーレート補正回路24Aの構成を示すブロック図である。補正値生成回路241は、シンクフィールド測定タイマ23から測定時間33を取得する。ここで、測定時間33はバイナリ値である。補正値生成回路241は、シンクフィールド終了信号32をトリガとして測定時間33の下位4ビットを切捨て、測定時間33の上位8ビットをボーレート補正値34としてボーレート補正値格納レジスタ25に格納する。すなわち、補正値生成回路241はシンクフィールド42における8ビット期間に基づき、1/2ビット期間の平均値を抽出してボーレート補正値格納レジスタ25に格納する。
【0042】
一方、CPU10はボーレートの初期値をボーレート設定値35としてボーレート初期値設定レジスタ26に格納する。ここで、ボーレート設定値35は、マスタタスク131に規定されたボーレートに基づいて予め設定された1/2ビット期間である。セレクタ27にはボーレート補正値格納レジスタ25から出力されるボーレート補正値34とボーレート初期値設定レジスタ26から出力されるボーレート設定値35が入力される。セレクタ27は、CPU10によって出力されるボーレート選択信号102に基づき、ボーレート補正値34とボーレート設定値35の一方をボーレートの設定に使用するボーレート選択出力36として一致検出回路29に出力する。例えば、ボーレート選択信号102が“0”に設定されている場合は、ボーレート設定値35をボーレート選択出力36として出力し、“1”に設定されている場合はボーレート補正値34をボーレート選択出力36として出力する。マスタノード100のボーレートジェネレータ12の場合、シンクフィールド42によってボーレートを補正する必要がないため、ボーレート選択信号102は“0”に設定される。尚、セレクタ27に対してボーレート選択信号102をCPU10から直接出力しているが、CPU10の外部(例えばボーレートジェネレータの内部)に選択用のフラグを設けて、CPU10がそのフラグを"1"又は"0"に設定してセレクタ27に供給するようにしても良い。これによりCPU10が常に選択信号を出力する必要がない。
【0043】
カウンタ28は、クロックジェネレータ11から出力されるシステムクロック101をカウントし、カウンタ値37を一致検出回路29に出力する。一致検出回路29は、ボーレート選択出力36とカウンタ値37とが一致するタイミングで一致検出信号38をI/Oインタフェース14に出力する。すなわち、一致検出回路29は、補正された、あるいは予め設定された1/2ビット期間周期で一致検出信号38をI/Oインタフェース14に出力する。
【0044】
一致検出信号38は、I/Oインタフェース14に入力され、内部で図示しない分周回路によって分周され、シリアルデータから情報を取得するためのサンプリングクロック39やシリアルデータを送信するためのシフトクロックが生成される。I/Oインタフェース14は、サンプリングクロック39に応じてバス300を介して入力されるシリアルデータを取得し、パラレルデータに変換する。変換されたデータはCPU10により読み出される。あるいは、CPU10から転送されたパラレルデータをシフトクロックに応じてシリアルデータとしてバス300に転送する。
【0045】
(動作)
以下、図4から図7を参照して、本発明によるシリアル通信システムの第1の実施の形態におけるボーレートの補正動作を説明する。
【0046】
図5は、本発明によるボーレートジェネレータ12Aにおける測定時間33の測定処理を示すタイミングチャートである。図6は、本発明によるボーレート補正回路24Aからボーレート補正値34が格納されたボーレート補正値格納レジスタ25の構成図である。図7は、セレクタ27のボーレート選択出力36として出力されるボーレート補正値34を用いてボーレートを補正する処理を示すタイミングチャートである。ここで、マスタノード100とスレーブノード200間の通信における目標ボーレートが15625bps、スレーブノード200のシステムクロック101が5MHzである場合の、スレーブノード200におけるボーレート補正処理の動作を説明する。この際、システムクロック101の1クロック周期を1clkと表すと、1clkは0.2μsec、1ビット時間は320clkとなる。従って、1/2ビット時間は160clkとなり、スレーブノード200のボーレート初期値設定レジスタ26には160(10進数)のバイナリ値である“1010_0000B”(以下、Bはバイナリ値を示す)が設定される。又、初期設定時(ボーレート補正実施前)には、ボーレート補正値格納レジスタ25にも同様に“1010_0000B”が設定される。
【0047】
図4を参照して、マスタノード100は、バス300を介してシンクフィールド42を含むフレームヘッダをスレーブノード200に転送する。スレーブノード200のエッジディテクタ21は、入力されるブレークフィールド検出信号30に応答してシンクフィールド42の測定動作を開始する。エッジディテクタ21は、シンクフィールド42のスタートビットを検出すると、シンクフィールド開始信号31をエッジカウンタ22及びシンクフィールド測定タイマ23に出力する。
【0048】
図5を参照して、エッジカウンタ22はシンクフィールド開始信号31を受信後シンクフィールド42の立下り回数を計数する。シンクフィールド測定タイマ23はシンクフィールド開始信号31に応答してシステムクロック101に基づき時間を測定する。エッジカウンタ22は4回目の立ち下がりを計数するとシンクフィールド終了信号32をシンクフィールド測定タイマ23に出力する。シンクフィールド測定タイマ23は、シンクフィールド終了信号32に応答して時間測定を終了し、測定時間33をボーレート補正回路24Aに出力する。すなわち、シンクフィールド測定タイマ23は、立下りエッジを4回計数するまでの時間を測定する。又、本実施の形態におけるシンクフィールド42は0x55値のデータであるため、測定時間33は、シンクフィールド42の8ビット期間に相当する。
【0049】
マスタノード100とスレーブノード200のボーレートが目標通りに一致している場合、測定時間33は、320clk×8=2560clk、すなわちシンクフィールド測定タイマ23の値は“1010_0000_0000B”となる。しかし、マスタノード100とスレーブノード200のボーレートがずれている場合、マスタノード100に合わせてスレーブノード200側でボーレートの補正が必要となる。以下、スレーブノード200における測定時間33が“1010_0010_1000B”(=2600clk)、すなわち1ビット時間は、325clk×0.2μsec=65μsecであり、測定ボーレートが15384.6bpsである場合のボーレート補正処理の詳細を説明する。この場合、マスタノード100の実際のボーレートに対するスレーブノード200のボーレートの誤差は、(15625−15384.6)/15384.6より、1.56%となる。スレーブノード200は、測定した8ビット分の時間である2600clkに基づいてスレーブノード200のボーレートを補正する。
【0050】
図6に示すように、補正値生成回路241は、測定時間33の値“1010_0010_1000B”の下位4ビットを切り捨て、上位8ビットをボーレート補正値34としてボーレート補正値格納レジスタ25に自動的に格納する。すなわち、ボーレート補正値34として“1010_0010B”(=162clk)がボーレート補正値格納レジスタ25に格納される。
【0051】
ここで、セレクタ27に入力されるボーレート選択信号102が“1”である場合、セレクタ27はボーレート補正値34をボーレート選択出力36として一致検出回路29に出力する。一方、カウンタ28はシステムクロック101を計数したカウンタ値37を一致検出回路29に出力している。セレクタ27からボーレート選択出力36が一致検出回路29に入力されると、その後はボーレート選択出力36として出力されるボーレート補正値34との一致検出が実行される。図7を参照して、一致検出回路29はカウンタ値37とボーレート選択出力36とが一致する時、一致検出信号38を出力する。カウンタ28は一致検出信号38に応答してカウンタ値37がクリアされたのち計数を続ける。このようにして、一致検出回路29は、1/2ビット期間(162clk)周期で一致検出信号38をI/Oインタフェース14に出力することができる。
【0052】
一致検出信号38は、図示しない分周回路により2分周され、シリアルデータを取得するためのサンプリングクロック39としてI/Oインタフェース14に入力される。この場合、サンプリングクロック39の周期は324clk=64.8μsecとなる。すなわち、補正されたボーレートは15432.1bpsとなり、マスタノード100の実際のボーレートとの誤差は、(15432.1−15384.6)/15384.6より0.3%に抑えられる。
【0053】
以上のように、スレーブノード200は、マスタノード100から転送されたシンクフィールド42を利用してボーレートを補正することができる。ただし、マスタノード100は、セレクタ27にボーレート選択信号102として“0”が入力され、ボーレート設定値35によって自身のボーレートを決定することが好ましい。
【0054】
本発明によるボーレートジェネレータ12Aは、シンクフィールド測定タイマ23を用いてシンクフィールド42を測定し、ボーレート補正回路24Aによりボーレートの補正を行うためCPU10の処理時間であるオーバーヘッドが生じず、シンクフィールド42とIDフィールド44との間に設定される待ち時間43を短縮することができる。このため、転送速度を向上させることができる。又、CPU10によってボーレートの補正処理を行わないため、CPU10に対する負担を軽減することができる。
【0055】
本発明によるボーレートジェネレータ12Aは、CPU10によって設定されたボーレート設定値35と、シンクフィールド42を測定することによって得られるボーレート補正値34とを選択的に使用してボーレートを補正することができる。このため、本発明によるボーレートジェネレータ12Aは、マスタノード100又はスレーブ200のいずれにも具備することができる。又、本発明によるシリアル通信システムは、ボーレートジェネレータ12Aをスレーブノード200だけに具備し、マスタノード100に替えて従来技術によるマスタノードを具備した形態でも良いことは言うまでもない。しかし、マスタノードとスレーブノードのいずれとしても使用可能な汎用性を重視した装置によりシリアル通信システムを構築する場合、本発明によるマスタノード100を用いることがより好ましい。
【0056】
(第2の実施の形態)
以下、図8及び図9を参照して、本発明によるシリアル通信システムの第2の実施の形態を説明する。図1を参照して、第2の実施の形態におけるシリアル通信システムは、ボーレートジェネレータ12として、ボーレートジェネレータ12Bを具備する。以下、第1の実施の形態と同符号の構成等は動作・機能が同様であるので説明は省略される。
【0057】
(構成)
図8は、第2の実施の形態におけるボーレートジェネレータ12Bの構成を示すブロック図である。図8を参照して、第2の実施の形態におけるボーレートジェネレータ12Bは、第1の実施の形態におけるボーレート補正回路24Aに替えてボーレート補正回路24Bを備える構成である。図9は、第2の実施の形態におけるボーレート補正回路24Bの構成を示すブロック図である。図9を参照して、第2の実施の形態におけるボーレート補正回路24Bは、補正値生成回路241、補正上限レジスタ242、比較器244、245、補正下限レジスタ243、セレクタ246Bを備える。第2の実施の形態における補正値生成回路241は、第1の実施の形態同様に、測定時間33から1/2ビット期間を抽出し、ボーレート補正用の第1の補正値34Aとしてセレクタ246Bに出力する。補正上限レジスタ242及び補正下限レジスタ243には、補正したボーレートが目標となるボーレートから大きく外れることを防ぐための境界値がCPU10により設定される。補正上限レジスタ242にはボーレート補正用の第2の補正値である補正上限設定値34Bが設定され、補正下限レジスタにはボーレート補正用の第3の補正値である補正下限設定値34Cが設定される。例えば、ボーレート設定値35に対し10%増減させた値が、補正上限設定値34B、補正下限設定値34Cとして設定される。具体的には、ボーレート設定値35が160clk期間を示す値“1010_0000B”である場合、補正上限設定値34Bは176clk期間を示す値“1011_0000B”が設定される。又、補正下限設定値34Cは144clk期間を示す値“1001_0000B”が設定される。以下、第2の補正値は補正上限設定値34B、第3の補正値は補正下限設定値34Cとして説明する。
【0058】
セレクタ246Bには、補正値生成回路241、補正上限レジスタ242、補正下限レジスタ243から、それぞれ第1の補正値34A、補正上限設定値34B、補正下限設定値34Cが入力される。セレクタ246Bは、比較器244及び比較器245からそれぞれ出力される比較結果C1及びC2に基づいて、ボーレート補正値格納レジスタ25に格納するボーレート補正値34を、第1の補正値34A、補正上限設定値34B、補正下限設定値34Cの中から選択して出力する。比較器244は、第1の補正値34Aと補正上限設定値34Bの大きさを比較し、その比較結果C1を出力する。同様に、比較器245は、第1の補正値34Aと補正下限設定値34Cの大きさを比較し、その比較結果C2を出力する。
【0059】
例えば、第1の補正値34Aが補正上限設定値34Bより大きい場合、比較器244は比較結果C1として“1”を出力し、等しいか小さい場合は“0”を出力する。同様に第1の補正値34Aが補正下限設定値34Cより小さい場合、比較器245は比較結果C2として“1”を出力し、等しいか大きい場合は“0”を出力する。すなわち、第1の補正値34Aが補正上限設定値34Bと補正下限設定値34Cの範囲内である場合、セレクタ246Bには比較器244と比較器245における比較結果C1、C2の組合せとして“00”が入力され、第1の補正値34Aがボーレート補正値34として選択出力される。又、第1の補正値34Aが補正上限補正値34Bを越えた値である場合、セレクタ246Bには比較器244と比較器245における比較結果C1、C2の組合せとして“10”が入力され、補正上限設定値34Bがボーレート補正値34として選択出力される。又、第1の補正値34Aが補正下限補正値34Cより小さい値である場合、セレクタ246Bには比較器244と比較器245における比較結果C1、C2の組合せとして“01”が入力され、補正下限設定値34Cがボーレート補正値34として選択出力される。
【0060】
このように、第1の補正値34Aが、設定された上限値又は下限値から逸脱した場合、第1の補正値34Aに替えて、設定された上限値又は下限値を用いてボーレートの補正ができる。すなわち、本実施の形態におけるボーレート補正回路24Bは、伝送経路であるバス300の障害や雑音等によって正確に測定時間33を測定できなかった場合、設定された補正上限設定値34B、又は補正下限設定値34Cによってボーレートを補正することができる。
【0061】
(動作)
スレーブノード200のボーレートジェネレータ12Bは、マスタノード100から転送されるシンクフィールド42に基づいてボーレートを補正する。第2の実施の形態におけるボーレートジェネレータ12Bは、ボーレート補正回路24Bにおけるボーレート補正値34の抽出動作のみが第1の実施の形態と異なる。以下では、ボーレート補正回路24Bにおけるボーレート補正値34の抽出動作について説明する。
【0062】
図9を参照して、第2の実施の形態における補正値生成回路241は、シンクフィールド測定タイマ23から測定時間33を取得すると、シンクフィールド終了信号32に応答して、第1の補正値34Aをセレクタ246B、比較器244、及び比較器245に出力する。補正値生成回路241の動作は第1の実施の形態と同様に、例えば、測定時間33が“1010_0010_1000B”の場合、下位4ビットを切り捨て、上位8ビットを第1の補正値34Aの値“1010_0010B”(=162clk)として出力する。
【0063】
ここで補正上限レジスタ242には、補正上限設定値34Bとして“1011_0000B”が設定され、補正下限レジスタ243には、補正下限設定値34Cとして“1001_0000B”が設定されているものとする。
【0064】
比較器244は、第1の補正値34Aと補正上限設定値34Bの大きさを比較し、第1の補正値34Aが小さいので、セレクタ246Bに“0”を出力する。又、比較器245は、第1の補正値34Aと補正下限設定値34Cの大きさを比較し、第1の補正値34Aが大きいのでセレクタ246Bに“0”を出力する。セレクタ246Bは、比較器244と比較器245との比較結果C1、C2の組合せ“00”に基づき第1の補正値34Aである“1010_0010B”をボーレート補正値34として選択出力し、その出力値がボーレート補正値格納レジスタ25に格納される。
【0065】
又、第1の補正値34Aが補正上限設定値34Bを越える場合、比較器244は比較結果C1としてセレクタ246Bに“1”を出力する。セレクタ246Bは比較結果C1 “1”に基づき補正上限設定値34Bである“1011_0000B”をボーレート補正値34として選択出力し、その出力値がボーレート補正値格納レジスタ25に格納される。あるいは、第1の補正値34Aが補正下限設定値34Cを下回る場合、比較器246Bは比較結果C2としてセレクタ246Bに“1”を出力する。セレクタ246Bは比較結果C2“1”に基づき補正下限設定値34Cである“1001_0000B”をボーレート補正値34として選択出力し、その出力値がボーレート補正値格納レジスタ25に格納される。
【0066】
一致検出回路29は、第1の実施の形態と同様にボーレート補正値格納レジスタ25に格納されたボーレート補正値34に基づき一致検出信号38をI/Oインタフェース14に出力する。
【0067】
以上のように、第2の実施の形態におけるボーレートジェネレータ12Bは、ボーレートを補正するためのボーレート補正値34の上限と下限が設けられているため、補正したボーレートが予め設定した目標ボーレートから大きく外れることを防止できる。
【0068】
(第3の実施の形態)
以下、図10及び図11を参照して、本発明によるシリアル通信システムの第3の実施の形態を説明する。図1を参照して、第3の実施の形態におけるシリアル通信システムは、ボーレートジェネレータ12として、ボーレートジェネレータ12Cを具備する。以下、第1及び第2の実施の形態と同符号の構成等は動作・機能が同様であるので説明は省略される。
【0069】
図10は、第3の実施の形態におけるボーレートジェネレータ12Cの構成を示すブロック図である。図10を参照して、第3の実施の形態におけるボーレートジェネレータ12Cは、第1の実施の形態におけるボーレート補正回路24Aに替えてボーレート補正回路24Cを備える構成である。又、本実施の形態によるボーレート補正回路24Cには、ボーレート初期値設定レジスタ26からボーレート設定値35が入力される。
【0070】
(構成)
図11は、第3の実施の形態におけるボーレート補正回路24Cの構成を示すブロック図である。図10を参照して、第3の実施の形態におけるボーレート補正回路24Cは、第2の実施の形態におけるセレクタ246Bをセレクタ246Cに替えた構成である。又、セレクタ246Cには、ボーレート初期値設定レジスタ26からボーレート設定値35が入力される。更に、補正値生成回路241は、第2の実施の形態同様に、測定時間33から1/2ビット期間を抽出し、第1の補正値34Aとしてセレクタ246Cに出力する。
【0071】
比較器244と比較器245の構成は第2の実施の形態と同じである。セレクタ246Cは、比較器244及び比較器245の比較結果C1及びC2に基づいて、ボーレート設定値35、又は第1の補正値34Aのいずれか一方をボーレート補正値34として選択出力し、出力値がボーレート補正値格納レジスタ25に格納される。
【0072】
セレクタ246Cは、第1の補正値34Aが補正上限設定値34Bと補正下限設定値34Cの範囲内である場合、第1の補正値34Aをボーレート補正値34として選択出力する。又、第1の補正値34Aが補正上限補正値34Bを越えた値である場合、ボーレート設定値35をボーレート補正値34として選択出力する。又、第1の補正値34Aが補正下限補正値34Cより小さい値である場合、ボーレート設定値35をボーレート補正値34として選択出力する。
【0073】
このように、第1の補正値34Aが、設定された上限値又は下限値から逸脱した場合、第1の補正値34Aに替えて、予めCPU10によって設定された目標ボーレートを指定するボーレート設定値35が用いられてボーレートが補正される。すなわち、本実施の形態におけるボーレート補正回路24Cは、伝送経路の障害や雑音等によって正確に測定時間33を測定できなかった場合、CPU10によって設定されたボーレート設定値35によってボーレートを補正することができる。
【0074】
(動作)
スレーブノード200のボーレートジェネレータ12Cは、マスタノード100から転送されるシンクフィールド42に基づいてボーレートを補正する。第3の実施の形態におけるボーレートジェネレータ12Cは、ボーレート補正回路24Cにおけるボーレート補正値34の抽出動作のみが第2の実施の形態と異なる。以下、ボーレート補正回路24Cにおけるボーレート補正値34の抽出動作について説明する。
【0075】
図11を参照して、第3の実施の形態における補正値生成回路241は、シンクフィールド測定タイマ23から測定時間33を取得すると、第2の実施の形態と同様に、シンクフィールド終了信号32に応答して、第1の補正値34Aをセレクタ246C、比較器244、及び比較器245に出力する。
【0076】
比較器244は、第1の補正値34Aと補正上限設定値34Bの大きさを比較し、比較結果C1としてセレクタ246Cに“0”又は“1”を出力する。又、比較器245は、第1の補正値34Aと補正下限設定値34Cの大きさを比較し、比較結果C2としてセレクタ246Cに“0”又は“1”を出力する。
【0077】
セレクタ246Cは、比較器244と比較器245の比較結果C1、C2の組合せが“00”、すなわちに第1の補正値34Aが補正上限設定値34Bと補正下限設定値34Cとの範囲内の大きさである場合、第1の補正値34Aをボーレート補正値34としてボーレート補正値格納レジスタ25に対して出力する。
【0078】
又、第1の補正値34Aが補正上限設定値34Bを越える場合、比較器244は比較結果C1としてセレクタ246Cに“1”を出力し、セレクタ246Cは比較結果C1“1”に基づきボーレート設定値35を選択してボーレート補正値34としてボーレート補正値格納レジスタ25に対し出力する。あるいは、第1の補正値34Aが補正下限設定値34Cを下回る場合、比較器245は比較結果C2としてセレクタ246Cに“1”を出力し、セレクタ246Cは 比較結果C2“1”に基づきボーレート設定値35を選択してボーレート補正値34としてボーレート補正値格納レジスタ25に対し出力する。
【0079】
一致検出回路29は、第1の実施の形態と同様にボーレート補正値格納レジスタ25に格納されたボーレート補正値34に基づき一致検出信号38をI/Oインタフェース14に出力する。
【0080】
以上のように、第3の実施の形態におけるボーレートジェネレータ12Cは、第2の実施の形態と同様にボーレートを補正するためのボーレート補正値34の上限と下限が設けられているため、補正したボーレートが予め設定した目標ボーレートから大きく外れることを防止できる。
【0081】
以上、本発明の実施の形態を詳述してきたが、具体的な構成は上記実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。本実施の形態では、1つのマスタノード100を具備するシリアル通信システムについて説明されたが、複数のマスタノードを具備したシリアル通信システムにおいても適用できる。このようなマルチマスタ方式の場合、スレーブノード200は、異なるマスタノード毎にボーレートを補正する必要がある。又、LIN通信フォーマットの途中に他のマスタノードからシンクブレークフィールドが受信される可能性もある。このため、ボーレートの補正回数はマスタノード100が1つの場合に比べて増加する。本発明によれば、従来技術によるCPU処理によるオーバーヘッドを削減でき、CPUの負担を更に軽減することできる。又、本発明に係るシンクフィールド42は0x55値のシリアルデータとしたが、この限りではない。この場合、エッジカウンタ22がシンクフィールド終了信号32を出力するカウンタ値を変更してエッジカウンタ22を構成すれば良い。
【0082】
又、第2及び第3の実施の形態において、第1の補正値34Aが、補正上限設定値34Bと補正下限設定値34Cとの範囲内にない場合、セレクタ246B(246C)は、ボーレート補正値34の出力を変更せずにそれまでの出力値を維持するようにしても構わない。このような形態では、正確な測定時間33が測定されない場合、ボーレートジェネレータ12B(12C)はボーレート補正を実施せず、現在のボーレートを維持することができる。
【0083】
更に、本発明に係るボーレート補正回路は、第2の実施の形態と第3の実施の形態を組み合わせた形態でも構わない。詳細には、第2の実施の形態に係るセレクタ246Bにボーレート初期値設定レジスタ26からボーレート設定値35が入力され、第1の補正値34Aの大きさに基づき、ボーレート設定値35、第1の補正値34A、補正上限設定値34B、補正下限設定値34Cからボーレート補正値34が選択される。例えば、このボーレート補正回路は、図示しない回路によって設定されるフラグの制御により、第2の実施の形態で記述の動作と第3の実施の形態で記述の動作を切替えることで、ボーレート補正値34を決定することができる。
【0084】
又、第2及び第3の実施の形態において、第1の補正値34Aと第2の補正値(補正上限設定値34B)又は第3の補正値(補正下限設定値34C)をそれぞれ比較する比較器244と比較器245を備えた構成として説明したが、比較器は2つの独立した構成ではなく1つの比較器として構成するようにしても良い。又、第2の補正値34Bと第3の補正値34CはCPU10により設定されることに限らず、予め回路で固定値に設定されていてもよい。
【図面の簡単な説明】
【0085】
【図1】図1は、本発明によるシリアル通信システムの実施の形態における構成図である。
【図2】図2は、本発明によるボーレートジェネレータの第1実施の形態における構成を示すブロック図である。
【図3】図3は、本発明によるボーレート補正回路の第1の実施の形態のおける構成を示すブロック図である。
【図4】図4は、マスタノードからスレーブノードに転送されるメッセージフレームの構成図である。
【図5】図5は、本発明によるボーレートジェネレータにおける測定時間の測定処理を示すタイミングチャートである。
【図6】図6は、本発明によるボーレート補正回路に入力される測定時間とボーレート補正値格納レジスタの構成図である。
【図7】図7は、同期補正値を用いてボーレートを補正する処理を示すタイミングチャートである。
【図8】図8は、本発明によるボーレートジェネレータの第2の実施の形態における構成を示すブロック図である。
【図9】図9は、本発明によるボーレート補正回路の第2の実施の形態における構成を示すブロック図である。
【図10】図10は、本発明によるボーレートジェネレータの第3の実施の形態における構成を示すブロック図である。
【図11】図11は、本発明によるボーレート補正回路の第3の実施の形態における構成を示すブロック図である。
【図12】図12は、従来技術によるボーレートジェネレータの構成を示すブロック図である。
【符号の説明】
【0086】
10、110:CPU
11、111:クロックジェネレータ
12、12A、12B、12C、120:ボーレートジェネレータ
13A、13B:記憶装置
131:マスタタスク
132:スレーブタスク
14、140:I/Oインタフェース
15:シリアル通信回路
21:エッジディテクタ
22:エッジカウンタ
23:シンクフィールド測定タイマ
24A、24B、24C:ボーレート補正回路
241:補正値生成回路
242:補正上限レジスタ
243:補正下限レジスタ
244、245:比較器
25:ボーレート補正値格納レジスタ
26、126:ボーレート初期値設定レジスタ
27、246B、246C:セレクタ
28、128:カウンタ
29、129:一致検出回路
30:シンクブレークフィールド検出信号
31:シンクフィールド開始信号
32:シンクフィールド終了信号
33:測定時間
34:ボーレート補正値
34A:第1の補正値
34B:第2の補正値(補正上限設定値)
34C:第3の補正値(補正下限設定値)
35、135:ボーレート設定値
36:ボーレート選択出力
37、137:カウンタ値
38、138:一致検出信号
39:サンプリングクロック
40:エッジ検出信号
41:シンクブレークフィールド
42:シンクフィールド
43:待ち時間
44:IDフィールド
45〜45:データフィールド
46:チェックサムフィールド
100:マスタノード
200、201:スレーブノード
300:バス
101、1101:システムクロック
102:ボーレート選択信号
C1、C2:比較結果

【特許請求の範囲】
【請求項1】
入力されるシリアルデータのビット数を計数する第1のカウンタと、
前記第1のカウンタが所定のビット数を計数するまでの時間を基準クロックに基づき測定するタイマと、
前記タイマの測定時間に基づき、前記シリアル通信のボーレートを補正するためのボーレート補正値を出力するボーレート補正回路と、
を具備するシリアル通信用ボーレートジェネレータ。
【請求項2】
請求項1に記載のシリアル通信用ボーレートジェネレータにおいて、
前記基準クロックを計数する第2のカウンタと、
前記第2のカウンタの計数値と前記ボーレート補正値とを比較して一致する時、一致検出信号を出力する一致検出回路と、
を更に備えるシリアル通信用ボーレートジェネレータ。
【請求項3】
請求項2に記載のシリアル通信用ボーレートジェネレータにおいて、
前記ボーレート補正回路から出力される前記ボーレート補正値が格納される第1のレジスタと、
ボーレートの初期値が格納される第2のレジスタと、
前記第2のレジスタ内の初期値と、前記第1のレジスタ内の前記ボーレート補正値のいずれか一方を選択して前記一致検出回路に出力する第1のセレクタと、を更に具備し、
前記一致検出回路は、前記第1のセレクタからの出力値と前記第2のカウンタの計数値とを比較して一致する時、前記一致検出信号を出力する
シリアル通信用ボーレートジェネレータ。
【請求項4】
請求項1に記載のシリアル通信用ボーレートジェネレータにおいて、
前記タイマの測定時間はバイナリ値であり、
前記ボーレート補正回路は、前記タイマのバイナリ値のうち、所定の上位桁を抽出することにより前記ボーレート補正値を生成する
シリアル通信用ボーレートジェネレータ。
【請求項5】
請求項1に記載のシリアル通信用ボーレートジェネレータにおいて、
前記ボーレート補正回路は、
前記タイマの測定値から第1の補正値を生成する補正値生成回路と、
前記ボーレートの上限値である第2の補正値を格納する第3のレジスタと、
前記ボーレートの下限値である第3の補正値を格納する第4のレジスタと、
前記第1の補正値、又は前記第2の補正値、又は前記第3の補正値のいずれか1つを選択して前記ボーレート補正値として出力する第2のセレクタと、
を更に備えるシリアル通信用ボーレートジェネレータ。
【請求項6】
請求項5に記載のシリアル通信用ボーレートジェネレータにおいて、
前記ボーレート補正回路は、前記第1の補正値と前記第2の補正値、又は前記第1の補正値と前記第3の補正値とを比較する比較器を備え、前記第2のセレクタは、前記比較器による比較結果に基づき前記ボーレート補正値を出力する
シリアル通信用ボーレートジェネレータ。
【請求項7】
請求項6に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第1の補正値が前記第2の補正値より大きい場合、前記第2のセレクタは、前記第2の補正値を選択して前記ボーレート補正値として出力する
シリアル通信用ボーレートジェネレータ。
【請求項8】
請求項6に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第1の補正値が前記第3の補正値より小さい場合、前記第2のセレクタは、前記第3の補正値を選択して前記ボーレート補正値として出力する
シリアル通信用ボーレートジェネレータ。
【請求項9】
請求項6に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第1の補正値が前記第2の補正値と前記第3の補正値の範囲内である場合、前記第2のセレクタは、前記第1の補正値を選択して前記ボーレート補正値として出力する
シリアル通信用ボーレートジェネレータ。
【請求項10】
請求項6に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第2のレジスタ内の初期値は前記第2のセレクタに入力され、
前記第1の補正値が前記第2の補正値と前記第3の補正値との範囲外である場合、前記第2のセレクタは、前記第2のレジスタ内の前記初期値を選択して出力する
シリアル通信用ボーレートジェネレータ。
【請求項11】
請求項6に記載のシリアル通信用ボーレートジェネレータにおいて、
前記第1の補正値が前記第2の補正値と前記第3の補正値との範囲外である場合、前記第2のセレクタは選択出力を切替えずに維持する
シリアル通信用ボーレートジェネレータ。
【請求項12】
請求項1から11いずれか1項に記載のシリアル通信用ボーレートジェネレータにおいて、
前記シリアルデータは、LIN(Local Interconnect Network)通信プロトコルに基づくシンクフィールド内の同期バイトである
シリアル通信用ボーレートジェネレータ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2007−324679(P2007−324679A)
【公開日】平成19年12月13日(2007.12.13)
【国際特許分類】
【出願番号】特願2006−149639(P2006−149639)
【出願日】平成18年5月30日(2006.5.30)
【出願人】(302062931)NECエレクトロニクス株式会社 (8,021)
【Fターム(参考)】