(57)【要約】【課題】生成する同期クロックの周期の誤差を更に大きく減少できるようにすること。【解決手段】受信データの内の２nビット（ｎは２以上の正の整数）の０，１の繰り返しの同期ビットに基づいて同期クロックの周期を決定するシリアル通信装置において、前記同期ビットの全期間に対応する基準パルス数の計測値を得、得られた該計測値を前記同期ビットの全期間のビット数で除算して商Ｑと余りＲを得、続けてデータを受信する際に、受信データにおける前記余りＲに対応するビット位置の直前のビット位置までに対しては、前記商Ｑに対応する基準パルス数の時間を前記同期クロックの周期とし、前記余りＲに対応するビット位置以降のビット位置に対しては、前記商Ｑ＋１に対応する基準パルス数の時間を前記同期クロックの周期とする。【選択図】図１
2014082696.tif 000002
【特許請求の範囲】
【請求項１】
受信データの内の２nビット（ｎは２以上の正の整数）の０，１の繰り返しの同期ビットに基づいて同期クロックの周期を決定するシリアル通信装置において、
前記同期ビットの全期間に対応する基準パルス数の計測値を得、得られた該計測値を前記同期ビットの全期間のビット数で除算して商Ｑと余りＲを得、
続けてデータを受信する際に、受信データにおける前記余りＲに対応するビット位置の直前のビット位置までに対しては、前記商Ｑに対応する基準パルス数の時間を前記同期クロックの周期とし、前記余りＲに対応するビット位置以降のビット位置に対しては、前記商Ｑ＋１に対応する基準パルス数の時間を前記同期クロックの周期とすることを特徴とするシリアル通信装置。
【請求項２】
請求項１に記載のシリアル通信装置において、
前記同期ビットの全期間を前記同期ビットの１ビット期間よりも十分短い周期の基準パルスでカウントしたカウント値を得、得られた該カウント値を前記同期ビットの全期間のビット数で除算して商Ｑと余りＲを得、
続けてデータを受信する際に、初期値を１として前記商Ｑに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に同期クロックを生成し、該同期クロックが生成される毎に前記受信データのビット数の値を１ずつ０になるまで減算し、該減算結果が前記余りＲと一致した後は前記初期値を０として前記商Ｑに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に前記同期クロックを生成し、
前記同期クロックの周期を、前記減算結果が前記余りＲと一致する直前までは、前記Ｑに対応する基準パルス数の時間に決定し、前記減算結果が前記余りＲと一致した後は、前記Ｑ＋１に対応する基準パルス数の時間に決定することを特徴とするシリアル通信装置。
【請求項３】
請求項２に記載のシリアル通信装置において、
前記同期ビットの全期間を前記同期ビットの１ビット期間よりも十分短い周期の基準パルスでカウントする第１カウンタと、
該第１カウンタで得られたカウント値を同期ビットの全期間のビット数で除算して商Ｑと余りＲを得る除算手段と、
初期値から前記商Ｑに対応したカウント値まで前記基準パルスをカウントアップする第２カウンタと、
該第２カウンタが前記商Ｑに対応したカウント値までカウントアップされる毎に同期クロックを発生する同期クロック発生回路と、
該同期クロック発生回路から同期クロックが発生する毎に前記受信データのビット数の値を１ずつ０になるまでカウントダウンする第３カウンタと、
該第３カウンタのカウント値が前記余りＲに一致するまでは、前記第２カウンタの前記初期値に１を設定し、前記余りＲに一致した後は、前記第２カウンタの前記初期値に０を設定する比較器と、
を備えることを特徴とするシリアル通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシリアル通信装置に関し、例えばＵＡＲＴ（Universal Asynchrdnous Receiver Transmitter）を使用するＬＩＮ（Local Interconnect Network）プロトコルに好適なシリアル通信装置に関する。
【背景技術】
【０００２】
ＵＡＲＴは、１バイト（８ビット）単位のデータを１本の通信線で調歩同期式で時系列で伝送するための装置であり、相手通信装置との通信速度（ボーレート）を決める同期クロックは、所定の受信データに基づいて生成される。また、ＬＩＮプロトコルは、１個のマスタノードと１以上のスレーブノードとの間で低速通信を行うためのプロトコルであり、スレーブノードはマスタノードからの指示があったときのみマスタノードに向けて通信を行うことができる。
【０００３】
このＬＩＮプロトコルでは、シンクキャラクタ（別名シンクフィールド）の同期ビットの符号を、“０”パルスと“１”パルスが交互に現れるパターン（０ｘ５５）に設定することで、このシンクキャラクタの受信可能期間において、１ビット長を計測し、その計測結果に基づいて、受信データのビット毎の符号を判定するための同期クロックを生成している。ＬＩＮプロトコルについては、非特許文献１，２に記載がある。
【０００４】
＜従来例１＞
シンクキャラクタは、例えば最初のスタートビットが“０”パルス、最後のストップビットが“１”パルスで、その間にＬＳＢファーストで８ビットの同期ビット（０ｘ５５）を挿入したものである。その８ビットの同期ビットの期間について、その同期ビットの１ビット期間よりも十分に短い周期の基準パルスが８Ｎカウントされたとする。Ｎは例えば１００である。
【０００５】
このときは、このカウント値８Ｎを同期ビットのビット数の８で除算する（８Ｎ／８＝Ｎ）と、１ビット期間にカウントされた基準パルス数Ｎが得られるので、基準パルスの周期にこのＮを乗じると１ビット長が算出される。これにより、例えば、この半分（１ビット長のほぼ中心）のタイミングでその後に続く受信データのビット毎の符号を判定すれば、ほぼ安定したデータ受信が可能となる。
【０００６】
しかしながら、通信路から受信されるデータに、「ジッタ」や「ゆらぎ」といった波形の歪み等を与える現象が発生した場合には、シンクキャラクタ中のデータも波形歪み等を生じ得る。
【０００７】
このような場合には、例えば、８ビット中の最後の１ビットにおいて、基準パルスの１パルス分だけ不足してカウントされ、本来、８ビット分で８Ｎカウント（例えば８００カウント）されるべきものが、８Ｎ−１（例えば８００−１＝７９９）しかカウントされないことがある。
【０００８】
このため、この「８Ｎ−１」をビット数の８で除算する「（８Ｎ−１）／８」と、１パルス分不足したことによる余りが切り捨てられて、演算結果の商は（Ｎ−１）となる。先の例では、７９９／８となり、商が９９で余りが７であるので、その余り７が切り捨てられる結果、全てのビットについての１ビット長に、基準パルスの１パルス分の誤差が生じる。
【０００９】
したがって、このような場合には、１ビット長に誤差が含まれたまま、これに基づいて同期クロックが生成されることになるから、このような誤差が蓄積されると、受信データの符号判定に誤りが生じ得るという問題がある。例えば、本来の１ビット長が基準パルスの１００パルス分に相当する場合には、そのほぼ半分にあたる５０パルス分のタイミングで、受信データの符号判定が行われるが、上記のような誤差が５０パルス近く蓄積されると、データ波形の符号変位タイミングの前後で判定することになるので、誤った符号判定を招来する。
【００１０】
＜従来例２＞
そこで、前記した除算を行って商Ｑと余りＳを求めてから、１ビット長を、商Ｑのみならず余りＳをも含めたものに基づいて決定する手法が提案されている（特許文献１の図４）。
【００１１】
この手法は次の通りである。シンクキャラクタの前記した１０ビットの内のスタートビットとストップビットを除いた８ビット分の基準パルスのカウント値を８で除算するためにビットシフトを行うと、当該カウント値の上位５ビットが商Ｑとなり、下位３ビットが余りＳとなる。そこで、余りＳの３ビットの内の最上位ビットが“０”のとき、つまり“０００”〜“０１１”（１０進数で０〜３）のときは、その余りＳを切り捨てて１ビット期間のビット長を商Ｑ−１とし、“１”のとき、つまり“１００”〜“１１１”（１０進数で４〜７）のときは、その余りＳを切り上げて１ビット期間のビット長を商Ｑとするものである。
【００１２】
これにより、余りＳを全て切り捨ててしまう処理（従来例１）の場合は８ビット当たりその誤差の範囲が１／８〜７／８であった、つまり最大誤差が７／８であったのに対し、従来例２ではその誤差の範囲が１／８〜４／８となり、最大誤差を４／８にまで減少させることができる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特許第４７３６７７５号公報
【非特許文献】
【００１４】
【非特許文献１】株式会社サニー技研、基準クロックの調整、［平成２４年１０月１１日検索］、インターネット＜ＵＲＬ：http://sunnygiken.jp/product/lin-tool/about-lin/lin-clock/＞
【非特許文献２】組み込みシステム設計者のためのＬＩＮ．２マイコン実装技術（中編）［平成２４年１０月１１日検索］、インターネット＜ＵＲＬ：http://www.kumikomi.net/archives/2006/01/02lin2.php?page=1＞
【発明の概要】
【発明が解決しようとする課題】
【００１５】
しかしならが、この従来例２による手法は、同期クロックの周期の最大誤差を４／８にまで減少できるものの、それより減少することはできない。本発明の目的は、生成する同期クロックの周期の誤差を更に大きく減少できるようにしたシリアル通信装置を提供することである。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、請求項１にかかる発明は、受信データの内の２nビット（ｎは２以上の正の整数）の０，１の繰り返しの同期ビットに基づいて同期クロックの周期を決定するシリアル通信装置において、前記同期ビットの全期間に対応する基準パルス数の計測値を得、得られた該計測値を前記同期ビットの全期間のビット数で除算して商Ｑと余りＲを得、続けてデータを受信する際に、受信データにおける前記余りＲに対応するビット位置の直前のビット位置までに対しては、前記商Ｑに対応する基準パルス数の時間を前記同期クロックの周期とし、前記余りＲに対応するビット位置以降のビット位置に対しては、前記商Ｑ＋１に対応する基準パルス数の時間を前記同期クロックの周期とすることを特徴とする。
請求項２にかかる発明は、請求項１に記載のシリアル通信装置において、前記同期ビットの全期間を前記同期ビットの１ビット期間よりも十分短い周期の基準パルスでカウントしたカウント値を得、得られた該カウント値を前記同期ビットの全期間のビット数で除算して商Ｑと余りＲを得、続けてデータを受信する際に、初期値を１として前記商Ｑに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に同期クロックを生成し、該同期クロックが生成される毎に前記受信データのビット数の値を１ずつ０になるまで減算し、該減算結果が前記余りＲと一致した後は前記初期値を０として前記商Ｑに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に前記同期クロックを生成し、前記同期クロックの周期を、前記減算結果が前記余りＲと一致する直前までは、前記Ｑに対応する基準パルス数の時間に決定し、前記減算結果が前記余りＲと一致した後は、前記Ｑ＋１に対応する基準パルス数の時間に決定することを特徴とする。
請求項３にかかる発明は、請求項２に記載のシリアル通信装置において、前記同期ビットの全期間を前記同期ビットの１ビット期間よりも十分短い周期の基準パルスでカウントする第１カウンタと、該第１カウンタで得られたカウント値を同期ビットの全期間のビット数で除算して商Ｑと余りＲを得る除算手段と、初期値から前記商Ｑに対応したカウント値まで前記基準パルスをカウントアップする第２カウンタと、該第２カウンタが前記商Ｑに対応したカウント値までカウントアップされる毎に同期クロックを発生する同期クロック発生回路と、該同期クロック発生回路から同期クロックが発生する毎に前記受信データのビット数の値を１ずつ０になるまでカウントダウンする第３カウンタと、該第３カウンタのカウント値が前記余りＲに一致するまでは、前記第２カウンタの前記初期値に１を設定し、前記余りＲに一致した後は、前記第２カウンタの前記初期値に０を設定する比較器と、を備えることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、受信データにおける余りＲに対応するビット位置の直前のビット位置までに対しては、商Ｑに対応する基準パルス数の時間を同期クロックの周期とし、余りＲに対応するビット位置以降のビット位置に対しては、商Ｑ＋１に対応する基準パルス数の時間を同期クロックの周期とするので、余りＲを切り捨てて１ビット長を一律に商Ｑとする従来例１の場合や、余りＲの最大ビットの値によって１ビット長を商Ｑと商Ｑ＋１のいずれかに設定する場合に比べて、同期クロックのビット長の誤差を大きく抑制することが可能となり、受信エラーを大幅に抑制することができるばかりか、生成される同期クロックの１ビット長の精度が高くなるので、基準パルスの周波数を大幅に高くする必要もなくなる。
【図面の簡単な説明】
【００１８】
【図１】本発明の１つの実施例のシリアル通信装置の構成図である。
【図２】図１のシリアル通信装置の動作波形図である。
【図３】図２の動作波形図のＡ部分の拡大図である。
【図４】Ｎ＝１００のときの同期ビットが８ビット長の場合の計測の誤差の説明図である。
【図５】Ｎを任意値としたときの同期ビットが８ビット長の場合の計測の誤差の説明図である。
【発明を実施するための形態】
【００１９】
＜実施例＞
図１に本発明の１つの実施例のシリアル通信装置の構成を示す。１は基準パルスを発生する発振回路であり、受信データの１０ビットのシンクキャラクタの１ビット長よりも十分に周期が短い基準パルスＣＬＫ１を発振する。２は受信データを検出するためのデータ検出回路、３はシンクキャラクタの８ビット期間（１０ビット期間の内のスタートビットとストップビットを除いた同期ビット期間）を基準パルスＣＬＫ１のカウント数により計測する第１カウンタである。４は第１レジスタであり、第１カウンタ３により計測された８ビット期間の計測値ＣＮＴ１が格納される。５はビットシフタであり、レジスタ４に格納された計測値ＣＮＴ１を同期ビットのビット数である８（＝２3）で除算するために、ｎ＝３ビットだけＬＳＢ方向にシフトさせて商Ｑを得る。このとき、第１レジスタ４に格納された計測値ＲＥＧ１の下位３ビットが余りＲとなる。このビットシフタ５と値ＲＥＧ１の下位３ビットを取り出す構成は、除算手段を構成する。
【００２０】
６は第２カウンタであり、初期値に０または１が設定されて基準パルスＣＬＫ１のカウントを開始し、カウント値ＣＮＴ２がビットシフタ５の出力値である商Ｑと一致すると、再び０または１の初期値が設定されて、同じ動作を繰り返す。７は同期クロック発生回路であり、第２カウンタ６のカウント値ＣＮＴ２が一巡する毎に、シリアルデータ受信のための同期クロックＣＬＫ２を発生させる。相手側通信装置との通信速度（ボーレート）は、この同期クロックＣＬＫ２の周期で決まる。
【００２１】
８は第３カウンタであり、同期クロック発生回路７が同期クロックＣＬＫ２を発生する毎に（１ビットデータを受信する毎に）、カウント値ＣＬＫ３を減少（ダウンカウント）する。このダウンカウントの開始は、受信するデータの伝送単位ビット数によって決定される。本実施例では、１０ビット単位であるので、９から開始して０までダウンカウントする。
【００２２】
９は比較器であり、第１レジスタ４に格納された計測値ＲＥＧ１の下位３ビット（余りＲ）と第３カウンタ８のカウント値ＣＮＴ３を比較して、一致したとき出力ＣＯＭＰにＨパルスを発生する。１０は第２レジスタであり、その比較器９の出力のＣＯＭＰにＨパルスが発生したとき０を生成し、その他のとき１を生成して、第２カウンタ６に初期値ＲＥＧ２として与える。
【００２３】
図２に本実施例のシリアル通信装置の動作波形図を示す。シンクキャラクタを受信することにより、そのシンクキャラクタの８ビットの同期ビット期間の第１カウンタ３による計測値ＣＮＴ１が８Ｎ＝０ｘ３１Ｂ（＝７９５）の場合を例にしている（ただし、Ｎ＝１００）。
【００２４】
この場合は、第１レジスタ４にその計測値０ｘ３１Ｂ（＝７９５）が格納される。その格納された計測値を８で除算した値は、ビットシフト５の出力値を、ｎ＝３ビットだけＬＳＢ方向にシフトした値、つまり商Ｑ＝０ｘ６３（＝９９）として得られる。同時に、第１レジスタ４に格納された計測値０ｘ３１Ｂ（＝７９５）の下位３ビットが、余りＲ＝０ｘ００３（＝３）として得られる。
【００２５】
この後に続く１０ビットの通常のデータを受信するときは、前記した商Ｑと余りＲに基づいて同期クロックＣＬＫ２の周期（１ビット長）が調整される。図２では、８ビットの受信データ０ｘＡ３をスタートビット、ストップビット付で受信する場合（１０ビット受信）を例にしている。受信データ０ｘＡ３の“０”のスタートビットが検出されると、第２レジスタ１０の値ＲＥＧ２が１にセットされ、第２カウンタ６はこの値１を初期値として基準パルスＣＬＫ１のカウントを開始し、そのカウント値ＣＮＴ２がビットシフタ５の出力値Ｑ（＝９９）に達すると、同期クロック発生回路７から、基準パルスＣＬＫ１の１周期をパルス幅とする同期クロックＣＬＫ２が発生する。
【００２６】
第３カウンタ８は、受信データ０ｘＡ３のスタートビットを受信すると同時に、初期値として、受信データである１０ビット分の値９がセット（ＣＮＴ３＝９）され、同期クロックＣＬＫ２の立下り毎にダウンカウントして、そのカウント値ＣＮＴ３が９→８→・・・と変化する。そして、そのカウント値ＣＮＴ３が余りＲの値（＝３）と一致すると、比較器９の出力ＣＯＭＰにＨパルスが発生し、この時点で第２レジスタ１０の出力値ＲＥＧ２が１→０に変化する。これにより、この後は、受信データの“１”のストップビットまで、第２カウンタ６は初期値を０としてビットシフタ５の出力値Ｑ（＝９９）までカウントすることを繰り返す。図３に、図２の破線領域Ａの拡大部分を示した。
【００２７】
このようにして、第１レジスタ４に格納された計測値がＣＮＴ１＝７９５の場合は、Ｑ＝９９、Ｒ＝３となるので、１０ビットデータを受信するときは、１番目のビット（スタートビット）位置から第３カウンタ８のカウント値がＣＮＴ３＝３にダウンカウントされる直前までの７番目のビット位置までは、第２カウンタ６が初期値１からＱ（＝９９）までカウント（９９カウント）することを繰り返し、第３カウンタ８のカウント値がＣＮＴ３＝３に達した後の８番目のビット位置から１０番目のビット（ストップビット）位置までは、第２カウンタ６が初期値０からＱ（＝９９）までカウント（１００カウント）することを繰り返す。
【００２８】
これにより、余りＲに一致するビット位置の直前までの１番目のビット位置から７番目のビット位置の各ビットのビット長はＱ＝９９になり、８番目から１０番目のビット位置までの各ビットのビット長はＱ＋１＝１００に補正される。このように、受信データが１０ビットの内の後部の３ビット分のビット長が１パルス分だけ長くなる。受信データが８ビットの場合に換算した合計カウント数は、
９９×５＋１００×３＝７９５
と計測値ＲＥＧ１と同一となり、誤差は０となる。
【００２９】
図４に計測値ＣＮＴ１＝０ｘ３２０、０ｘ３１Ｆ、０ｘ３１Ｅ、０ｘ３１Ｄ、０ｘ３１Ｃ、０ｘ３１Ｂ、０ｘ３１Ａ、０ｘ３１９、０ｘ３１８の各場合について、従来例１、従来例２、本発明の実施例の誤差を示した。また、図５に一般化した場合について示した。本実施例によれば、いずれの場合も誤差が０になっている。
【符号の説明】
【００３０】
１：発振器、２：第１カウンタ、３：データ検出器、４：第１レジスタ、５：ビットシフタ、６：第２カウンタ、７：同期クロック発生回路、８：第３カウンタ、９：比較器、１０：第２レジスタ
【図１】
2014082696.tif 000003
【図２】
2014082696.tif 000004
【図３】
2014082696.tif 000005
【図４】
2014082696.tif 000006
【図５】
2014082696.tif 000007