説明

分周器

【課題】専用の発振器を用いないボーレート発生器のように分周する周波数の誤差を許容する分周器を簡素な構成かつ高精度で実現する。
【解決手段】分周器としてのボーレート発生器1は、所定の基準クロックRCLKを分周することにより、データをサンプリングするボーレートクロックBCLKを生成する。このボーレート発生器1は、m進/m−1進ダウンカウンタ2と、カウンタ切替制御部3とを備える。m進/m−1進ダウンカウンタ2は、異なる分周比を切り替えて基準クロックRCLKを分周する。カウンタ切替制御部3は、記ボーレートクロックBCLKの正規のボーレートクロックに対する1周期毎の誤差の累積値が所定範囲を超えると、前記累積値が減少するように、m進/m−1進ダウンカウンタ2の分周比を切り替える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、SIO(Serial Input Output)に用いられるUART(Universal Asynchronous Receiver and Transmitter)が備えるボーレート発生器などに好適に用いられる分周器に関するものである。
【背景技術】
【0002】
コンピュータ装置やコンピュータ機能を有する機器は、他の機器との間でデータ転送を行うために、I/O(入出力)装置を備えている。非同期でシリアル通信を行うI/O装置(SIO)を用いたデータ通信においては、データの送信および受信を正しく行う際に、SIOのボーレートの整合性が重要となる。
【0003】
なお、ボーレートは、従来、モデムを用いた通信での変調速度を意味しているが、現在、シリアル通信でのデータの伝送レートを意味するものとして一般的に用いられている。そこで、ここでも、ボーレートを同様の意味を示すものとして用いる。
【0004】
シリアル通信では、受信側において、正規のボーレートの例えば16倍の周波数を有するサンプリングクロックでデータをサンプリングする。このとき、データの中央でサンプリングするため、サンプリングのタイミングは、サンプリングクロックの8クロックの位置に設定されている。このため、サンプリングクロックを発生するボーレート発生器は、一般に、基になる高い周波数を有する基準クロックをボーレートの16倍の周波数にまで分周してサンプリングクロックを生成する分周器として構成される。
【0005】
また、SIOのボーレートは、通常、SIOが組み込まれているシステムのクロック等を用いて作成することが多いので、そのクロックの周波数によっては、必ずしも正規のボーレートであるとは限らない。この場合、通信の一方側のボーレートが正規のボーレートであれば、通信の他方側のボーレートが許容誤差を含んでいても、問題なく通信することが可能である。逆に、通信の他方側におけるボーレートの誤差が許容値を超えると、正しく通信することができなくなる。
【0006】
しかしながら、実際のサンプリングにおいては、ボーレートの誤差によるサンプリング誤差が生じており、データを1ビットサンプリングする毎にサンプリング誤差が累積していく。その累積誤差が、サンプリング位置(ビットの中央)から50%を超えると、データを正しくサンプリングすることができなくなり、フレーミングエラーやパリティエラーなどの通信エラーが発生する。
【0007】
例えば、1つのスタートビット、8つのデータビット、1つのパリティビットおよび1つのストップビットからなる11ビット長の1キャラクタでは、各ビットが50%の許容誤差の1/11である約±4.5%を越えると上記の通信エラーが生じてしまう。この誤差は、受信側と送信側との双方で生じることを考慮すれば、通信エラーを生じさせないためには、一方側では、その半分である約±2.3%の誤差を越えないようにする必要がある。さらに、通信エラーの発生をより確実に防止するには、この誤差を1%程度に抑えることが好ましい。
【0008】
一般に、正規のボーレートを得るには、基本周波数を変更したり、SIO専用の発振器を設けたりする必要がある。しかしながら、周波数を変更することが困難である場合は、正規のボーレートを得ることができない。また、SIO専用の発振器を設ける場合は、そのためのコストや実装面積を必要とする。しかも、この専用発振器をUARTのLSIに組み込むには、専用発振器のための専用の入力ピンを設ける必要がある。このため、LSIのコストアップやサイズの大型化を招来するという不都合がある。
【0009】
特許文献1には、このような不都合を解消するために、CPUの固定周波数を有するシステムクロックを用いて正規のボーレートの整数倍となるサンプリングクロックを生成し、ボーレートの誤差に応じてデータの各ビットを取り込むときに累積する誤差が所定値を越えるビット位置を検出して、そのビット位置に応じてデータの1キャラクタの長さを増減することが記載されている。このようにして、ビット位置を補正することにより、ボーレートによる誤差で各ビットに累積する誤差を抑制することができる。
【特許文献1】特開2003−78513号公報(2003年3月14日公開)
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、上記従来の構成では、回路構成が複雑になるだけでなく、1キャラクタの長さが12ビット長ではあるが、誤差の許容値を±3%程度としているために、上記の±1%の許容誤差に比べると低い。
【0011】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、専用の発振器を用いないボーレート発生器のように分周する周波数の誤差を許容する分周器を簡素な構成かつ高精度で実現することにある。
【課題を解決するための手段】
【0012】
本発明に係る分周器は、上記の課題を解決するために、正規クロックに対する差を有するとともに前記差が許容範囲内で作動クロックであれば動作する装置に用いられる分周器であって、入力された基準クロックを第1分周比で分周することにより、前記正規クロックに対する正の差を有する第1作動クロックを生成する一方、前記基準クロックを前記第1分周比と異なる第2分周比で分周することにより、前記正規クロックに対する負の差を有する第2作動クロックを生成する分周回路と、前記第1作動クロックおよび前記第2作動クロックのいずれか一方を前記作動クロックとして用いて前記装置を動作させ、1周期毎の前記差の累積値が前記許容範囲を超えたか、または超えると予測されるときに、他方のクロックを前記作動クロックとして用いて、前記累積値が前記許容範囲内に収まるように、前記装置を動作させる作動クロック切替手段とを備えていることを特徴としている。
【0013】
上記の構成では、基準クロックが分周回路によって分周されることにより第1作動クロックまたは第2作動クロックのいずれか一方が得られると、その一方と正規クロックとの周波数差から、1周期毎に差(位相差)が生じる。この差が1周期毎に累積していき、所定値で定まる許容範囲外となると、分周比変更手段によって、その累積値が許容範囲内に収まるように、分周回路から、第1作動クロックまたは第2作動クロックのうちの他方が得られる。
【0014】
これにより、専用の発振器を用いたり基準クロックを変更したりすることなく、許容誤差の範囲内で所望の作動クロックを得ることができる。また、累積誤差が減少するように分周比を切り替えるので、高精度に誤差を抑制することができる。しかも、既知の誤差の累積値が所定値の許容範囲外であることを判定することで第1作動クロックと第2作動クロックとの切り替えを行うので、既存の論理回路の組み合わせなどで簡素に構成することができる。
【0015】
前記の分周器において、前記作動クロック切替は、前記差を加算する加算回路と、当該加算回路による加算値を上記第1作動クロックまたは前記第2作動クロックのパルスが出力される毎に出力する加算値出力回路と、当該加算値出力回路から出力される前記加算値が前記許容範囲を越えたと判定または越えると予測される前記分周比を変更する制御信号を発生する制御信号発生回路とを有していることが好ましい。
【0016】
この構成では、第1作動クロックまたは前記第2作動クロックのパルスが出力されるタイミングを1周期の始まりとして、これを基準に、加算値出力回路が加算回路による加算値、すなわち累積値を出力する。そして、制御信号発生回路によって、この累積値差が許容範囲外であるときには、制御信号が発生する。分周回路では、この制御信号によって、累積値が前記許容範囲内に収まるように、第1分周比と前記第2分周比とが切り替えられる。
【0017】
例えば、前記第1分周比は、m(mは2以上の任意の整数)であり、前記第2分周比はm−1の2つであり、mは、前記作動クロックの周波数が前記正規クロックの周波数を越えないような値に設定されている。
【発明の効果】
【0018】
本発明に係る分周器は、以上のように、入力された基準クロックを第1分周比で分周することにより、前記正規クロックに対する正の差を有する第1作動クロックを生成する一方、前記基準クロックを前記第1分周比と異なる第2分周比で分周することにより、前記正規クロックに対する負の差を有する第2作動クロックを生成する分周回路と、前記第1作動クロックおよび前記第2作動クロックのいずれか一方を前記作動クロックとして用いて前記装置を動作させ、1周期毎の前記差の累積値が前記許容範囲を超えたか、または超えると予測されるときに、他方のクロックを前記作動クロックとして用いて、前記累積値が前記許容範囲内に収まるように、前記装置を動作させる作動クロック切替手段とを備えているので、簡素な構成で高精度に作動クロックの誤差を抑制することができる。したがって、分周器を備える装置のコストダウンを図る一方、当該装置の大型化を防止することができるという効果を奏する。
【発明を実施するための最良の形態】
【0019】
本発明の一実施形態について図1ないし図4に基づいて説明すると、以下の通りである。
【0020】
図1に示すように、本実施の形態に係るボーレート発生器1は、m進/m−1進(7進/6進)ダウンカウンタ2と、カウンタ切替制御部3とを備えている。ボーレート発生器1は、m進/m−1進ダウンカウンタ2が基準クロックRCLKを分周することによって、正規のボーレートクロックに対する差を有するボーレートクロックBCLKを出力する。また、このボーレート発生器1は、前記の差が許容範囲内であるあれば動作するUARTなどの装置に用いられる。
【0021】
m進/m−1進ダウンカウンタ2(mは2以上の任意の整数)は、基準クロックRCLKを分周することにより、ボーレートの16倍の周波数を有するボーレートクロックBCLKを出力する。また、m進/m−1進ダウンカウンタ2は、m進ダウンカウンタの機能(m進ダウンカウント機能)とm−1進ダウンカウンタの機能(m−1進ダウンカウント機能)とを備えたカウンタであり、カウンタ切替制御部3の切替制御によって、両機能を切り替える。
【0022】
このm進/m−1進ダウンカウンタ2は、フリップフロップ21、NORゲート22、Dラッチ23、減算器24、セレクタ25,26、インバータ27およびORゲート28を有している。
【0023】
フリップフロップ21は、3ビットのDフリップフロップである。このフリップフロップ21は、セレクタ26から出力される8ビットのデータを基準クロックRCLKのタイミングで保持して出力する。フリップフロップ21の出力は、m進/m−1進ダウンカウンタ2のカウント値COUTとして得られる。
【0024】
負論理のNORゲート22は、フリップフロップ21の3ビットのカウント値COUTの論理和否定値を出力する。このNORゲート22は、カウント値が0(000)であるときに“1”を出力し、カウント値COUTが0以外であるとき(カウント値COUTのいずれかのビットが“1”であるとき)に“0”を出力する。このように、NORゲート22は、カウント値が0になるときにパルスを出力する。
【0025】
Dラッチ23は、基準クロックRCLKのタイミングでNORゲート22の出力をラッチする。これにより、Dラッチ23は、基準クロックRCLKをフリップフロップ21のプリセット値に応じた分周比で分周して、ボーレートクロックBCLKとして出力する。
【0026】
減算器24は、フリップフロップ21からのカウント値COUTから1を減算する。
【0027】
セレクタ25は、フリップフロップ21のプリセット値PR1,PR2のいずれか一方を選択して出力する。具体的には、セレクタ25は、選択端子Sに“0”が入力されるとプリセット値PR1を選択し、選択端子Sに“1”が入力されるとプリセット値PR2を選択する。プリセット値PR1はm−1であり、プリセット値PR2はm−3である。セレクタ25の選択端子Sには、後述するカウンタ切替制御部3のDラッチ37からの切替制御信号CYCLEが与えられる。
【0028】
セレクタ26は、減算器24からの出力およびセレクタ25の出力のいずれか一方を選択して出力する。セレクタ26は、選択端子Sに“0”が入力されると減算器24の出力を選択し、選択端子Sに“1”が入力されるとセレクタ25の出力を選択する。セレクタ26の選択端子Sには、ORゲート28の出力が与えられる。
【0029】
インバータ27は、リセット時に“0”となり、非リセット時に“1”となるリセット信号RSTを反転する。ORゲート28は、NORゲート22の出力およびインバータ27の出力の論理和を出力する。
【0030】
カウンタ切替制御部3は、m進/m−1進カウンタ2のm進ダウンカウント機能とm−1進ダウンタウンと機能とを切り替えるための切替制御信号CYCLEを生成する回路である。このカウンタ切替制御部3は、セレクタ31、加算器32、セレクタ33,34、フリップフロップ35、コンパレータ36およびDラッチ37を有している。
【0031】
セレクタ31は、正サイクル誤差PLERRおよび負サイクル誤差MIERRのいずれか一方を選択して出力する。具体的には、セレクタ31は、選択端子Sに“0”が入力されると正サイクル誤差PLERRを選択し、選択端子Sに“1”が入力されると負サイクル誤差MIERRを選択する。セレクタ31の選択端子Sには、後述するDラッチ37からの切替制御信号CYCLEが与えられる。
【0032】
正サイクル誤差PLERRは、正規のボーレートクロックに対するボーレートクロックBCLKの1周期における誤差のうち正の誤差(8ビット)である。負サイクル誤差MIERRは、正規のボーレートクロックに対するボーレートクロックBCLKの1周期における誤差のうち負の誤差(8ビット)である。
【0033】
加算器32は、セレクタ31から出力された正サイクル誤差PLERRまたは負サイクル誤差MIERRとフリップフロップ35の出力とを加算する回路である。
【0034】
セレクタ33は、加算器32の出力およびゼロ誤差ZEROEERのいずれか一方を選択して出力する。具体的には、セレクタ33は、選択端子Sに“1”が入力されると加算器32の出力を選択し、選択端子Sに“0”が入力されるとゼロ誤差ZEROEERを選択する。セレクタ33の選択端子Sには、前述のリセット信号RSTが与えられる。
【0035】
ゼロ誤差ZEROEERは、誤差の初期値(8ビット)である。この初期値としては0が与えられる。
【0036】
セレクタ34は、フリップフロップ35の出力およびセレクタ33の出力のいずれか一方を選択して出力する。具体的には、セレクタ34は、選択端子Sに“0”が入力されるとフリップフロップ35の出力を選択し、選択端子Sに“1”が入力されるとセレクタ33の出力を選択する。セレクタ34の選択端子Sには、前述のNORゲート22の出力Tが与えられる。
【0037】
フリップフロップ35は、セレクタ34から出力されるフリップフロップ35の出力またはセレクタ33の出力を基準クロックのタイミングで保持して出力する8ビットのDフリップフロップである。フリップフロップ35は、前述の正サイクル誤差PLERRまたは負サイクル誤差MIERRの累積値として累積誤差ACCUERRを出力する。
【0038】
コンパレータ36は、上記の累積誤差ACCUERRと、誤差の上限値(所定値)である上限誤差ULMTERRおよび誤差の下限値(所定値)である下限誤差LLMTERRとを比較する。このコンパレータ36は、Dラッチ37から出力される切替制御信号CYCLEが“0”である場合に、累積誤差ACCUERRと上限誤差ULMTERRとの比較の結果、累積誤差ACCUERRが上限誤差ULMTERR未満であるときCR端子から“0”を比較結果として出力し、累積誤差ACCUERRが上限誤差ULMTERR以上であるときCR端子から“1”を比較結果として出力する。上限誤差ULMTERRは、例えば基準クロックRCLKの半周期に設定される。また、コンパレータ36は、切替制御信号CYCLEが“1”である場合に、累積誤差ACCUERRと下限誤差LLMTERRとの比較の結果、累積誤差ACCUERRが下限誤差LLMTERRを越えるときCR端子から“1”を比較結果として出力し、累積誤差ACCUERRが下限誤差LLMTERR以下であるときCR端子から“0”を比較結果として出力する。下限誤差LLMTERRは、例えば0に設定される。
【0039】
Dラッチ37は、コンパレータ36から出力された“1”または“0”の比較結果を基準クロックRCLKのタイミングでラッチして、切替制御信号CYCLEとして出力する。また、Dラッチ37は、前述のリセット信号RSTが“0”となるときにリセットされる。
【0040】
続いて、上記のように構成されるボーレート発生器1の動作を説明する。
【0041】
まず、ここでは、以下のような設定を前提として説明する。
【0042】
基準クロックRCLKの周波数は12.5MHz(周期:80ns)である。また、正規のボーレートは115.2kbaud(周期:8.68μs)であり、この正規のボーレートの16倍のクロック、すなわち正規のボーレートクロックは1.8432MHz(周期:542.5ns)である。
【0043】
また、正規ボーレート周波数/基準クロックRCLK=115.2kHz/12.5MHz=0.0092<0.01(許容誤差:1%)の条件を満たし、正規のボーレートクロックの周波数を越えない最大の周波数のボーレートクロックBCLKが得られるように、m進/m−1進ダウンカウンタ2の分周比m,m−1を設定する。
【0044】
具体的には、基準クロックRCLKを正規のボーレートクロックにまで分周しようとすると、その分周比は12.5MHz/1.8432MHz=6.7817となる。したがって、ボーレートクロックBCLKの周波数が正規のボーレートクロックの周波数を越えないように分周するためのm進/m−1進ダウンカウンタ2の最大の分周比mは“7”となる。このときのボーレートクロックBCLKの周波数は、1.7858MHz(=12.5MHz/7)であり、周期は560nsである。したがって、m=7であるときの正規のボーレートクロックに対するボーレートクロックBCLKの1周期単位の誤差は、+17.5ns(=560ns−542.5ns)であり、前述の正サイクル誤差PLERRとなる。
【0045】
このようにmの値が“7”であることにより、m進/m−1進ダウンカウンタ2は7進/6進ダウンカウンタとして機能する。
【0046】
一方、m進/m−1進ダウンカウンタ2が6進ダウンカウンタとして機能するときのボーレートクロックBCLKの周波数は、2.0833MHz(=12.5MHz/6)であり、周期は480nsである。したがって、m=6であるときの正規のボーレートクロックに対するボーレートクロックBCLKの1周期単位の誤差は、−62.5ns(=480ns−542.5ns)であり、前述の負サイクル誤差MIERRとなる。
【0047】
ここで、累積誤差が負となったり小数点以下の値となったりすることがあると、演算処理が複雑となり、そのための回路構成も複雑となる。これに対し、累積誤差を正の整数となるように変換した上で処理すれば、演算処理を簡素にして回路構成を簡素化することができる。このため、累積誤差の負の最大値を求め、その値を累積誤差に予め加算しておくことにより、負の値を相殺することができる。また、小数点以下の値を含む累積誤差については、小数点以下の値をなくすように正数倍する。
【0048】
上記の場合、正サイクル誤差PLERRは、2倍することにより、+35(=+17.5×2)と換算され、負サイクル誤差MILERRは、2倍することにより−125(=−62.5×2)と換算される。
【0049】
また、ボーレート発生器1では、累積誤差が基準クロックRCLKの半周期(40ns)を越えると、m進/m−1進ダウンカウンタ2の分周比が切り替えられる。これにより、m=7のときにm進/m−1進ダウンカウンタ2からのボーレートクロックBCLKの累積誤差は57.5ns(=40ns+17.5ns)未満となる。また、m=6のときにm進/m−1進ダウンカウンタ2からのボーレートクロックBCLKの累積誤差の絶対値は22.5ns(=|40ns−62.5ns|)以下となる。したがって、累積誤差の最大値である80(=57.5+22.5)は、2倍されることにより160に換算される。
【0050】
また、上限誤差ULMTERRとなる基準クロックRCLKの半周期は、上記の累積誤差の負の最大値である22.5を加算して2倍することにより125(=(40+22.5)×2)に換算される。さらに、下限誤差LLMTERRおよびゼロ誤差ZEROEERとなる0は、やはり22.5を加算して2倍することにより45(=(0+22.5)×2)に換算される。
【0051】
上記のように設定されるボーレート発生器1においては、まず、初期段階では、図2に示すように、切替制御信号CYCLEが“0”となる。また、リセット信号RSTが“0”となり、フリップフロップ21の出力が0となるので、ORゲート28の出力が“1”となる。このため、m進/m−1進ダウンカウンタ2では、セレクタ25がプリセット値PR1(m−1=6)を選択し、セレクタ26は、選択端子Sに“1”が入力されることにより、プリセット値PR1を選択する。これにより、フリップフロップ21にはプリセット値PR1として“6”が入力される。
【0052】
この状態で、入力されたデータである“6”は、フリップフロップ21において、基準クロックRCLKの立ち上がりのタイミングで保持され、カウント値COUTとして出力する。カウント値COUTは、減算器24で1が減じられて“5”となる。
【0053】
また、リセット信号RSTが“1”に変化すると、ORゲート28の出力が“0”となる。これにより、減算器24の出力は、セレクタ26を介して出力されると、フリップフロップ21にて、基準クロックRCLKの次の立ち上がりのタイミングで保持されて、カウント値COUTとして出力される。さらに、このカウント値COUTは、減算器24で1が減じられて“4”となり、セレクタ26を介してフリップフロップ21に入力される。このような動作を繰り返すことにより、3ビットのカウント値COUTが0(000)になり、カウントが終了すると、NORゲート22の出力が“1”となるので、Dラッチ23は、基準クロックRCLKの立ち上がりのタイミングでNORゲート22のその出力をラッチする。
【0054】
また、このとき、リセット信号RSTが“1”のままであるが、NORゲート22の出力が“1”となるので、ORゲート28の出力が“1”となることにより、セレクタ26がプリセット値PR1を出力する。このようにして、次のサイクルのカウントが開始される。
【0055】
上記の一連の動作を繰り返すことにより、図2に示すように、期間T1において、基準クロックRCLKの7周期毎に1つのパルスを有するボーレートクロックBCLKが出力される。つまり、このボーレートクロックBCLKは、基準クロックRCLKが7分周されたクロックである。このように、PR1=6であるとき、m進/m−1進ダウンカウンタ2は7進ダウンカウンタとして動作する。
【0056】
切替制御信号CYCLEが“0”から“1”に切り替わると、セレクタ25がプリセット値PR2(m−2=5)を選択するので、フリップフロップ21には、セレクタ26を介して、プリセット値PR2として“5”が入力される。これにより、m進/m−1進ダウンカウンタ2では、プリセット値PR2による上記のカウントと同様にカウント動作が行われ、カウント値COUTが0(000)になると、NORゲート22の出力がDラッチ23でラッチされる。
【0057】
このようなカウント動作により、図2に示すように、期間T2において、基準クロックRCLKの6周期毎に1つのパルスを有するボーレートクロックBCLKが出力される。つまり、このボーレートクロックBCLKは、基準クロックRCLKが6分周されたクロックである。このように、PR2=5であるとき、m進/m−1進ダウンカウンタ2は6進ダウンカウンタとして動作する。
【0058】
このように、m進/m−1進ダウンカウンタ2では、切替制御信号CYCLEが“0”と“1”とで切り替わることにより、分周比が切り替えられる。
【0059】
また、初期段階では、上記のように、切替制御信号CYCLEが“0”となり、リセット信号RSTが“0”となる。この状態で、カウンタ切替制御部3では、セレクタ31が正サイクル誤差PLERRを選択し、セレクタ33がゼロ誤差ZEROEERを選択する。また、このとき、m進/m−1進ダウンカウンタ2のNORゲート22の出力が“1”となることから、セレクタ34はセレクタ33の出力を選択する。
【0060】
ゼロ誤差ZEROEERは、セレクタ33,34を介してフリップフロップ35に出力され、フリップフロップ35にて基準クロックRCLKのタイミングで保持される。フリップフロップ35で保持されたゼロ誤差ZEROEERは、累積誤差ACCUERRとして、加算器32、セレクタ34およびコンパレータ36に出力される。コンパレータ36では、この累積誤差ACCUERRが上限誤差ULMTERRおよび下限誤差LLMTERRと比較される。切替制御信号CYCLEが“0”である場合に累積誤差ACCUERRが上限誤差ULMTERR未満であるとき、または切替制御信号CYCLEが“1”である場合に累積誤差ACCUERRが下限誤差LLMTERR以下であるとき、コンパレータ36からは比較結果として“0”が出力される。また、切替制御信号CYCLEが“0”である場合に累積誤差ACCUERRが上限誤差ULMTERR以上であるとき、または切替制御信号CYCLEが“1”である場合に累積誤差ACCUERRが下限誤差LLMTERRを越える場合、コンパレータ36からは比較結果として“1”が出力される。このとき、Dラッチ37からはこれらの比較結果がラッチされる。
【0061】
リセット信号RSTが“1”となると、セレクタ34は、フリップフロップ35からの累積誤差ACCUERRを出力し続ける。また、加算器32では、累積誤差ACCUERRと、セレクタ31から出力される正サイクル誤差PLERRとが加算され、セレクタ33を介してセレクタ34に出力される。
【0062】
m進/m−1進ダウンカウンタ2のカウント値COUTが0になって、NORゲート22の出力が“0”から“1”に変わると、セレクタ34がセレクタ33の出力を選択する。これにより、加算器32の出力が、フリップフロップ35で保持されて、累積誤差ACCUERRとして出力される。コンパレータ36では、この累積誤差ACCUERRが上限誤差ULMTERRおよび下限誤差LLMTERRと比較される。
【0063】
セレクタ25がプリセット値PR1を選択しているとき、累積誤差ACCUERRが上限誤差ULMTERR未満である場合、コンパレータ36からは比較結果として“0”が出力されるので、切替制御信号CYCLEが“0”に維持される。これにより、m進/m−1進ダウンカウンタ2では、引き続いて、プリセット値PR1によるカウント動作が行われる。同様に、セレクタ25がプリセット値PR1を選択しているとき、累積誤差ACCUERRが上限誤差ULMTERR以上である場合、コンパレータ36からは比較結果として“1”が出力される。このとき、Dラッチ37からはこの比較結果がラッチされ、切替制御信号CYCLEとして出力される。これにより、セレクタ25がプリセット値PR1からプリセット値PR2に切り替える。
【0064】
一方、切替制御信号CYCLEが“1”となることにより、セレクタ25がプリセット値PR2を選択しているとき、累積誤差ACCUERRが下限誤差LLMTERRを越える場合、切替制御信号CYCLEが“1”に維持される。これにより、m進/m−1進ダウンカウンタ2では、引き続いて、プリセット値PR2によるカウント動作が行われる。同様に、セレクタ25がプリセット値PR2を選択しているとき、累積誤差ACCUERRが、下限誤差LLMTERR以下である場合、コンパレータ36からは比較結果として“0”が出力される。このとき、Dラッチ37からはこの比較結果がラッチされ、切替制御信号CYCLEとして出力される。これにより、セレクタ25がプリセット値PR2からプリセット値PR1に切り替える。
【0065】
このように、m進/m−1進ダウンカウンタ2のカウント値COUTが0になって、ボーレートクロックBCLKが“1”となるとき、累積誤差ACCUERRと正サイクル誤差PLERRまたは負サイクル誤差MIERRとの加算値が、累積誤差ACCUERRとして、コンパレータ36により、上限誤差ULMTERRまたは下限誤差LLMTERRと比較される。そして、切替制御信号CYCLEが“0”である場合、累積誤差ACCUERRが上限誤差ULMTERR以上であるときに、切替制御信号CYCLEが“1”となるので、m進/m−1進ダウンカウンタ2の分周比が“m−1”に切り替えられる。また、切替制御信号CYCLEが“1”である場合、累積誤差ACCUERRが下限誤差LLMTERR以下であるときに、切替制御信号CYCLEが“0”となるので、m進/m−1進ダウンカウンタ2の分周比が“m”に切り替えられる。これにより、累積誤差ACCUERRが上限誤差ULMTERRおよび下限誤差LLMTERRで定まる範囲を越えて拡大しないように、ボーレートクロックBCLKの周期が調整される。
【0066】
このようにして得られるボーレートクロックBCLKは、正サイクル誤差PLERRが1クロック毎に累積される期間T1の部分(第1作動クロック)と、負サイクル誤差MIERRが1クロック毎に累積される期間T2の部分(第2作動クロック)とからなる。
【0067】
ここで、具体的な累積誤差の判定について説明する。
【0068】
図3は、ボーレート発生器1を備えるUARTで図4に示すように、データがボーレートクロックBCLKでサンプリングされるときのデータの各ビットにおける各周期で生じる累積誤差を示している。初期値であるゼロ誤差ZEROEERとして“45”がカウンタ切替制御部3に入力されている。
【0069】
第nビットについては、まず、ボーレートクロックBCLKの第1周期で、“45”のゼロ誤差ZEROEERと“35”の正サイクル誤差PLERRとが加算器32で加算された“80”が累積誤差ACCUERRとして得られる。この値は、上限誤差ULMTERRである“125”未満の“45”であるので、累積誤差の調整は行われない(期間T1)。続くボーレートクロックBCLKの第2周期では、上記の累積誤差ACCUERRにさらに正サイクル誤差PLERR(“35”)が加算されて“115”が累積誤差ACCUERRとして得られる。この値も、上限誤差ULMTERR未満であるので、累積誤差の調整は行われない(期間T1)。
【0070】
さらに、ボーレートクロックBCLKの第3周期では、上記の累積誤差ACCUERRにさらに正サイクル誤差PLERR(“35”)が加算されて“150”が累積誤差ACCUERRとして得られる。この値は、上限誤差ULMTERR以上であるので、コンパレータ36の判定によりセレクタ31の出力が切り替えられて、第4周期では、累積誤差ACCUERRに負サイクル誤差MIERRである“−125”が加算されて、“25”となる(期間T2)。
【0071】
そして、この累積誤差ACCUERRは、下限誤差LLMTERR以下であるので、コンパレータ36の判定によりセレクタ31の出力が切り替えられる。これにより、第5周期では、累積誤差ACCUERRは、正サイクル誤差PLERRである“35”が加算されて、“60”となる(期間T1)。
【0072】
以降、このような累積誤差ACCUERRを調整する処理が、第n+1ビット、第n+2ビット、第n+3ビット…の各周期についても同様に行われる。
【0073】
以上のように、本実施の形態のボーレート発生器1は、累積誤差ACCUERRが上限誤差ULMTERR以上となるときに、累積誤差ACCUERRが減少するように、また累積誤差ACCUERRが下限誤差LLMTERR以下となるときに、累積誤差ACCUERRが増大するように、m進/m−1進ダウンカウンタ2の分周比が切り替えられる。これにより、累積誤差ACCUERRを上限誤差ULMTERRおよび下限誤差LLMTERRで定まる範囲内に収まるように抑制することができる。したがって、専用の発振器を用いたり基準クロックRCLKを変更したりすることなく、許容誤差の範囲内で所望のボーレートを得ることができる。
【0074】
この結果、簡素な構成で高精度にボーレートクロックBCLKの誤差を抑制することができる。よって、分周器を備える装置(UART)のコストダウンを図る一方、当該装置(UART)の大型化を防止することができる。
【0075】
これに対し、基準クロックRCLKを固定の分周比で分周する場合は下記のように、誤差が許容誤差を越えてしまう。例えば、12.5MHzの基準クロックを分周してボーレートの16倍の周波数のサンプリングクロックとして1.8432MHzのクロックを得る場合、12.5/1.8432=6.7817である。この値に最も近い整数である7を分周比とすると、12.5/7=1.7857であるため、1.7857/1.8432=0.9688となる。したがって、誤差は|1−0.9688|=0.031>0.01となり、許容誤差より高くなる。
【0076】
なお、本実施の形態では、分周器としてボーレート発生器1を例示して説明したが、本発明はボーレート発生器1に限らず、用いる周波数に誤差が許される場合には、ボーレート発生器1以外の分周器にも適用が可能である。
【0077】
また、本実施の形態では、前述のように、累積誤差ACCUERRが上限誤差ULMTERR以上となるときに、累積誤差ACCUERRが減少するように、また累積誤差ACCUERRが下限誤差LLMTERR以下となるときに、累積誤差ACCUERRが増大するように、m進/m−1進ダウンカウンタ2の分周比を切り替えているが、これには限定されない。
【0078】
例えば、累積誤差ACCUERRが上限誤差ULMTERR以上となる前に、累積誤差ACCUERRが減少するように、また累積誤差ACCUERRが下限誤差LLMTERR以下となる前に、累積誤差ACCUERRが増大するように、m進/m−1進ダウンカウンタ2の分周比を切り替えるようにしてもよい。具体的には、コンパレータ36が累積誤差ACCUERRと比較する値として、上限誤差ULMTERRよりもやや小さい値と、下限誤差LLMTERRよりもやや大きい値とを用いる。これにより、次に累積誤差ACCUERRに正サイクル誤差PLERRが加算されると、累積誤差ACCUERRが上限誤差ULMTERR以上となること、また次に累積誤差ACCUERRに負サイクル誤差MIERRが加算されると、累積誤差ACCUERRが下限誤差LLMTERR以下となることを予測して、m進/m−1進ダウンカウンタ2の分周比を切り替える。
【0079】
さらに、本実施の形態では、累積誤差ACCUERRが誤差ULMTERR以上または下限誤差LLMTERR以下となるときに、ボーレートクロックBCLK(作動クロック)の期間T1と期間T2とを切り替えているが、これに限らず、例えば、第1期間(第1作動クロック)と第2期間(第2作動クロック)とを交互に切り替えてもよい。このような切り替えは、ボーレートクロックBCLKの期間T1と正規のボーレートクロックとの差、およびボーレートクロックBCLKの期間T2と正規のボーレートクロックとの差がそれぞれ許容範囲内であれば成立する。
【0080】
また、上記の2つの差のいずれか一方が許容範囲外であっても、当該差と許容範囲内となる他方の差とを足し合わせることで許容範囲内となるのであれば、正規のボーレートクロックとの差が許容範囲となる第1作動クロックまたは第2作動クロックから動作を開始すれば、差は常に許容範囲内に保たれる。したがって、第1作動クロックと第2作動クロックとを交互に用いることができる。
【0081】
具体的には、NORゲート22の出力が入力されるTフリップフロップを設けることにより、Tフリップフロップから、NORゲート22の出力が“0”から“1”に変化する毎に“1”と“0”とを繰り返す出力が得られるので、この出力をセレクタ25の選択端子Sに与えれば、上記の第1作動クロックと第2作動クロックとの交互切り替えを実現することができる。このような構成では、カウンタ切替制御部3が不要となるので、ボーレート発生器1の構成を簡素化することができる。
【0082】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【0083】
本発明の分周器は、基準クロックを分周してサンプリングクロック(ボーレートクロック)を得るカウンタを備え、サンプリングクロックの累積誤差が所定値を超えるときに、累積誤差を減じるようにカウンタの分周比を切り替えるので、サンプリングクロックの誤差を高精度に抑制することができ、シリアル通信の制御に用いられるボーレート発生器に好適に利用できる。
【図面の簡単な説明】
【0084】
【図1】本発明の実施の一形態を示すボーレート発生器の構成を示すブロック図である。
【図2】上記ボーレート発生器の動作を示すタイミングチャートである。
【図3】上記ボーレート発生器の動作における正規のサンプリングクロックの各周期での累積誤差を示す図である。
【図4】UARTにおけるデータのサンプリング動作を示すタイミングチャートである。
【符号の説明】
【0085】
1 ボーレート発生器(分周器)
2 m進/m−1進ダウンカウンタ(分周回路)
3 カウンタ切替制御部(作動クロック切替手段)
32 加算器(加算回路)
34 フリップフロップ(加算値出力回路)
36 コンパレータ(制御信号発生回路)
CYCLE 切替制御信号(制御信号)
BCLK ボーレートクロック(作動クロック)
RCLK 基準クロック
MIERR 負サイクル誤差
PLERR 正サイクル誤差
ACCUERR 累積誤差
LLMTERR 下限誤差
ULMTERR 上限誤差
T1 期間(第1作動クロック)
T2 期間(第2作動クロック)

【特許請求の範囲】
【請求項1】
正規クロックに対する差を有するとともに前記差が許容範囲内である作動クロックで動作する装置に用いられる分周器であって、
入力された基準クロックを第1分周比で分周することにより、前記正規クロックに対する正の差を有する第1作動クロックを生成する一方、前記基準クロックを前記第1分周比と異なる第2分周比で分周することにより、前記正規クロックに対する負の差を有する第2作動クロックを生成する分周回路と、
前記第1作動クロックおよび前記第2作動クロックのいずれか一方を前記作動クロックとして用いて前記装置を動作させ、1周期毎の前記差の累積値が前記許容範囲を超えたか、または超えると予測されるときに、他方のクロックを前記作動クロックとして用いて、前記累積値が前記許容範囲内に収まるように、前記装置を動作させる作動クロック切替手段とを備えていることを特徴とする分周器。
【請求項2】
前記作動クロック切替手段は、
前記差を加算する加算回路と、
当該加算回路による加算値を前記第1作動クロックまたは前記第2作動クロックのパルスが出力される毎に出力する加算値出力回路と、
当該加算値出力回路から出力される前記加算値が前記許容範囲を越えたと判定または越えると予測されると前記第1分周比と前記第2分周比とを切り替える制御信号を発生する制御信号発生回路とを備えていることを特徴とする請求項1記載の分周器。
【請求項3】
前記第1分周比がm(mは2以上の任意の整数)であり、前記第2分周比がm−1であることを特徴とする請求項1または2記載の分周器。
【請求項4】
mは、前記作動クロックの周波数が前記正規クロックの周波数を越えないような値に設定されていることを特徴とする請求項3記載の分周器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2010−11389(P2010−11389A)
【公開日】平成22年1月14日(2010.1.14)
【国際特許分類】
【出願番号】特願2008−171403(P2008−171403)
【出願日】平成20年6月30日(2008.6.30)
【出願人】(000134109)株式会社デジタル (224)
【Fターム(参考)】