(57)【要約】  本発明にかかるＣＡＮ通信システムは、それぞれが第１の論理値又は第１の論理値を反転した第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、ＣＡＮプロトコルに基づき、ビットデータにおいて同一の論理値が所定数連続するビットの次に、同一の論理値の反転値をとるスタッフビットを挿入した送信データを、ビットデータに代えて送信する送信装置と、ＣＡＮプロトコルに基づき、送信データにおける第２の論理値から第１の論理値へのエッジの検出に応じて、送信装置との間で送信データの送受信の同期をとる受信装置を備える。送信装置は、ビットデータを送信するときに、ビットデータにおいて第１の論理値が所定数連続するビットの次のビットから連続して所定数−１ビットのうち、いずれかのビットを第１の論理値に書き換える。
2012132217.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが第１の論理値又は当該第１の論理値を反転した第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、ＣＡＮ（Controller Area Network）プロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記ビットデータに代えて送信する送信装置と、
前記ＣＡＮプロトコルに基づき、前記送信装置から送信された送信データにおける前記第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記送信装置との間で前記送信データの送受信の同期をとる同期処理を実行する受信装置と、を備え、
前記送信装置は、前記ビットデータを送信するときに、前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを前記第１の論理値に書き換える送信制御部を有する、
ＣＡＮ通信システム。
【請求項２】
前記送信制御部は、前記いずれかのビットの前記第１の論理値に書き換え前の論理値を、前記送信データとともに送信し、
前記受信装置は、
前記送信装置から送信された送信データからスタッフビットを除去して、当該スタッフビットを除去したビットデータにおいて前記第１の論理値に書き換えられたビットを、前記送信データとともに送信された書き換え前の論理値に戻す受信制御部を有する、
請求項１に記載のＣＡＮ通信システム。
【請求項３】
前記受信装置は、
前記送信データにおける前記第２の論理値から前記第１の論理値へのエッジを検出し、当該エッジの検出に応じてエッジ検出信号を出力するエッジ検出部と、
前記エッジ検出部からのエッジ検出信号の出力に応じて、前記同期処理を実行する同期制御部と、をさらに備え、
前記エッジ検出部は、さらに、前記送信データにおける前記第１の論理値から前記第２の論理値へのエッジを検出し、当該エッジの検出に応じて前記エッジ検出信号を出力する、
請求項１又は２に記載のＣＡＮ通信システム。
【請求項４】
前記送信制御部は、前記いずれかのビットとして、前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットを、前記第１の論理値に書き換える、
請求項１乃至３のいずれか１項に記載のＣＡＮ通信システム。
【請求項５】
前記送信制御部は、前記いずれかのビットが前記第２の論理値である場合、当該ビットを前記第１の論理値への書き換えを抑止する、
請求項１乃至４のいずれか１項に記載のＣＡＮ通信システム。
【請求項６】
前記ビットデータは、前記ＣＡＮプロトコルにおいて定義されるデータフレームのうち、スタートオブフレームからデータフィールドまでの７９ビット以下のデータである、
請求項１乃至５のいずれか１項に記載のＣＡＮ通信システム。
【請求項７】
前記第１の論理値は、Ｌｏｗであり、
前記第２の論理値は、Ｈｉｇｈである、
請求項１乃至６のいずれか１項に記載のＣＡＮ通信システム。
【請求項８】
ＣＡＮ（Controller Area Network）プロトコルに基づき、受信したデータにおける第１の論理値を反転した第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記データの送受信の同期をとる同期処理を実行する受信装置に、それぞれが前記第１の論理値又は前記第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、前記ＣＡＮプロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記ビットデータに代えて送信する送信装置であって、
前記ビットデータを送信するときに、前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを前記第１の論理値に書き換える制御部を有する、
ＣＡＮ送信装置。
【請求項９】
送信装置が、それぞれが第１の論理値又は当該第１の論理値を反転した第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、ＣＡＮ（Controller Area Network）プロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記送信装置から前記ビットデータに代えて受信して、前記ＣＡＮプロトコルに基づき、当該送信データにおける前記第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記送信装置との間で前記送信データの送受信の同期をとる同期処理を実行する受信装置であって、
前記受信装置が検出する前記第２の論理値から前記第１の論理値へのエッジは、前記第２の論理値から、前記送信装置が、前記ビットデータを送信するときに前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを書き換えた第１の論理値へのエッジを含む、
ＣＡＮ受信装置。
【請求項１０】
それぞれが第１の論理値又は当該第１の論理値を反転した第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、ＣＡＮ（Controller Area Network）プロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記ビットデータに代えて送信する送信装置と、前記ＣＡＮプロトコルに基づき、前記送信装置から送信された送信データにおける前記第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記送信装置との間で前記送信データの送受信の同期をとる同期処理を実行する受信装置との間のＣＡＮ通信方法であって、
前記送信装置が、前記ビットデータを送信するときに、前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを前記第１の論理値に書き換える、
ＣＡＮ通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＡＮ通信システム、ＣＡＮ送信装置、ＣＡＮ受信装置、およびＣＡＮ通信方法に関する。
【背景技術】
【０００２】
特許文献１には、ＣＡＮ（Controller Area Network）基本特許が開示されている。このＣＡＮプロトコルでは、送信側と受信側との間での通信中に、再同期を行うことによって、送信側と受信側との間でのデータの送受信の同期をとる。以下、ＣＡＮプロトコルにおける再同期の仕組みについて、具体的に説明する。【０００３】
図１３は、ＣＡＮプロトコルにおいて、ジッタが発生した場合における１ビット当たりのデータ長の変化を示す図である。図１３に示すように、ＣＡＮプロトコルのビットストリームにおける１ビット当たりのデータは、シンクロナイゼーションセグメントＳＹＮＣ、プロパゲーションタイムセグメントＰＲＯＰ、フェーズバッファセグメントＰＨＡＳＥ１、及びフェーズバッファセグメントＰＨＡＳＥ２を含む。フェーズバッファセグメントＰＨＡＳＥ１とフェーズバッファセグメントＰＨＡＳＥ２との間に、データをサンプリングするサンプルポイントがある。【０００４】
図１３の上図は、理想的なクロックに基づいて認識される１ビット当たりのデータ長を示している。そして、図１３の下図は、ジッタによって遅延したクロックに基づいて認識される１ビット当たりのデータ長を示している。ここで、図１３の下図に示すｄｆは、理想のクロック長を基準としたジッタの割合を示している。このように、受信側がジッタによって遅延したクロックに基づいて動作して受信したデータを認識する場合、図１３の下図に示すようにサンプルポイントが遅延してしまう。【０００５】
このような遅延が蓄積すると、図１４に示すように、本来データをサンプリンすべきタイミングでサンプリングを行うことができなくなってしまうという問題がある。具体的には、図１４に例示するように、１０ビット目のデータとして、Ｈｉｇｈをサンプリングすべきであるのに、Ｌｏｗをサンプリングしてしまうようになってしまう。しかし、コストを下げるためには、低コストのクロック発振子やＳＳＣＧ（Spread Spectrum Clock Generator）等を使用して、精度の低いクロックでも動作できるようにすることが望ましい。【０００６】
このような問題を解決するために、ＣＡＮプロトコルでは、ビットストリームの立下りエッジの受信時に立下りエッジがシンクロナイゼーションセグメントＳＹＮＣからずれている場合、ジャンプ幅設定値ＳＪＷだけ、サンプルポイントを補正する再同期を行う。これによって、送信側と受信側のクロック誤差を吸収することができる。具体的には、図１５に示すように、立下りエッジを早く検出した場合には、フェーズバッファセグメントＰＨＡＳＥ２からジャンプ幅設定値ＳＪＷ分の長さを減らすことで、シンクロナイゼーションセグメントＳＹＮＣに立下りエッジが位置するように誤差を調整して同期をとる。また、逆に、立下りエッジを遅れて検出した場合には、フェーズバッファセグメントＰＨＡＳＥ１にジャンプ幅設定値ＳＪＷ分の長さを加えることで、シンクロナイゼーションセグメントＳＹＮＣに立下りエッジが位置するように誤差を調整して同期をとる。【０００７】
このように、ＣＡＮプロトコルでは、上述したように立下りエッジの検出に応じて、再同期を行うようにしている。しかし、立下りエッジの検出に応じた再同期では、同一論理値のビットが続くほど再同期を行う契機が減り、クロック誤差にシビアになってしまう。そこで、特許文献１に開示の技術には、同一論理値の継続を抑える仕組みとして、ビットスタッフィングが組み込まれている。【０００８】
ビットスタッフィングとは、ビットストリーム上に同一論理値が５ビット続いたところで、その論理値を反転したビットを１ビット挿入するプロトコルである。これによって、同一論理値の継続を抑えることができる。【０００９】
なお、特許文献２に、再同期に関する技術が開示されている。この技術にかかる車両用データ伝送システムは、同一論理が連続する期間を検出して、検出した期間に応じて、データ信号の再同期範囲を設定する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第５００１６４２号明細書
【特許文献２】特開平０６−３１９１７２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述したように、ビットスタッフィングという仕組みは、ビットストリーム上に同一論理値が５ビット続いたところで、その論理値の反転値をとるスタッフビットを挿入するようにしている。しかし、これは再同期間隔が最長で１０ビットとなることを意味している。具体的には、Ｌｏｗのビットが５ビット連続してＨｉｇｈのスタッフビットが挿入されてから、再びＨｉｇｈのビットが５ビット連続してＬｏｗのスタッフビットが挿入されて立下りエッジができるまでの幅が、１０ビット分の幅となるからである。【００１２】
しかし、このように、再同期間隔が長くなればなるほど、クロック誤差の累積値が大きくなるため、クロックに高い精度が要求されるようになってしまう。つまり、低精度のクロックを使用して低コストでシステム構築を行うためには、再同期間隔の最悪値をより短くすることが課題となっている。
【課題を解決するための手段】
【００１３】
本発明の第１の態様にかかるＣＡＮ通信システムは、それぞれが第１の論理値又は当該第１の論理値を反転した第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、ＣＡＮ（Controller Area Network）プロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記ビットデータに代えて送信する送信装置と、前記ＣＡＮプロトコルに基づき、前記送信装置から送信された送信データにおける前記第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記送信装置との間で前記送信データの送受信の同期をとる同期処理を実行する受信装置と、を備え、前記送信装置は、前記ビットデータを送信するときに、前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを前記第１の論理値に書き換える送信制御部を有するものである。【００１４】
本発明の第２の態様にかかるＣＡＮ送信装置は、ＣＡＮ（Controller Area Network）プロトコルに基づき、受信したデータにおける第１の論理値を反転した第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記データの送受信の同期をとる同期処理を実行する受信装置に、それぞれが前記第１の論理値又は前記第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、前記ＣＡＮプロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記ビットデータに代えて送信する送信装置であって、前記ビットデータを送信するときに、前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを前記第１の論理値に書き換える制御部を有するものである。【００１５】
本発明の第３の態様にかかるＣＡＮ受信装置は、送信装置が、それぞれが第１の論理値又は当該第１の論理値を反転した第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、ＣＡＮ（Controller Area Network）プロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記送信装置から前記ビットデータに代えて受信して、前記ＣＡＮプロトコルに基づき、当該送信データにおける前記第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記送信装置との間で前記送信データの送受信の同期をとる同期処理を実行する受信装置であって、前記受信装置が検出する前記第２の論理値から前記第１の論理値へのエッジは、前記第２の論理値から、前記送信装置が、前記ビットデータを送信するときに前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを書き換えた第１の論理値へのエッジを含むものである。【００１６】
本発明の第４の態様にかかるＣＡＮ通信方法は、それぞれが第１の論理値又は当該第１の論理値を反転した第２の論理値のいずれかをとる複数のビットが連続するビットデータを送信するときに、ＣＡＮ（Controller Area Network）プロトコルに基づき、前記ビットデータにおいて同一の論理値が所定数連続するビットの次に、当該同一の論理値の反転値をとるスタッフビットを挿入した送信データを、前記ビットデータに代えて送信する送信装置と、前記ＣＡＮプロトコルに基づき、前記送信装置から送信された送信データにおける前記第２の論理値から前記第１の論理値へのエッジの検出に応じて、前記送信装置との間で前記送信データの送受信の同期をとる同期処理を実行する受信装置との間のＣＡＮ通信方法であって、前記送信装置が、前記ビットデータを送信するときに、前記ビットデータにおいて前記第１の論理値が所定数連続するビットの次のビットから連続して前記所定数−１ビットのうち、いずれかのビットを前記第１の論理値に書き換えるものである。【００１７】
本発明の上述した各態様によれば、第２の論理値のスタッフビットから第２の論理値が連続する場合であっても、その第２の論理値の反転値をとるスタッフビットが挿入されるよりも前の位置で第２の論理値から第１の論理値へのエッジを生成することができる。そのため、再同期間隔の最悪値を短縮することができる。
【発明の効果】
【００１８】
本発明の上述した各態様によれば、低精度のクロックを使用して低コストでＣＡＮ通信システムを構築することができるＣＡＮ通信システム、ＣＡＮ送信装置、ＣＡＮ受信装置、およびＣＡＮ通信方法を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１にかかるＣＡＮ通信システムの構成図である。
【図２】本発明の実施の形態１にかかるノードの構成図である。
【図３】本発明の実施の形態１にかかるＳＳＣＧによって生成されるクロックの一例を示す図である。
【図４】本発明の実施の形態１にかかる拡張スタッフビット制御部の構造を示す図である。
【図５】本発明の実施の形態１にかかる拡張スタッフビット制御部の送信処理を示すフローチャートである。
【図６】本発明の実施の形態１にかかる拡張スタッフビット制御部の受信処理を示すフローチャートである。
【図７】本発明の実施の形態１にかかるメカニズム及び効果を説明するための図である。
【図８】本発明の実施の形態１にかかる送信データフレームと冗長データ領域との関係を示す図である。
【図９】本発明の実施の形態１にかかる冗長データ領域の構成図である。
【図１０】本発明の実施の形態１にかかるノードの構成図である。
【図１１】本発明の実施の形態２にかかるビットストリーム制御部の構成図である。
【図１２】本発明の実施の形態２にかかるメカニズム及び効果を説明するための図である。
【図１３】ＣＡＮプロトコルにおいて、ジッタが発生した場合における１ビット当たりのデータ長の変化を示す図である。
【図１４】サンプルポイントのずれを説明するための図である。
【図１５】ＣＡＮプロトコルにおける再同期を説明するための図である。
【発明を実施するための形態】
【００２０】
発明の実施の形態１．
図１を参照して、本発明の実施の形態１にかかるＣＡＮ通信システム１０１の構成について説明する。図１は、本発明の実施の形態１にかかるＣＡＮ通信システム１０１の構成図である。本実施の形態では、ＣＡＮ通信システム１０１を自動車に適用した場合について例示する。
【００２１】
ＣＡＮ通信システム１０１は、ボディ系制御ノード１０２、安全系制御ノード１０３、情報系制御ノード１０４、エンジン系制御ノード１０５、及びシャーシ系制御ノード１０６を有する。各ノード１０２〜１０６は、ＣＡＮバスによって相互に接続されており、任意のデータを相互に送受信することができる。
【００２２】
ボディ系制御ノード１０２は、他のノードから受信したデータに基づいて、ヘッドランプ、エアコン及びドア等のボディ系の装置の制御を行う。安全系制御ノード１０３は、他のノードから受信したデータに基づいて、センサ及びエアバック等の安全系の装置の制御を行う。情報系制御ノード１０４は、他のノードから受信したデータに基づいて、カーオーディオ、カーラジオ及びカーテレビ等の情報系の装置の制御を行う。エンジン系制御ノード１０５は、他のノードから受信したデータに基づいて、エンジン及びＡＴ（Automatic Transmission）等のエンジン系の装置の制御を行う。シャーシ系制御ノード１０６は、他のノードから受信したデータに基づいて、ステアリング及びブレーキ等のシャーシ系の装置の制御を行う。また、各ノード１０２〜１０６のそれぞれは、必要に応じて制御結果に基づいたデータを、他のノードに送信する。
【００２３】
続いて、図２を参照して、本発明の実施の形態１にかかるノード１００の構成について説明する。図２は、本発明の実施の形態１にかかるノード１００の構成図である。本実施の形態１では、各ノード１０２〜１０６が、ノード１００と同様の構成であるものとする。
【００２４】
ノード１００は、ＣＡＮコントローラＬＳＩ（Large Scale Integration）１０及びバストランシーバ１４を有する。ＣＡＮコントローラＬＳＩ１０は、ＣＡＮコントローラモジュール１、ＣＰＵ（Central Processing Unit）１１、他周辺モジュール１２、及びＳＳＣＧ（Spread Spectrum Clock Generator）１３を有する。ＣＡＮコントローラモジュール１は、ビットストリーム制御部２、エラー管理部３、拡張スタッフビット制御部４、メッセージハンドラ５、及びメッセージバッファメモリ６を有する。ＣＡＮコントローラモジュール１、ＣＰＵ１１及び他周辺モジュール１２は、ローカルバス２１によって相互に接続されており、任意のデータを相互に送受信することができる。
【００２５】
ＣＡＮコントローラモジュール１は、ローカルバス２１を介して、ＣＰＵ１１からアクセスされる。ＣＡＮコントローラモジュール１は、バストランシーバ１４を介して、ＣＡＮバスに接続されている。ＣＡＮコントローラモジュール１は、ＣＰＵ１１からの要求に応じて、他のノードとの間でデータを送受信する。
【００２６】
ビットストリーム制御部２は、拡張スタッフビット制御部４から出力された送信フレームデータ２４に基づいてＣＲＣ（Cyclic Redundancy Check）を算出する。ビットストリーム制御部２は、ＣＡＮプロトコルのフレームフォーマットに従って、ＣＲＣを送信フレームデータ２４に付加する。ビットストリーム制御部２は、ＣＲＣが付加された送信フレームデータに、ＣＡＮプロトコルで定められたビットスタッフィングに基づいてスタッフビットを挿入する。つまり、同一論理値が連続した５ビットの次に、その論理値とは反転した論理値をとるスタッフビットが挿入される。ビットストリーム制御部２は、スタッフビットを挿入した送信フレームデータを送信データ出力（TxD）３１としてバストランシーバ１４に出力する。
【００２７】
また、ビットストリーム制御部２は、バストランシーバ１４から出力された受信データ入力（RxD）３０から、ＣＡＮプロトコルで定義されたスタッフビットを除去する。ビットストリーム制御部２は、受信データ入力（RxD）３０からスタッフビットを除去した受信フレームデータに基づいてＣＲＣチェックを行う。ビットストリーム制御部２は、ＣＲＣチェックで異常を検出した場合、異常を通知する異常通知信号２６をエラー管理部３に出力する。ビットストリーム制御部２は、ＣＲＣチェック後に、受信フレームデータからＣＲＣを除去する。ビットストリーム制御部２は、ＣＲＣを除去した受信フレームデータ２５を拡張スタッフビット制御部４に出力する。
【００２８】
また、ビットストリーム制御部２は、ＣＡＮプロトコルで定義された再同期を行う。つまり、ビットストリーム制御部２は、受信データ入力（RxD）３０において、立下りエッジを検出した場合、シンクロナイゼーションセグメントＳＹＮＣに立下りエッジが位置するように、フェーズバッファセグメントＰＨＡＳＥ１又はフェーズバッファセグメントＰＨＡＳＥ２の長さをジャンプ幅設定値ＳＪＷ分変更することで、サンプルポイントを調整する。
【００２９】
エラー管理部３は、ビットストリーム制御部２からの異常通知信号２６の出力に応じた処理を行う。この処理は、例えば、エラー管理部３がさらにＣＰＵ１１に異常を通知する処理とすることで、ＣＰＵ１１がこの通知に応じて、異常から復帰するための処理又は異常から復帰するための他周辺モジュール１２の制御を行うようにしてもよい。
【００３０】
拡張スタッフビット制御部４は、メッセージハンドラ５から出力された送信フレームデータ２２に対して、後述する方式に基づいて拡張スタッフビットを上書きする。このとき、拡張スタッフビット制御部４は、送信フレームデータ２４の冗長データ領域に、拡張スタッフビットを上書きする前の本来の論理値を記録して、拡張スタッフビットの上書き後の送信フレームデータ２４をビットストリーム制御部２に出力する。
【００３１】
また、拡張スタッフビット制御部４は、ビットストリーム制御部２から出力された受信フレームデータ２５に対して、後述する方式に基づいて冗長データ領域に記録された本来の論理値によって、拡張スタッフビットを本来の論理値に補正する。拡張スタッフビット制御部４は、本来の論理値への補正後の受信フレームデータ２３をメッセージハンドラ５に出力する。
【００３２】
メッセージハンドラ５は、メッセージバッファメモリ６の送信バッファに格納された送信フレームデータ２２を取得して拡張スタッフビット制御部４に転送する。また、メッセージハンドラ５は、拡張スタッフビット制御部４から出力された受信フレームデータ２３をメッセージバッファメモリ６の受信バッファに格納する。
【００３３】
メッセージバッファメモリ６は、受信バッファ及び送信バッファを有する。送信バッファは、他のノードに送信する送信フレームデータが格納される。受信バッファは、他のノードから受信した送信フレームデータが格納される。メッセージバッファメモリ６は、受信バッファ及び送信バッファを構成するための記憶装置を有する。記憶装置は、例えば、レジスタ及びメモリ等である。
【００３４】
ＣＡＮコントローラＬＳＩ１０は、ノード１００に含まれる装置の制御を行う。例えば、ノード１００がエンジン系制御ノード１０５である場合、エンジン系の装置の制御を行う。
【００３５】
ＣＰＵ１１は、ローカルバス２１を介して、他周辺モジュールに対して、ノード１００に含まれる装置の制御を指示する制御指示データを出力することによって、ノード１００に含まれる装置を制御する。ＣＰＵ１１は、例えば、他のノードから受信したデータに基づいて、ノード１００に含まれる装置の制御内容を決定する。ＣＰＵ１１は、ローカルバス２１を介して、他のノードから送信されたデータをメッセージバッファメモリ６の受信バッファから取得する。ＣＰＵ１１は、ローカルバス２１を介して、他のノードに送信するデータをメッセージバッファメモリ６の送信バッファに格納する。
【００３６】
他周辺モジュール１２は、ＣＰＵ１１から出力された制御指示データに基づいて、ノード１００に含まれる装置を制御する。
【００３７】
ＳＳＣＧ１３は、ＣＡＮコントローラＬＳＩ１０内のＣＡＮコントローラモジュール１、ＣＰＵ１１、及び他周辺モジュール１２等の各回路に、クロック４１〜４３のそれぞれを供給する。つまり、本実施の形態１では、ＳＳＣＧ１３が、多出力のＳＳＣＧである場合について例示している。ＳＳＣＧ１３は、図３に例示するように、クロックにおけるノイズを低減するために、クロックにジッタを加える。図３では、クロック４１が理想的なクロックであり、クロック４２及びクロック４３がジッタによって遅延している場合について例示している。このように、ＳＳＣＧ１３は、低ＥＭＩ（Electro Magnetic Interference）ではあるが、クロックの精度が低くなってしまう。
【００３８】
バストランシーバ１４は、ビットストリーム制御部２から出力された送信データ出力３１をビットストリームとして他のノードに送信する。バストランシーバ１４は、他のノードから受信したビットストリームを受信データ入力３０としてビットストリーム制御部２に出力する。
【００３９】
続いて、図４を参照して、本発明の実施の形態１にかかる拡張スタッフビット制御部４の構成について説明する。図４は、本発明の実施の形態１にかかる拡張スタッフビット制御部４の構成図である。
【００４０】
拡張スタッフビット制御部４は、同一論理値カウント部４０１、拡張スタッフビット上書き制御部４０２、冗長データ領域送信レジスタ４０３、送信フレームレジスタ４０４、冗長データ領域受信レジスタ４０９、同一論理値カウント部４１０、元データ復元制御部４１１、及び受信フレームレジスタ４１２を有する。
【００４１】
同一論理値カウント部４０１は、送信フレームレジスタ４０４に格納された送信フレームデータ２２を先頭から１ビットずつ順番に読み出した送信フレームビット読み出し値４０６において、同一論理値が連続する数をカウントする。同一論理値カウント部４０１は、５ビット連続して同一論理値のビットを検出した場合、５ビット連続同一論理値検出信号４０５を拡張スタッフビット上書き制御部４０２に出力する。
【００４２】
拡張スタッフビット上書き制御部４０２は、同一論理値カウント部４０１からの５ビット連続同一論理値検出信号４０５の出力に応じて、送信フレームレジスタ４０４に格納された送信フレームデータ２２のうち、同一論理値が連続した５ビットの次のビットの論理値を読み出して冗長データ領域送信レジスタ４０３の対応するビットに書き込む。そして、拡張スタッフビット上書き制御部４０２は、その５ビット連続した同一論理値を、同一論理値が連続した５ビットの次のビットに上書きする。つまり、上書き前の論理値は、冗長データ領域送信レジスタ４０３に格納されることになる。また、この上書きされたビットが拡張スタッフビットとなる。同一論理値カウント部４０１及び拡張スタッフビット上書き制御部４０２は、この処理を送信フレームレジスタ４０４に格納された送信フレームデータ２２の全体に対して行う。よって、送信フレームデータ２２における拡張スタッフビットの数だけ、冗長データ領域送信レジスタ４０３に拡張スタッフビットの上書き前の論理値が格納される。
【００４３】
拡張スタッフビット制御部４は、送信フレームデータ２２の全体に対する処理の終了後に、送信フレームレジスタ４０４に格納された拡張スタッフビットを上書き後の送信フレームデータと、冗長データ領域送信レジスタ４０３に格納された拡張スタッフビットの上書き前の論理値とを連結したデータを送信フレームデータ２４としてビットストリーム制御部２に出力する。ここで、送信フレームデータ２４のうち、上書き前の論理値に該当する部分を、冗長データ領域と言う。
【００４４】
冗長データ領域送信レジスタ４０３は、拡張スタッフビットの上書き前の論理値が格納される。冗長データ領域送信レジスタ４０３は、送信フレームデータ２２に含まれる拡張スタッフビットのそれぞれに対応する上書き前の論理値が格納される。
【００４５】
送信フレームレジスタ４０７は、メッセージハンドラ５から出力された送信フレームデータ２２が格納される。
【００４６】
冗長データ領域受信レジスタ４０９は、ビットストリーム制御部２から出力された受信フレームデータ２５のうち、冗長データ領域のデータが格納される。つまり、冗長データ領域受信レジスタ４０９は、受信フレームデータ２５に含まれる拡張スタッフビットのそれぞれに対応する上書き前の論理値が格納される。
【００４７】
同一論理値カウント部４１０は、受信フレームレジスタ４１２に格納されたデータを先頭から１ビットずつ順場に読み出した受信フレームビット読み出し値４１３について、同一論理値が連続する数をカウントする。同一論理値カウント部４１０は、５ビット連続して同一論理値のビットを検出した場合、５ビット連続同一論理値検出信号４１４を元データ復元制御部４１１に出力する。
【００４８】
元データ復元制御部４１１は、同一論理値カウント部４１０からの５ビット連続同一論理値検出信号４１４に応じて、冗長データ領域受信レジスタ４０９から出力されている冗長データ領域の論理値のうち、同一論理値が連続した５ビットの次の拡張スタッフビットの上書き前の論理値４１５を取得する。そして、元データ復元制御部４１１は、取得した論理値４１５を受信フレームレジスタ４１２の拡張スタッフビットに上書きする。これによって、拡張スタッフビットの論理値が、本来の論理値に復元される。同一論理値カウント部４１０及び元データ復元制御部４１１は、この処理を受信フレームレジスタ４１２に格納されたデータの全体に対して行う。これによって、受信フレームレジスタ４１２に格納されるデータに含まれる拡張スタッフビットの全てが、本来の論理値に復元されることになる。拡張スタッフビット制御部４は、受信フレームレジスタ４１２に格納されたデータの全体に対する処理の終了後に、受信フレームレジスタ４１２に格納された復元後のデータを受信フレームデータ２３としてメッセージハンドラ５に出力する。
【００４９】
受信フレームレジスタ４１２は、ビットストリーム制御部２から出力された受信フレームデータ２５のうち、冗長データ領域を除く本来の受信フレームデータ２３に該当する部分のデータが格納される。
【００５０】
続いて、図５を参照して、本発明の実施の形態１にかかる拡張スタッフビット制御部４の送信処理について説明する。図５は、本発明の実施の形態１にかかる拡張スタッフビット制御部４の送信処理を示すフローチャートである。
【００５１】
拡張スタッフビット制御部４は、メッセージハンドラ５を介して、メッセージバッファメモリ６の送信バッファから送信フレームデータ２２を取得して送信フレームレジスタ４０４に格納する（Ｓ１）。
【００５２】
同一論理値カウント部４０１は、送信フレームレジスタ４０４に格納された送信フレームデータ２２から１ビット読み出す（Ｓ２）。なお、このステップＳ２及び後述するステップＳ６における１ビットの読み出しは、送信フレームデータ２２の先頭から順番に行われていく。よって、最初の読み出しでは、送信フレームデータ２２の先頭の１ビットが読み出され、既にビットの読み出しを行っている場合は、直前に読み出したビットの次のビットが読み出される。ここで、送信フレームデータ２２の先頭からの順番とは、送信フレームデータ２２に含まれるビットの送信順と等しい。同一論理値カウント部４０１は、送信フレームレジスタ４０４に格納された送信フレームデータ２２を全て読み出したか否かを判定する（Ｓ３）。
【００５３】
送信フレームデータ２２を全て読み出したと判定した場合（Ｓ３：Ｙｅｓ）、拡張スタッフビット制御部４は、後述するステップＳ１２の処理を実行する。
【００５４】
送信フレームデータ２２を全て読み出していないと判定した場合（Ｓ３：Ｎｏ）、同一論理値カウント部４０１は、カウンタのカウント値を「１」に初期化する（Ｓ４）。同一論理値カウント部４０１は、直前に読み出したビットを、同一論理値が５ビット連続するか否かをカウントする基準となる基準ビットとして設定する（Ｓ５）。同一論理値カウント部４０１は、送信フレームレジスタ４０４に格納された送信フレームデータ２２から１ビット読み出す（Ｓ６）。同一論理値カウント部４０１は、送信フレームレジスタ４０４に格納された送信フレームデータ２２を全て読み出したか否かを判定する（Ｓ７）。
【００５５】
送信フレームデータ２２を全て読み出した場合（Ｓ７：Ｙｅｓ）、拡張スタッフビット制御部４は、後述するステップＳ１２の処理を実行する。
【００５６】
送信フレームデータ２２を全て読み出していない場合（Ｓ７：Ｎｏ）、同一論理値カウント部４０１は、基準ビットと、直前に読み出したビットとが同一論理値であるか否かを判定する（Ｓ８）。
【００５７】
読み出したビットが同一論理値でない場合（Ｓ８：Ｎｏ）、同一論理値カウント部４０１は、ステップＳ４から処理を再開する。この場合、同一論理値が連続していないことになる。そのため、ステップＳ４に戻って、直前に読み出したビットを基準ビットとして、同一論理値が５ビット連続するか否かのカウントを再開する。
【００５８】
読み出したビットが同一論理値である場合（Ｓ８：Ｙｅｓ）、同一論理値カウント部４０１は、カウンタをカウントアップする（Ｓ９）。同一論理値カウント部４０１は、カウンタ値が閾値「５」になったか否かを判定する（Ｓ１０）。
【００５９】
カウンタ値が閾値「５」になっていない場合（Ｓ１０：Ｎｏ）、同一論理値カウント部４０１は、ステップＳ６から処理を再開する。この場合、基準ビットから直前に読み出したビットまで同一論理値が連続しているが、まだ同一論理値が５ビット連続していないことになる。そのため、ステップＳ６に戻って、次のビットの論理値の確認を行う。
【００６０】
カウンタ値が閾値「５」になった場合（Ｓ１０：Ｙｅｓ）、基準ビットから直前に読み出したビットまで同一論理値が５ビット連続することになる。つまり、直前に読み出したビットと、そのビットの次のビットの間には、スタッフビットが挿入されることになる。そのため、拡張スタッフビット上書き制御部４０２は、直前に読み出したビットの次の拡張スタッフビットの論理値を読み出して、冗長データ領域送信レジスタ４０３のうちのその拡張スタッフビットに対応するビットに書き込む。そして、拡張スタッフビット上書き制御部４０２は、５ビット連続した論理値で拡張スタッフビットを上書きする（Ｓ１１）。このようにすることで、スタッフビットを挿入したときに、スタッフビットと拡張スタッフビットとの論理値が異なることになるため、スタッフビットと拡張スタッフビットとの間にエッジが生成されることになる。そして、同一論理値カウント部４０１は、ステップＳ２に戻って、次の拡張スタッフビットを読み出して（Ｓ２）基準ビットとし（Ｓ５）、同一論理値が５ビット連続するか否かのカウントを再開する。
【００６１】
ステップＳ１２では、拡張スタッフビット制御部４は、送信フレームレジスタ４０４に格納されたデータ及び冗長データ領域送信レジスタ４０３に格納されたデータに基づいて送信フレームデータ２４を生成してビットストリーム制御部２に出力する（Ｓ１２）。
【００６２】
以上に、本発明の実施の形態１にかかる拡張スタッフビット制御部４の送信処理について説明したが、同一論理値が連続した５ビットの次の拡張スタッフビットを上書きする処理であれば、上述した処理手順には限定されず、適宜変更してもよい。例えば、基準ビットを設定して、基準ビットの論理値と直前に読み出したビットの論理値とを比較するようにしているが、直前に読み出したビットの論理値とそのビットの前に読み出したビットの論理値とを比較するようにしてもよい。また、例えば、ステップＳ４とステップＳ５の処理の実行順序を逆にしてもよい。
【００６３】
続いて、図６を参照して、本発明の実施の形態１にかかる拡張スタッフビット制御部４の受信処理について説明する。図６は、本発明の実施の形態１にかかる拡張スタッフビット制御部４の受信処理を示すフローチャートである。
【００６４】
拡張スタッフビット制御部４は、ビットストリーム制御部２から出力された受信フレームデータ２５を取得して、取得した受信フレームデータ２５のうち、冗長データ領域のデータを冗長データ領域受信レジスタ４０９に格納し、その他のデータを受信フレームレジスタ４１２に格納する（Ｓ２１）。
【００６５】
同一論理値カウント部４１０は、受信フレームレジスタ４１２に格納された受信フレームデータ２５から１ビット読み出す（Ｓ２２）。なお、このステップＳ２２及び後述するステップＳ２６、Ｓ３１における１ビットの読み出しは、受信フレームデータ２５の先頭から順番に行われていく。よって、最初の読み出しでは、受信フレームデータ２５の先頭の１ビットが読み出され、既にビットの読み出しを行っている場合は、直前に読み出したビットの次のビットが読み出される。ここで、受信フレームデータ２５の先頭からの順番とは、受信フレームデータ２５に含まれるビットの受信順と等しい。同一論理値カウント部４１０は、受信フレームレジスタ４１２に格納されたデータを全て読み出したか否かを判定する（Ｓ２３）。
【００６６】
受信フレームレジスタ４１２に格納されたデータを全て読み出したと判定した場合（Ｓ２３：Ｙｅｓ）、拡張スタッフビット制御部４は、後述するステップＳ３３の処理を実行する。
【００６７】
受信フレームレジスタ４１２に格納されたデータを全て読み出していないと判定した場合（Ｓ２３：Ｎｏ）、同一論理値カウント部４１０は、カウンタのカウント値を「１」に初期化する（Ｓ２４）。同一論理値カウント部４１０は、直前に読み出したビットを、同一論理値が５ビット連続するか否かをカウントする基準となる基準ビットとして設定する（Ｓ２５）。同一論理値カウント部４１０は、受信フレームレジスタ４１２に格納されたデータから１ビット読み出す（Ｓ２６）。同一論理値カウント部４１０は、受信フレームレジスタ４１２に格納されたデータを全て読み出したか否かを判定する（Ｓ２７）。
【００６８】
受信フレームレジスタ４１２に格納されたデータを全て読み出した場合（Ｓ２７：Ｙｅｓ）、拡張スタッフビット制御部４は、後述するステップＳ３３の処理を実行する。
【００６９】
受信フレームレジスタ４１２に格納されたデータを全て読み出していない場合（Ｓ２７：Ｎｏ）、同一論理値カウント部４１０は、基準ビットと、直前に読み出したビットとが同一論理値であるか否かを判定する（Ｓ２８）。
【００７０】
読み出したビットが同一論理値でない場合（Ｓ２８：Ｎｏ）、同一論理値カウント部４１０は、ステップＳ２４から処理を再開する。この場合、同一論理値が連続していないことになる。そのため、ステップＳ２４に戻って、直前に読み出したビットを基準ビットとして、同一論理値が５ビット連続するか否かのカウントを再開する。
【００７１】
読み出したビットが同一論理値である場合（Ｓ２８：Ｙｅｓ）、同一論理値カウント部４１０は、カウンタをカウントアップする（Ｓ２９）。同一論理値カウント部４１０は、カウンタ値が閾値「５」になったか否かを判定する（Ｓ３０）。
【００７２】
カウンタ値が閾値「５」になっていない場合（Ｓ３０：Ｎｏ）、同一論理値カウント部４１０は、ステップＳ２６から処理を再開する。この場合、基準ビットから直前に読み出したビットまで同一論理値が連続しているが、まだ同一論理値が５ビット連続していないことになる。そのため、ステップＳ２６に戻って、次のビットの論理値の確認を行う。
【００７３】
カウンタ値が閾値「５」になった場合（Ｓ３０：Ｙｅｓ）、基準ビットから直前に読み出したビットまで同一論理値が５ビット連続することになる。つまり、直前に読み出したビットの次のビットは、拡張スタッフビットとなる。このとき、同一論理値カウント部４１０は、拡張スタッフビットが上書き前の論理値に復元される前に、受信フレームレジスタ４１２に格納された受信フレームデータ２５から次の拡張スタッフビットを１ビット読み出す（Ｓ３１）。元データ復元制御部４１１は、冗長データ領域受信レジスタ４０９のうちのその拡張スタッフビットに対応するビットに格納された上書き前の論理値を読み出す。そして、元データ復元制御部４１１は、読み出した上書き前の論理値で受信フレームレジスタ４１２のその拡張スタッフビットを上書きする（Ｓ３２）。これによって、拡張スタッフビットが上書き前の論理値に復元される。そして、同一論理値カウント部４０１は、ステップＳ２３に戻って、直前に読み出したビットを基準ビットとし（Ｓ２５）、同一論理値が５ビット連続するか否かのカウントを再開する。
【００７４】
ステップＳ３３では、拡張スタッフビット制御部４は、受信フレームレジスタ４１２に格納されている、受信フレームデータ２５の拡張スタッフビットを上書き前の論理値に戻すことによって生成された受信フレームデータ２３をメッセージハンドラ５に出力する（Ｓ３３）。
【００７５】
以上に、本発明の実施の形態１にかかる拡張スタッフビット制御部４の受信処理について説明したが、同一論理値が連続した５ビットの次の拡張スタッフビットに上書き前の論理値を復元する処理であれば、上述した処理手順には限定されず、適宜変更してもよい。例えば、基準ビットを設定して、基準ビットの論理値と読み出したビットの論理値とを比較するようにしているが、直前に読み出したビットの論理値とそのビットの前に読み出したビットの論理値とを比較するようにしてもよい。また、例えば、ステップＳ２４とステップＳ２５の処理の実行順序を逆にしてもよい。
【００７６】
続いて、図７を参照して、本実施の形態１のメカニズム及び効果について説明する。ここでは、同一論理値としてＬｏｗが５ビット連続した場合について説明する。
【００７７】
上述した本実施の形態１によれば、同一論理値としてＬｏｗが５ビット連続した場合には、その５ビットの次のビットに同一論理値のＬｏｗが強制的に設定されることになる。このようにすることで、この後に、送信フレームデータにおいて、Ｌｏｗが連続した５ビットの次にＨｉｇｈのスタッフビットが挿入された場合に、スタッフビットの次のビットをＬｏｗとすることができる。つまり、スタッフビットの直後の拡張スタッフビットをＬｏｗに上書きすることによって、ＣＡＮプロトコルで定義された再同期エッジである立下りエッジを作り出している。
【００７８】
これによれば、再同期間隔の最悪値を１０ビットから６ビットに短縮することができる。よって、図３を参照して例示したように、低精度のクロックを生成するＳＳＣＧやクロック発振子等によってシステムを構築したとしても、その影響を低減することができる。つまり、低コストだが低精度のクロックを生成するＳＳＣＧやクロック発振子を使用したとしても、ＣＡＮ通信システムを構築することが可能となる。そのため、本実施の形態１によれば、低精度のクロックを使用して低コストでＣＡＮ通信システムを構築することができる。
【００７９】
ここで、わざとジッタを加えたクロックを生成するＳＳＣＧは、ＥＭＩノイズを減少させるのに効果的であったが、ノード間のクロック誤差が大きくなるため、なかなか使用することができないという問題があった。それに対して、本実施の形態１では、上述したように、ＳＳＣＧを使用することができるようになるため、ノイズを低減することができる。例えば、車載アプリケーションならＦＭ（Frequency Modulation）ラジオの周波数帯が一般的なＭＣＵ（Micro Control Unit）の動作周波数と重複しているので、これに混入するノイズを低減して音質を高めることができるようになる。また、動作周波数の高速化に伴い、ＵＨＦ（Ultra High Frequency）帯にも高調波ノイズが悪影響を及ぼすことが考えられる。それに対して、本実施の形態１では、ＳＳＣＧによってそのノイズを低減することができるため、カーナビゲーションのフルセグテレビ受信を安定化させることができる。
【００８０】
なお、上述した本実施の形態１では、送信フレームデータ２２において、同一論理値が連続した５ビットの次のビットを拡張スタッフビットとして、５ビット連続した同一論理値を上書きすることで、エッジを生成するようにしたが、これに限られない。言い換えると、直前にスタッフビットが挿入されるビットを拡張スタッフビットとして、スタッフビットの論理値の反転値を上書きすることで、エッジを生成するようにしたが、これに限られない。例えば、同一論理値が連続した５ビットの次のビットから連続して４（＝同一論理が連続した場合にスタッフビットを挿入するビット数「５」−スタッフビット数「１」）ビットのうち、いずれかのビットを拡張スタッフビットとして、５ビット連続した同一論理値で上書きするようにしてもよい。このようにしても、再同期間隔の最悪値を１０ビットから短縮することができる。
【００８１】
具体的に例を挙げて説明すると、図７において、６ビット目のスタッフビットからＨｉｇｈの論理値が続く場合、１０ビット目のビットをＬｏｗに上書きしても、再同期間隔の最悪値を１０ビットから９ビットに短縮することができる。つまり、送信フレームデータ２２において、同一の論理値が連続した５ビット（図７の１ビット目〜５ビット目）の次の拡張スタッフビットから連続して４ビット（図７の７ビット目〜１０ビット目）のうち、いずれかのビットを、５ビット連続した同一論理値で上書きするようにしても、再同期間隔の最悪値を短縮することができる。
【００８２】
また、上書きされた拡張スタッフビットの本来の論理値が何であるかは、送信フレームデータ２４及び受信フレームデータ２５の冗長データ領域によって示される。例えば、図８に示すように、最大で７９ビットのサイズとなる送信フレームデータ２２に対して、３バイトの冗長データ領域を定義する。ここで、送信フレームデータ２２は、ＣＡＮプロトコルのデータフレームにおけるスタートオブフレーム、アービトレーションフィールドＡｒｂ、コントロールフィールドＣＴＲＬ、及びデータフィールドＤＡＴＡからなる。
【００８３】
図８に示すように、ＣＡＮプロトコルのデータフレームにおいて、本来ならデータフィールドＤＡＴＡとして使用される最大で８バイトの領域のうち、３バイトの領域を冗長データ領域として使用する。そのため、送信フレームデータ２２は、１ビットのスタートオブフレームと、最大で３２（＝１１＋１＋１＋１８＋１）ビットのアービトレーションフィールドＡｒｂと、６（＝１＋１＋４）ビットのコントロールフィールドＣＴＲＬと、最大で４０ビット（＝８バイト−３バイト）のデータフィールドＤＡＴＡと、からなる最大で７９ビットのデータとなる。
【００８４】
続いて、図９を参照して、冗長データ領域の構成について説明する。冗長データ領域は、送信フレームデータの拡張スタッフビットのそれぞれに対応するように、上書き前の論理値が格納される。ここで、同一の論理値のビットが５ビット連続する毎にスタッフビットが１つ挿入されることになるため、７９ビットの送信フレームデータ２２に対しては、最大で１５ビットのスタッフビットが挿入される。よって、スタッフビット挿入後の送信フレームデータの先頭から冗長データ領域の手前までのサイズは、図９に示すように最大で９４（＝７９＋１５）ビットとなる。また、拡張スタッフビットはスタッフビットと同数となるため、最大で１５ビットの拡張スタッフビットが設定されることになる。そのため、図９に示すように、拡張スタッフビットの上書き前の論理値が最大で１５ビット冗長データ領域に記録されることになる。なお、図９では、送信フレームデータの先頭から末尾に向かった順の拡張スタッフビットのそれぞれの上書き前の論理値を、冗長データ領域の先頭から末尾に向かった順のビットのそれぞれに格納するようにしているが、拡張スタッフビットと上書き前の論理値とが対応付いていれば、これに限られない。なお、先頭から末尾に向かった順とは、ビットストリームとして送信した場合における送信順のことである。
【００８５】
さらに、図９に示すように、冗長データ領域内においては、４ビット毎に左隣のビットの反転値を論理値とするビットを設けるようにしている。つまり、冗長データ領域においては、４ビット毎に１つ前のビットの反転値のビットを設けるようにしている。これによれば、冗長データ領域中に同一論理値が５ビット連続することを防止して、冗長データ領域中にスタッフビットが挿入されることを防止することができる。このようにしている理由としては、冗長データ領域に拡張スタッフビットを設ける必要が出てしまうと、さらにそれに対応する冗長データ領域が必要となってしまうからである。また、これによれば、再同期間隔を短縮することもできる。
【００８６】
このように、本実施の形態１では、冗長データ領域を、最大で１５ビットとなる上書き前の論理値のビットと、４ビット毎に１つ前のビットの反転値を論理値とするビットと、を含むことができるサイズとして、３バイト長で定義している。なお、冗長データ領域のサイズは、送信フレームデータ２２の最大サイズに基づいて、拡張スタッフビットが最も多くなった場合でも、これらのビットを全て記録できるサイズであれば、ここで例示したサイズに限られない。
【００８７】
発明の実施の形態２．
続いて、図１０を参照して、本発明の実施の形態２にかかるノード２００の構成について説明する。図１０は、本発明の実施の形態２にかかるノード２００の構成図である。なお、実施の形態１にかかるノード１００と同様の内容については説明を省略する。また、本発明の実施の形態２にかかるＣＡＮ通信システムの構成は、実施の形態１と同様であるため、説明を省略する。
【００８８】
ノード２００は、拡張スタッフビット制御部４を有さず、ビットストリーム制御部２に換えてビットストリーム制御部７を有する点が、実施の形態１にかかるノード１００と異なる。
【００８９】
ビットストリーム制御部７は、実施の形態１にかかるビットストリーム制御部２における処理に加えてさらに、立ち上りエッジでも再同期を行う。つまり、ビットストリーム制御部７は、ＣＡＮプロトコルで定められた立下りエッジでの再同期に加えて、立ち上がりエッジでも再同期を行う。また、メッセージハンドラ５は、ビットストリーム制御部７とメッセージバッファメモリ６との間で送信フレームデータ２２及び受信フレームデータを送受信することになる。
【００９０】
続いて、図１１を参照して、本発明の実施の形態２にかかるビットストリーム制御部７の構成について説明する。図１１は、本発明の実施の形態２にかかるビットストリーム制御部７の構成図である。
【００９１】
ビットストリーム制御部７は、ＣＲＣエンコード部７０１、フレームフォーマット整形出力制御部７０２、送信シフトレジスタ７０３、立ち上がり・立下り両エッジ検出回路７０４、ビット再同期制御部７０５、ビットサンプリング部７０６、受信シフトレジスタ７０７、ＣＲＣデコード及びスタッフビット除去部７０８、フリップフロップ群７０９、並びにプロトコル制御ステートマシン７１０を有する。
【００９２】
ＣＲＣエンコード部７０１は、送信シフトレジスタ７０３から出力された送信フレームデータ２２に基づいてＣＲＣを生成する。ＣＲＣエンコード部７０１は、生成したＣＲＣを送信シフトレジスタ７０３に出力する。
【００９３】
フレームフォーマット整形出力制御部７０２は、送信シフトレジスタ７０３から出力されたデータ７１１に、スタッフビットを挿入して送信データ出力（TXD）３１としてバストランシーバ１４に出力する。
【００９４】
送信シフトレジスタ７０３は、メッセージハンドラ５から出力された送信フレームデータ２２を１ビットずつ順次ＣＲＣエンコード部７０１及び順次フレームフォーマット整形出力制御部７０２に出力する。また、送信シフトレジスタ７０３は、送信フレームデータ２２を続けてＣＲＣエンコード部７０１から出力されたＣＲＣを１ビットずつ順次フレームフォーマット整形出力制御部７０２に出力する。
【００９５】
立ち上がり・立下り両エッジ検出回路７０４は、受信データ入力（RxD）３０の立ち上がりエッジ及び立下りエッジのそれぞれを検出する。立ち上がり・立下り両エッジ検出回路７０４は、立ち上がりエッジ及び立下りエッジのいずれかを検出した場合に、ビット再同期トリガ信号７１３をビット再同期制御部７０５に出力する。図１１に示すように、立ち上がり・立下り両エッジ検出回路７０４は、ＸＯＲ回路によって、受信データ入力（RxD）３０の任意のビットの論理値と、そのビットの次のビットの論理値とのＸＯＲ演算を行うことで、それぞれのビットの論理値が異なり、立ち上がりエッジ又は立下りエッジが発生していることを検出する。つまり、立ち上がり・立下り両エッジ検出回路７０４は、それぞれのビットの論理値をＸＯＲ回路に入力して、それぞれのビットの論理値が異なる場合にＸＯＲ回路から出力されるＨｉｇｈの信号をビット再同期トリガ信号７１３としてビット再同期制御部７０５に出力する。
【００９６】
ビット再同期制御部７０５は、サンプルポイント毎にビットタイミング信号７１４をビットサンプリング部７０６に出力する。また、ビット再同期制御部７０５は、立ち上がり・立下り両エッジ検出回路７０４から出力されたビット再同期トリガ信号７１３に応じて、再同期を行う。つまり、ビット再同期制御部７０５は、立ち上り・立下り両エッジ検出回路７０４からのビット再同期トリガ信号７１３の出力をトリガとして、ビット再同期トリガ信号７１３の出力タイミングに基づいて、サンプルポイントを補正する。これによれば、本実施の形態２では、立下りエッジに加えて、立ち上がりエッジにおいても再同期を行うことができる。
【００９７】
ビットサンプリング部７０６は、ビット再同期制御部７０５からビットタイミング信号７１４が出力されたときに、受信データ入力（RxD）３０のうち、フリップフロップ群７０９から出力されているビットの論理値７１２をサンプリングする。ビットサンプリング部７０６は、サンプリングした論理値７１５を順次受信シフトレジスタ７０７に出力する。つまり、ビットサンプリング部７０６によってサンプリングされた受信データ入力（RxD）３０が１ビットずつ順次受信シフトレジスタ７０７に出力される。
【００９８】
受信シフトレジスタ７０７は、ビットサンプリング部７０６から出力された受信データ入力（RxD）３０を１ビットずつ順次ＣＲＣデコード及びスタッフビット除去部７０８に出力する。
【００９９】
ＣＲＣデコード及びスタッフビット除去部７０８は、受信シフトレジスタ７０７から出力された受信データ入力（RxD）３０から、ＣＡＮプロトコルで定義されたスタッフビットを除去する。ＣＲＣデコード及びスタッフビット除去部７０８は、受信データ入力（RxD）３０からスタッフビットを除去した受信フレームデータに基づいてＣＲＣチェックを行う。ＣＲＣデコード及びスタッフビット除去部７０８は、ＣＲＣチェックで異常を検出した場合、異常を通知する異常通知信号７１６をプロトコル制御ステートマシン７１０に出力する。ＣＲＣデコード及びスタッフビット除去部７０８は、ＣＲＣチェック後に、受信フレームデータからＣＲＣを除去する。ＣＲＣデコード及びスタッフビット除去部７０８は、ＣＲＣを除去した受信フレームデータ２３を拡張スタッフビット制御部４に出力する。
【０１００】
フリップフロップ群７０９は、メタステーブル伝搬防止用のフリップフロップを複数含む。フリップフロップ群７０９は、バストランシーバ１４から出力された受信データ入力（RxD）３０を１ビットずつ順次立ち上がり・立下り両エッジ検出回路７０４及びビットサンプリング部７０６に出力する。
【０１０１】
プロトコル制御ステートマシン７１０は、ＣＲＣデコード及びスタッフビット除去部７０８からの異常通知信号７１６の出力に応じて、異常通知信号２６をエラー管理部３に出力する。
【０１０２】
続いて、図１２を参照して、本実施の形態２のメカニズム及び効果について説明する。図１２に示すように、スタッフビットの後にも同一論理値が５ビット連続してしまう最悪ケースの場合、特許文献１にかかるＣＡＮプロトコルでは立下りエッジのみでの再同期だったため再同期間隔の最悪値が１０ビットであった。それに対して、本実施の形態２では、立ち上がりでも再同期することによって、再同期間隔の最悪値を５ビットに短縮することができる。
【０１０３】
よって、低精度のクロックを生成するＳＳＣＧやクロック発振子等によってシステムを構築したとしても、その影響を低減することができる。そのため、本実施の形態２によっても、低精度のクロックを使用して低コストでＣＡＮ通信システムを構築することができる。
【０１０４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本実施の形態１及び本実施の形態２は、組み合わせて実施するようにしてもよい。
【０１０５】
本実施の形態では、ＣＡＮ通信システムを自動車に適用した場合について例示したが、これに限られない。例えば、船舶及び産業機器等にも適用してもよい。
【０１０６】
本実施の形態１では、スタッフビットの挿入及び拡張スタッフビットの特定を、同一論理値の５ビット連続しての検出に応じて行う場合について例示したが、このビット数は５ビットに限られない。
【０１０７】
本実施の形態１では、全ての拡張スタッフビットを上書きする場合について例示したが、これに限られない。例えば、拡張スタッフビットの上書き前の論理値が上書きする論理値と同一である場合、上書きをしないようにしてもよい。
【０１０８】
本実施の形態１では、ＣＡＮプロトコルに基づいて立下りエッジの検出に応じて、再同期を行う場合について例示したが、これに限られない。立ち上がりエッジの検出に応じて、再同期を行う場合において、上述した拡張スタッフビットに関する処理を実施するようにしても、立ち上りエッジの間隔を短縮することができるため、再同期間隔を短縮することができる。
【０１０９】
本実施の形態１では、ＣＡＮプロトコルに基づいて立下りエッジの検出に応じて、再同期を行う場合において、Ｈｉｇｈ及びＬｏｗのいずれのビットが５ビット連続しても、拡張スタッフビットを上書きするようにしているが、これに限られない。例えば、ＣＡＮプロトコルに基づいて立下りエッジの検出に応じて、再同期を行う場合において、Ｈｉｇｈ及びＬｏｗのうち、Ｌｏｗのビットが５ビット連続した場合に、拡張スタッフビットを上書きするようにしてもよい。
【０１１０】
この出願は、２０１１年３月３１日に出願された日本出願特願２０１１−０７７０３２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１１１】
１    ＣＡＮコントローラモジュール
２、７    ビットストリーム制御部
３    エラー管理部
４    拡張スタッフビット制御部
５    メッセージハンドラ
６    メッセージバッファメモリ
１０    ＣＡＮコントローラＬＳＩ
１１    ＣＰＵ
１２    他周辺モジュール
１３    ＳＳＣＧ
１４    バストランシーバ
２１    ローカルバス
２２、２４    送信フレームデータ
２３、２５    受信フレームデータ
２６    異常通知信号
３０    受信データ入力
３１    送信データ出力
４１、４２、４３    クロック
１００、２００    ノード
１０１    ＣＡＮ通信システム
１０２    ボディ系制御ノード
１０３    安全系制御ノード
１０４    情報系制御ノード
１０５    エンジン系制御ノード
１０６    シャーシ系制御ノード
４０１、４１０    同一論理値カウント部
４０２    拡張スタッフビット上書き制御部
４０３    冗長データ領域送信レジスタ
４０４    送信フレームレジスタ
４０５、４１４        ５ビット連続同一論理値検出信号
４０６    送信フレームビット読み出し値
４０９    冗長データ領域受信レジスタ
４１１    元データ復元制御部
４１２    受信フレームレジスタ
４１３    受信フレームビット読み出し値
４１５    上書き前の論理値
７０１    ＣＲＣエンコード部
７０２    フレームフォーマット整形出力制御部
７０３    送信シフトレジスタ
７０４    
７０５    ビット再同期制御部
７０６    ビットサンプリング部
７０７    受信シフトレジスタ
７０８    ＣＲＣデコード及びスタッフビット除去部
７０９    フリップフロップ群
７１０    プロトコル制御ステートマシン
７１１    送信シフトレジスタからの出力データ
７１２    受信データ入力のビットの論理値７１２
７１３    ビット再同期トリガ信号
７１４    ビットタイミング信号
７１５    サンプリングした論理値
７１６    異常通知信号
【図１】
2012132217.tif 000003
【図２】
2012132217.tif 000004
【図３】
2012132217.tif 000005
【図４】
2012132217.tif 000006
【図５】
2012132217.tif 000007
【図６】
2012132217.tif 000008
【図７】
2012132217.tif 000009
【図８】
2012132217.tif 000010
【図９】
2012132217.tif 000011
【図１０】
2012132217.tif 000012
【図１１】
2012132217.tif 000013
【図１２】
2012132217.tif 000014
【図１３】
2012132217.tif 000015
【図１４】
2012132217.tif 000016
【図１５】
2012132217.tif 000017
【国際調査報告】
2012132217.tif 000018
2012132217.tif 000019
2012132217.tif 000020
2012132217.tif 000021