(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
非同期シリアル通信が幅広い分野で使用されている。ここでは、低コスト車載ネットワークを実現する為の規格として広く知られているLIN(Local Interconnect Network)規格の非同期シリアル通信を例として説明を行う。しかし、本発明はこれに限定されるものではない。
【0015】
図1は、LIN規格に基づく通信システムの一般的な構成例を示す図である。
このような通信システムは、伝送路であるLINバス10と、マスタノード(master node)11と、2個のスレーブノード(slave node)12A、12Bと、を有する。マスタノード11とスレーブノード12A、12Bは、LINバス10を介して通信可能に接続される。LINバス10に接続するスレーブノードの個数は1以上であればよく、2に限定されるものではない。マスタノード11は、マスタノードが行う処理であるマスタタスク(master task)と共に、スレーブノードに対するスレーブ・タスク(slave task)を実行する。スレーブノード12A、12Bは、それぞれスレーブ・タスクを実行する。
【0016】
一般に、マスタノード11は、水晶発振器等の所定の周波数(周期)のクロックを出力するクロック生成部と、CPU、メモリ等の演算処理部を有し、高精度のクロックで動作し、複雑な処理を行う。これに対して、スレーブノード12A、12Bは、水晶発振器等を有さない比較的低精度のクロックを発生するクロック生成部と、アクチュエータやセンサおよびそれに付属するゲート回路等の簡単な回路を有し、単純な処理を行う。マスタノード11は、伝送路を介して、対象となるスレーブノードの指定および処理内容を指示する。例えば、対象スレーブノードがアクチュエータであれば、マスタノード11は、動作を実行するためのデータを送信し、対象スレーブノードが受信したデータに応じた動作を実行する。対象スレーブノードがセンサであれば、スレーブノードが検出データを出力し、マスタノード11または他のスレーブノードが検出データを受信する。
【0017】
LINプロトコルについて説明する。
ノード間の通信は、フレーム(Frame)(通信パケット)を使用して行われる。
図2は、フレーム構造を示す図である。
1フレームは、ヘッダ部分(Header)と、レスポンス部分(Response)と、を有する。ヘッダ部分は、開始フィールド(Break field)と、同期フィールド(Sync field)と、動作指示フィールド(Protected identifier field)と、を有する。同期フィールドと動作指示フィールドの間には、分離スペース(Inter-byte space)が設けられる。以下、開始フィールドをブレークフィールド、同期フィールドを同期バイト、動作指示フィールドをIDフィールド、と称する場合がある。
【0018】
レスポンス部分は、複数(N個)のデータフィールド(Data field)(Data 1-N)と、終了フィールド(Checksum)と、を有する。以下、データフィールドを単にデータまたはバイトフィールド(Byte field)と、終了フィールドをチェックサムと称する場合がある。レスポンス部分の開始部分のIDフィールドと先頭のデータの間には、応答空間(Response space)が設けられ、データおよびチェックサム間には、分離スペース(Inter-byte spaces)が設けられる。
【0019】
Header部分は、マスタノードが送出する。
Response部分は、マスタノード(マスタノードからスレーブノードへの通信の場合)、スレーブノード(スレーブノードからマスタノードへの通信の場合、スレーブノードからスレーブノードへの通信の場合)が送出する。
【0020】
図3は、LINプロトコルに基づくノード間通信の形態を示す図である。
図3では、この場合、マスタノード11は、マスタタスクと共に、スレーブ・タスク受信処理およびスレーブ・タスク送信処理をスレーブ・タスクとして実行する。スレーブノード12、12A、12Bは、それぞれスレーブ・タスク受信処理およびスレーブ・タスク送信処理をスレーブ・タスクとして実行する。
【0021】
図3の(A)は、マスタノード11からの要求に応じてスレーブノード12からマスタノード11へデータを送信する場合を示す。この場合、マスタノード11が、Header部分を伝送路に送出し、スレーブノード12が、IDフィールドにより対象であることを認識して、IDフィールドで指示されたタスクに応じてResponse部分を伝送路に送出する。
【0022】
図3の(B)は、マスタノード11から複数のスレーブノード12A、12Bへデータを送信する場合を示す。この場合、スレーブノードは1個でもよい。マスタノード11が、Header部分およびResponse部分を伝送路に送出し、スレーブノード12Aおよび12Bが、IDフィールドにより対象であることを認識して、Response部分を受信する。
【0023】
図3の(C)は、マスタノード11が、スレーブノード12Aからスレーブノード12Bへデータを送信するように指示する場合を示す。マスタノード11が、Header部分を伝送路に送出し、IDフィールドにより、スレーブノード12Aが送信元であることを認識して、Response部分を伝送路に送出する。さらに、スレーブノード12Bが受信先であることを認識して、Response部分を受信する。
【0024】
図4は、フレーム(Frame)の各部の詳細を示す図である。
Break fieldは、フレーム(Frame)の開始を示す。
図4の(A)に示すように、マスタノードは、13ビット時間以上の間”L”を出力する。スレーブノードは11ビット時間以上の間”L”レベルを検出し続けると、Break fieldと認識する。
【0025】
図4の(B)に示すように、Sync fieldは、16進で”55”の値を持つフィールドである。スレーブノードは、Break field後にSync fieldを検出すると、以下の処理を行うことによりマスタノードのボーレート(1秒当たりの転送ビット数)を計測することができる。Sync field中の最初の立下りエッジから5番目の立下りエッジの時間を計測することにより、スレーブノードはマスタノードが8ビットのデータを送信する時間Tを得てその値を8で除算することにより1ビット転送時間を算出する。
【0026】
図4の(C)に示すように、Protected identifier fieldは、Frame identifierおよびParityの2つSub-fieldを有する。Frame identifierは、このフレームの種別を示す。ParityはFrame identifierのチェック用データである。
【0027】
Data field(Byte field)は、1〜8バイトのデータバイト(Data 1, Data 2,…, Data N)を転送する。
図4の(D)に示すように、Byte fieldの開始部分に”L”の開始ビット(Start bit)を、Byte fieldの終了部分に”H”の終了ビット(Stop bit)を有する。開始ビットと終了ビットの間に、8ビット(1 byte)のデータのLSB(bit 0)からMSB(bit 7)がこの順に配置される。したがって、Data field(Byte field)は、10ビット分の長さを有する。
【0028】
Checksumは、1フレームの最後に配置され、このフレームのエラーチェックのために使用される。
【0029】
LIN規格を含む非同期シリアル通信において、正しくデータの転送を行うためには、送信ノードのシリアルデータ送出タイミングと受信ノードのシリアルデータサンプリングタイミングの位相関係をある範囲内に納める必要がある。シリアルデータ送出タイミングとシリアルデータサンプリングタイミングが決められた位相関係から逸脱している状態では、正しいデータ転送を行うことができない。
【0030】
LIN規格の非同期シリアル通信においては、マスタノードのシリアルデータ送出タイミングにスレーブノードにおけるシリアルデータサンプリングタイミングを合わせている。
【0031】
図1の通信システムにおいて、各ノードの間で通信を行う場合、マスタノードの指示によりフレームの転送を開始する。このフレーム転送を正しく行うため、スレーブノードは、マスタノードからのフレームのヘッダ部分に含まれるSync fieldから算出されるボーレート(1秒当たりの送受信ビット数)に各スレーブノードのボーレートを一致させる機能を有している。このような同期処理を行うため、スレーブノードは、以下のような構成を有する。
【0032】
図5は、一般的なスレーブノード(スレーブ装置)の同期処理に関係する部分の構成を示すブロック図である。
スレーブノード12は、クロック生成器21と、ボーレートジェネレータ22と、シリアルパラレル変換器23と、同期フィールド(Sync field)検出器24と、エッジ検出器25と、カウンタ26と、シフタ27と、を有する。
【0033】
クロック生成器21は、マスタノードが有する水晶発振器を利用したクロック生成器が生成するクロックの周波数に対して所定の周波数のクロックを、LIN規格で定められた精度で生成する。クロック生成器21が生成するクロックは、受信クロック(ボーレートクロック)の周波数より高周波数のクロックである。クロック生成器21は、簡易な発振器を有するため、低精度のクロックを生成し、安定性も不十分である。
【0034】
ボーレートジェネレータ22は、分周比が可変の分周器を有し、クロック生成器21の出力するクロックを、ボーレートジェネレータ設定値により規定された分周比で分周して受信クロック(ボーレートクロック)を生成する。
【0035】
シリアルパラレル変換器23は、LIN伝送路から入力する信号のResponse部分におけるデータおよびチェックサムのシリアルデータを8ビットパラレルデータに変換する。
【0036】
同期フィールド(Sync field)検出器24は、LIN伝送路から入力する信号のHeader部分のSync fieldにおける立下りエッジを検出するタイミングを示すSync field検出信号を出力する。同期フィールド検出器24は、クロックをカウントするカウンタを有し、11ビット時間以上”L”レベルが連続することを検出してBreak fieldを検出した後、最初の立ち上がりエッジ(Break fieldの後端)からその後の最初の立下りまでの間アサートする。さらに、同期フィールド検出器24は、Sync field内の4個目の立ち上がりエッジから5個目の立下りエッジまでの間アサートする。
【0037】
エッジ検出器25は、Break fieldで初期化(出力ネゲート)される。エッジ検出器25は、Sync field検出信号がアサートされているタイミングで立下りエッジを検出すると出力(Sync fieldエッジ検出信号)をトグル(LからHおよびHからLに変化)させる。
【0038】
カウンタ26は、Break fieldで初期化され、Sync fieldエッジ検出信号がアサートされている期間の長さを計測し、Sync field長カウント値を出力する。
シフタ27は、Sync field長カウント値を除算して1/8の値を求め、ボーレートジェネレータ設定値として出力する。この処理は、16進のSync field長カウント値を3ビット分シフトすることにより生成される。Sync field長カウント値は、8ビット分の伝送が行われた時間を測定したものであるため、カウンタ値を8で除算(右3ビットシフト)し、1ビット分の伝送時間を算出する。この1ビット分の伝送時間がボーレートジェネレータ設定値となる。
【0039】
ボーレートジェネレータ22は、以上のようにして決定されたボーレートジェネレータ設定値に基づいて、送信クロックの周波数(周期)にもっとも近い周波数(周期)の受信クロック(ボーレートクロック)が得られるように、分周比を設定する。
【0040】
以上の処理をまとめると、以下のようになる。
マスタノードは、送信フレームの先頭でフレーム開始を示すBreak fieldに続き、Sync fieldと呼ばれる特殊な固定パターンを送信する。
スレーブノードは、Break field及びSync fieldを認識し、Sync field内の二つのパルスエッジ(測定対象フィールド部)の間隔を測定する。この測定値はマスタノードの8ビット転送時間をスレーブノードの内部クロックでカウントしたものとなる。
【0041】
スレーブノードは、上記測定値を元にマスタノードのボーレートを算出し、自身のボーレートジェネレータに算出したボーレートを設定する。
上記の一連の処理を実行することにより、Data fieldにおいてスレーブノードはマスタノードのタイミングに合わせたサンプリングタイミングでシリアルデータを受信することができる。
【0042】
上記のように、Sync fieldによりマスタノードのボーレートにスレーブノードのボーレートを合わせた後は、各スレーブノードが持っているクロック生成器の安定度に依存してノード間の内部クロックがずれていく。そのため、受信データを正しくサンプリングできなくなってしまう事態が生じる。そのため、一つのフレームを転送中に正しく受信データをサンプリングできなくなることが無いように、標準のLIN規格では、各スレーブノードが持っているクロック生成器の安定度を規定している。したがって、各ノードのクロック生成器に要求される性能を下げることに限界があり、そのためにクロック生成器にかかるコスト低減に限界がある。
【0043】
また、各スレーブノードの内部クロックの安定度を規定しても、一つのフレームが長い場合は、各ノードの内部クロックのズレが蓄積していき、正しいデータ転送ができなくなる。この様な事態を回避するため、LIN規格では一つのフレーム当たりの転送データ量を最大8バイトに制約している。言い換えれば、
図2のフレーム構造で、データは最大でも1から8までに規定されている。
【0044】
一つのフレームで転送できる最大データ量が制約される(規格上最大8バイト)ため、大量データ転送する場合は転送データを複数フレームに分割して転送する必要がある。このため、実効転送レートが低くなる。
【0045】
上記のように、LIN規格を含む一般的な非同期シリアル通信においては、受信装置でのクロック生成器に安定度が要求されるため、高コストのものを使用していた。また、一つのフレームで転送するデータ量が制約されており、実効転送レートが低くなっていた。
【0046】
以下に説明する実施形態の通信システムは、このような問題を解消し、低コストの比較的安定度の低いクロック生成器をしても、一つのフレームで転送するデータ量の制約がなく、高い実行転送レートでのデータ伝送を行う。
【0047】
図6は、第1実施形態のLIN規格の通信システムにおける受信装置(スレーブノード)の構成を示す図である。
スレーブノード30は、クロック生成器21と、ボーレートジェネレータ22と、シリアルパラレル変換器23と、Sync field検出器24と、エッジ検出器25と、カウンタ26と、シフタ27と、を有する。さらに、スレーブノード30は、Data field検出器31と、Data fieldエッジ検出器32と、Data fieldカウンタ33と、除算器34と、2個のラッチ28および35と、エッジ切替器36と、セレクタ37と、を有する。
【0048】
クロック生成器、ボーレートジェネレータ22、シリアルパラレル変換器23、Sync field検出器24、エッジ検出器25、カウンタ26およびシフタ27は、
図5のものと同じである。すなわち、第1実施形態のスレーブノード30は、
図5のスレーブノード12に、Data field検出器31、Data fieldエッジ検出器32、Data fieldカウンタ33、除算器34、ラッチ28および35、エッジ切替器36およびセレクタ37を加えたものである。これらの加えた要素により、以下の4つの機構が実現される。第1の機構は、各Data fieldにあるスタートビット及びストップビットの位置を検出する機構である。第2の機構は、第1の機構で検出したスタートビットからストップビットの間の経過時間を受信側内部クロックでカウントする機構である。第3の機構は、第2の機構のカウント値を10で除算して、ボーレートジェネレータへの設定値を算出する機構である。第4の機構は、Sync fieldに対して算出したボーレートジェネレータ設定値と、第3の機構で算出したボーレートジェネレータ設定値の一方を選択して、ボーレートジェネレータ22へ設定する機構である。
【0049】
以下、新たに加えた要素について説明する。
Data field検出器31は、Data fieldエッジ検出器32が各Data field(Data)の開始ビットの立下りエッジを検出するタイミングを示すData field検出信号を生成して出力する。Data field検出器31は、Header部分の受信終了後からその後の最初の立下りエッジ(Start bit)までの間および各Data fieldの終了ビット(Stop bit)からその後の最初の立下りエッジ(Start bit)までの間、Data field検出信号である出力をアサートする。Header部分の受信終了後からその後の最初の立下りエッジ(Start bit)までの間は、
図2のResponse spaceに相当する。回路構成は、Sync field検出器24と類似している。
【0050】
Data fieldエッジ検出器32は、Data fieldカウンタ33を動作させる期間を示すData fieldエッジ検出信号を生成する。回路構成は、Sync fieldエッジ検出器25と類似している。Data fieldエッジ検出器32は、Break field検出時に初期化(出力ネゲート)され、Data field検出信号がアサートされているタイミングで立下りエッジを検出すると出力(Data fieldエッジ検出信号)をトグルする。
【0051】
Data fieldカウンタ33は、Data fieldエッジ検出信号の長さをカウントする。回路構成は、Sync fieldエッジ検出器25と類似している。Data fieldカウンタ33は、Break field検出時に初期化され、Data fieldエッジ検出信号がアサートされている間カウント動作を行う。
【0052】
除算器34は、Data fieldカウンタ33のData field長カウンタ値からボーレートジェネレータ設定値を算出する。
図2で説明したように、Data fieldカウンタ33のカウント値は、10ビット分の伝送が行われる時間を測定したものとなるため、カウンタ値を10で除算し1ビット分の伝送時間を算出する。この1ビット分の伝送時間がボーレートジェネレータ設定値となる。
【0053】
ラッチ28は、シフタ27の出力するSync fieldで検出されたボーレートジェネレータ設定値を保持し、Sync fieldカウンタ26がカウント動作をしている間保持状態を維持する。ラッチ35は、除算器34の出力するData field長カウンタ値から検出されたボーレートジェネレータ設定値を保持し、Data fieldカウンタ33がカウント動作をしている間、保持状態を維持する。
【0054】
エッジ検出切替器36およびセレクタ37は、ラッチ28に保持されたSync fieldで検出されたボーレートジェネレータ設定値と、ラッチ35に保持されたData field長カウンタ値から検出されたボーレートジェネレータ設定値の適切な方を選択する。
【0055】
図7は、第1実施形態において検出する1フレーム(Frame)のタイミングを説明する図である。
スレーブノード(受信ノード)では、Frameの受信待ち状態の時、ボーレートジェネレータ設定値としてあらかじめ設定された初期値を使用するか、直前のボーレートジェネレータ設定値を使用する。
【0056】
スレーブノードは、Sync fieldを認識すると
図7における測定対象フィールドの長さを計測する。Sync fieldの計測が終了すると、エッジ検出切替器36が、エッジ検出対象切替信号をSync field長カウント値から算出したボーレートジェネレータ設定値を選択するように設定する。この設定は、セレクタ37の選択信号=”0”とすることにより行う。
【0057】
さらに、後続のData fieldを認識すると、各Data fieldの長さを計測する。この詳細については後述する。Data fieldの長さを計測すると、エッジ検出切替器36は、エッジ検出対象切替信号をData field長カウント値から算出したボーレートジェネレータ設定値を選択するように設定する。この設定は、セレクタ37の選択信号=”1”とすることにより行う。その後Data fieldが続き、新しいData fieldを受信すると、その長さを計測し、最新のData fieldの長さに基づいてボーレートジェネレータ設定値を更新する。このData field の長さの計測によるボーレートジェネレータ設定値の更新はData fieldが続く限り継続する。
【0058】
図8は、Data field長の検出をより詳細に説明する図である。
図4の(D)に示すように、Data field(Byte field)は、最初の1ビットは”L”のスタートビット(Start bit)であり、最後の1ビットは”H”のストップビット(Stop bit)である。このようなData fieldが連続すると、その境界部分では、”H”のストップビットの後に”L”のスタートビットが配置されることになる。言い換えれば、論理値が逆のビットが隣接して配置されることになり、必ず論理値の変化(立下りエッジ)が存在する。
図8では、Data fieldの境界部分のストップビットとスタートビットが連続する部分を[a]で示している。
【0059】
このスタートビットとストップビットの間の立下りエッジから次のスタートビットとストップビットの間の立下りエッジの間隔は、Data field (Byte field)の長さである。
図8では、この長さを、[b1]、[b2]、[b3]で示している。この長さは、8ビットデータ転送時間+スタートビット転送時間(1ビット転送時間)+ストップビット転送時間(1ビット転送時間)=10ビット転送時間であり、送信ノード側の転送レート(=ボーレート:Baud rate)の1/10を示している。
【0060】
受信中、受信ノードは、現在どのfieldのどのビットを転送中であるかを認識しており、立下りエッジの受信が予測される上記の期間[a]をアサートして、期間[a]内での立下りエッジの検出を行う。
図7には、Data field検出器31がアサートする期間を示しており、そこでエッジ検出を行う。
【0061】
このエッジ受信を期待しているタイミングで、上記信号エッジを受信した瞬間を捉えて、各Byte fieldの長さ([b1]、[b2]、[b3])をスレーブノードの内部クロックでカウントする。
上記Byte fieldの長さのカウント値を10で除算することにより、測定対象Byte fieldの1ビット転送時間(=ボーレートの逆数)を求めることができる。
【0062】
この求めた1ビット転送時間を、ボーレートクロック生成器22に設定することにより、受信側のボーレートを送信側のボーレートに合わせたデータ伝送を行う。なお、
図8で、[b1]から算出されたボーレートは、[c1]で示す期間に使用され、[b2]から算出されたボーレートは、[c2]で示す期間に使用されるという具合に、順に更新される。これにより、常時安定してデータをサンプリングできるタイミングを設定できる。
【0063】
以上説明したように、第1実施形態では、データ転送中でも受信側のボーレートを直前のByte fieldにおける送信側ボーレートに合わせることができ、安定してデータをサンプリングできる様に受信側サンプリングタイミングを設定できる。更に、この動作を継続して行うことにより、ボーレートの補正(送信ボーレートへの受信ボーレートの合わせこみ)を、今まさに受信中のData fieldの長さを元に行うことになる。言い換えれば、常時フィードバック補正が行われる。したがって、送信ボーレートと受信ボーレートの差が安定にデータ転送を行える範囲を逸脱しないため、安定度が劣るクロック生成器を使用しても誤りのないデータ転送を実現できる。更に、このボーレートの補正により一つのフレームで大量のデータを転送した場合でも転送エラーが発生することがなくなる。
【0064】
図9は、1フレームにおけるData field(Byte field)の個数を8に制約せずに、8以上に増加させた場合のフレーム構造を示す図である。
図9に示すように、一つのフレームにおけるData field(Byte field)の個数が増加するので、一つのフレームで送信できるデータ量が増加する。
【0065】
図10は、第2実施形態のLIN規格の通信システムにおける受信装置(スレーブノード)の構成を示す図である。
第2実施形態のスレーブノード40は、Data fieldカウンタ33および除算器34の代わりに、BCD(Binary Coded Decimal)カウンタ41およびシフタ42を設けたことが第1実施形態と異なり、他は同じである。
【0066】
第2実施形態では、スタートビットとストップビットの間隔を計測する機構をバイナリカウンタのData fieldカウンタ33からBCD(Binary Coded Decimal)カウンタに変更する。
【0067】
前述のように、Data fieldのスタートビットとストップビットの間隔は、10ビット転送時間であるため、Data fieldのスタートビットとストップビットの間隔から1ビット転送時間を算出するためには、10による除算を行う必要がある。ここで、Data fieldのスタートビットとストップビットの間隔の計測をBCDカウンタ41で行うと、カウンタ出力の各4ビットは10進数で1桁を表すことになり、上記の10による除算を4ビット右シフト操作に簡略化できる。
【0068】
そこで、第2実施形態では、BCDカウンタ41で、スタートビットとストップビットの間隔を計測し、10による除算を、シフタ42の右4ビットシフトで行う。これにより、ボーレートジェネレータ設定値を求める際に行う10による除算を簡略化でき、実装コストが高い除算器を使用しない。
【0069】
図11は、十進数値”9317”とそれを10で除した”931”を、二進数および十進数で表した場合を示す図である。
図11は、十進数値”9317”の10による除算の変化を示している。
図11に示すように、十進数(BCDカウンタ値)で表した場合の10による除算は、4ビットシフト(4ビット削除)で行えるが、二進数表示の場合には、10による除算は、単純なビットシフトで実現することができない。
【0070】
第2実施形態によれば、コストが高い(論理規模が大きい)除算器を使用せずに、コストが低い(論理規模が小さい)シフト操作に置き換えることができる。
【0071】
図12は、第3実施形態のLIN規格の通信システムにおける受信装置(スレーブノード)の構成を示す図である。
第3実施形態のスレーブノード50は、クロック生成器21と、ボーレートジェネレータ22と、シリアルパラレル変換器23と、を有する。スレーブノード50は、さらに、field検出器51と、エッジ検出器52と、カウンタ53と、シフタ27と、ラッチ28と、除算器34と、ラッチ35と、セレクタ37と、を有する。
【0072】
クロック生成器21、ボーレートジェネレータ22、シリアルパラレル変換器23、シフタ27、ラッチ28、除算器34、ラッチ35およびセレクタ37は、第1実施形態のものと同じものである。
【0073】
第3実施形態のfield検出器51は、第1実施形態のSync field検出器24とData field検出器31とエッジ切替器36を一体化したものである。第3実施形態のエッジ検出器52は、第1実施形態のエッジ検出器25とData fieldエッジ検出器32を共通化したものである。第3実施形態のカウンタ53は、カウンタ26とData fieldカウンタ33を共通化したものである。
【0074】
第1実施形態のスレーブノード30に設けた、Sync field検出器24とData field検出器31は、共にカウンタを有し、アサートする期間が異なるのみで、類似の構成を有する。また、エッジ検出器25とData fieldエッジ検出器32は、変化エッジを検出する回路を有し、類似の構成を有する。さらに、カウンタ26とData fieldカウンタ33は、共にカウンタを有し、類似の構成を有する。したがって、それらは、第3実施形態のように共通化することができる。
【0075】
field検出器51は、カウンタを有し、Sync field検出時には、Sync field検出器24と同様のカウント動作を行いfield検出信号をアサートし、Data field検出時には、Data field検出器31と同様のカウント動作を行いfield検出信号をアサートする。Sync field検出時とData field検出時の動作の違いは、カウント開始のタイミングと、アサートするカウント値の設定である。
【0076】
エッジ検出器52は、エッジ検出器25およびData fieldエッジ検出器32と同じ構成を有する。
カウンタ53は、カウンタ26およびData fieldカウンタ33と同じ構成を有する。
以上説明したように、実施形態によれば、最新の送信ボーレートを受信側クロックでカウントし、その結果で受信ボーレートを設定することにより、マスタノードとスレーブノードの間のボーレートをFrameデータ転送中でも合わせることができる。
【0077】
以上説明したように、実施形態によれば、以下の効果が得られる。
(1)安定した通信をコストの安い、すなわちクロック安定性が悪いクロック生成器を使用して実現できる。
(2)一つのフレームで多量(実質上無限)のデータを転送することができる。
【0078】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。