(57)【要約】【課題】低コストの比較的安定度の低いクロック生成器を使用して、１フレームでの転送データ量の制約がなく、高い実行転送レートの通信システムの実現。【解決手段】送信ノード11と、受信ノード11と、伝送路10と、を有し、１フレームが、送信ノードから送信される開始フィールドおよび同期フィールドを有し、送信ノードまたは受信ノードから送信される複数のデータフィールドを有し、受信ノードは、同期フィールドの信号に応じてボーレートを設定した後、データフィールドの時間長を検出してボーレートを更新するシリアル通信システム。【選択図】図６
2014187633.tif 000002
【特許請求の範囲】
【請求項１】
送信ノードと、少なくとも１つの受信ノードと、前記送信ノードおよび前記少なくとも１つの受信ノードを接続する伝送路と、を備え、
１フレームが、開始フィールドと、同期フィールドと、複数のデータフィールドと、を有し、
前記開始フィールドおよび前記同期フィールドは、前記送信ノードから送信され、
前記複数のデータフィールドおよび前記終了フィールドは、前記送信ノードまたは前記少なくとも１つの受信ノードから送信され、
前記少なくとも１つの受信ノードは、
前記同期フィールドの信号に応じてボーレートを設定し、設定した前記ボーレートで、前記複数のデータフィールドの送信または受信を行い、
前記データフィールドの時間長を検出して、前記ボーレートを更新することを特徴とするシリアル通信システム。
【請求項２】
各受信ノードは、
クロックを出力するクロック生成器と、
前記クロックを指示された分周比で分周して受信クロックを生成するボーレートジェネレータと、
受信信号の前記同期フィールドにおける同期信号の周期を検出し、前記受信クロックの周期を、検出した前記同期信号の周期に対応するように前記ボーレートジェネレータの分周比を設定する同期フィールド検出回路と、
前記受信信号の各データフィールドの周期を検出し、前記受信クロックの周期を、検出した前記データフィールドの周期に対応するように前記ボーレートジェネレータの分周比を変更するデータフィールド周期検出回路と、を備えることを特徴とする請求項１記載のシリアル通信システム。
【請求項３】
前記同期フィールド検出回路は、
送信クロックの周期の２倍の周期の前記同期信号の４パルス分の時間をカウントする同期信号カウント回路と、
前記同期信号カウント回路のカウント値の１／８の値を演算するシフト回路と、を備え、
前記データフィールド周期検出回路は、
前記送信クロックの周期の１０倍の前記データフィールドの時間をカウントするデータフィールドカウント回路と、
前記データフィールドカウント回路のカウント値から前記送信クロックの周期の１／１０の時間を演算する除算回路と、を備え、
各受信ノードは、
前記ボーレートジェネレータの分周比の設定値を、１番目の前記データフィールドの間は、前記同期フィールド検出回路の設定した分周比に、２番目の前記データフィールド以降には、前記データフィールド周期検出回路が変更した分周比に切り替えるセレクタと、を備えることを特徴とする請求項２記載のシリアル通信システム。
【請求項４】
前記データフィールドカウント回路は、前記データフィールドの時間を１０進法でカウントするＢＣＤカウント回路であり、
前記除算回路は、ＢＣＤカウント回路のカウント値を４ビットシフト演算するシフト回路であることを特徴とする請求項３記載のシリアル通信システム。
【請求項５】
前記同期信号カウント回路と前記データフィールドカウント回路は共通であることを特徴とする請求項３記載のシリアル通信システム。
【請求項６】
伝送路を介して送信ノードに接続され、前記送信ノードとの間でシリアル通信を行う受信装置であって、
１フレームが、開始フィールドと、同期フィールドと、複数のデータフィールドと、を有し、
前記開始フィールドおよび前記同期フィールドは、前記送信ノードから送信され、
受信した前記同期フィールドの情報に基づいて、前記複数のデータフィールドの送信または受信を行い、
前記同期フィールドの信号に応じてボーレートを設定し、設定した前記ボーレートで、前記複数のデータフィールドの送信または受信を行い、
前記データフィールドの時間長を検出して、前記ボーレートを更新することを特徴とする受信装置。
【請求項７】
クロックを出力するクロック生成器と、
前記クロックを指示された分周比で分周して受信クロックを生成するボーレートジェネレータと、
受信信号の前記同期フィールドにおける同期信号の周期を検出し、前記受信クロックの周期を、検出した前記同期信号の周期に対応するように前記ボーレートジェネレータの分周比を設定する同期フィールド検出回路と、
前記受信信号の各データフィールドの周期を検出し、前記受信クロックの周期を、検出した前記データフィールドの周期に対応するように前記ボーレートジェネレータの分周比を変更するデータフィールド周期検出回路と、を備えることを特徴とする請求項６記載の受信装置。
【請求項８】
前記同期フィールド検出回路は、
送信クロックの周期の２倍の周期の前記同期信号の４パルス分の時間をカウントする同期信号カウント回路と、
前記同期信号カウント回路のカウント値の１／８の値を演算するシフト回路と、を備え、
前記データフィールド周期検出回路は、
前記送信クロックの周期の１０倍の前記データフィールドの時間をカウントするデータフィールドカウント回路と、
前記データフィールドカウント回路のカウント値から前記送信クロックの周期の１／１０の時間を演算する除算回路と、を備え、
前記ボーレートジェネレータの分周比の設定値を、１番目の前記データフィールドの間は、前記同期フィールド検出回路の設定した分周比に、２番目の前記データフィールド以降には、前記データフィールド周期検出回路が変更した分周比に切り替えるセレクタと、を備えることを特徴とする請求項７記載の受信装置。
【請求項９】
前記データフィールドカウント回路は、前記データフィールドの時間を１０進法でカウントするＢＣＤカウント回路であり、
前記除算回路は、ＢＣＤカウント回路のカウント値を４ビットシフト演算するシフト回路であることを特徴とする請求項８記載の受信装置。
【請求項１０】
前記同期信号カウント回路と前記データフィールドカウント回路は共通であることを特徴とする請求項８記載の受信装置。
【請求項１１】
送信ノードおよび少なくとも１つの受信ノードを伝送路で接続したシリアル通信システムにおけるシリアル通信方法であって、
１フレームが、開始フィールドと、同期フィールドと、複数のデータフィールドと、を有し、
前記開始フィールドおよび前記同期フィールドは、前記送信ノードから送信され、
前記複数のデータフィールドおよび前記終了フィールドは、前記送信ノードまたは前記少なくとも１つの受信ノードから送信され、
前記少なくとも１つの受信ノードは、
前記同期フィールドの信号に応じてボーレートを設定し、設定した前記ボーレートで前記複数のデータフィールドの送信または受信を行い、
前記データフィールドの時間長を検出して、前記ボーレートを更新することを特徴とするシリアル通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、非同期シリアル通信に関する。
【背景技術】
【０００２】
非同期シリアル通信が幅広い分野で使用されており、例えば、低コスト車載ネットワークを実現する為のＬＩＮ(Local Interconnect Network)規格が提案されている。
【０００３】
ＬＩＮ規格を含む非同期シリアル通信において、正しくデータの転送を行うためには、送信ノードのシリアルデータ送出タイミングと受信ノードのシリアルデータサンプリングタイミングの位相関係をある範囲内に納める必要がある。シリアルデータ送出タイミングとシリアルデータサンプリングタイミングが決められた位相関係から逸脱している状態では、正しいデータ転送を行うことができない。
【０００４】
ＬＩＮ規格の非同期シリアル通信においては、マスタノードのシリアルデータ送出タイミング（ボーレート）にスレーブノードにおけるシリアルデータサンプリングタイミング（ボーレート）を合わせている。
【０００５】
同期のためのフィールドによりマスタノードのボーレートにスレーブノードのボーレートを合わせた後は、各スレーブノードが持っているクロック生成器の安定度に依存してノード間の内部クロックがずれていく。そのため、受信データを正しくサンプリングできなくなってしまう事態が生じる。そのため、一つのフレームを転送中に正しく受信データをサンプリングできなくなることが無いように、標準のＬＩＮ規格では、各スレーブノードが持っているクロック生成器の安定度を規定している。したがって、各ノードのクロック生成器に要求される性能を下げることに限界があり、そのためにクロック生成器にかかるコスト低減に限界がある。
【０００６】
また、各スレーブノードの内部クロックの安定度を規定しても、一つのフレームが長い場合は、各ノードの内部クロックのズレが蓄積していき、正しいデータ転送ができなくなる。この様な事態を回避するため、ＬＩＮ規格では一つのフレーム当たりの転送データ量を最大８バイトに制約している。
【０００７】
一つのフレームで転送できる最大データ量が制約される（規格上最大８バイト）ため、大量データ転送する場合は転送データを複数フレームに分割して転送する必要がある。このため、実効転送レートが低くなる。
【０００８】
上記のように、ＬＩＮ規格を含む一般的な非同期シリアル通信においては、受信装置でのクロック生成器に安定度が要求されるため、高コストのものを使用していた。また、一つのフレームで転送するデータ量が制約されており、実効転送レートが低くなっていた。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平５−２２５１２８号公報
【特許文献２】特開２００７−３２４６７９号公報
【特許文献３】特開２００７−１６６１７９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
実施形態によれば、低コストの比較的安定度の低いクロック生成器を使用しても、一つのフレームで転送するデータ量の制約がなく、高い実行転送レートでのデータ伝送を行う通信システムが実現される。
【課題を解決するための手段】
【００１１】
第１の態様のシリアル通信システムは、送信ノードと、少なくとも１つの受信ノードと、送信ノードおよび少なくとも１つの受信ノードを接続する伝送路と、を有する。一つのフレームは、開始フィールドと、同期フィールドと、複数のデータフィールドと、を有する。開始フィールドおよび同期フィールドは、送信ノードから送信され、複数のデータフィールドは、送信ノードまたは少なくとも１つの受信ノードから送信される。少なくとも１つの受信ノードは、同期フィールドの信号に応じてボーレートを設定し、設定したボーレートで、複数のデータフィールドの送信または受信を行い、データフィールドの時間長を検出して、ボーレートを更新する。
【発明の効果】
【００１２】
第１の態様のシリアル通信システムでは、受信ノードが、低コストの比較的安定度の低いクロック生成器を使用でき、一つのフレームで転送するデータ量の制約がなく、高い実行転送レートでのデータ伝送を行うことができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、ＬＩＮ規格に基づく通信システムの一般的な構成例を示す図である。
【図２】図２は、フレーム構造を示す図である。
【図３】図３は、ＬＩＮプロトコルに基づくノード間通信の形態を示す図である。
【図４】図４は、フレーム(Frame)の各部の詳細を示す図である。
【図５】図５は、一般的なスレーブノード（スレーブ装置）の同期処理に関係する部分の構成を示すブロック図である。
【図６】図６は、第１実施形態のＬＩＮ規格の通信システムにおける受信装置（スレーブノード）の構成を示す図である。
【図７】図７は、第１実施形態において検出する１フレーム(Frame)のタイミングを説明する図である。
【図８】図８は、Data field長の検出をより詳細に説明する図である。
【図９】図９は、１フレームにおけるData field(Byte field)の個数を８に制約せずに、８以上に増加させた場合のフレーム構造を示す図である。
【図１０】図１０は、第２実施形態のＬＩＮ規格の通信システムにおける受信装置（スレーブノード）の構成を示す図である。
【図１１】図１１は、十進数値”９３１７”とそれを１０で除した”９３１”を、二進数および十進数で表した場合を示す図である。
【図１２】図１２は、第３実施形態のＬＩＮ規格の通信システムにおける受信装置（スレーブノード）の構成を示す図である。
【発明を実施するための形態】
【００１４】
非同期シリアル通信が幅広い分野で使用されている。ここでは、低コスト車載ネットワークを実現する為の規格として広く知られているＬＩＮ(Local Interconnect Network)規格の非同期シリアル通信を例として説明を行う。しかし、本発明はこれに限定されるものではない。
【００１５】
図１は、ＬＩＮ規格に基づく通信システムの一般的な構成例を示す図である。
このような通信システムは、伝送路であるＬＩＮバス１０と、マスタノード(master node)１１と、２個のスレーブノード(slave node)１２Ａ、１２Ｂと、を有する。マスタノード１１とスレーブノード１２Ａ、１２Ｂは、ＬＩＮバス１０を介して通信可能に接続される。ＬＩＮバス１０に接続するスレーブノードの個数は１以上であればよく、２に限定されるものではない。マスタノード１１は、マスタノードが行う処理であるマスタタスク(master task)と共に、スレーブノードに対するスレーブ・タスク(slave task)を実行する。スレーブノード１２Ａ、１２Ｂは、それぞれスレーブ・タスクを実行する。
【００１６】
一般に、マスタノード１１は、水晶発振器等の所定の周波数（周期）のクロックを出力するクロック生成部と、ＣＰＵ、メモリ等の演算処理部を有し、高精度のクロックで動作し、複雑な処理を行う。これに対して、スレーブノード１２Ａ、１２Ｂは、水晶発振器等を有さない比較的低精度のクロックを発生するクロック生成部と、アクチュエータやセンサおよびそれに付属するゲート回路等の簡単な回路を有し、単純な処理を行う。マスタノード１１は、伝送路を介して、対象となるスレーブノードの指定および処理内容を指示する。例えば、対象スレーブノードがアクチュエータであれば、マスタノード１１は、動作を実行するためのデータを送信し、対象スレーブノードが受信したデータに応じた動作を実行する。対象スレーブノードがセンサであれば、スレーブノードが検出データを出力し、マスタノード１１または他のスレーブノードが検出データを受信する。
【００１７】
ＬＩＮプロトコルについて説明する。
ノード間の通信は、フレーム(Frame)(通信パケット)を使用して行われる。
図２は、フレーム構造を示す図である。
１フレームは、ヘッダ部分(Header)と、レスポンス部分(Response)と、を有する。ヘッダ部分は、開始フィールド(Break field)と、同期フィールド(Sync field)と、動作指示フィールド(Protected identifier field)と、を有する。同期フィールドと動作指示フィールドの間には、分離スペース(Inter-byte space)が設けられる。以下、開始フィールドをブレークフィールド、同期フィールドを同期バイト、動作指示フィールドをＩＤフィールド、と称する場合がある。
【００１８】
レスポンス部分は、複数（Ｎ個）のデータフィールド(Data field)(Data 1-N)と、終了フィールド(Checksum)と、を有する。以下、データフィールドを単にデータまたはバイトフィールド(Byte field)と、終了フィールドをチェックサムと称する場合がある。レスポンス部分の開始部分のＩＤフィールドと先頭のデータの間には、応答空間(Response space)が設けられ、データおよびチェックサム間には、分離スペース(Inter-byte spaces)が設けられる。
【００１９】
Header部分は、マスタノードが送出する。
Response部分は、マスタノード(マスタノードからスレーブノードへの通信の場合)、スレーブノード(スレーブノードからマスタノードへの通信の場合、スレーブノードからスレーブノードへの通信の場合)が送出する。
【００２０】
図３は、ＬＩＮプロトコルに基づくノード間通信の形態を示す図である。
図３では、この場合、マスタノード１１は、マスタタスクと共に、スレーブ・タスク受信処理およびスレーブ・タスク送信処理をスレーブ・タスクとして実行する。スレーブノード１２、１２Ａ、１２Ｂは、それぞれスレーブ・タスク受信処理およびスレーブ・タスク送信処理をスレーブ・タスクとして実行する。
【００２１】
図３の（Ａ）は、マスタノード１１からの要求に応じてスレーブノード１２からマスタノード１１へデータを送信する場合を示す。この場合、マスタノード１１が、Header部分を伝送路に送出し、スレーブノード１２が、ＩＤフィールドにより対象であることを認識して、ＩＤフィールドで指示されたタスクに応じてResponse部分を伝送路に送出する。
【００２２】
図３の（Ｂ）は、マスタノード１１から複数のスレーブノード１２Ａ、１２Ｂへデータを送信する場合を示す。この場合、スレーブノードは１個でもよい。マスタノード１１が、Header部分およびResponse部分を伝送路に送出し、スレーブノード１２Ａおよび１２Ｂが、ＩＤフィールドにより対象であることを認識して、Response部分を受信する。
【００２３】
図３の（Ｃ）は、マスタノード１１が、スレーブノード１２Ａからスレーブノード１２Ｂへデータを送信するように指示する場合を示す。マスタノード１１が、Header部分を伝送路に送出し、ＩＤフィールドにより、スレーブノード１２Ａが送信元であることを認識して、Response部分を伝送路に送出する。さらに、スレーブノード１２Ｂが受信先であることを認識して、Response部分を受信する。
【００２４】
図４は、フレーム(Frame)の各部の詳細を示す図である。
Break fieldは、フレーム(Frame)の開始を示す。図４の（Ａ）に示すように、マスタノードは、１３ビット時間以上の間”Ｌ”を出力する。スレーブノードは１１ビット時間以上の間”Ｌ”レベルを検出し続けると、Break fieldと認識する。
【００２５】
図４の（Ｂ）に示すように、Sync fieldは、１６進で”５５”の値を持つフィールドである。スレーブノードは、Break field後にSync fieldを検出すると、以下の処理を行うことによりマスタノードのボーレート（１秒当たりの転送ビット数）を計測することができる。Sync field中の最初の立下りエッジから５番目の立下りエッジの時間を計測することにより、スレーブノードはマスタノードが８ビットのデータを送信する時間Ｔを得てその値を８で除算することにより１ビット転送時間を算出する。
【００２６】
図４の（Ｃ）に示すように、Protected identifier fieldは、Frame identifierおよびParityの２つSub-fieldを有する。Frame identifierは、このフレームの種別を示す。ParityはFrame identifierのチェック用データである。
【００２７】
Data field(Byte field)は、１〜８バイトのデータバイト(Data 1, Data 2,…, Data N)を転送する。図４の（Ｄ）に示すように、Byte fieldの開始部分に”Ｌ”の開始ビット(Start bit)を、Byte fieldの終了部分に”Ｈ”の終了ビット(Stop bit)を有する。開始ビットと終了ビットの間に、８ビット(1 byte)のデータのＬＳＢ(bit 0)からＭＳＢ(bit 7)がこの順に配置される。したがって、Data field(Byte field)は、１０ビット分の長さを有する。
【００２８】
Checksumは、１フレームの最後に配置され、このフレームのエラーチェックのために使用される。
【００２９】
ＬＩＮ規格を含む非同期シリアル通信において、正しくデータの転送を行うためには、送信ノードのシリアルデータ送出タイミングと受信ノードのシリアルデータサンプリングタイミングの位相関係をある範囲内に納める必要がある。シリアルデータ送出タイミングとシリアルデータサンプリングタイミングが決められた位相関係から逸脱している状態では、正しいデータ転送を行うことができない。
【００３０】
ＬＩＮ規格の非同期シリアル通信においては、マスタノードのシリアルデータ送出タイミングにスレーブノードにおけるシリアルデータサンプリングタイミングを合わせている。
【００３１】
図１の通信システムにおいて、各ノードの間で通信を行う場合、マスタノードの指示によりフレームの転送を開始する。このフレーム転送を正しく行うため、スレーブノードは、マスタノードからのフレームのヘッダ部分に含まれるSync fieldから算出されるボーレート（１秒当たりの送受信ビット数）に各スレーブノードのボーレートを一致させる機能を有している。このような同期処理を行うため、スレーブノードは、以下のような構成を有する。
【００３２】
図５は、一般的なスレーブノード（スレーブ装置）の同期処理に関係する部分の構成を示すブロック図である。
スレーブノード１２は、クロック生成器２１と、ボーレートジェネレータ２２と、シリアルパラレル変換器２３と、同期フィールド(Sync field)検出器２４と、エッジ検出器２５と、カウンタ２６と、シフタ２７と、を有する。
【００３３】
クロック生成器２１は、マスタノードが有する水晶発振器を利用したクロック生成器が生成するクロックの周波数に対して所定の周波数のクロックを、ＬＩＮ規格で定められた精度で生成する。クロック生成器２１が生成するクロックは、受信クロック（ボーレートクロック）の周波数より高周波数のクロックである。クロック生成器２１は、簡易な発振器を有するため、低精度のクロックを生成し、安定性も不十分である。
【００３４】
ボーレートジェネレータ２２は、分周比が可変の分周器を有し、クロック生成器２１の出力するクロックを、ボーレートジェネレータ設定値により規定された分周比で分周して受信クロック（ボーレートクロック）を生成する。
【００３５】
シリアルパラレル変換器２３は、ＬＩＮ伝送路から入力する信号のResponse部分におけるデータおよびチェックサムのシリアルデータを８ビットパラレルデータに変換する。
【００３６】
同期フィールド(Sync field)検出器２４は、ＬＩＮ伝送路から入力する信号のHeader部分のSync fieldにおける立下りエッジを検出するタイミングを示すSync field検出信号を出力する。同期フィールド検出器２４は、クロックをカウントするカウンタを有し、１１ビット時間以上”Ｌ”レベルが連続することを検出してBreak fieldを検出した後、最初の立ち上がりエッジ(Break fieldの後端）からその後の最初の立下りまでの間アサートする。さらに、同期フィールド検出器２４は、Sync field内の４個目の立ち上がりエッジから５個目の立下りエッジまでの間アサートする。
【００３７】
エッジ検出器２５は、Break fieldで初期化（出力ネゲート）される。エッジ検出器２５は、Sync field検出信号がアサートされているタイミングで立下りエッジを検出すると出力(Sync fieldエッジ検出信号)をトグル（ＬからＨおよびＨからＬに変化）させる。
【００３８】
カウンタ２６は、Break fieldで初期化され、Sync fieldエッジ検出信号がアサートされている期間の長さを計測し、Sync field長カウント値を出力する。
シフタ２７は、Sync field長カウント値を除算して１／８の値を求め、ボーレートジェネレータ設定値として出力する。この処理は、１６進のSync field長カウント値を３ビット分シフトすることにより生成される。Sync field長カウント値は、８ビット分の伝送が行われた時間を測定したものであるため、カウンタ値を８で除算（右３ビットシフト）し、１ビット分の伝送時間を算出する。この１ビット分の伝送時間がボーレートジェネレータ設定値となる。
【００３９】
ボーレートジェネレータ２２は、以上のようにして決定されたボーレートジェネレータ設定値に基づいて、送信クロックの周波数（周期）にもっとも近い周波数（周期）の受信クロック（ボーレートクロック）が得られるように、分周比を設定する。
【００４０】
以上の処理をまとめると、以下のようになる。
マスタノードは、送信フレームの先頭でフレーム開始を示すBreak fieldに続き、Sync fieldと呼ばれる特殊な固定パターンを送信する。
スレーブノードは、Break field及びSync fieldを認識し、Sync field内の二つのパルスエッジ(測定対象フィールド部)の間隔を測定する。この測定値はマスタノードの８ビット転送時間をスレーブノードの内部クロックでカウントしたものとなる。
【００４１】
スレーブノードは、上記測定値を元にマスタノードのボーレートを算出し、自身のボーレートジェネレータに算出したボーレートを設定する。
上記の一連の処理を実行することにより、Data fieldにおいてスレーブノードはマスタノードのタイミングに合わせたサンプリングタイミングでシリアルデータを受信することができる。
【００４２】
上記のように、Sync fieldによりマスタノードのボーレートにスレーブノードのボーレートを合わせた後は、各スレーブノードが持っているクロック生成器の安定度に依存してノード間の内部クロックがずれていく。そのため、受信データを正しくサンプリングできなくなってしまう事態が生じる。そのため、一つのフレームを転送中に正しく受信データをサンプリングできなくなることが無いように、標準のＬＩＮ規格では、各スレーブノードが持っているクロック生成器の安定度を規定している。したがって、各ノードのクロック生成器に要求される性能を下げることに限界があり、そのためにクロック生成器にかかるコスト低減に限界がある。
【００４３】
また、各スレーブノードの内部クロックの安定度を規定しても、一つのフレームが長い場合は、各ノードの内部クロックのズレが蓄積していき、正しいデータ転送ができなくなる。この様な事態を回避するため、ＬＩＮ規格では一つのフレーム当たりの転送データ量を最大８バイトに制約している。言い換えれば、図２のフレーム構造で、データは最大でも１から８までに規定されている。
【００４４】
一つのフレームで転送できる最大データ量が制約される（規格上最大８バイト）ため、大量データ転送する場合は転送データを複数フレームに分割して転送する必要がある。このため、実効転送レートが低くなる。
【００４５】
上記のように、ＬＩＮ規格を含む一般的な非同期シリアル通信においては、受信装置でのクロック生成器に安定度が要求されるため、高コストのものを使用していた。また、一つのフレームで転送するデータ量が制約されており、実効転送レートが低くなっていた。
【００４６】
以下に説明する実施形態の通信システムは、このような問題を解消し、低コストの比較的安定度の低いクロック生成器をしても、一つのフレームで転送するデータ量の制約がなく、高い実行転送レートでのデータ伝送を行う。
【００４７】
図６は、第１実施形態のＬＩＮ規格の通信システムにおける受信装置（スレーブノード）の構成を示す図である。
スレーブノード３０は、クロック生成器２１と、ボーレートジェネレータ２２と、シリアルパラレル変換器２３と、Sync field検出器２４と、エッジ検出器２５と、カウンタ２６と、シフタ２７と、を有する。さらに、スレーブノード３０は、Data field検出器３１と、Data fieldエッジ検出器３２と、Data fieldカウンタ３３と、除算器３４と、２個のラッチ２８および３５と、エッジ切替器３６と、セレクタ３７と、を有する。
【００４８】
クロック生成器、ボーレートジェネレータ２２、シリアルパラレル変換器２３、Sync field検出器２４、エッジ検出器２５、カウンタ２６およびシフタ２７は、図５のものと同じである。すなわち、第１実施形態のスレーブノード３０は、図５のスレーブノード１２に、Data field検出器３１、Data fieldエッジ検出器３２、Data fieldカウンタ３３、除算器３４、ラッチ２８および３５、エッジ切替器３６およびセレクタ３７を加えたものである。これらの加えた要素により、以下の４つの機構が実現される。第１の機構は、各Data fieldにあるスタートビット及びストップビットの位置を検出する機構である。第２の機構は、第１の機構で検出したスタートビットからストップビットの間の経過時間を受信側内部クロックでカウントする機構である。第３の機構は、第２の機構のカウント値を１０で除算して、ボーレートジェネレータへの設定値を算出する機構である。第４の機構は、Sync fieldに対して算出したボーレートジェネレータ設定値と、第３の機構で算出したボーレートジェネレータ設定値の一方を選択して、ボーレートジェネレータ２２へ設定する機構である。
【００４９】
以下、新たに加えた要素について説明する。
Data field検出器３１は、Data fieldエッジ検出器３２が各Data field(Data)の開始ビットの立下りエッジを検出するタイミングを示すData field検出信号を生成して出力する。Data field検出器３１は、Header部分の受信終了後からその後の最初の立下りエッジ(Start bit)までの間および各Data fieldの終了ビット(Stop bit)からその後の最初の立下りエッジ(Start bit)までの間、Data field検出信号である出力をアサートする。Header部分の受信終了後からその後の最初の立下りエッジ(Start bit)までの間は、図２のResponse spaceに相当する。回路構成は、Sync field検出器２４と類似している。
【００５０】
Data fieldエッジ検出器３２は、Data fieldカウンタ３３を動作させる期間を示すData fieldエッジ検出信号を生成する。回路構成は、Sync fieldエッジ検出器２５と類似している。Data fieldエッジ検出器３２は、Break field検出時に初期化(出力ネゲート)され、Data field検出信号がアサートされているタイミングで立下りエッジを検出すると出力(Data fieldエッジ検出信号)をトグルする。
【００５１】
Data fieldカウンタ３３は、Data fieldエッジ検出信号の長さをカウントする。回路構成は、Sync fieldエッジ検出器２５と類似している。Data fieldカウンタ３３は、Break field検出時に初期化され、Data fieldエッジ検出信号がアサートされている間カウント動作を行う。
【００５２】
除算器３４は、Data fieldカウンタ３３のData field長カウンタ値からボーレートジェネレータ設定値を算出する。図２で説明したように、Data fieldカウンタ３３のカウント値は、１０ビット分の伝送が行われる時間を測定したものとなるため、カウンタ値を１０で除算し１ビット分の伝送時間を算出する。この１ビット分の伝送時間がボーレートジェネレータ設定値となる。
【００５３】
ラッチ２８は、シフタ２７の出力するSync fieldで検出されたボーレートジェネレータ設定値を保持し、Sync fieldカウンタ２６がカウント動作をしている間保持状態を維持する。ラッチ３５は、除算器３４の出力するData field長カウンタ値から検出されたボーレートジェネレータ設定値を保持し、Data fieldカウンタ３３がカウント動作をしている間、保持状態を維持する。
【００５４】
エッジ検出切替器３６およびセレクタ３７は、ラッチ２８に保持されたSync fieldで検出されたボーレートジェネレータ設定値と、ラッチ３５に保持されたData field長カウンタ値から検出されたボーレートジェネレータ設定値の適切な方を選択する。
【００５５】
図７は、第１実施形態において検出する１フレーム(Frame)のタイミングを説明する図である。
スレーブノード（受信ノード）では、Frameの受信待ち状態の時、ボーレートジェネレータ設定値としてあらかじめ設定された初期値を使用するか、直前のボーレートジェネレータ設定値を使用する。
【００５６】
スレーブノードは、Sync fieldを認識すると図７における測定対象フィールドの長さを計測する。Sync fieldの計測が終了すると、エッジ検出切替器３６が、エッジ検出対象切替信号をSync field長カウント値から算出したボーレートジェネレータ設定値を選択するように設定する。この設定は、セレクタ３７の選択信号＝”０”とすることにより行う。
【００５７】
さらに、後続のData fieldを認識すると、各Data fieldの長さを計測する。この詳細については後述する。Data fieldの長さを計測すると、エッジ検出切替器３６は、エッジ検出対象切替信号をData field長カウント値から算出したボーレートジェネレータ設定値を選択するように設定する。この設定は、セレクタ３７の選択信号＝”１”とすることにより行う。その後Data fieldが続き、新しいData fieldを受信すると、その長さを計測し、最新のData fieldの長さに基づいてボーレートジェネレータ設定値を更新する。このData field の長さの計測によるボーレートジェネレータ設定値の更新はData fieldが続く限り継続する。
【００５８】
図８は、Data field長の検出をより詳細に説明する図である。
図４の（Ｄ）に示すように、Data field(Byte field)は、最初の１ビットは”Ｌ”のスタートビット(Start bit)であり、最後の１ビットは”Ｈ”のストップビット(Stop bit)である。このようなData fieldが連続すると、その境界部分では、”Ｈ”のストップビットの後に”Ｌ”のスタートビットが配置されることになる。言い換えれば、論理値が逆のビットが隣接して配置されることになり、必ず論理値の変化(立下りエッジ)が存在する。図８では、Data fieldの境界部分のストップビットとスタートビットが連続する部分を［ａ］で示している。
【００５９】
このスタートビットとストップビットの間の立下りエッジから次のスタートビットとストップビットの間の立下りエッジの間隔は、Data field (Byte field)の長さである。図８では、この長さを、［ｂ１］、［ｂ２］、［ｂ３］で示している。この長さは、８ビットデータ転送時間＋スタートビット転送時間（１ビット転送時間）＋ストップビット転送時間（１ビット転送時間）＝１０ビット転送時間であり、送信ノード側の転送レート(=ボーレート：Baud rate)の１／１０を示している。
【００６０】
受信中、受信ノードは、現在どのfieldのどのビットを転送中であるかを認識しており、立下りエッジの受信が予測される上記の期間［ａ］をアサートして、期間［ａ］内での立下りエッジの検出を行う。図７には、Data field検出器３１がアサートする期間を示しており、そこでエッジ検出を行う。
【００６１】
このエッジ受信を期待しているタイミングで、上記信号エッジを受信した瞬間を捉えて、各Byte fieldの長さ（［ｂ１］、［ｂ２］、［ｂ３］）をスレーブノードの内部クロックでカウントする。
上記Byte fieldの長さのカウント値を１０で除算することにより、測定対象Byte fieldの１ビット転送時間(=ボーレートの逆数)を求めることができる。
【００６２】
この求めた１ビット転送時間を、ボーレートクロック生成器２２に設定することにより、受信側のボーレートを送信側のボーレートに合わせたデータ伝送を行う。なお、図８で、［ｂ１］から算出されたボーレートは、［ｃ１］で示す期間に使用され、［ｂ２］から算出されたボーレートは、［ｃ２］で示す期間に使用されるという具合に、順に更新される。これにより、常時安定してデータをサンプリングできるタイミングを設定できる。
【００６３】
以上説明したように、第１実施形態では、データ転送中でも受信側のボーレートを直前のByte fieldにおける送信側ボーレートに合わせることができ、安定してデータをサンプリングできる様に受信側サンプリングタイミングを設定できる。更に、この動作を継続して行うことにより、ボーレートの補正（送信ボーレートへの受信ボーレートの合わせこみ）を、今まさに受信中のData fieldの長さを元に行うことになる。言い換えれば、常時フィードバック補正が行われる。したがって、送信ボーレートと受信ボーレートの差が安定にデータ転送を行える範囲を逸脱しないため、安定度が劣るクロック生成器を使用しても誤りのないデータ転送を実現できる。更に、このボーレートの補正により一つのフレームで大量のデータを転送した場合でも転送エラーが発生することがなくなる。
【００６４】
図９は、１フレームにおけるData field(Byte field)の個数を８に制約せずに、８以上に増加させた場合のフレーム構造を示す図である。
図９に示すように、一つのフレームにおけるData field(Byte field)の個数が増加するので、一つのフレームで送信できるデータ量が増加する。
【００６５】
図１０は、第２実施形態のＬＩＮ規格の通信システムにおける受信装置（スレーブノード）の構成を示す図である。
第２実施形態のスレーブノード４０は、Data fieldカウンタ３３および除算器３４の代わりに、ＢＣＤ(Binary Coded Decimal)カウンタ４１およびシフタ４２を設けたことが第１実施形態と異なり、他は同じである。
【００６６】
第２実施形態では、スタートビットとストップビットの間隔を計測する機構をバイナリカウンタのData fieldカウンタ３３からBCD(Binary Coded Decimal)カウンタに変更する。
【００６７】
前述のように、Data fieldのスタートビットとストップビットの間隔は、１０ビット転送時間であるため、Data fieldのスタートビットとストップビットの間隔から１ビット転送時間を算出するためには、１０による除算を行う必要がある。ここで、Data fieldのスタートビットとストップビットの間隔の計測をＢＣＤカウンタ４１で行うと、カウンタ出力の各４ビットは１０進数で１桁を表すことになり、上記の１０による除算を４ビット右シフト操作に簡略化できる。
【００６８】
そこで、第２実施形態では、ＢＣＤカウンタ４１で、スタートビットとストップビットの間隔を計測し、１０による除算を、シフタ４２の右４ビットシフトで行う。これにより、ボーレートジェネレータ設定値を求める際に行う１０による除算を簡略化でき、実装コストが高い除算器を使用しない。
【００６９】
図１１は、十進数値”９３１７”とそれを１０で除した”９３１”を、二進数および十進数で表した場合を示す図である。
図１１は、十進数値”９３１７”の１０による除算の変化を示している。図１１に示すように、十進数（ＢＣＤカウンタ値）で表した場合の１０による除算は、４ビットシフト（４ビット削除）で行えるが、二進数表示の場合には、１０による除算は、単純なビットシフトで実現することができない。
【００７０】
第２実施形態によれば、コストが高い(論理規模が大きい)除算器を使用せずに、コストが低い(論理規模が小さい)シフト操作に置き換えることができる。
【００７１】
図１２は、第３実施形態のＬＩＮ規格の通信システムにおける受信装置（スレーブノード）の構成を示す図である。
第３実施形態のスレーブノード５０は、クロック生成器２１と、ボーレートジェネレータ２２と、シリアルパラレル変換器２３と、を有する。スレーブノード５０は、さらに、field検出器５１と、エッジ検出器５２と、カウンタ５３と、シフタ２７と、ラッチ２８と、除算器３４と、ラッチ３５と、セレクタ３７と、を有する。
【００７２】
クロック生成器２１、ボーレートジェネレータ２２、シリアルパラレル変換器２３、シフタ２７、ラッチ２８、除算器３４、ラッチ３５およびセレクタ３７は、第１実施形態のものと同じものである。
【００７３】
第３実施形態のfield検出器５１は、第１実施形態のSync field検出器２４とData field検出器３１とエッジ切替器３６を一体化したものである。第３実施形態のエッジ検出器５２は、第１実施形態のエッジ検出器２５とData fieldエッジ検出器３２を共通化したものである。第３実施形態のカウンタ５３は、カウンタ２６とData fieldカウンタ３３を共通化したものである。
【００７４】
第１実施形態のスレーブノード３０に設けた、Sync field検出器２４とData field検出器３１は、共にカウンタを有し、アサートする期間が異なるのみで、類似の構成を有する。また、エッジ検出器２５とData fieldエッジ検出器３２は、変化エッジを検出する回路を有し、類似の構成を有する。さらに、カウンタ２６とData fieldカウンタ３３は、共にカウンタを有し、類似の構成を有する。したがって、それらは、第３実施形態のように共通化することができる。
【００７５】
field検出器５１は、カウンタを有し、Sync field検出時には、Sync field検出器２４と同様のカウント動作を行いfield検出信号をアサートし、Data field検出時には、Data field検出器３１と同様のカウント動作を行いfield検出信号をアサートする。Sync field検出時とData field検出時の動作の違いは、カウント開始のタイミングと、アサートするカウント値の設定である。
【００７６】
エッジ検出器５２は、エッジ検出器２５およびData fieldエッジ検出器３２と同じ構成を有する。
カウンタ５３は、カウンタ２６およびData fieldカウンタ３３と同じ構成を有する。
以上説明したように、実施形態によれば、最新の送信ボーレートを受信側クロックでカウントし、その結果で受信ボーレートを設定することにより、マスタノードとスレーブノードの間のボーレートをFrameデータ転送中でも合わせることができる。
【００７７】
以上説明したように、実施形態によれば、以下の効果が得られる。
（１）安定した通信をコストの安い、すなわちクロック安定性が悪いクロック生成器を使用して実現できる。
（２）一つのフレームで多量(実質上無限)のデータを転送することができる。
【００７８】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００７９】
１１    送信ノード（マスタノード）
１２、１２Ａ、１２Ｂ    受信ノード（スレーブノード）
２１    クロック生成器
２２    ボーレートジェネレータ
２３    シリアルパラレル変換器
２４    Sync field検出器
２５    エッジ検出器
２６    カウンタ
２７    シフタ
２８    ラッチ
３１    Data field検出器
３２    Dataエッジ検出器
３３    Dataカウンタ
３４    除算器
３５    ラッチ
３６    エッジ検出切替器
３７    セレクタ
【図１】
2014187633.tif 000003
【図２】
2014187633.tif 000004
【図３】
2014187633.tif 000005
【図４】
2014187633.tif 000006
【図５】
2014187633.tif 000007
【図６】
2014187633.tif 000008
【図７】
2014187633.tif 000009
【図８】
2014187633.tif 000010
【図９】
2014187633.tif 000011
【図１０】
2014187633.tif 000012
【図１１】
2014187633.tif 000013
【図１２】
2014187633.tif 000014