(57)【要約】【課題】専用の発振器を用いないボーレート発生器のように分周する周波数の誤差を許容する分周器を簡素な構成かつ高精度で実現する。【解決手段】分周器としてのボーレート発生器１は、所定の基準クロックＲＣＬＫを分周することにより、データをサンプリングするボーレートクロックＢＣＬＫを生成する。このボーレート発生器１は、ｍ進／ｍ−１進ダウンカウンタ２と、カウンタ切替制御部３とを備える。ｍ進／ｍ−１進ダウンカウンタ２は、異なる分周比を切り替えて基準クロックＲＣＬＫを分周する。カウンタ切替制御部３は、記ボーレートクロックＢＣＬＫの正規のボーレートクロックに対する１周期毎の誤差の累積値が所定範囲を超えると、前記累積値が減少するように、ｍ進／ｍ−１進ダウンカウンタ２の分周比を切り替える。【選択図】図１
2010011389.tif 000002
【特許請求の範囲】
【請求項１】
正規クロックに対する差を有するとともに前記差が許容範囲内である作動クロックで動作する装置に用いられる分周器であって、
入力された基準クロックを第１分周比で分周することにより、前記正規クロックに対する正の差を有する第１作動クロックを生成する一方、前記基準クロックを前記第１分周比と異なる第２分周比で分周することにより、前記正規クロックに対する負の差を有する第２作動クロックを生成する分周回路と、
前記第１作動クロックおよび前記第２作動クロックのいずれか一方を前記作動クロックとして用いて前記装置を動作させ、１周期毎の前記差の累積値が前記許容範囲を超えたか、または超えると予測されるときに、他方のクロックを前記作動クロックとして用いて、前記累積値が前記許容範囲内に収まるように、前記装置を動作させる作動クロック切替手段とを備えていることを特徴とする分周器。
【請求項２】
前記作動クロック切替手段は、
前記差を加算する加算回路と、
当該加算回路による加算値を前記第１作動クロックまたは前記第２作動クロックのパルスが出力される毎に出力する加算値出力回路と、
当該加算値出力回路から出力される前記加算値が前記許容範囲を越えたと判定または越えると予測されると前記第１分周比と前記第２分周比とを切り替える制御信号を発生する制御信号発生回路とを備えていることを特徴とする請求項１記載の分周器。
【請求項３】
前記第１分周比がｍ（ｍは２以上の任意の整数）であり、前記第２分周比がｍ−１であることを特徴とする請求項１または２記載の分周器。
【請求項４】
ｍは、前記作動クロックの周波数が前記正規クロックの周波数を越えないような値に設定されていることを特徴とする請求項３記載の分周器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＯ（Serial Input Output）に用いられるＵＡＲＴ(Universal Asynchronous Receiver and Transmitter)が備えるボーレート発生器などに好適に用いられる分周器に関するものである。
【背景技術】
【０００２】
コンピュータ装置やコンピュータ機能を有する機器は、他の機器との間でデータ転送を行うために、Ｉ／Ｏ（入出力）装置を備えている。非同期でシリアル通信を行うＩ／Ｏ装置（ＳＩＯ）を用いたデータ通信においては、データの送信および受信を正しく行う際に、ＳＩＯのボーレートの整合性が重要となる。
【０００３】
なお、ボーレートは、従来、モデムを用いた通信での変調速度を意味しているが、現在、シリアル通信でのデータの伝送レートを意味するものとして一般的に用いられている。そこで、ここでも、ボーレートを同様の意味を示すものとして用いる。
【０００４】
シリアル通信では、受信側において、正規のボーレートの例えば１６倍の周波数を有するサンプリングクロックでデータをサンプリングする。このとき、データの中央でサンプリングするため、サンプリングのタイミングは、サンプリングクロックの８クロックの位置に設定されている。このため、サンプリングクロックを発生するボーレート発生器は、一般に、基になる高い周波数を有する基準クロックをボーレートの１６倍の周波数にまで分周してサンプリングクロックを生成する分周器として構成される。
【０００５】
また、ＳＩＯのボーレートは、通常、ＳＩＯが組み込まれているシステムのクロック等を用いて作成することが多いので、そのクロックの周波数によっては、必ずしも正規のボーレートであるとは限らない。この場合、通信の一方側のボーレートが正規のボーレートであれば、通信の他方側のボーレートが許容誤差を含んでいても、問題なく通信することが可能である。逆に、通信の他方側におけるボーレートの誤差が許容値を超えると、正しく通信することができなくなる。
【０００６】
しかしながら、実際のサンプリングにおいては、ボーレートの誤差によるサンプリング誤差が生じており、データを１ビットサンプリングする毎にサンプリング誤差が累積していく。その累積誤差が、サンプリング位置（ビットの中央）から５０％を超えると、データを正しくサンプリングすることができなくなり、フレーミングエラーやパリティエラーなどの通信エラーが発生する。
【０００７】
例えば、１つのスタートビット、８つのデータビット、１つのパリティビットおよび１つのストップビットからなる１１ビット長の１キャラクタでは、各ビットが５０％の許容誤差の１／１１である約±４．５％を越えると上記の通信エラーが生じてしまう。この誤差は、受信側と送信側との双方で生じることを考慮すれば、通信エラーを生じさせないためには、一方側では、その半分である約±２．３％の誤差を越えないようにする必要がある。さらに、通信エラーの発生をより確実に防止するには、この誤差を１％程度に抑えることが好ましい。
【０００８】
一般に、正規のボーレートを得るには、基本周波数を変更したり、ＳＩＯ専用の発振器を設けたりする必要がある。しかしながら、周波数を変更することが困難である場合は、正規のボーレートを得ることができない。また、ＳＩＯ専用の発振器を設ける場合は、そのためのコストや実装面積を必要とする。しかも、この専用発振器をＵＡＲＴのＬＳＩに組み込むには、専用発振器のための専用の入力ピンを設ける必要がある。このため、ＬＳＩのコストアップやサイズの大型化を招来するという不都合がある。
【０００９】
特許文献１には、このような不都合を解消するために、ＣＰＵの固定周波数を有するシステムクロックを用いて正規のボーレートの整数倍となるサンプリングクロックを生成し、ボーレートの誤差に応じてデータの各ビットを取り込むときに累積する誤差が所定値を越えるビット位置を検出して、そのビット位置に応じてデータの１キャラクタの長さを増減することが記載されている。このようにして、ビット位置を補正することにより、ボーレートによる誤差で各ビットに累積する誤差を抑制することができる。
【特許文献１】特開２００３−７８５１３号公報（２００３年３月１４日公開）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記従来の構成では、回路構成が複雑になるだけでなく、１キャラクタの長さが１２ビット長ではあるが、誤差の許容値を±３％程度としているために、上記の±１％の許容誤差に比べると低い。
【００１１】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、専用の発振器を用いないボーレート発生器のように分周する周波数の誤差を許容する分周器を簡素な構成かつ高精度で実現することにある。
【課題を解決するための手段】
【００１２】
本発明に係る分周器は、上記の課題を解決するために、正規クロックに対する差を有するとともに前記差が許容範囲内で作動クロックであれば動作する装置に用いられる分周器であって、入力された基準クロックを第１分周比で分周することにより、前記正規クロックに対する正の差を有する第１作動クロックを生成する一方、前記基準クロックを前記第１分周比と異なる第２分周比で分周することにより、前記正規クロックに対する負の差を有する第２作動クロックを生成する分周回路と、前記第１作動クロックおよび前記第２作動クロックのいずれか一方を前記作動クロックとして用いて前記装置を動作させ、１周期毎の前記差の累積値が前記許容範囲を超えたか、または超えると予測されるときに、他方のクロックを前記作動クロックとして用いて、前記累積値が前記許容範囲内に収まるように、前記装置を動作させる作動クロック切替手段とを備えていることを特徴としている。
【００１３】
上記の構成では、基準クロックが分周回路によって分周されることにより第１作動クロックまたは第２作動クロックのいずれか一方が得られると、その一方と正規クロックとの周波数差から、１周期毎に差（位相差）が生じる。この差が１周期毎に累積していき、所定値で定まる許容範囲外となると、分周比変更手段によって、その累積値が許容範囲内に収まるように、分周回路から、第１作動クロックまたは第２作動クロックのうちの他方が得られる。
【００１４】
これにより、専用の発振器を用いたり基準クロックを変更したりすることなく、許容誤差の範囲内で所望の作動クロックを得ることができる。また、累積誤差が減少するように分周比を切り替えるので、高精度に誤差を抑制することができる。しかも、既知の誤差の累積値が所定値の許容範囲外であることを判定することで第１作動クロックと第２作動クロックとの切り替えを行うので、既存の論理回路の組み合わせなどで簡素に構成することができる。
【００１５】
前記の分周器において、前記作動クロック切替は、前記差を加算する加算回路と、当該加算回路による加算値を上記第１作動クロックまたは前記第２作動クロックのパルスが出力される毎に出力する加算値出力回路と、当該加算値出力回路から出力される前記加算値が前記許容範囲を越えたと判定または越えると予測される前記分周比を変更する制御信号を発生する制御信号発生回路とを有していることが好ましい。
【００１６】
この構成では、第１作動クロックまたは前記第２作動クロックのパルスが出力されるタイミングを１周期の始まりとして、これを基準に、加算値出力回路が加算回路による加算値、すなわち累積値を出力する。そして、制御信号発生回路によって、この累積値差が許容範囲外であるときには、制御信号が発生する。分周回路では、この制御信号によって、累積値が前記許容範囲内に収まるように、第１分周比と前記第２分周比とが切り替えられる。
【００１７】
例えば、前記第１分周比は、ｍ（ｍは２以上の任意の整数）であり、前記第２分周比はｍ−１の２つであり、ｍは、前記作動クロックの周波数が前記正規クロックの周波数を越えないような値に設定されている。
【発明の効果】
【００１８】
本発明に係る分周器は、以上のように、入力された基準クロックを第１分周比で分周することにより、前記正規クロックに対する正の差を有する第１作動クロックを生成する一方、前記基準クロックを前記第１分周比と異なる第２分周比で分周することにより、前記正規クロックに対する負の差を有する第２作動クロックを生成する分周回路と、前記第１作動クロックおよび前記第２作動クロックのいずれか一方を前記作動クロックとして用いて前記装置を動作させ、１周期毎の前記差の累積値が前記許容範囲を超えたか、または超えると予測されるときに、他方のクロックを前記作動クロックとして用いて、前記累積値が前記許容範囲内に収まるように、前記装置を動作させる作動クロック切替手段とを備えているので、簡素な構成で高精度に作動クロックの誤差を抑制することができる。したがって、分周器を備える装置のコストダウンを図る一方、当該装置の大型化を防止することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１９】
本発明の一実施形態について図１ないし図４に基づいて説明すると、以下の通りである。
【００２０】
図１に示すように、本実施の形態に係るボーレート発生器１は、ｍ進／ｍ−１進（７進／６進）ダウンカウンタ２と、カウンタ切替制御部３とを備えている。ボーレート発生器１は、ｍ進／ｍ−１進ダウンカウンタ２が基準クロックＲＣＬＫを分周することによって、正規のボーレートクロックに対する差を有するボーレートクロックＢＣＬＫを出力する。また、このボーレート発生器１は、前記の差が許容範囲内であるあれば動作するＵＡＲＴなどの装置に用いられる。
【００２１】
ｍ進／ｍ−１進ダウンカウンタ２（ｍは２以上の任意の整数）は、基準クロックＲＣＬＫを分周することにより、ボーレートの１６倍の周波数を有するボーレートクロックＢＣＬＫを出力する。また、ｍ進／ｍ−１進ダウンカウンタ２は、ｍ進ダウンカウンタの機能（ｍ進ダウンカウント機能）とｍ−１進ダウンカウンタの機能（ｍ−１進ダウンカウント機能）とを備えたカウンタであり、カウンタ切替制御部３の切替制御によって、両機能を切り替える。
【００２２】
このｍ進／ｍ−１進ダウンカウンタ２は、フリップフロップ２１、ＮＯＲゲート２２、Ｄラッチ２３、減算器２４、セレクタ２５，２６、インバータ２７およびＯＲゲート２８を有している。
【００２３】
フリップフロップ２１は、３ビットのＤフリップフロップである。このフリップフロップ２１は、セレクタ２６から出力される８ビットのデータを基準クロックＲＣＬＫのタイミングで保持して出力する。フリップフロップ２１の出力は、ｍ進／ｍ−１進ダウンカウンタ２のカウント値ＣＯＵＴとして得られる。
【００２４】
負論理のＮＯＲゲート２２は、フリップフロップ２１の３ビットのカウント値ＣＯＵＴの論理和否定値を出力する。このＮＯＲゲート２２は、カウント値が０（０００）であるときに“１”を出力し、カウント値ＣＯＵＴが０以外であるとき（カウント値ＣＯＵＴのいずれかのビットが“１”であるとき）に“０”を出力する。このように、ＮＯＲゲート２２は、カウント値が０になるときにパルスを出力する。
【００２５】
Ｄラッチ２３は、基準クロックＲＣＬＫのタイミングでＮＯＲゲート２２の出力をラッチする。これにより、Ｄラッチ２３は、基準クロックＲＣＬＫをフリップフロップ２１のプリセット値に応じた分周比で分周して、ボーレートクロックＢＣＬＫとして出力する。
【００２６】
減算器２４は、フリップフロップ２１からのカウント値ＣＯＵＴから１を減算する。
【００２７】
セレクタ２５は、フリップフロップ２１のプリセット値ＰＲ１，ＰＲ２のいずれか一方を選択して出力する。具体的には、セレクタ２５は、選択端子Ｓに“０”が入力されるとプリセット値ＰＲ１を選択し、選択端子Ｓに“１”が入力されるとプリセット値ＰＲ２を選択する。プリセット値ＰＲ１はｍ−１であり、プリセット値ＰＲ２はｍ−３である。セレクタ２５の選択端子Ｓには、後述するカウンタ切替制御部３のＤラッチ３７からの切替制御信号ＣＹＣＬＥが与えられる。
【００２８】
セレクタ２６は、減算器２４からの出力およびセレクタ２５の出力のいずれか一方を選択して出力する。セレクタ２６は、選択端子Ｓに“０”が入力されると減算器２４の出力を選択し、選択端子Ｓに“１”が入力されるとセレクタ２５の出力を選択する。セレクタ２６の選択端子Ｓには、ＯＲゲート２８の出力が与えられる。
【００２９】
インバータ２７は、リセット時に“０”となり、非リセット時に“１”となるリセット信号ＲＳＴを反転する。ＯＲゲート２８は、ＮＯＲゲート２２の出力およびインバータ２７の出力の論理和を出力する。
【００３０】
カウンタ切替制御部３は、ｍ進／ｍ−１進カウンタ２のｍ進ダウンカウント機能とｍ−１進ダウンタウンと機能とを切り替えるための切替制御信号ＣＹＣＬＥを生成する回路である。このカウンタ切替制御部３は、セレクタ３１、加算器３２、セレクタ３３，３４、フリップフロップ３５、コンパレータ３６およびＤラッチ３７を有している。
【００３１】
セレクタ３１は、正サイクル誤差ＰＬＥＲＲおよび負サイクル誤差ＭＩＥＲＲのいずれか一方を選択して出力する。具体的には、セレクタ３１は、選択端子Ｓに“０”が入力されると正サイクル誤差ＰＬＥＲＲを選択し、選択端子Ｓに“１”が入力されると負サイクル誤差ＭＩＥＲＲを選択する。セレクタ３１の選択端子Ｓには、後述するＤラッチ３７からの切替制御信号ＣＹＣＬＥが与えられる。
【００３２】
正サイクル誤差ＰＬＥＲＲは、正規のボーレートクロックに対するボーレートクロックＢＣＬＫの１周期における誤差のうち正の誤差（８ビット）である。負サイクル誤差ＭＩＥＲＲは、正規のボーレートクロックに対するボーレートクロックＢＣＬＫの１周期における誤差のうち負の誤差（８ビット）である。
【００３３】
加算器３２は、セレクタ３１から出力された正サイクル誤差ＰＬＥＲＲまたは負サイクル誤差ＭＩＥＲＲとフリップフロップ３５の出力とを加算する回路である。
【００３４】
セレクタ３３は、加算器３２の出力およびゼロ誤差ＺＥＲＯＥＥＲのいずれか一方を選択して出力する。具体的には、セレクタ３３は、選択端子Ｓに“１”が入力されると加算器３２の出力を選択し、選択端子Ｓに“０”が入力されるとゼロ誤差ＺＥＲＯＥＥＲを選択する。セレクタ３３の選択端子Ｓには、前述のリセット信号ＲＳＴが与えられる。
【００３５】
ゼロ誤差ＺＥＲＯＥＥＲは、誤差の初期値（８ビット）である。この初期値としては０が与えられる。
【００３６】
セレクタ３４は、フリップフロップ３５の出力およびセレクタ３３の出力のいずれか一方を選択して出力する。具体的には、セレクタ３４は、選択端子Ｓに“０”が入力されるとフリップフロップ３５の出力を選択し、選択端子Ｓに“１”が入力されるとセレクタ３３の出力を選択する。セレクタ３４の選択端子Ｓには、前述のＮＯＲゲート２２の出力Ｔが与えられる。
【００３７】
フリップフロップ３５は、セレクタ３４から出力されるフリップフロップ３５の出力またはセレクタ３３の出力を基準クロックのタイミングで保持して出力する８ビットのＤフリップフロップである。フリップフロップ３５は、前述の正サイクル誤差ＰＬＥＲＲまたは負サイクル誤差ＭＩＥＲＲの累積値として累積誤差ＡＣＣＵＥＲＲを出力する。
【００３８】
コンパレータ３６は、上記の累積誤差ＡＣＣＵＥＲＲと、誤差の上限値（所定値）である上限誤差ＵＬＭＴＥＲＲおよび誤差の下限値（所定値）である下限誤差ＬＬＭＴＥＲＲとを比較する。このコンパレータ３６は、Ｄラッチ３７から出力される切替制御信号ＣＹＣＬＥが“０”である場合に、累積誤差ＡＣＣＵＥＲＲと上限誤差ＵＬＭＴＥＲＲとの比較の結果、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ未満であるときＣＲ端子から“０”を比較結果として出力し、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上であるときＣＲ端子から“１”を比較結果として出力する。上限誤差ＵＬＭＴＥＲＲは、例えば基準クロックＲＣＬＫの半周期に設定される。また、コンパレータ３６は、切替制御信号ＣＹＣＬＥが“１”である場合に、累積誤差ＡＣＣＵＥＲＲと下限誤差ＬＬＭＴＥＲＲとの比較の結果、累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲを越えるときＣＲ端子から“１”を比較結果として出力し、累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲ以下であるときＣＲ端子から“０”を比較結果として出力する。下限誤差ＬＬＭＴＥＲＲは、例えば０に設定される。
【００３９】
Ｄラッチ３７は、コンパレータ３６から出力された“１”または“０”の比較結果を基準クロックＲＣＬＫのタイミングでラッチして、切替制御信号ＣＹＣＬＥとして出力する。また、Ｄラッチ３７は、前述のリセット信号ＲＳＴが“０”となるときにリセットされる。
【００４０】
続いて、上記のように構成されるボーレート発生器１の動作を説明する。
【００４１】
まず、ここでは、以下のような設定を前提として説明する。
【００４２】
基準クロックＲＣＬＫの周波数は１２．５ＭＨｚ（周期：８０ｎｓ）である。また、正規のボーレートは１１５．２ｋbaud（周期：８．６８μｓ）であり、この正規のボーレートの１６倍のクロック、すなわち正規のボーレートクロックは１．８４３２ＭＨｚ（周期：５４２．５ｎｓ）である。
【００４３】
また、正規ボーレート周波数／基準クロックＲＣＬＫ＝１１５．２ｋＨｚ／１２．５ＭＨｚ＝０．００９２＜０．０１（許容誤差：１％）の条件を満たし、正規のボーレートクロックの周波数を越えない最大の周波数のボーレートクロックＢＣＬＫが得られるように、ｍ進／ｍ−１進ダウンカウンタ２の分周比ｍ，ｍ−１を設定する。
【００４４】
具体的には、基準クロックＲＣＬＫを正規のボーレートクロックにまで分周しようとすると、その分周比は１２．５ＭＨｚ／１．８４３２ＭＨｚ＝６．７８１７となる。したがって、ボーレートクロックＢＣＬＫの周波数が正規のボーレートクロックの周波数を越えないように分周するためのｍ進／ｍ−１進ダウンカウンタ２の最大の分周比ｍは“７”となる。このときのボーレートクロックＢＣＬＫの周波数は、１．７８５８ＭＨｚ（＝１２．５ＭＨｚ／７）であり、周期は５６０ｎｓである。したがって、ｍ＝７であるときの正規のボーレートクロックに対するボーレートクロックＢＣＬＫの１周期単位の誤差は、＋１７．５ｎｓ（＝５６０ｎｓ−５４２．５ｎｓ）であり、前述の正サイクル誤差ＰＬＥＲＲとなる。
【００４５】
このようにｍの値が“７”であることにより、ｍ進／ｍ−１進ダウンカウンタ２は７進／６進ダウンカウンタとして機能する。
【００４６】
一方、ｍ進／ｍ−１進ダウンカウンタ２が６進ダウンカウンタとして機能するときのボーレートクロックＢＣＬＫの周波数は、２．０８３３ＭＨｚ（＝１２．５ＭＨｚ／６）であり、周期は４８０ｎｓである。したがって、ｍ＝６であるときの正規のボーレートクロックに対するボーレートクロックＢＣＬＫの１周期単位の誤差は、−６２．５ｎｓ（＝４８０ｎｓ−５４２．５ｎｓ）であり、前述の負サイクル誤差ＭＩＥＲＲとなる。
【００４７】
ここで、累積誤差が負となったり小数点以下の値となったりすることがあると、演算処理が複雑となり、そのための回路構成も複雑となる。これに対し、累積誤差を正の整数となるように変換した上で処理すれば、演算処理を簡素にして回路構成を簡素化することができる。このため、累積誤差の負の最大値を求め、その値を累積誤差に予め加算しておくことにより、負の値を相殺することができる。また、小数点以下の値を含む累積誤差については、小数点以下の値をなくすように正数倍する。
【００４８】
上記の場合、正サイクル誤差ＰＬＥＲＲは、２倍することにより、＋３５（＝＋１７．５×２）と換算され、負サイクル誤差ＭＩＬＥＲＲは、２倍することにより−１２５（＝−６２．５×２）と換算される。
【００４９】
また、ボーレート発生器１では、累積誤差が基準クロックＲＣＬＫの半周期（４０ｎｓ）を越えると、ｍ進／ｍ−１進ダウンカウンタ２の分周比が切り替えられる。これにより、ｍ＝７のときにｍ進／ｍ−１進ダウンカウンタ２からのボーレートクロックＢＣＬＫの累積誤差は５７．５ｎｓ（＝４０ｎｓ＋１７．５ｎｓ）未満となる。また、ｍ＝６のときにｍ進／ｍ−１進ダウンカウンタ２からのボーレートクロックＢＣＬＫの累積誤差の絶対値は２２．５ｎｓ（＝｜４０ｎｓ−６２．５ｎｓ｜）以下となる。したがって、累積誤差の最大値である８０（＝５７．５＋２２．５）は、２倍されることにより１６０に換算される。
【００５０】
また、上限誤差ＵＬＭＴＥＲＲとなる基準クロックＲＣＬＫの半周期は、上記の累積誤差の負の最大値である２２．５を加算して２倍することにより１２５（＝（４０＋２２．５）×２）に換算される。さらに、下限誤差ＬＬＭＴＥＲＲおよびゼロ誤差ＺＥＲＯＥＥＲとなる０は、やはり２２．５を加算して２倍することにより４５（＝（０＋２２．５）×２）に換算される。
【００５１】
上記のように設定されるボーレート発生器１においては、まず、初期段階では、図２に示すように、切替制御信号ＣＹＣＬＥが“０”となる。また、リセット信号ＲＳＴが“０”となり、フリップフロップ２１の出力が０となるので、ＯＲゲート２８の出力が“１”となる。このため、ｍ進／ｍ−１進ダウンカウンタ２では、セレクタ２５がプリセット値ＰＲ１（ｍ−１＝６）を選択し、セレクタ２６は、選択端子Ｓに“１”が入力されることにより、プリセット値ＰＲ１を選択する。これにより、フリップフロップ２１にはプリセット値ＰＲ１として“６”が入力される。
【００５２】
この状態で、入力されたデータである“６”は、フリップフロップ２１において、基準クロックＲＣＬＫの立ち上がりのタイミングで保持され、カウント値ＣＯＵＴとして出力する。カウント値ＣＯＵＴは、減算器２４で１が減じられて“５”となる。
【００５３】
また、リセット信号ＲＳＴが“１”に変化すると、ＯＲゲート２８の出力が“０”となる。これにより、減算器２４の出力は、セレクタ２６を介して出力されると、フリップフロップ２１にて、基準クロックＲＣＬＫの次の立ち上がりのタイミングで保持されて、カウント値ＣＯＵＴとして出力される。さらに、このカウント値ＣＯＵＴは、減算器２４で１が減じられて“４”となり、セレクタ２６を介してフリップフロップ２１に入力される。このような動作を繰り返すことにより、３ビットのカウント値ＣＯＵＴが０（０００）になり、カウントが終了すると、ＮＯＲゲート２２の出力が“１”となるので、Ｄラッチ２３は、基準クロックＲＣＬＫの立ち上がりのタイミングでＮＯＲゲート２２のその出力をラッチする。
【００５４】
また、このとき、リセット信号ＲＳＴが“１”のままであるが、ＮＯＲゲート２２の出力が“１”となるので、ＯＲゲート２８の出力が“１”となることにより、セレクタ２６がプリセット値ＰＲ１を出力する。このようにして、次のサイクルのカウントが開始される。
【００５５】
上記の一連の動作を繰り返すことにより、図２に示すように、期間Ｔ１において、基準クロックＲＣＬＫの７周期毎に１つのパルスを有するボーレートクロックＢＣＬＫが出力される。つまり、このボーレートクロックＢＣＬＫは、基準クロックＲＣＬＫが７分周されたクロックである。このように、ＰＲ１＝６であるとき、ｍ進／ｍ−１進ダウンカウンタ２は７進ダウンカウンタとして動作する。
【００５６】
切替制御信号ＣＹＣＬＥが“０”から“１”に切り替わると、セレクタ２５がプリセット値ＰＲ２（ｍ−２＝５）を選択するので、フリップフロップ２１には、セレクタ２６を介して、プリセット値ＰＲ２として“５”が入力される。これにより、ｍ進／ｍ−１進ダウンカウンタ２では、プリセット値ＰＲ２による上記のカウントと同様にカウント動作が行われ、カウント値ＣＯＵＴが０（０００）になると、ＮＯＲゲート２２の出力がＤラッチ２３でラッチされる。
【００５７】
このようなカウント動作により、図２に示すように、期間Ｔ２において、基準クロックＲＣＬＫの６周期毎に１つのパルスを有するボーレートクロックＢＣＬＫが出力される。つまり、このボーレートクロックＢＣＬＫは、基準クロックＲＣＬＫが６分周されたクロックである。このように、ＰＲ２＝５であるとき、ｍ進／ｍ−１進ダウンカウンタ２は６進ダウンカウンタとして動作する。
【００５８】
このように、ｍ進／ｍ−１進ダウンカウンタ２では、切替制御信号ＣＹＣＬＥが“０”と“１”とで切り替わることにより、分周比が切り替えられる。
【００５９】
また、初期段階では、上記のように、切替制御信号ＣＹＣＬＥが“０”となり、リセット信号ＲＳＴが“０”となる。この状態で、カウンタ切替制御部３では、セレクタ３１が正サイクル誤差ＰＬＥＲＲを選択し、セレクタ３３がゼロ誤差ＺＥＲＯＥＥＲを選択する。また、このとき、ｍ進／ｍ−１進ダウンカウンタ２のＮＯＲゲート２２の出力が“１”となることから、セレクタ３４はセレクタ３３の出力を選択する。
【００６０】
ゼロ誤差ＺＥＲＯＥＥＲは、セレクタ３３，３４を介してフリップフロップ３５に出力され、フリップフロップ３５にて基準クロックＲＣＬＫのタイミングで保持される。フリップフロップ３５で保持されたゼロ誤差ＺＥＲＯＥＥＲは、累積誤差ＡＣＣＵＥＲＲとして、加算器３２、セレクタ３４およびコンパレータ３６に出力される。コンパレータ３６では、この累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲおよび下限誤差ＬＬＭＴＥＲＲと比較される。切替制御信号ＣＹＣＬＥが“０”である場合に累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ未満であるとき、または切替制御信号ＣＹＣＬＥが“１”である場合に累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲ以下であるとき、コンパレータ３６からは比較結果として“０”が出力される。また、切替制御信号ＣＹＣＬＥが“０”である場合に累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上であるとき、または切替制御信号ＣＹＣＬＥが“１”である場合に累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲを越える場合、コンパレータ３６からは比較結果として“１”が出力される。このとき、Ｄラッチ３７からはこれらの比較結果がラッチされる。
【００６１】
リセット信号ＲＳＴが“１”となると、セレクタ３４は、フリップフロップ３５からの累積誤差ＡＣＣＵＥＲＲを出力し続ける。また、加算器３２では、累積誤差ＡＣＣＵＥＲＲと、セレクタ３１から出力される正サイクル誤差ＰＬＥＲＲとが加算され、セレクタ３３を介してセレクタ３４に出力される。
【００６２】
ｍ進／ｍ−１進ダウンカウンタ２のカウント値ＣＯＵＴが０になって、ＮＯＲゲート２２の出力が“０”から“１”に変わると、セレクタ３４がセレクタ３３の出力を選択する。これにより、加算器３２の出力が、フリップフロップ３５で保持されて、累積誤差ＡＣＣＵＥＲＲとして出力される。コンパレータ３６では、この累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲおよび下限誤差ＬＬＭＴＥＲＲと比較される。
【００６３】
セレクタ２５がプリセット値ＰＲ１を選択しているとき、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ未満である場合、コンパレータ３６からは比較結果として“０”が出力されるので、切替制御信号ＣＹＣＬＥが“０”に維持される。これにより、ｍ進／ｍ−１進ダウンカウンタ２では、引き続いて、プリセット値ＰＲ１によるカウント動作が行われる。同様に、セレクタ２５がプリセット値ＰＲ１を選択しているとき、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上である場合、コンパレータ３６からは比較結果として“１”が出力される。このとき、Ｄラッチ３７からはこの比較結果がラッチされ、切替制御信号ＣＹＣＬＥとして出力される。これにより、セレクタ２５がプリセット値ＰＲ１からプリセット値ＰＲ２に切り替える。
【００６４】
一方、切替制御信号ＣＹＣＬＥが“１”となることにより、セレクタ２５がプリセット値ＰＲ２を選択しているとき、累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲを越える場合、切替制御信号ＣＹＣＬＥが“１”に維持される。これにより、ｍ進／ｍ−１進ダウンカウンタ２では、引き続いて、プリセット値ＰＲ２によるカウント動作が行われる。同様に、セレクタ２５がプリセット値ＰＲ２を選択しているとき、累積誤差ＡＣＣＵＥＲＲが、下限誤差ＬＬＭＴＥＲＲ以下である場合、コンパレータ３６からは比較結果として“０”が出力される。このとき、Ｄラッチ３７からはこの比較結果がラッチされ、切替制御信号ＣＹＣＬＥとして出力される。これにより、セレクタ２５がプリセット値ＰＲ２からプリセット値ＰＲ１に切り替える。
【００６５】
このように、ｍ進／ｍ−１進ダウンカウンタ２のカウント値ＣＯＵＴが０になって、ボーレートクロックＢＣＬＫが“１”となるとき、累積誤差ＡＣＣＵＥＲＲと正サイクル誤差ＰＬＥＲＲまたは負サイクル誤差ＭＩＥＲＲとの加算値が、累積誤差ＡＣＣＵＥＲＲとして、コンパレータ３６により、上限誤差ＵＬＭＴＥＲＲまたは下限誤差ＬＬＭＴＥＲＲと比較される。そして、切替制御信号ＣＹＣＬＥが“０”である場合、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上であるときに、切替制御信号ＣＹＣＬＥが“１”となるので、ｍ進／ｍ−１進ダウンカウンタ２の分周比が“ｍ−１”に切り替えられる。また、切替制御信号ＣＹＣＬＥが“１”である場合、累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲ以下であるときに、切替制御信号ＣＹＣＬＥが“０”となるので、ｍ進／ｍ−１進ダウンカウンタ２の分周比が“ｍ”に切り替えられる。これにより、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲおよび下限誤差ＬＬＭＴＥＲＲで定まる範囲を越えて拡大しないように、ボーレートクロックＢＣＬＫの周期が調整される。
【００６６】
このようにして得られるボーレートクロックＢＣＬＫは、正サイクル誤差ＰＬＥＲＲが１クロック毎に累積される期間Ｔ１の部分（第１作動クロック）と、負サイクル誤差ＭＩＥＲＲが１クロック毎に累積される期間Ｔ２の部分（第２作動クロック）とからなる。
【００６７】
ここで、具体的な累積誤差の判定について説明する。
【００６８】
図３は、ボーレート発生器１を備えるＵＡＲＴで図４に示すように、データがボーレートクロックＢＣＬＫでサンプリングされるときのデータの各ビットにおける各周期で生じる累積誤差を示している。初期値であるゼロ誤差ＺＥＲＯＥＥＲとして“４５”がカウンタ切替制御部３に入力されている。
【００６９】
第ｎビットについては、まず、ボーレートクロックＢＣＬＫの第１周期で、“４５”のゼロ誤差ＺＥＲＯＥＥＲと“３５”の正サイクル誤差ＰＬＥＲＲとが加算器３２で加算された“８０”が累積誤差ＡＣＣＵＥＲＲとして得られる。この値は、上限誤差ＵＬＭＴＥＲＲである“１２５”未満の“４５”であるので、累積誤差の調整は行われない（期間Ｔ１）。続くボーレートクロックＢＣＬＫの第２周期では、上記の累積誤差ＡＣＣＵＥＲＲにさらに正サイクル誤差ＰＬＥＲＲ（“３５”）が加算されて“１１５”が累積誤差ＡＣＣＵＥＲＲとして得られる。この値も、上限誤差ＵＬＭＴＥＲＲ未満であるので、累積誤差の調整は行われない（期間Ｔ１）。
【００７０】
さらに、ボーレートクロックＢＣＬＫの第３周期では、上記の累積誤差ＡＣＣＵＥＲＲにさらに正サイクル誤差ＰＬＥＲＲ（“３５”）が加算されて“１５０”が累積誤差ＡＣＣＵＥＲＲとして得られる。この値は、上限誤差ＵＬＭＴＥＲＲ以上であるので、コンパレータ３６の判定によりセレクタ３１の出力が切り替えられて、第４周期では、累積誤差ＡＣＣＵＥＲＲに負サイクル誤差ＭＩＥＲＲである“−１２５”が加算されて、“２５”となる（期間Ｔ２）。
【００７１】
そして、この累積誤差ＡＣＣＵＥＲＲは、下限誤差ＬＬＭＴＥＲＲ以下であるので、コンパレータ３６の判定によりセレクタ３１の出力が切り替えられる。これにより、第５周期では、累積誤差ＡＣＣＵＥＲＲは、正サイクル誤差ＰＬＥＲＲである“３５”が加算されて、“６０”となる（期間Ｔ１）。
【００７２】
以降、このような累積誤差ＡＣＣＵＥＲＲを調整する処理が、第ｎ＋１ビット、第ｎ＋２ビット、第ｎ＋３ビット…の各周期についても同様に行われる。
【００７３】
以上のように、本実施の形態のボーレート発生器１は、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上となるときに、累積誤差ＡＣＣＵＥＲＲが減少するように、また累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲ以下となるときに、累積誤差ＡＣＣＵＥＲＲが増大するように、ｍ進／ｍ−１進ダウンカウンタ２の分周比が切り替えられる。これにより、累積誤差ＡＣＣＵＥＲＲを上限誤差ＵＬＭＴＥＲＲおよび下限誤差ＬＬＭＴＥＲＲで定まる範囲内に収まるように抑制することができる。したがって、専用の発振器を用いたり基準クロックＲＣＬＫを変更したりすることなく、許容誤差の範囲内で所望のボーレートを得ることができる。
【００７４】
この結果、簡素な構成で高精度にボーレートクロックＢＣＬＫの誤差を抑制することができる。よって、分周器を備える装置（ＵＡＲＴ）のコストダウンを図る一方、当該装置（ＵＡＲＴ）の大型化を防止することができる。
【００７５】
これに対し、基準クロックＲＣＬＫを固定の分周比で分周する場合は下記のように、誤差が許容誤差を越えてしまう。例えば、１２．５ＭＨｚの基準クロックを分周してボーレートの１６倍の周波数のサンプリングクロックとして１．８４３２ＭＨｚのクロックを得る場合、１２．５／１．８４３２＝６．７８１７である。この値に最も近い整数である７を分周比とすると、１２．５／７＝１．７８５７であるため、１．７８５７／１．８４３２＝０．９６８８となる。したがって、誤差は｜１−０．９６８８｜＝０．０３１＞０．０１となり、許容誤差より高くなる。
【００７６】
なお、本実施の形態では、分周器としてボーレート発生器１を例示して説明したが、本発明はボーレート発生器１に限らず、用いる周波数に誤差が許される場合には、ボーレート発生器１以外の分周器にも適用が可能である。
【００７７】
また、本実施の形態では、前述のように、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上となるときに、累積誤差ＡＣＣＵＥＲＲが減少するように、また累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲ以下となるときに、累積誤差ＡＣＣＵＥＲＲが増大するように、ｍ進／ｍ−１進ダウンカウンタ２の分周比を切り替えているが、これには限定されない。
【００７８】
例えば、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上となる前に、累積誤差ＡＣＣＵＥＲＲが減少するように、また累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲ以下となる前に、累積誤差ＡＣＣＵＥＲＲが増大するように、ｍ進／ｍ−１進ダウンカウンタ２の分周比を切り替えるようにしてもよい。具体的には、コンパレータ３６が累積誤差ＡＣＣＵＥＲＲと比較する値として、上限誤差ＵＬＭＴＥＲＲよりもやや小さい値と、下限誤差ＬＬＭＴＥＲＲよりもやや大きい値とを用いる。これにより、次に累積誤差ＡＣＣＵＥＲＲに正サイクル誤差ＰＬＥＲＲが加算されると、累積誤差ＡＣＣＵＥＲＲが上限誤差ＵＬＭＴＥＲＲ以上となること、また次に累積誤差ＡＣＣＵＥＲＲに負サイクル誤差ＭＩＥＲＲが加算されると、累積誤差ＡＣＣＵＥＲＲが下限誤差ＬＬＭＴＥＲＲ以下となることを予測して、ｍ進／ｍ−１進ダウンカウンタ２の分周比を切り替える。
【００７９】
さらに、本実施の形態では、累積誤差ＡＣＣＵＥＲＲが誤差ＵＬＭＴＥＲＲ以上または下限誤差ＬＬＭＴＥＲＲ以下となるときに、ボーレートクロックＢＣＬＫ（作動クロック）の期間Ｔ１と期間Ｔ２とを切り替えているが、これに限らず、例えば、第１期間（第１作動クロック）と第２期間（第２作動クロック）とを交互に切り替えてもよい。このような切り替えは、ボーレートクロックＢＣＬＫの期間Ｔ１と正規のボーレートクロックとの差、およびボーレートクロックＢＣＬＫの期間Ｔ２と正規のボーレートクロックとの差がそれぞれ許容範囲内であれば成立する。
【００８０】
また、上記の２つの差のいずれか一方が許容範囲外であっても、当該差と許容範囲内となる他方の差とを足し合わせることで許容範囲内となるのであれば、正規のボーレートクロックとの差が許容範囲となる第１作動クロックまたは第２作動クロックから動作を開始すれば、差は常に許容範囲内に保たれる。したがって、第１作動クロックと第２作動クロックとを交互に用いることができる。
【００８１】
具体的には、ＮＯＲゲート２２の出力が入力されるＴフリップフロップを設けることにより、Ｔフリップフロップから、ＮＯＲゲート２２の出力が“０”から“１”に変化する毎に“１”と“０”とを繰り返す出力が得られるので、この出力をセレクタ２５の選択端子Ｓに与えれば、上記の第１作動クロックと第２作動クロックとの交互切り替えを実現することができる。このような構成では、カウンタ切替制御部３が不要となるので、ボーレート発生器１の構成を簡素化することができる。
【００８２】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【００８３】
本発明の分周器は、基準クロックを分周してサンプリングクロック（ボーレートクロック）を得るカウンタを備え、サンプリングクロックの累積誤差が所定値を超えるときに、累積誤差を減じるようにカウンタの分周比を切り替えるので、サンプリングクロックの誤差を高精度に抑制することができ、シリアル通信の制御に用いられるボーレート発生器に好適に利用できる。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施の一形態を示すボーレート発生器の構成を示すブロック図である。
【図２】上記ボーレート発生器の動作を示すタイミングチャートである。
【図３】上記ボーレート発生器の動作における正規のサンプリングクロックの各周期での累積誤差を示す図である。
【図４】ＵＡＲＴにおけるデータのサンプリング動作を示すタイミングチャートである。
【符号の説明】
【００８５】
１    ボーレート発生器（分周器）
２    ｍ進／ｍ−１進ダウンカウンタ（分周回路）
３    カウンタ切替制御部（作動クロック切替手段）
３２    加算器（加算回路）
３４    フリップフロップ（加算値出力回路）
３６    コンパレータ（制御信号発生回路）
ＣＹＣＬＥ  切替制御信号（制御信号）
ＢＣＬＫ  ボーレートクロック（作動クロック）
ＲＣＬＫ  基準クロック
ＭＩＥＲＲ  負サイクル誤差
ＰＬＥＲＲ  正サイクル誤差
ＡＣＣＵＥＲＲ  累積誤差
ＬＬＭＴＥＲＲ  下限誤差
ＵＬＭＴＥＲＲ  上限誤差
Ｔ１  期間（第１作動クロック）
Ｔ２  期間（第２作動クロック）
【図１】
2010011389.tif 000003
【図２】
2010011389.tif 000004
【図３】
2010011389.tif 000005
【図４】
2010011389.tif 000006