(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6023544
(24)【登録日】2016年10月14日
(45)【発行日】2016年11月9日
(54)【発明の名称】シリアル通信装置
(51)【国際特許分類】
H04L 7/04 20060101AFI20161027BHJP
H04L 25/38 20060101ALI20161027BHJP
【FI】
H04L7/04 600
H04L25/38 A
【請求項の数】2
【全頁数】9
(21)【出願番号】特願2012-230579(P2012-230579)
(22)【出願日】2012年10月18日
(65)【公開番号】特開2014-82696(P2014-82696A)
(43)【公開日】2014年5月8日
【審査請求日】2015年9月1日
(73)【特許権者】
【識別番号】000191238
【氏名又は名称】新日本無線株式会社
(74)【代理人】
【識別番号】100083194
【弁理士】
【氏名又は名称】長尾 常明
(72)【発明者】
【氏名】小笠原 健一
【審査官】
阿部 弘
(56)【参考文献】
【文献】
特開2007−166179(JP,A)
【文献】
特開2002−101079(JP,A)
【文献】
特開2010−011389(JP,A)
【文献】
特開2003−134098(JP,A)
【文献】
特開2007−324679(JP,A)
【文献】
特開2011−234128(JP,A)
【文献】
特開2011−172144(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 7/04
H04L 25/38
(57)【特許請求の範囲】
【請求項1】
受信データの内の2nビット(nは2以上の正の整数)の0,1の繰り返しの同期ビットに基づいて同期クロックの周期を決定するシリアル通信装置において、
前記同期ビットの全期間に対応する基準パルス数の計測値を得、得られた該計測値を前記同期ビットの全期間のビット数で除算して商Qと余りRを得、
続けてデータを受信する際に、受信データにおける前記余りRに対応するビット位置の直前のビット位置までに対しては、前記商Qに対応する基準パルス数の時間を前記同期クロックの周期とし、前記余りRに対応するビット位置以降のビット位置に対しては、前記商Q+1に対応する基準パルス数の時間を前記同期クロックの周期とするシリアル通信装置であって、
前記同期ビットの全期間を前記同期ビットの1ビット期間よりも十分短い周期の基準パルスでカウントしたカウント値を得、得られた該カウント値を前記同期ビットの全期間のビット数で除算して商Qと余りRを得、
続けてデータを受信する際に、初期値を1として前記商Qに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に同期クロックを生成し、該同期クロックが生成される毎に前記受信データのビット数の値を1ずつ0になるまで減算し、該減算結果が前記余りRと一致した後は前記初期値を0として前記商Qに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に前記同期クロックを生成し、
前記同期クロックの周期を、前記減算結果が前記余りRと一致する直前までは、前記Qに対応する基準パルス数の時間に決定し、前記減算結果が前記余りRと一致した後は、前記Q+1に対応する基準パルス数の時間に決定することを特徴とするシリアル通信装置。
【請求項2】
請求項1に記載のシリアル通信装置において、
前記同期ビットの全期間を前記同期ビットの1ビット期間よりも十分短い周期の基準パルスでカウントする第1カウンタと、
該第1カウンタで得られたカウント値を同期ビットの全期間のビット数で除算して商Qと余りRを得る除算手段と、
初期値から前記商Qに対応したカウント値まで前記基準パルスをカウントアップする第2カウンタと、
該第2カウンタが前記商Qに対応したカウント値までカウントアップされる毎に同期クロックを発生する同期クロック発生回路と、
該同期クロック発生回路から同期クロックが発生する毎に前記受信データのビット数の値を1ずつ0になるまでカウントダウンする第3カウンタと、
該第3カウンタのカウント値が前記余りRに一致するまでは、前記第2カウンタの前記初期値に1を設定し、前記余りRに一致した後は、前記第2カウンタの前記初期値に0を設定する比較器と、
を備えることを特徴とするシリアル通信装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はシリアル通信装置に関し、例えばUART(Universal Asynchrdnous Receiver Transmitter)を使用するLIN(Local Interconnect Network)プロトコルに好適なシリアル通信装置に関する。
【背景技術】
【0002】
UARTは、1バイト(8ビット)単位のデータを1本の通信線で調歩同期式で時系列で伝送するための装置であり、相手通信装置との通信速度(ボーレート)を決める同期クロックは、所定の受信データに基づいて生成される。また、LINプロトコルは、1個のマスタノードと1以上のスレーブノードとの間で低速通信を行うためのプロトコルであり、スレーブノードはマスタノードからの指示があったときのみマスタノードに向けて通信を行うことができる。
【0003】
このLINプロトコルでは、シンクキャラクタ(別名シンクフィールド)の同期ビットの符号を、“0”パルスと“1”パルスが交互に現れるパターン(0x55)に設定することで、このシンクキャラクタの受信可能期間において、1ビット長を計測し、その計測結果に基づいて、受信データのビット毎の符号を判定するための同期クロックを生成している。LINプロトコルについては、非特許文献1,2に記載がある。
【0004】
<従来例1>
シンクキャラクタは、例えば最初のスタートビットが“0”パルス、最後のストップビットが“1”パルスで、その間にLSBファーストで8ビットの同期ビット(0x55)を挿入したものである。その8ビットの同期ビットの期間について、その同期ビットの1ビット期間よりも十分に短い周期の基準パルスが8Nカウントされたとする。Nは例えば100である。
【0005】
このときは、このカウント値8Nを同期ビットのビット数の8で除算する(8N/8=N)と、1ビット期間にカウントされた基準パルス数Nが得られるので、基準パルスの周期にこのNを乗じると1ビット長が算出される。これにより、例えば、この半分(1ビット長のほぼ中心)のタイミングでその後に続く受信データのビット毎の符号を判定すれば、ほぼ安定したデータ受信が可能となる。
【0006】
しかしながら、通信路から受信されるデータに、「ジッタ」や「ゆらぎ」といった波形の歪み等を与える現象が発生した場合には、シンクキャラクタ中のデータも波形歪み等を生じ得る。
【0007】
このような場合には、例えば、8ビット中の最後の1ビットにおいて、基準パルスの1パルス分だけ不足してカウントされ、本来、8ビット分で8Nカウント(例えば800カウント)されるべきものが、8N−1(例えば800−1=799)しかカウントされないことがある。
【0008】
このため、この「8N−1」をビット数の8で除算する「(8N−1)/8」と、1パルス分不足したことによる余りが切り捨てられて、演算結果の商は(N−1)となる。先の例では、799/8となり、商が99で余りが7であるので、その余り7が切り捨てられる結果、全てのビットについての1ビット長に、基準パルスの1パルス分の誤差が生じる。
【0009】
したがって、このような場合には、1ビット長に誤差が含まれたまま、これに基づいて同期クロックが生成されることになるから、このような誤差が蓄積されると、受信データの符号判定に誤りが生じ得るという問題がある。例えば、本来の1ビット長が基準パルスの100パルス分に相当する場合には、そのほぼ半分にあたる50パルス分のタイミングで、受信データの符号判定が行われるが、上記のような誤差が50パルス近く蓄積されると、データ波形の符号変位タイミングの前後で判定することになるので、誤った符号判定を招来する。
【0010】
<従来例2>
そこで、前記した除算を行って商Qと余りSを求めてから、1ビット長を、商Qのみならず余りSをも含めたものに基づいて決定する手法が提案されている(特許文献1の
図4)。
【0011】
この手法は次の通りである。シンクキャラクタの前記した10ビットの内のスタートビットとストップビットを除いた8ビット分の基準パルスのカウント値を8で除算するためにビットシフトを行うと、当該カウント値の上位5ビットが商Qとなり、下位3ビットが余りSとなる。そこで、余りSの3ビットの内の最上位ビットが“0”のとき、つまり“000”〜“011”(10進数で0〜3)のときは、その余りSを切り捨てて1ビット期間のビット長を商Q−1とし、“1”のとき、つまり“100”〜“111”(10進数で4〜7)のときは、その余りSを切り上げて1ビット期間のビット長を商Qとするものである。
【0012】
これにより、余りSを全て切り捨ててしまう処理(従来例1)の場合は8ビット当たりその誤差の範囲が1/8〜7/8であった、つまり最大誤差が7/8であったのに対し、従来例2ではその誤差の範囲が1/8〜4/8となり、最大誤差を4/8にまで減少させることができる。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特許第4736775号公報
【非特許文献】
【0014】
【非特許文献1】株式会社サニー技研、基準クロックの調整、[平成24年10月11日検索]、インターネット<URL:http://sunnygiken.jp/product/lin-tool/about-lin/lin-clock/>
【非特許文献2】組み込みシステム設計者のためのLIN.2マイコン実装技術(中編)[平成24年10月11日検索]、インターネット<URL:http://www.kumikomi.net/archives/2006/01/02lin2.php?page=1>
【発明の概要】
【発明が解決しようとする課題】
【0015】
しかしならが、この従来例2による手法は、同期クロックの周期の最大誤差を4/8にまで減少できるものの、それより減少することはできない。本発明の目的は、生成する同期クロックの周期の誤差を更に大きく減少できるようにしたシリアル通信装置を提供することである。
【課題を解決するための手段】
【0016】
上記目的を達成するために、請求項1にかかる発明は、受信データの内の2
nビット(nは2以上の正の整数)の0,1の繰り返しの同期ビットに基づいて同期クロックの周期を決定するシリアル通信装置において、前記同期ビットの全期間に対応する基準パルス数の計測値を得、得られた該計測値を前記同期ビットの全期間のビット数で除算して商Qと余りRを得、続けてデータを受信する際に、受信データにおける前記余りRに対応するビット位置の直前のビット位置までに対しては、前記商Qに対応する基準パルス数の時間を前記同期クロックの周期とし、前記余りRに対応するビット位置以降のビット位置に対しては、前記商Q+1に対応する基準パルス数の時間を前記同期クロックの周期とするシリアル通信装置
であって、
前記同期ビットの全期間を前記同期ビットの1ビット期間よりも十分短い周期の基準パルスでカウントしたカウント値を得、得られた該カウント値を前記同期ビットの全期間のビット数で除算して商Qと余りRを得、続けてデータを受信する際に、初期値を1として前記商Qに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に同期クロックを生成し、該同期クロックが生成される毎に前記受信データのビット数の値を1ずつ0になるまで減算し、該減算結果が前記余りRと一致した後は前記初期値を0として前記商Qに対応した期間の基準パルス数まで前記基準パルスをカウントする毎に前記同期クロックを生成し、前記同期クロックの周期を、前記減算結果が前記余りRと一致する直前までは、前記Qに対応する基準パルス数の時間に決定し、前記減算結果が前記余りRと一致した後は、前記Q+1に対応する基準パルス数の時間に決定することを特徴とする。
請求項2にかかる発明は、請求項1に記載のシリアル通信装置において、前記同期ビットの全期間を前記同期ビットの1ビット期間よりも十分短い周期の基準パルスでカウント
する第1カウンタと、該第1カウンタで得られたカウント値を同期ビットの全期間のビット数で除算して商Qと余りRを得る除算手段と、初期値から前記商Qに対応したカウント値まで前記基準パルスをカウントアップする第2カウンタと、該第2カウンタが前記商Qに対応したカウント値までカウントアップされる毎に同期クロックを発生する同期クロック発生回路と、該同期クロック発生回路から同期クロックが発生する毎に前記受信データのビット数の値を1ずつ0になるまでカウントダウンする第3カウンタと、該第3カウンタのカウント値が前記余りRに一致するまでは、前記第2カウンタの前記初期値に1を設定し、前記余りRに一致した後は、前記第2カウンタの前記初期値に0を設定する比較器と、を備えることを特徴とする。
【発明の効果】
【0017】
本発明によれば、受信データにおける余りRに対応するビット位置の直前のビット位置までに対しては、商Qに対応する基準パルス数の時間を同期クロックの周期とし、余りRに対応するビット位置以降のビット位置に対しては、商Q+1に対応する基準パルス数の時間を同期クロックの周期とするので、余りRを切り捨てて1ビット長を一律に商Qとする従来例1の場合や、余りRの最大ビットの値によって1ビット長を商Qと商Q+1のいずれかに設定する場合に比べて、同期クロックのビット長の誤差を大きく抑制することが可能となり、受信エラーを大幅に抑制することができるばかりか、生成される同期クロックの1ビット長の精度が高くなるので、基準パルスの周波数を大幅に高くする必要もなくなる。
【図面の簡単な説明】
【0018】
【
図1】本発明の1つの実施例のシリアル通信装置の構成図である。
【
図2】
図1のシリアル通信装置の動作波形図である。
【
図4】N=100のときの同期ビットが8ビット長の場合の計測の誤差の説明図である。
【
図5】Nを任意値としたときの同期ビットが8ビット長の場合の計測の誤差の説明図である。
【発明を実施するための形態】
【0019】
<実施例>
図1に本発明の1つの実施例のシリアル通信装置の構成を示す。1は基準パルスを発生する発振回路であり、受信データの10ビットのシンクキャラクタの1ビット長よりも十分に周期が短い基準パルスCLK1を発振する。2は受信データを検出するためのデータ検出回路、3はシンクキャラクタの8ビット期間(10ビット期間の内のスタートビットとストップビットを除いた同期ビット期間)を基準パルスCLK1のカウント数により計測する第1カウンタである。4は第1レジスタであり、第1カウンタ3により計測された8ビット期間の計測値CNT1が格納される。5はビットシフタであり、レジスタ4に格納された計測値CNT1を同期ビットのビット数である8(=2
3)で除算するために、n=3ビットだけLSB方向にシフトさせて商Qを得る。このとき、第1レジスタ4に格納された計測値REG1の下位3ビットが余りRとなる。このビットシフタ5と値REG1の下位3ビットを取り出す構成は、除算手段を構成する。
【0020】
6は第2カウンタであり、初期値に0または1が設定されて基準パルスCLK1のカウントを開始し、カウント値CNT2がビットシフタ5の出力値である商Qと一致すると、再び0または1の初期値が設定されて、同じ動作を繰り返す。7は同期クロック発生回路であり、第2カウンタ6のカウント値CNT2が一巡する毎に、シリアルデータ受信のための同期クロックCLK2を発生させる。相手側通信装置との通信速度(ボーレート)は、この同期クロックCLK2の周期で決まる。
【0021】
8は第3カウンタであり、同期クロック発生回路7が同期クロックCLK2を発生する毎に(1ビットデータを受信する毎に)、カウント値CLK3を減少(ダウンカウント)する。このダウンカウントの開始は、受信するデータの伝送単位ビット数によって決定される。本実施例では、10ビット単位であるので、9から開始して0までダウンカウントする。
【0022】
9は比較器であり、第1レジスタ4に格納された計測値REG1の下位3ビット(余りR)と第3カウンタ8のカウント値CNT3を比較して、一致したとき出力COMPにHパルスを発生する。10は第2レジスタであり、その比較器9の出力のCOMPにHパルスが発生したとき0を生成し、その他のとき1を生成して、第2カウンタ6に初期値REG2として与える。
【0023】
図2に本実施例のシリアル通信装置の動作波形図を示す。シンクキャラクタを受信することにより、そのシンクキャラクタの8ビットの同期ビット期間の第1カウンタ3による計測値CNT1が8N=0x31B(=795)の場合を例にしている(ただし、N=100)。
【0024】
この場合は、第1レジスタ4にその計測値0x31B(=795)が格納される。その格納された計測値を8で除算した値は、ビットシフト5の出力値を、n=3ビットだけLSB方向にシフトした値、つまり商Q=0x63(=99)として得られる。同時に、第1レジスタ4に格納された計測値0x31B(=795)の下位3ビットが、余りR=0x003(=3)として得られる。
【0025】
この後に続く10ビットの通常のデータを受信するときは、前記した商Qと余りRに基づいて同期クロックCLK2の周期(1ビット長)が調整される。
図2では、8ビットの受信データ0xA3をスタートビット、ストップビット付で受信する場合(10ビット受信)を例にしている。受信データ0xA3の“0”のスタートビットが検出されると、第2レジスタ10の値REG2が1にセットされ、第2カウンタ6はこの値1を初期値として基準パルスCLK1のカウントを開始し、そのカウント値CNT2がビットシフタ5の出力値Q(=99)に達すると、同期クロック発生回路7から、基準パルスCLK1の1周期をパルス幅とする同期クロックCLK2が発生する。
【0026】
第3カウンタ8は、受信データ0xA3のスタートビットを受信すると同時に、初期値として、受信データである10ビット分の値9がセット(CNT3=9)され、同期クロックCLK2の立下り毎にダウンカウントして、そのカウント値CNT3が9→8→・・・と変化する。そして、そのカウント値CNT3が余りRの値(=3)と一致すると、比較器9の出力COMPにHパルスが発生し、この時点で第2レジスタ10の出力値REG2が1→0に変化する。これにより、この後は、受信データの“1”のストップビットまで、第2カウンタ6は初期値を0としてビットシフタ5の出力値Q(=99)までカウントすることを繰り返す。
図3に、
図2の破線領域Aの拡大部分を示した。
【0027】
このようにして、第1レジスタ4に格納された計測値がCNT1=795の場合は、Q=99、R=3となるので、10ビットデータを受信するときは、1番目のビット(スタートビット)位置から第3カウンタ8のカウント値がCNT3=3にダウンカウントされる直前までの7番目のビット位置までは、第2カウンタ6が初期値1からQ(=99)までカウント(99カウント)することを繰り返し、第3カウンタ8のカウント値がCNT3=3に達した後の8番目のビット位置から10番目のビット(ストップビット)位置までは、第2カウンタ6が初期値0からQ(=99)までカウント(100カウント)することを繰り返す。
【0028】
これにより、余りRに一致するビット位置の直前までの1番目のビット位置から7番目のビット位置の各ビットのビット長はQ=99になり、8番目から10番目のビット位置までの各ビットのビット長はQ+1=100に補正される。このように、受信データが10ビットの内の後部の3ビット分のビット長が1パルス分だけ長くなる。受信データが8ビットの場合に換算した合計カウント数は、
99×5+100×3=795
と計測値REG1と同一となり、誤差は0となる。
【0029】
図4に計測値CNT1=0x320、0x31F、0x31E、0x31D、0x31C、0x31B、0x31A、0x319、0x318の各場合について、従来例1、従来例2、本発明の実施例の誤差を示した。また、
図5に一般化した場合について示した。本実施例によれば、いずれの場合も誤差が0になっている。
【符号の説明】
【0030】
1:発振器、2:第1カウンタ、3:データ検出器、4:第1レジスタ、5:ビットシフタ、6:第2カウンタ、7:同期クロック発生回路、8:第3カウンタ、9:比較器、10:第2レジスタ