説明

分周装置および制御回路

【課題】本発明は、周期が変化する入力パルス列を分周し、分周したパルス列のジッタをできるだけ抑制することにある。
【解決手段】分周装置1は、第1変数および第2変数が互いに異なる正の整数をとり、第1変数に対する第2変数の比で表わされる分周比で入力パルスを分周可能な分周装置であって、入力パルスの周期にわたって、一定の周波数を持つ基準クロックをカウントするカウンタ回路(12)と、カウンタ回路によって得られた第1カウント値を第1変数が示す値に分割する演算を行うと共に、基準クロックのカウントを開始し、当該カウントによる第2カウント値が第1カウント値を分割した値に達する度に、一のパルスを出力する演算出力回路(13、14)と、演算出力回路の出力パルス列を第2変数が示す値で分周したパルスを出力する分周回路(15)と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力パルス列を分周する分周装置に関するものである。更に、本発明は、その分周装置を搭載した制御回路に関するものである。
【背景技術】
【0002】
ハードウェアで構成された、一般的な分周装置は、入力パルスをn分周する場合には、たとえば、n進カウンタを使用する(たとえば、特許文献1,2)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−64995号公報
【特許文献2】特開2006−230017号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1,2が開示する分周装置によれば、入力パルス列の周期が一定の場合には、分周後のパルス列のジッタを抑制することができる。
しかしながら、たとえば、サーボモータのように、その回転数を不規則な周期で制御する場合には、分周すべき入力パルス列の周期も不規則に変化する。
【0005】
したがって、特許文献1,2が開示する分周装置では、入力パルス列の周期が不規則に変化すると、同期型のカウンタでは、その周期に合せてパルスを出力することが困難となる。
【0006】
そこで、周期が変化する入力パルス列を分周し、分周したパルス列のジッタをできるだけ抑制することができる分周装置が望まれている。更に、そのような分周装置を搭載した制御回路を用いて、制御対象を精度よく制御することが望まれている。
【0007】
本発明は、周期が変化する入力パルス列を分周し、分周したパルス列のジッタをできるだけ抑制することができる分周装置を提供することにある。
更に、本発明は、そのような分周装置を搭載した制御回路を用いて、制御対象を精度よく制御することにある。
【課題を解決するための手段】
【0008】
本発明の分周装置は、第1変数および第2変数が互いに異なる正の整数をとり、前記第1変数に対する前記第2変数の比で表わされる分周比で入力パルスを分周可能な分周装置であって、前記入力パルスの周期にわたって、一定の周波数を持つ基準クロックをカウントするカウンタ回路と、前記カウンタ回路によって得られた第1カウント値を前記第1変数が示す値に分割する演算を行うと共に、前記基準クロックのカウントを開始し、当該カウントによる第2カウント値が前記第1カウント値を分割した値に達する度に、一のパルスを出力する演算出力回路と、前記演算出力回路の出力パルス列を前記第2変数が示す値で分周したパルスを出力する分周回路と、を有する。
【0009】
本発明の制御回路は、第1変数および第2変数が互いに異なる正の整数をとり、前記第1変数に対する前記第2変数の比で表わされる分周比で入力パルスを分周可能な分周装置を有し、前記分周装置の出力を用いる制御回路であって、前記分周装置は、前記入力パルスの周期にわたって、一定の周波数を持つ基準クロックをカウントするカウンタ回路と、前記カウンタ回路によって得られた第1カウント値を前記第1変数が示す値に分割する演算を行うと共に、前記基準クロックのカウントを開始し、当該カウントによる第2カウント値が前記第1カウント値を分割した値に達する度に、一のパルスを出力する演算出力回路と、前記演算出力回路の出力パルス列を前記第2変数が示す値で分周したパルスを出力する分周回路と、を有する。
【発明の効果】
【0010】
本発明によれば、周期が変化する入力パルス列を分周し、分周したパルス列のジッタをできるだけ抑制することができる分周装置を提供することができる。
更に、本発明は、そのような分周装置を搭載した制御回路を用いて、制御対象を精度よく制御することができる。
【図面の簡単な説明】
【0011】
【図1】図1は、本発明の第1実施形態に係る分周装置の構成例を示すブロック図である。
【図2】図2(A)〜(E)は、本発明の第1実施形態に係る分周装置の動作の概要を説明するためのタイミングチャートである。
【図3】図3は、本発明の第1実施形態に係る演算回路の動作例を示すフローチャートである。
【図4】図4(A)〜(D)は、本発明の第1実施形態に係る分周装置1の動作例を示すタイミングチャートである。
【図5】図5(A)〜(D)は、本発明の第1実施形態に係る分周装置の動作例を示すタイミングチャートである。
【図6】図6は、一般的なソフトウェアで構成された分周装置Aの構成例を示すブロック図である。
【図7】図7は、図6に図示する分離演算部A8の演算結果を説明するための図である。
【図8】図8は、第2実施形態に係るサーボモータの制御系の構成例を示すブロック図である。
【図9】図9は、本発明の変形例に係る分周装置の構成例を示すブロック図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態を図面に関連付けて説明する。
【0013】
[第1実施形態]
図1は、本発明の第1実施形態に係る分周装置の構成例を示すブロック図である。
図1に図示する分周装置1は、基準クロック発生回路11、パルス周期計測回路12、演算回路13、パルス出力回路14、分周回路15、第1指示回路16、および、第2指示回路17を有する。
【0014】
ここで、本実施形態の構成要素と本発明の構成要素との対応関係を説明する。
本発明に係るカウンタ回路および計測回路は、パルス周期計測回路12に対応する。
本発明に係る演算出力回路は、演算回路13およびパルス出力回路14に対応する。
本発明に係るクロック発生回路は、基準クロック発生回路11に対応する。
本発明に係る第1変数は、変数nに対応する。本発明に係る第2変数は、変数mに対応する。
本発明に係る第1カウント値は、カウント値CNTに対応する。本発明に係る第2カウント値は、カウント値DCNTに対応する。本発明に係る第3カウント値は、分周回路15のカウント値に対応する。
【0015】
分周装置1は、入力パルス列CLKを、分周比R=m/nで分周する機能を有する。
なお、変数mおよび変数nは、互いに異なる正の整数である。パルス列を分周比R=m/nで分周することを、単に「m/n分周」とも言う。パルス列を変数m、nで分周することを、単に「m分周、n分周」とも言う。
【0016】
本実施形態では、分周装置1は、減算器、除算器、カウンタ、フリップフロップ等を用いたハードウェアによって構成され、各構成要素が持つ機能は、たとえば、HDL(Hardware Description Language;ハードウェア記述言語)を用いて設計される。
【0017】
初めに、分周装置1の動作の概要を、図2(A)〜(E)に関連づけて説明する。
図2(A)〜(E)は、本発明の第1実施形態に係る分周装置の動作の概要を説明するためのタイミングチャートである。図2(A)〜(E)は、1周期Tの入力パルス(列)CLK、基準クロックBCLK、(ダウンカウントの)カウント値DCNT、パルス列CLK(1/n)、パルス列CLK(m/n)を各々示す。
なお、図2(A)に図示する入力パルスCLKは、デューティー比が50%である。図2(D)に図示するパルス列CLK(1/n)は、入力パルスCLKをn分周したものである。図2(E)に図示するパルス列CLK(m/n)は、n分周したパルス列CLK(1/n)を更にm分周したものである。
実際には、パルス列CLK(1/n)およびパルス列CLK(m/n)は、時分割で求められるが、説明を明確にするため、各図には、各パルス列が同一の時系列で図示されている。
【0018】
以下、分周装置1が、1周期分のパルスCLKを分周比R=m/n=16/3で分周する場合を例に挙げて説明する。一例として、入力パルス列CLKの周波数F1がF1=1MHzであるものとし、分周装置1には、100μs当たり、100個のパルスCLKが入力されるものと仮定する。
【0019】
基本的に、パルスCLKをm/n分周する場合には、パルスCLKをn分周し、これを更にm分周すればよい。
しかしながら、たとえば、分周比RがR=16/3≒5.33…のような循環小数の場合には、分周比RがR=3/2=1.5のような場合に比べて、分周後のパルス列にジッタが発生しやすい。
そこで、分周装置1は、次のように、入力パルスCLKを16/3分周する。
【0020】
(1)入力パルスCLKのn分周
先ず、分周装置1が、図2(A)に図示する入力パルスCLKを、n=3分周し、図2(D)に図示するパルス列CLK(1/n)を求める過程を説明する。
【0021】
分周装置1は、入力パルス列CLKの周波数F1よりも高い周波数F2を持つ基準クロックBCLKが、入力パルス列CLKの1周期Tにわたって、何個あるかをカウントする。
図2(B)に図示する基準クロックBCLKは、分周装置1が発生させているものであり、その周波数F2は、たとえば、F2=80MHzであるものと仮定する。分周装置1には、100μs当たり、100個のパルス列CLKが入力されるものと仮定しているため、下記の(1)式により、周期T当たり、80個(=k)の基準クロックBCLKが存在することになる。この場合、基準クロックBCLKをカウントしたときのカウント値CNTは、CNT=80となる。
【0022】
(数1)
CNT=(1/1MHz)/(1/80MHz)
=(100μs/100(個))/(1/80MHz)
=80(個) …(1)
【0023】
次に、分周装置1は、基準クロックBCLKを用いて、入力パルスCLKを3分周する。その際に、分周装置1は、カウント値CNT=80を分周比R=n=3で除算する。これは、k=80個の基準クロックBCLKを3つに分割することを表わす。
カウント値CNT=80を分周比R=n=3で除算すると、除算結果は、80/3=26.6…となる。この除算は、たとえば、カウンタを用いて行われるが、これは、小数部分「0.6…」を求めることはできず、整数部分「26」しか求めることができない。
そのため、k=80個の基準クロックBCLKを単純にn=3つに分割しようとすると、それが26個×3に分割され、2個の基準クロックBCLKが余る。その余りを起因として、分周後のパルスにジッタが発生する。
【0024】
そこで、分周装置1は、その余りを無くすように、k=80個の基準クロックBCLKを、個数k1=26、k2=27、k3=27の3つに分割する。
詳細には、分周装置1は、カウント値CNT=80を分周比R=n=3で除算し、除算結果の26.6…を得る。そして、分周装置1は、カウント値CNT=80から除算結果の整数部分の値「26」を減算し、80−26=54を得る。この減算結果は、残りの基準クロックBCLKの個数を示している。
【0025】
次に、分周装置1は、先の減算結果を、残りの分割すべき数2で除算し、54/2=27を得る。すなわち、54個の基準クロックBCLKは、27個の基準クロックBCLK2つに分割される。
【0026】
ところで、分周装置1は、カウント値CNT=80を取得すると、図2(C)に図示するように、その値をカウント開始の初期値として、ダウンカウントする。
先ず、分周装置1は、ダウンカウントの値を示すカウント値DCNTが、80−26=54(=D)に達したとき、図2(D)に図示するように、周期T1を持つパルスを出力する。このカウント値DCNT=54は、k1=26個の基準クロックBCLKをカウントしたことを意味する。
次に、分周装置1は、カウント値DCNTが、DCNT=54−27=27(=D)に達したとき、図2(D)に図示するように、周期T2を持つパルスを出力する。このカウント値DCNT=27は、k2=27個の基準クロックBCLKをカウントしたことを意味する。
最後に、分周装置1は、カウント値DCNTが、DCNT=27−27=0(=D)に達したとき、図2(D)に図示するように、周期T3(=T2)を持つパルスを出力する。このカウント値DCNT=0は、k3=27個の基準クロックBCLKをカウントしたことを意味する。
【0027】
このように、カウント値DCNTがD=54、D=27、D=0に達したときに、分周装置1がパルスを出力することで、図2(D)に図示する、n=3分周されたパルス列CLK(1/n)を生成することができる。
なお、図2(D)に図示する周期T1は、入力パルスの周期T、カウント値CNT、基準クロックBCLKの個数K1を用いて、T/CNT×K1=100μs/80×26=325nsと求まる。同様の演算により、周期T2、T3は、入力パルスの周期T、カウント値CNT、基準クロックBCLKの個数K2,K3を各々用いて、337.5nsと求まる。
【0028】
(2)パルス列CLK(1/n)のm分周
パルス列CLK(1/n)の生成後、分周装置1は、パルス列CLK(1/n)をm=16分周することで、図2(E)に図示する、分周比R=m/nで分周したパルス列CLK(m/n)を発生させる。
【0029】
ところで、分周装置1が、k=80個の基準クロックBCLKを、個数k1=26、k2=27、k3=27に分割したため、生成されたパルス列CLK(1/n)のデューティー比は、50%とは限らない。
図2(D)に図示するパルス列CLK(1/n)において、周期T1を持つパルスは、デューティー比が50%であるが、周期T2、T3を持つパルスは、デューティー比が50%ではない。
これは、周期T1を持つパルスは、K1=26個の基準クロックBCLKを用いて発生させたため、それを均等、すなわち、13個の基準クロックBCLKと、13個の基準クロックBCLKとに分けることができるためである。そのため、オン(Hレベル)/オフ(Lレベル)の期間が互いに等しい。
【0030】
しかしながら、周期T2、T3を持つパルスは、K2=k3=27個の基準クロックBCLKを用いて発生させたため、それを均等に分けることができず、オン/オフの期間が互いに異なる。
【0031】
このように、分周装置1は、デューティー比を調整しながら、入力パルス列CLKをn=3分周するが、ジッタの発生を極力抑制することができればよいため、周期T1、T2、T3を各々持つパルス列CLK(1/n)のデューティー比は、必ずしも50%でなくてもよい。
たとえば、周期T2、T3を持つパルス列CLK(1/n)のデューティー比が更に小さくなるように、それらのパルスについて、オンの期間に12個の基準クロックBCLKを、オフの期間に15個の基準クロックBCLKを割り当てることも可能である。たとえば、k=80個の基準クロックBCLKを、k1=25、k2=26、k3=29個のように、3分割することも可能ではある。
【0032】
しかしながら、入力パルス列CLKのデューティー比が50%であれば、k=80個の基準クロックBCLKを、k1=27、k2=27、k3=26個のように、できるだけ均等に3分割し、周期T1、T2、T3を各々持つパルス列CLK(1/n)のデューティー比をできるだけ50%にすることが望ましい。
【0033】
分周比RがR=16/3の場合を例に挙げたが、たとえば、分周比RがR=3/2の場合には、分周装置1が、入力パルス列CLKをn=2で分周し、これを更にm=3分周すればよい。入力パルス列CLKをn=2で分周する場合には、カウント値CNT=80をn=2で除算すると、除算結果は2である。このように、余りが発生しない場合には、分周装置1は、入力パルス列CLKを単にn=2分周し、これを更にm=3分周する。
【0034】
以下、図1および図2を参照しながら、分周装置1の各構成要素について説明する。
【0035】
基準クロック発生回路11は、たとえば、水晶発振器やPLL回路(位相同期回路)によって構成されている。基準クロック発生回路11は、一定の周波数F2を持つ基準クロックBCLKを発生させ、これをパルス周期計測回路12に出力する。
【0036】
上述した通り、周波数F2は、一定であり、入力パルス(列)CLKの周波数F1よりも十分に高い周波数である(F2≫F1)。それは、周波数F2が周波数F1よりも小さいと、入力パルスCLKをn=3分周できないためである。なお、周波数F2が周波数F1より高いほど、ジッタの発生が抑制され、分周の精度も上がる。
【0037】
本実施形態では、入力パルス(列)CLKの周波数F1は、不規則に変化するが、周波数F2≫周波数F1となる範囲内で、ゆっくりと変化する。
【0038】
パルス周期計測回路12は、たとえば、カウンタやフリップフロップによって構成されている。パルス周期計測回路12は、周波数F1を持つ入力パルス列CLKの1周期Tを計測する。計測の際に、パルス周期計測回路12は、図2(A)に図示する、パルスCLKの立ち上がり(エッジ)から次の立ち上がり(エッジ)までの期間を計測する。
その計測と共に、パルス周期計測回路12は、基準クロックBCLKが、1周期Tに何個あるかをカウントし、このカウント値CNTを演算回路13に出力する。
なお、パルス周期計測回路12の動作を単に「クロック周期計測」とも呼ぶ。入力パルス列CLKの1周期Tを計測する際に、その立ち下がりから次の立ち下がりまでの期間を計測することも可能である。
【0039】
演算回路13は、たとえば、カウンタやフリップフロップによって構成されている。演算回路13は、第1指示回路16から変数nが入力され、カウント値CNTがパルス周期計測回路12から入力されると、入力パルス列CLKをn分周するため、次のように動作する。なお、演算回路13の動作を単に「CNT/n演算」とも呼ぶ。
【0040】
図3は、本発明の第1実施形態に係る演算回路の動作例を示すフローチャートである。
図3に図示するように、演算回路13は、カウント値CNTを変数nで除算し、除算結果Dを得る(ST1)。上記の仮定の下では、除算結果Dは、D=CNT/n=26.6…である。更に、演算回路13は、除算結果Dの整数部分の値「26」も取得しておく。
【0041】
次に、除算結果Dに余りがある場合(ST2:YES)、演算回路13は、前回(i−1)の減算結果Si−1から、今回(i)取得した除算結果Dの整数部分の値を減算し、減算結果Sを得る(ST3)。
ここで、変数iは、i=1,2,…,n−2である。上記の仮定の下では、変数iの最大値は、i=1である。記号「int[D]」は、除算結果Dの整数部分の値を示す。ただし、初期値としての減算結果Sは、S=カウント値CNT=80であるものとする。
たとえば、i=1の場合、減算結果S=カウント値CNTであるので、減算結果Sは、S=CNT−int[D]=80−26=54となる。減算結果Sは、CNT(=k)=80個の基準クロックBCLKのうち、残りの基準クロックBCLKの個数を示している。
【0042】
そして、演算回路13は、先に求めた減算結果Sを、変数nから変数iを減算した値(n−i)で除算する(ST4)。
たとえば、変数i=1の場合、この除算結果Dは、D=S/(n−i)=54/(3−1)=27となる。
【0043】
変数iがn=1に達していない場合(ST5:NO)、演算回路13は、変数iに「1」を加算し(ST6)、ステップST3の演算に続いて、ステップST4の演算を行う。
この場合、演算回路13は、減算結果S=S−int[D]=54−int[27」=27を得た後、除算結果D=S/(3−2)=27/1=27を得る。
【0044】
ステップST1の演算を行った後、ステップST3,4の演算を再帰的に行うことで、除算結果D〜Dを得ることができる。
図2(B)に図示するように、除算結果Dの整数部分は個数k1に相当し、除算結果Dは個数k2に相当し、除算結果Dは個数k3に相当する。すなわち、k個の基準クロックBCLKを分周比R=nで分割したときの、各々の基準クロックBCLKの個数を得ることができる。
【0045】
たとえば、分周比R=m/n=16/7、変数n=7、カウント値CNT=80である場合、7つの除算結果D〜Dを得ることができる。この場合、除算結果D〜Dは、各々、D=11、D=11、D=11、D=11、D=12、D=12、D=12となる。
【0046】
一方、変数iがn=1に達した場合(ST5:YES)、演算回路13は、全ての除算結果が得られたので、これらの除算結果D〜Dをまとめてパルス出力回路14に出力する(ST7)。このとき、演算回路13は、パルス周期計測回路12によって得られたカウント値CNTもパルス出力回路14に出力する。
【0047】
図1に図示するパルス出力回路14は、たとえば、ダウンカウンタによって構成されている。パルス出力回路14は、演算回路13から除算結果D〜Dが入力されると、図2(C)に図示するように、カウント値CNTをカウントの初期値として、基準クロックBCLKのダウンカウントを開始する。パルス出力回路14が、基準クロックBCLKをダウンカウントするので、カウントの速度は、たとえば、基準クロック発生回路11の周波数F2となる。
なお、パルス出力回路14の動作を単に「n分周パルス出力」とも呼ぶ。
【0048】
詳細には、カウント値CNT=80の場合、パルス出力回路14は、カウント値CNT=80をカウントの初期として、基準クロックBCLKのダウンカウントを開始する。その後、パルス出力回路14は、ダウンカウントの値を示すカウント値DCNTが、DCNT=CNT−D=80−26=54に達したとき、図2(D)に図示する、周期T1を持つ1個のパルスを発生させ、これを分周回路15に出力する。
【0049】
パルス出力回路14は、さらにダウンカウントを継続し、カウント値DCNTが、DCNT=D−D=54−27=27に達したとき、図2(D)に図示する、周期T2を持つパルスを発生させ、これを分周回路15に出力する。続いて、パルス出力回路14は、カウント値DCNTが、DCNT=D−D=27−27=0に達したとき、図2(D)に図示する、周期T3を持つパルスを発生させ、これを分周回路15に出力する。
【0050】
パルス出力回路14を用いることで、入力パルス列CLKをn=3分周したパルス列CLK(1/n)を発生(生成)することができる。
なお、パルス出力回路14にアップカウントを行わせ、そのカウント値DCNTがD=26、D+D=53、D+D+D=80に達したとき、周期T1、T2、T3を各々持つパルスを出力させてもよい。
【0051】
分周回路15は、たとえば、カウンタによって構成されている。分周回路15は、パルス出力回路14からn=3分周されたパルス列CLK(1/n)が入力されると、これをm=16分周する。そのため、分周回路15は、パルス列CLK(1/n)をカウントし、そのカウント値がm=16に達したとき、パルスを出力する。パルスの出力後、分周回路15は、そのカウント値を0にリセットする。
分周回路15により、図2(E)に図示する、分周比R=m/n分周されたパルス列(m/n)が発生される。なお、分周回路15の動作を単に「m分周」とも呼ぶ。
【0052】
第1指示回路16は、入力パルス列CLKの周期Tごとに、変数nを演算回路13に与える。
第2指示回路17は、入力パルス列CLKの周期Tごとに、変数mを演算回路13に与える。
【0053】
以上の構成要素を有する分周装置1の動作を、図4(A)〜(D)に関連づけて説明する。
図4(A)〜(D)は、本発明の第1実施形態に係る分周装置1の動作例を示すタイミングチャートである。図4(A)は、入力パルス列CLKを示す。図4(B)は、パルス周期計測、CNT/n演算、n分周パルス出力、m分周を各々示す。図4(C)、(D)は、パルス列CLK(1/n)、パルス列CLK(m/n)を各々示す。
【0054】
分周装置1は、図4(A)に図示するパルス列CLKが入力されると、図4(B)に図示する、パルス周期計測、CNT/n演算、n分周パルス出力を時分割で行って、図4(D)に図示する、n/m分周したパルス列CLK(m/n)を発生させる。
【0055】
詳細には、パルス列CLKが入力されると、パルス周期計測回路12は、時刻t1におけるパルスCLKの立ち上がり(エッジ)から、時刻t3におけるパルスCLKの立ち上がりまでの周期Tを計測する。
ところで、基準クロック発生回路11は、時刻t1あるいはそれ以前から基準クロックBCLKを発生させている。パルス周期計測回路12は、周期Tの計測と共に、基準クロックBCLKが、1周期Tに何個あるかをカウントし、このカウント値CNTを演算回路13に出力する。
実際には、タイムラグが生じるので、パルス周期計測は、時刻t1から僅かに遅延した時刻t2に開始され、時刻t3におけるパルスCLKの立ち上がりから僅かに遅延した時刻t4に終了する。一方、図4(B)に図示するように、時刻t4において、パルス周期計測が終了すると共に、新たなパルス周期計測が開始される。
【0056】
次に、演算回路13は、時刻t4において、第1指示回路16から変数nが入力され、カウント値CNTがパルス周期計測回路12から入力されると、ステップST1〜ST6に示す演算を行って(図3参照)、除算結果D〜Dを算出し、これらをパルス出力回路14に出力する。これにより、k個の基準クロックBCLKを分周比R=nで分割した、各々のクロックの個数を得ることができる。
CNT/n演算においても、タイムラグが生じるので、その演算は、時刻t5におけるパルスCLKの立ち上がりから僅かに遅延した時刻t6に終了する。一方、図4(B)に図示するように、時刻t6において、CNT/n演算が終了すると共に、新たなCNT/n演算が開始される。
【0057】
次に、パルス出力回路14は、演算回路13から除算結果D〜Dが入力されると、カウント値CNTをカウントの初期値としてダウンカウントを開始し、カウント値DCNTが、DCNT=CNT−D、D−D、D−Dに達したとき、周期T1、T2、T33を各々持つパルスを発生させ(図2(D)参照)、これらを分周回路15に出力する。
n分周パルス出力においても、タイムラグが生じるので、この動作は、時刻t7におけるパルスCLKの立ち上がりから僅かに遅延した時刻t8に終了する。一方、図4(B)に図示するように、時刻t8において、n分周パルス出力が終了すると共に、新たなn分周パルス出力が開始される。
【0058】
次に、分周回路15は、図4(B)に図示するように、パルス出力回路14からn分周されたパルス列CLK(1/n)が入力されると、これをm=16分周し、図4(D)に図示する、m/n分周したパルス列CLK(m/n)を発生させる。
このm分周においても、タイムラグが生じるので、m分周は、時刻t9におけるパルス列CLKの立ち上がりから僅かに遅延した時刻t10に終了する。一方、図4(B)に図示するように、時刻t10において、m分周が終了すると共に、新たなm分周が開始される。
以後も、クロック周期計測、CNT/n演算、n分周パルス出力、m分周を時分割で行う。
【0059】
ここで、入力パルス列CLKの周期(周波数)が不規則に変化する場合の分周装置1の動作を説明する。
図5(A)〜(D)は、本発明の第1実施形態に係る分周装置の動作例を示すタイミングチャートである。図5(A)〜(D)は、入力パルス列CLK、基準クロックBCLK、パルス列CLK(1/n)、パルス列CLK(m/n)を各々示す。
実際には、各クロックは時分割で演算されるが、説明を明確にするため、各図には、各クロックが同一の時系列で図示されている。
【0060】
図5(A)に図示するように、入力パルス列CLKの周期が、Ta、Tb(=Ta/2)、Tc(=Ta)のように変化する場合を例に挙げる。
一例として、分周比RがR=m/n=16/3であり、基準クロックBCLKの周波数F2が一定のF2=80MHzであり、入力パルス列CLKの周波数F1が、Fa=1/Ta=1MHz、Fb=1/Tb=2/Ta=2×Fa=2MHz、Fc(=Fa)のように変化するものと仮定する。説明を明確にするため、入力パルス列CLKの周期(周波数)が急峻に変化する場合を例示するが、実用的には、入力パルス列CLKの周期(周波数)は、ゆっくりと変化することが望ましい。
【0061】
図5(B)に図示するように、パルス周期計測回路12は、周期Ta、Tcにおいては、80個の基準クロックBCLKをカウントし、周期Tbにおいては、40個の基準クロックBCLKをカウントする。すなわち、周期Ta、Tcにおけるカウント値CNT1、CNT3は、CNT1=CNT3=80である。基準クロックBCLKの周波数F2が一定であるので、周期Tbにおけるカウント値CNT2は、カウント値CNT1=80の半分、すなわち、CNT2=40である。
そして、演算回路13が、周期Ta、Tbにおけるカウント値CNT1=CNT3=80を、分周比R=n=3で除算し、周期Tbにおけるカウント値CNT2=40を、分周比R=n=3で除算する。
【0062】
すると、パルス出力回路14は、図5(C)に図示するように、n分周したパルス列CLK(1/n)を発生させる。周期Ta、Tcと周期Tbとでは、パルス列CLK(1/n)の周期が異なるが、いずれの周期においても、入力パルス列CLKが3分周されている。その後、分周回路15は、パルス列CLK(1/n)をm分周し、図5(D)に図示するパルス列CLK(m/n)を発生させる。
【0063】
以下、本実施形態に係る分周装置1を、ハードウェアで構成された一般的な分周装置およびソフトウェアで構成された一般的な分周装置と対比させながら、本実施形態に係る分周装置1の利点について述べる。
【0064】
一般的な分周装置は、一定周波数の基準クロックを発振させているが、それは、たとえば、カウンタを動作させるためのものであり、本実施形態のように、入力パルス列の周波数よりも高い周波数を持つクロックではない。一般的な分周装置は、入力パルス列の周期が不規則に変化すると、その周期に合せた同期信号などをカウンタに与えることができず、入力パルス列を分周することが困難となる。
【0065】
これに対し、本実施形態では、入力パルス列CLKの周期が不規則に変化する場合であっても、たとえば、図5(B)に図示するように、演算回路13が、異なる周期Ta、Tbごとに、カウント値CNT1、CNT2を分周比R=n=3で各々分割する。そして、パルス出力回路14が、カウント値CNT1、CNT2を分周比R=n=3で分割したときの値に達するごとに、3個のパルスを出力する。そのため、分周装置1をハードウェアで構成しても、m/n分周したパルス列(m/n)にジッタが発生しにくい。
【0066】
図6は、一般的なソフトウェアで構成された分周装置Aの構成例を示すブロック図である。たとえば、ソフトウェアを用いて、1MHzの入力パルス列CLKを、分周比R=m/n=16/3で分周する場合には、図6に図示する処理が行われる。
【0067】
先ず、入力パルス列CLKは、カウンタA1にてカウントされ、入力パルス列CLKがデジタル値Digに変換される。このデジタル値Digは、サンプルホールド回路A2にて、たとえば、ソフトウェア制御の周期と等しいサンプリング時間ΔT=100μsごとに、サンプリングされる。ただし、カウンタA1、サンプルホールド回路A2における処理は、ハードウェアを用いて行われる。
【0068】
加算部A4が、サンプルホールド回路A2によって、n回目にサンプリングされた、デジタル値Digと、遅延部A3によって1サンプリング分のサンプリング時間ΔTだけ遅延された、n−1回目のデジタル値Dign−1とを加算すると、分周演算部A5は、n回目の加算結果AD=Dig+Dign−1を分周比R=m/nで分周する。
【0069】
たとえば、サンプリング時間ΔTが100μsであり、100μsで100個のパルスが分周演算部A5に入力されたと仮定するとき、分周演算部A5は、100個のパルス列CLKを分周比Rで分周し、演算結果RA=100個/R=100個/(16/3)=18.75個を得る。この演算結果RAは、サンプリング時間ΔT当たりの入力パルスCLKの個数を表わす。なお、分周演算部A5の演算結果は、サンプリング時間ΔTごとに同じであると仮定する。
【0070】
分離演算部A8は、加算部A6を介して入力された演算結果RAの整数部分と小数部分とを得ると、n回目の演算結果RAによる小数部分DECを遅延部A7に出力すると共に、制御信号CTLをパルス発生部A9に出力する。パルス発生部A9が、制御信号CTLを受けて、パルスを出力することにより、入力パルス列CLKを分周比R=m/nで分周したクロックCLKが生成される。
一方、遅延部A7は、分離演算部A8から入力された小数部分DECをサンプリング時間ΔTだけ遅延させると、加算部A6は、小数部分DECと、n+1回目の演算結果RAn+1とを加算し、演算結果RAn+1+DECを分離演算部A8に出力する。
【0071】
図7は、図6に図示する分離演算部A8の演算結果を説明するための図である。
図7に図示するように、n回目の演算結果RA=18.75には、「0.75」の余りが発生する。演算結果RAの整数部分が「18」であり、その小数部分DECが「0.75」であるとき、その小数部分は、サンプリング時間ΔT後の分周演算部A5によるn+1回目の演算に持ち越される。
すなわち、n+1回目の演算結果は、RAn+1=18.75+0.75=19.05となる。この演算結果にも、「0.05」の余りが発生するため、その小数部分「0.05」は、n+2回目の演算に持ち越される。
同様にして、n+2回目の演算結果は、RAn+2=18.75+0.5=19.25となり、n+3回目の演算結果は、RAn+3=18.75+0.25=19.0となる。
【0072】
パルス発生部A9は、分離演算部A8から制御信号CTLを受ける度に、パルスを出力するが、ハードウェアで構成された一般的な分周装置と同様に、分離演算部A8が、18個または19個のパルスごとにしか、制御信号CTLをパルス発生部A9に出力することができない。
したがって、図7の斜線部分で示すように、n+1回目、n+2回目、n+3回目における分周演算部A5の演算では、1個のパルスが余る。ただし、次のn+4回目の演算では、n+1回目の演算と同様に、パルスの余りは発生しない。各演算結果の小数部分を得る過程を1サイクルとすると、分周装置Aがこの過程を4サイクル繰り返せば、余りのパルスを払い出すことができる。
【0073】
この余りのパルスは、ジッタの発生の要因となる。一般的な分周装置Aにおける、パルスのエッジ間のジッタは、(2)式で表わされる。
【0074】
(数2)
(1/18−1/19)/(1/18.75)×100=±5.5% …(2)
【0075】
一方、本実施形態に係る分周装置1におけるジッタは、次のように求まる。図2(B)に図示するように、パルス周期計測回路12のカウント値がCNT=80の場合、これを変数n=3で除算すると、k=80個の基準クロックBCLKは、k1=26、k2=27、k3=27の3つに分割される。
したがって、図2(E)に図示する、分周回路15が出力したパルス列CLK(m/n)の周期の最大値MAXおよび最小値MINは、(3.1)、(3.2)式で表わされる。ただし、記号「int」は、上述したように、(m/n)の整数部分を表わす記号である。
【0076】
(数3)
MAX=CNT×(1/F2)×int(m/n)+T2+T3
=80×(1/80MHz)×5+337.5ns+337.5ns
=5.675μs …(3.1)

MIN=CNT×(1/F2)×int(m/n)+T1+T2(=T3)
=80×(1/80MHz)×5+325ns+337.5ns
=5.6625μs …(3.2)
【0077】
(3.1)、(3.2)式を用いると、パルス列CLK(m/n)に発生するジッタは、(4)式で表わされる。
【0078】
(MAX−MIN)/{(CNT/n)×m×(100μs/80)}
=(5.6725μs−5.6625μs)/{(80/3)×16×(100μs/80)}
=±0.2% …(4)
【0079】
(2)式および(4)式により、本実施形態に係る分周装置1で発生するジッタは、ソフトウェア処理を行う一般的な分周装置Aで発生するジッタの、およそ1/27であり、非常に小さい。これは、次の2つの理由による。
【0080】
第1の理由は、本実施形態では、入力パルス列CLKのサンプリングを行わないためである。第2の理由は、本実施形態では、図5(A)に図示するように、入力パルス列CLKの周期が不規則に変化しても、余りのパルスが発生しないためである。
このように、本実施形態に係る分周装置1によれば、入力パルス列CLKの周期が不規則に変化し、これをm/n分周しても、ジッタの発生が極めて小さく、極めて精度の高いm/n分周したパルス列を生成することができる。
【0081】
[第2実施形態]
第1実施形態に係る分周装置1は、入力パルス列CLKの周期が不規則に変化しても、ジッタの発生が極めて小さいため、たとえば、回転数を不規則な周期で変化させるサーボモータの制御に好適である。
そこで、第2実施形態では、分周装置1を搭載し、サーボモータを制御するサーボ制御回路について、図8を参照しながら説明する。
【0082】
図8は、第2実施形態に係るサーボ制御回路の構成例を示すブロック図である。
図8に図示するサーボ制御回路2は、分周装置1を有する制御回路21、駆動回路22および検出回路23を有する。
なお、サーボ制御回路2は、本発明の制御回路に対応する。
【0083】
サーボ制御回路2は、たとえば、パルス幅変調方式のサーボモータ24を制御する。サーボ制御回路2は、フィードバック制御を行って、制御対象の位置、速度、角度などを検出しながら、それらの目標値との偏差(オフセット)を減少させるように、サーボモータ24の回転数(回転速度)を制御する。
【0084】
制御回路21は、検出回路23から入力されたパルス列CLKを用いて、駆動回路22を制御するための制御信号CTLを発生させ、これを駆動回路22に出力する。制御信号CTLには、分周装置1がm/n分周したパルス列が含まれる。
【0085】
制御回路21が制御信号CTLを発生させる際に、分周装置1は、入力パルス列CLKを分周比R=m/nで分周し、これを制御信号CTLの一部とする。
本実施形態では、一例として、パルス幅変調方式のサーボモータ24を採用しているため、分周装置1が入力パルス列CLKを分周比R=m/nで分周すれば、サーボモータ24の回転数をm/n倍に変化させることができる。
【0086】
駆動回路22は、制御回路21から入力された制御信号CTLを用いて、サーボモータ24を駆動させるための駆動信号DRVを発生させ、これをサーボモータ24に出力する。
【0087】
サーボモータ24は、たとえば、その回転軸241を、その時計回りまたは反時計回りに回転可能なAC(交流)モータである。サーボモータ24は、たとえば、リニアモータであっても差し支えない。サーボモータ24は、駆動回路22から入力された駆動信号DRVに応じた回転速度で、回転軸241を回転させる。
【0088】
検出回路23は、ロータリーエンコーダの機能を有し、サーボモータ24に接続されている。検出回路23は、回転軸241の回転変位を検出し、これをデジタル値のパルス列CLKに変換した後、このパルス列CLKを制御回路21の分周装置1に出力する。
なお、サーボモータ24がA相およびB相を持つ場合、検出回路23は、A相のパルス列およびB相のパルス列を制御回路21の分周装置1に出力する。
【0089】
上記のサーボモータ24は、始動トルクが大きく、安定した回転数に達するまでの時間が他のモータのものに比べて短いので、幅広い回転数(回転速度)で安定した動作が可能である。
したがって、分周装置1を用いれば、周期が不規則に変化するパルス列CLKをm/n分周しても、ジッタの発生が極めて小さく、高精度かつ正確にサーボモータ24の回転数を制御することができる。
【0090】
このような利点を有するサーボ制御回路2は、たとえば、NC(Numerical Control)装置やCT(Computed Tomography)装置のサーボモータの制御部分に用いることができる。
【0091】
[分周装置1の変形例]
分周装置1を搭載したサーボ制御回路2において、サーボモータ24がA相およびB相を持つ場合には、分周装置1を図9に図示するように構成することができる。
【0092】
図9は、本発明の変形例に係る分周装置の構成例を示すブロック図である。
図9に図示する分周装置1aは、基準クロック発生回路11、パルス周期計測回路12、演算回路13、パルス出力回路14、分周回路15、第1指示回路16、および、第2指示回路17に、第1のパルス形態変更回路18および第2のパルス形態変更回路19を加えたものである。
【0093】
検出回路23から入力された、図9に図示するA相のパルス列は、B相のパルス列に対して、位相が90度進んでいるものと仮定する。この場合、いずれか一方のパルス列を分周比R=m/nで分周し、その分周後に、m/n分周した一方のパルス列の位相を90度ずらせば、他方のパルス列を発生させることができる。
【0094】
そこで、第1のパルス形態変更回路18は、A相およびB相のパルス列が入力されると、A相のパルス列をパルス列CLKとしてパルス周期計測回路12に出力すると共に、B相のパルス列を符号化してパルス周期計測回路12に出力する。
B相のパルス列の符号化では、このパルス列が0となるように、符号化すればよい。無論、A相のパルス列を符号化し、B相のパルス列をパルス周期計測回路12に出力することもできる。
【0095】
第2のパルス形態変更回路19は、m/n分周されたパルス列CLK(m/n)が分周回路15から入力されると、この位相を90度遅らせたパルス列CLK(m/n)を発生させ、これをB相のパルス列として、駆動回路22(図8参照)に出力すると共に、パルス列CLK(m/n)をA相のクロックとして、駆動回路22に出力する。
【0096】
本発明の実施形態は、上述の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【0097】
1、1a…分周装置、11…基準クロック発生回路、12…パルス周期計測回路、13…演算回路、14…パルス出力回路、15…分周回路、16…第1指示回路、17…第2指示回路、18…第1のパルス形態変更回路、19…第2のパルス形態変更回路、2…サーボ制御回路、21…制御回路、22…駆動回路、23…検出回路、231…回転軸、24…サーボモータ。

【特許請求の範囲】
【請求項1】
第1変数および第2変数が互いに異なる正の整数をとり、前記第1変数に対する前記第2変数の比で表わされる分周比で入力パルスを分周可能な分周装置であって、
前記入力パルスの周期にわたって、一定の周波数を持つ基準クロックをカウントするカウンタ回路と、
前記カウンタ回路によって得られた第1カウント値を前記第1変数が示す値に分割する演算を行うと共に、前記基準クロックのカウントを開始し、当該カウントによる第2カウント値が前記第1カウント値を分割した値に達する度に、一のパルスを出力する演算出力回路と、
前記演算出力回路の出力パルス列を前記第2変数が示す値で分周したパルスを出力する分周回路と、
を有する分周装置。
【請求項2】
前記演算出力回路は、
前記第1カウント値を前記第1変数が示す値で除算し、前記第2カウント値が除算結果の整数部分が示す値に達したとき、一のパルスを出力し、
前記パルスの出力後、前記除算結果の整数部分が示す値を前記第1カウント値から減算し、減算結果を、前記カウント値を前記第1変数で分割すべき残りの数で均等またはできるだけ均等に分割し、前記第2カウント値が前記減算結果を均等またはできるだけ均等に分割した値に達する度に、一のパルスを出力する
請求項1記載の分周装置。
【請求項3】
前記入力パルスの周波数よりも高い周波数を持つクロックを前記基準クロックとして発生させるクロック発生回路を有する
請求項1または2記載の分周装置。
【請求項4】
前記入力パルスの周期を計測する計測回路を有する
請求項1から3のいずれか一に記載の分周装置。
【請求項5】
前記分周回路は、
前記演算出力回路が出力したパルスをカウントし、当該カウントによる第3カウント値が、前記第2変数が示す値に達する度に、一のパルスを出力する
請求項1から4のいずれか一に記載の分周装置。
【請求項6】
第1変数および第2変数が互いに異なる正の整数をとり、前記第1変数に対する前記第2変数の比で表わされる分周比で入力パルスを分周可能な分周装置を有し、前記分周装置の出力を用いる制御回路であって、
前記分周装置は、
前記入力パルスの周期にわたって、一定の周波数を持つ基準クロックをカウントするカウンタ回路と、
前記カウンタ回路によって得られた第1カウント値を前記第1変数が示す値に分割する演算を行うと共に、前記基準クロックのカウントを開始し、当該カウントによる第2カウント値が前記第1カウント値を分割した値に達する度に、一のパルスを出力する演算出力回路と、
前記演算出力回路の出力パルス列を前記第2変数が示す値で分周したパルスを出力する分周回路と、
を有する制御回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2011−151672(P2011−151672A)
【公開日】平成23年8月4日(2011.8.4)
【国際特許分類】
【出願番号】特願2010−12317(P2010−12317)
【出願日】平成22年1月22日(2010.1.22)
【出願人】(000003458)東芝機械株式会社 (843)