(1)基本的なパルス幅変調信号出力装置
図1には、パルス幅変調信号出力装置の構成が示されている。パルス幅変調信号出力装置は、クロック発生器10、第1カウンタ12、第2カウンタ14、信号出力部16、および、パルス制御部18を備える。各構成要素はデジタル回路によって構成されている。以下の説明では、デジタル値を「1」および「0」によって表すが、実際のデジタル値は、所定のハイ電圧VHおよびロー電圧VLによって表されるものであってもよい。
クロック発生器10は、第1クロック信号CLK1、および第2クロック信号CLK2を生成する。クロック発生器10は、第1クロック信号CLK1および第2クロック信号CLK2を、それぞれ、第1カウンタ12および第2カウンタ14に出力する。ここで、第1クロック信号CLK1および第2クロック信号CLK2は、各周期の初めに矩形のパルスが現れるクロック信号である。また、第2クロック信号CLK2の周期は、第1クロック信号CLK1の周期よりも時間Δだけ長い。
第1カウンタ12は、第1クロック信号CLK1のパルスをカウントし、そのカウント値である第1カウント値CT1を信号出力部16に出力する。第1カウンタ12のカウントは0〜M(正の奇数)の範囲で行われる。0、1、2、・・・・と第1カウント値CT1が増加し、最大カウント数Mに達した後は、第1カウント値CT1は0に戻る。
第2カウンタ14は、第2クロック信号CLK2のパルスをカウントし、そのカウント値である第2カウント値CT2を信号出力部16に出力する。第2カウンタ14のカウントは0〜M−1の範囲で行われる。0、1、2、・・・・と第2カウント値CT2が増加し、M−1に達した後は、第2カウント値CT2は0に戻る。
図2には、M=7の場合について、第1クロック信号CLK1および第2クロック信号CLK2の時間波形と、第1カウント値CT1および第2カウント値CT2の時間変化が示されている。さらに、各カウント値の時間変化の下方には、パルス幅変調信号におけるパルス幅を規定するための各パルス時間帯Wが太線を以て示されている。
この例では、第1クロック信号CLK1の周期T1は7Δであり、第2クロック信号CLK2の周期T2は8Δである。図2には、時間Δの間隔で破線の縦線が描かれている。第1クロック信号CLK1のパルスの立ち上がりタイミングと、第2クロック信号CLK2のパルスの立ち上がりタイミングが一致した時から、次にこれらの立ち上がりタイミングが一致するまでの時間帯TLCMは、時間ΔにMおよびM+1の最小公倍数を乗じた56Δである。
第1カウント値CT1を示す長方形の区切り内に示された整数は、長方形で示される時間帯において第1カウント値CT1が有する値を示す。第2カウント値CT2を示す長方形の区切り内に示された整数は、長方形で示される時間帯において第2カウント値CT2が有する値を示す。第1カウント値CT1は、第1クロック信号CLK1の1周期の間その値が維持される。第1カウント値CT1は、0から7まで増加して、7の次は0となる。第2カウント値CT2は、第2クロック信号CLK2の1周期の間その値が維持される。第2カウント値CT2は、0から6まで増加して、6の次は0となる。
以下の説明においては、第1カウント値CT1が変化するタイミングを第1変化タイミングとし、第2カウント値CT2が変化するタイミングを第2変化タイミングとして用語を定義する。すなわち、第1変化タイミングおよび第2変化タイミングは、それぞれ、第1カウント値CT1および第2カウント値CT2を示す長方形の境界の時間に対応する。
図2の各パルス時間帯Wは、パルス幅変調信号のパルス幅を次のように規定する。時間長TPがTP=1Δ〜7Δであるパルス時間帯Wは、各第1変化タイミングから、それぞれの直後の第2変化タイミングまでの時間帯である。例えば、TP=1Δのパルス時間帯Wは、第1カウント値CT1が0から1に変化する第1変化タイミングから、第2カウント値CT2が0から1に変化する第2変化タイミングまでの時間帯であり、TP=3Δのパルス時間帯Wは、第1カウント値CT1が2から3に変化する第1変化タイミングから、第2カウント値CT2が2から3に変化する第2変化タイミングまでの時間帯である。
次に、TP=8Δ〜15Δであるパルス時間帯Wは、各第1変化タイミングから直後の第2変化タイミングを経て、さらに第2クロック信号CLK2の1周期が経過する時までの時間帯である。そして、TP=16Δ〜23Δであるパルス時間帯Wは、各第1変化タイミングから直後の第2変化タイミングを経て、さらに第2クロック信号CLK2の2周期が経過する時までの時間帯である。すなわち、jを0または正の整数として、TP=8jΔ〜(8j+7)Δであるパルス時間帯Wは、各第1変化タイミングから直後の第2変化タイミングを経て、さらに第2クロック信号CLK2のj周期が経過した時までの時間帯である。
ただし、最小公倍数時間帯TLCMの後端(右端)より後に向かう時間は、再び、最小公倍数時間帯TLCMの先端(左端)に戻って右側へと向かう時間とする。また、最小公倍数時間帯TLCMにおいて左右に分割されたパルス時間帯Wは、その合計の長さを以てパルス時間帯Wの時間長が定義される。これに対応するパルス幅変調信号は、最小公倍数時間帯TLCMにおいて左右に分割された時間帯において値が1となり、パルス幅変調信号のパルス幅は、値が1となる時間の合計として定義される。
パルス時間帯Wの先端の立ち上がり時間をtrとし、後端の立ち下がり時間をtfとすると、立ち上がり時間trおよび立下り時間tfは、それぞれ、次の(数1)および(数2)によって表される。ここで、第1クロック信号CLK1の周期T1および第2クロック信号CLK2の周期T2は、T1=MΔ、T2=(M+1)Δで表される。また、[A mod B]は、AをBで除したときの余りを与えるモジュロ演算である。AおよびBが正の整数であり、A<Bのときは、[A mod B]、および[−A mod B]は、次のように定義される。すなわち、[A mod B]=A、[−A mod B]=[B−A mod B]である。
(数1)tr=[K mod (M+1)]・T1
(数2)tf=[K mod M]・T2
図1に戻って説明する。パルス制御部18には、パルス幅変調信号のパルス幅を指定する情報としてパルス幅指定数Kが入力される。パルス幅指定数Kは、KΔのパルス幅を指定する0または正の整数である。パルス幅指定数Kの代わりに、パルス幅を示す時間長Twが入力されてもよい。この場合、パルス制御部18においては、TwをΔで除した値がパルス幅指定数Kとして求められる。
パルス制御部18は、パルス幅指定数K、第1クロック信号CLK1、および第1カウント値CT1に基づいて信号出力部16を制御し、KΔのパルス幅を有するパルス幅変調信号を信号出力部16に出力させる。具体的には、(数1)および(数2)に従い、立ち上がり時間trおよび立下り時間tfを求め、これらの時間trおよびtfに応じたパルス幅変調信号PWMを信号出力部16に出力させる。
例えば、パルス幅指定数KがK=9である場合には、信号出力部16は、第1カウント値CT1が0から1に変化する第1変化タイミングから、第2カウント値CT2が1から2に変化する第2変化タイミングまでのパルス時間帯Wにおいて値が1、その他の時間帯において値が0となるパルス幅変調信号PWMを出力する。
なお、パルス時間帯Wとしては、図3に示されるものを採用してもよい。図3に示される各パルス時間帯Wの時間関係は、図2に示される各パルス時間帯Wの時間関係を左右に反転したものである。図2に示される事項と同様の事項については同一の符号を付してその説明を省略する。
図3に示される、TP=8jΔ〜(8j+7)Δであるパルス時間帯Wは、各第1変化タイミングから、直前の第2変化タイミングを経て、さらに第2クロック信号CLK2のj周期まで遡った時までの時間帯である。ただし、最小公倍数時間帯TLCMの先端(左端)より前に遡る時間は、再び、最小公倍数時間帯TLCMの後端(右端)に戻って左側へ向かう時間とする。
立ち上がり時間trおよび立下り時間tfは、それぞれ、次の(数3)および(数4)によって表される。
(数3)tr=[(M−K)mod M]・T2
(数4)tf=[(M+1−K)mod (M+1)]・T1
(2)半周期型パルス幅変調信号出力装置の原理
次に、上述のパルス幅変調信号出力装置が出力するパルス幅変調信号に対し、周期が半分のパルス幅変調信号を出力する半周期型パルス幅変調信号出力装置について説明する。半周期型パルス幅変調信号出力装置では、最小公倍数時間帯TLCMの前半の時間帯TS(0)と、最小公倍数時間帯TLCMの後半の時間帯TS(1)とにおいて、個別に定義されたパルス時間帯Wが採用される。なお、半周期型パルス幅変調信号出力装置の構成の説明には、図1を援用する。
図4には、前半時間帯TS(0)において採用されるパルス時間帯Wが示されている。図2に示される事項と同一の事項については同一の符号を付してその説明を省略する。
TP=0〜3Δ、8Δ〜10Δ、15Δ〜17Δ、および、22Δ〜24Δであるパルス時間帯Wには、図2のパルス時間帯Wのいずれかが採用され、TP=4〜7Δ、11Δ〜14Δ、18Δ〜21Δ、および、25Δ〜28Δであるパルス時間帯Wには、図3のパルス時間帯Wのいずれかが採用される。ただし、前半時間帯TS(0)において左右に分割されたパルス時間帯Wは、その合計の長さを以てパルス時間帯Wの時間長が定義される。
前半時間帯TS(0)における立ち上がり時間trおよび立下り時間tfは、それぞれ、次の(数5)によって表される。ただし、int(M/2)は、M/2の整数部分を示す関数である。
(数5)
(i)0≦[K mod (M+1)]≦int(M/2)の場合
(a)0≦[K mod M]≦int(M/2)の場合
tr=[K mod (M+1)]・T1
tf=[K mod M]・T2
(b)int(M/2)+1≦[K mod M]≦M−1の場合
tr=[(M−K) mod M]・T2
tf=[((M+1−K) mod (M+1))
mod (M+1)/2]・T1
(ii)int(M/2)+1≦[K mod (M+1)]≦Mの場合
(a)0≦[(M−K) mod M]≦int(M/2)の場合
tr=[(M−K) mod M]・T2
tf=[((M+1−K) mod (M+1))
mod (M+1)/2]・T1
(b)int(M/2)+1≦[(M−K) mod M]≦M−1の場合
tr=[(K mod (M+1)) mod (M+1)/2]・T1
tf=[K mod M]・T2
図5には、後半時間帯TS(1)において採用されるパルス時間帯Wが示されている。図2に示される事項と同一の事項については同一の符号を付してその説明を省略する。
TP=0〜3Δ、8Δ〜10Δ、15Δ〜17Δ、および、22Δ〜24Δであるパルス時間帯Wには、図3のパルス時間帯Wのいずれかが採用され、TP=4Δ〜7Δ、11Δ〜14Δ、18Δ〜21Δ、および、25Δ〜28Δであるパルス時間帯Wには、図2のパルス時間帯Wのいずれかが採用される。ただし、後半時間帯TS(1)において左右に分割されたパルス時間帯Wは、その合計の長さを以てパルス時間帯Wの時間長が定義される。
後半時間帯TS(1)における立ち上がり時間trおよび立下り時間tfは、それぞれ、次の(数6)で示される。
(数6)
(i)0≦[K mod (M+1)]≦int(M/2)の場合
(a)0≦[K mod M]≦int(M/2)の場合
tr=[(M−K) mod M]・T2
tf=[(M+1−K) mod (M+1)]・T1
(b)int(M/2)+1≦[K mod M]≦M−1の場合
tr=[(K mod (M+1))+(M+1)/2]・T1
tf=[K mod M]・T2
(ii)int(M/2)+1≦[K mod (M+1)]≦Mの場合
(a)0≦[(M−K) mod M]≦int(M/2)の場合
tr=[K mod (M+1)]・T1
tf=[K mod M]・T2
(b)int(M/2)+1≦[(M−K) mod M]≦M−1の場合
tr=[(M−K) mod M]・T2
tf=[((M+1−K mod (M+1))+(M+1)/2]・T1
図4および図5に示されるように、前半時間帯TS(0)および後半時間帯TS(1)では、互いに左右を反転したパルス時間帯Wが採用される。
パルス制御部18は、前半時間帯TS(0)に対しては立ち上がり時間trおよび立下り時間tfを(数5)に基づく前半アルゴリズムによって求める。そして、後半時間帯TS(1)に対しては立ち上がり時間trおよび立下り時間tfを(数6)に基づく後半アルゴリズムによって求める。パルス制御部18は、これらの時間trおよびtfに応じたパルス幅変調信号PWMを信号出力部16に出力させる。
(3)半周期型パルス幅変調信号出力装置の構成例
図6には、半周期型パルス幅変調信号出力装置の構成が示されている。図1に示される構成要素と同一の構成要素については同一の符号を付してその説明を省略する。
クロック発生器10は、第1クロック信号CLK1、第2クロック信号CLK2、およびリセットクロック信号CLK0を生成する。そして、第1クロック信号CLK1および第2クロック信号CLK2を、それぞれ、第1カウンタ12および第2カウンタ14に出力し、第1クロック信号CLK1およびリセットクロック信号CLK0をパルス制御部18に出力する。ここで、リセットクロック信号CLK0は、第1クロック信号CLK1がM分周された信号である。
図7には、クロック発生器10の構成が示されている。発振器10−1は、第2クロック信号CLK2を生成し、クロック発生器10から出力する。M分周器10−2は、第2クロック信号CLK2をM分周し、位相比較器10−3に出力する。位相比較器10−3は、電圧制御発振器10−5から出力され(M+1)分周器10−6によって、(M+1)分周されたリセットクロック信号CLK0と、第2クロック信号CLK2がM分周された信号との位相差に応じた電圧を、ループフィルタ10−4に出力する。ループフィルタ10−4は、位相比較器10−3から出力された電圧を平滑化し、電圧制御発振器10−5に出力する。電圧制御発振器10−5は、ループフィルタ10−4から出力された電圧に応じて周波数制御された第1クロック信号CLK1をクロック発生器10から出力する。(M+1)分周器10−6は、第1クロック信号CLK1を(M+1)分周し、リセットクロック信号CLK0としてクロック発生器10から出力すると共に、リセットクロック信号CLK0を位相比較器10−3に出力する。
このような構成によって、クロック発生器10からは、第2クロック信号CLK2に加えて、第2クロック信号CLK2に同期した、第1クロック信号CLK1およびリセットクロック信号CLK0が出力される。
図6に戻り、第1カウンタ12は、パルス制御部18から出力されたカウントリセット値CNT_RSTが1から0になることで、第1カウント値CT1を0にリセットする。第1カウンタ12は、第1クロック信号CLK1のパルスをカウントし、第1カウント値CT1を信号出力部16に出力する。第2カウンタ14は、パルス制御部18から出力されたカウントリセット値CNT_RSTが1から0になることで、第2カウント値CT2を0にリセットする。第2カウンタ14は、第2クロック信号CLK2のパルスをカウントし、第2カウント値CT2を信号出力部16に出力する。
次に、信号出力部16について説明する。第1変化点検出器20には、第1カウンタ12から出力された第1カウント値CT1、およびパルス制御部18から出力された第1参照値REF1が入力される。第1変化点検出器20は、第1カウント値CT1が第1参照値REF1と一致している時間帯に1となり、その他の時間帯に0となるパルスを第1パルス入れ替え器22および第2パルス入れ替え器28に出力する。
第2変化点検出器26には、第2カウンタ14から出力された第2カウント値CT2、およびパルス制御部18から出力された第2参照値REF2が入力される。第2変化点検出器26は、第2カウント値CT2が第2参照値REF2と一致している時間帯に1となり、その他の時間帯に0となるパルスを第1パルス入れ替え器22および第2パルス入れ替え器28に出力する。
第1パルス入れ替え器22は、パルス制御部18から出力された入れ替え制御値SWAPが0であるときは、第1変化点検出器20から出力された値をパルス挿入器24に出力し、入れ替え制御値SWAPが1であるときは、第2変化点検出器26から出力された値をパルス挿入器24に出力する。
第2パルス入れ替え器28は、パルス制御部18から出力された入れ替え制御値SWAPが0であるときは、第2変化点検出器26から出力された値をフリップフロップ32のリセット端子Rに出力し、入れ替え制御値SWAPが1であるときは、第1変化点検出器20から出力された値をフリップフロップ32のリセット端子Rに出力する。
中間点検出器30には、第1カウンタ12から出力された第1カウント値CT1、および、最小公倍数時間帯TLCMの中間点の直後における第1カウント値CT1の値と同一の(M+1)/2が入力される。中間点検出器30は、第1カウント値CT1が(M+1)/2に一致している時間帯に1となり、その他の時間帯に0となるパルス(挿入パルス)をパルス挿入器24に出力する。
パルス挿入器24は、パルス制御部18から出力された挿入制御値INSが0であるときは、第1パルス入れ替え器22から出力された値をフリップフロップ32のセット端子Sに出力し、挿入制御値INSが1であるときは、中間点検出器30から出力された値をフリップフロップ32のセット端子Sに出力する。
フリップフロップ32は、セット端子Sの値が0から1となったタイミングで、出力端子Qからの出力値SQを1にセットし、リセット端子Rの値が0から1となったタイミングで、出力端子Qからの出力値SQを0にリセットする。フリップフロップ32の出力値SQは、論理設定部34に出力される。
論理設定部34は、パルス制御部18から出力された論理制御値INVが0であるときは、フリップフリップの出力値SQをパルス幅変調信号PWMとして出力し、論理制御値INVが1であるときは、フリップフロップ32の出力値SQについて、論理値を反転した、すなわち1と0を反転した値をパルス幅変調信号PWMとして出力する。
論理設定部34は、論理反転器34−1および出力入れ替え器34−2を備える。論理反転器34−1は、出力値SQの論理値を反転した値を出力入れ替え器34−2に出力する。出力入れ替え器34−2は、論理制御値INVが0であるときは、出力値SQをパルス幅変調信号PWMとして出力し、論理制御値INVが1であるときは、論理反転器34−1から出力された値をパルス幅変調信号PWMとして出力する。
このような信号出力部16の構成によれば、第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSを適宜設定することで、複数の第1変化タイミングから、パルス幅変調信号PWMの立ち上がり時間trまたは立ち下がり時間tfとするものを選択することができる。また、複数の第2変化タイミングから、パルス幅変調信号PWMの立ち下がり時間tfまたは立ち上がり時間trとするものを選択することができる。第1参照値REF1、第2参照値REF2、入れ替え制御値SAWP、論理制御値INV、および挿入制御値INSは次の(A)〜(D)に示すように設定される。
(A)図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されているもの、すなわち、TP=11Δ、15Δ、18Δ、19Δ、22Δ、23Δ、25Δ、26Δ、および27Δのパルス時間帯Wについては、前半時間帯TS(0)内において立ち下がり時間tfが立ち上がり時間trよりも先になる。
この場合、論理制御値INVは1に設定される。すなわち、信号出力部16は、後述の設定により、立ち下がり時間tfにおいて値が立ち上がり、立ち上がり時間trにおいて値が立ち下がる出力値SQをフリップフロップ32から出力させる。そして、論理設定部34において論理値を反転させた出力値SQをパルス幅変調信号PWMとして出力する。
(A−1)このような出力値SQをフリップフロップ32から出力させるため、図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されており、さらに、第1変化タイミングが立ち上がり時間trとして選択され、第2変化タイミングが立ち下がり時間tfとして選択されるもの(TP=15Δ、22Δ、および23Δ)については、論理制御値INVを1に設定した上で、入れ替え制御値SWAPを1、挿入制御値INSを0に設定する。第1参照値REF1は、立ち上がり時間trに対応する値に設定され、第2参照値REF2は、立ち下がり時間tfに対応する値に設定される。
これによって、第2カウント値CT2が第2参照値REF2に一致する時間でフリップフロップ32がセットされ、第1カウント値CT1が第1参照値REF1に一致する時間でフリップフロップ32がリセットされる。そして、フリップフロップ32の出力値SQの論理値を反転させた値が、パルス幅変調信号PWMとして出力される。
(A−2)また、上記のような出力値SQをフリップフロップ32から出力させるため、図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されており、さらに、第2変化タイミングが立ち上がり時間trとして選択され、第1変化タイミングが立ち下がり時間tfとして選択されるもの(TP=11Δ、18Δ、19Δ、25Δ、26Δ、および27Δ)については、論理制御値INVを1に設定した上で、入れ替え制御値SWAPを0、挿入制御値INSを0に設定する。第1参照値REF1は、立ち下がり時間tfに対応する値に設定され、第2参照値REF2は、立ち上がり時間trに対応する値に設定される。
これによって、第1カウント値CT1が第1参照値REF1に一致する時間でフリップフロップ32がセットされ、第2カウント値CT2が第2参照値REF2に一致する時間でフリップフロップ32がリセットされる。そして、フリップフロップ32の出力値SQの論理値を反転させた値が、パルス幅変調信号PWMとして出力される。
(B)図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されておらず、前半時間帯TS(0)の後端が立ち下がり時間tfとならないものについては、前半時間帯TS(0)内において立ち上がり時間trが立ち下がり時間tfよりも先になる。このようなパルス時間帯Wとしては、TP=0Δ〜3Δ、5Δ〜10Δ、13Δ〜14Δ、16Δ、17Δ、21Δ、24Δおよび28Δのものがある。
この場合、論理制御値INVは0に設定される。すなわち、信号出力部16は、後述の設定により、立ち上がり時間trにおいて値が立ち上がり、立ち下がり時間tfにおいて値が立ち下がる出力値SQをフリップフロップ32から出力させる。そして、論理設定部34において論理値を反転させない出力値SQをパルス幅変調信号PWMとして出力する。
(B−1) このような出力値SQをフリップフロップ32から出力させるため、図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されておらず、さらに、第1変化タイミングが立ち上がり時間trとして選択され、第2変化タイミングが立ち下がり時間tfとして選択されるもの(TP=0Δ〜3Δ、8Δ〜10Δ、16Δ、17Δ、24Δおよび28Δ)については、論理制御値INVを0に設定した上で、入れ替え制御値SWAPを0、挿入制御値INSを0に設定する。第1参照値REF1は、立ち上がり時間trに対応する値に設定され、第2参照値REF2は、立ち下がり時間tfに対応する値に設定される。
これによって、第1カウント値CT1が第1参照値REF1に一致する時間でフリップフロップ32がセットされ、第2カウント値CT2が第2参照値REF2に一致する時間でフリップフロップ32がリセットされる。そして、フリップフロップ32の出力値SQが、パルス幅変調信号PWMとして出力される。
(B−2)また、上記のような出力値SQをフリップフロップ32から出力させるため、図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されておらず、さらに、第2変化タイミングが立ち上がり時間trとして選択され、前半時間帯TS(0)の後端が立ち下がり時間tfとして選択されないもの(TP=5Δ〜7Δ、13Δ、14Δ、および21Δ)については、論理制御値INVを0に設定した上で、入れ替え制御値SWAPを1、挿入制御値INSを0に設定する。第1参照値REF1は、立ち下がり時間tfに対応する値に設定され、第2参照値REF2は、立ち上がり時間trに対応する値に設定される。
これによって、第2カウント値CT2が第2参照値REF2に一致する時間でフリップフロップ32がセットされ、第1カウント値CT1が第1参照値REF1に一致する時間でフリップフロップ32がリセットされる。そして、フリップフロップ32の出力値SQが、パルス幅変調信号PWMとして出力される。
(C)図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されておらず、前半時間帯TS(0)の後端が立ち下がり時間tfとなるものについては、前半時間帯TS(0)内において立ち下がり時間tfが立ち上がり時間trよりも先になるものとして処理される。これは、上記(A)で述べたパルス時間帯Wが両サイドに分割されている場合において、左側の時間帯の長さが0である特別な場合と解釈してもよい。このようなパルス時間帯Wとしては、TP=4Δ、12Δおよび20Δのものがある。
この場合、論理制御値INVは1に設定される。すなわち、信号出力部16は、前半時間帯TS(0)の先端において値が立ち上がり、立ち上がり時間trにおいて値が立ち下がる出力値SQをフリップフロップ32から出力させる。そして、論理設定部34において論理値を反転させた出力値SQをパルス幅変調信号PWMとして出力する。
このような出力値SQをフリップフロップ32から出力させるため、入れ替え制御値SWAPは0、挿入制御値INSは0に設定される。第1参照値REF1は、立ち下がり時間tf=0・T1に対応する値0に設定され、第2参照値REF2は、立ち上がり時間trに対応する値に設定される。
これによって、前半時間帯TS(0)の先端でフリップフロップ32がセットされ、第2カウント値CT2が第2参照値REF2に一致する時間でフリップフロップ32がリセットされる。そして、フリップフロップ32の出力値SQの論理値を反転させた値が、パルス幅変調信号PWMとして出力される。
図5に示されるパルス時間帯Wについても、図4の場合と同様にして、信号出力部16に対する第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および挿入制御値INSが設定される。ただし、次に説明するように、挿入制御値INSの設定は、図4に示されるパルス時間帯Wを設定する場合と異なる。
(D)挿入制御値INSは、図5に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されておらず、後半時間帯TS(1)の後端が立ち下がり時間tfとなる場合に1に設定される。このようなパルス時間帯Wとしては、TP=7Δ、8Δ、14Δ、16Δ、21Δ、および24Δのものがある。この場合、論理制御値INVは1に設定される。すなわち、信号出力部16は、後半時間帯TS(1)の先端において中間点検出器30から出力される挿入パルスに基づいて値が立ち上がり、立ち上がり時間trにおいて値が立ち下がる出力値SQをフリップフロップ32から出力させる。そして、論理設定部34において論理値を反転させた出力値SQをパルス幅変調信号PWMとして出力する。
(D−1)このような出力値SQをフリップフロップ32から出力させるため、図5に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されておらず、第1変化タイミングが立ち上がり時間trとして選択され、さらに、後半時間帯TS(1)の後端が立ち下がり時間tfとなるもの(TP=7Δ、14Δ、および21Δ)については、論理制御値INVを1に設定した上で、入れ替え制御値SWAPを1、挿入制御値INSを1に設定する。第1参照値REF1は、立ち上がり時間trに対応する値に設定され、第2参照値REF2は、立ち下がり時間tfに対応する値に設定される。
これによって、中間点検出器30から出力される挿入パルスが立ち上がる時間でフリップフロップ32がセットされ、第1カウント値CT1が第1参照値REF1に一致する時間でフリップフロップ32がリセットされる。そして、フリップフロップ32の出力値SQの論理値を反転させた値が、パルス幅変調信号PWMとして出力される。
(D−2)また、上記のような出力値SQをフリップフロップ32から出力させるため、図4に示されるパルス時間帯Wのうち、時間帯が両サイドに分割されておらず、第2変化タイミングが立ち上がり時間trとして選択され、さらに、後半時間帯TS(1)の後端が立ち下がり時間tfとなるもの(TP=8Δ、16Δ、および24Δ)については、論理制御値INVを1に設定した上で、入れ替え制御値SWAPを0、挿入制御値INSを1に設定する。第1参照値REF1は、立ち下がり時間tfに対応する値に設定され、第2参照値REF2は、立ち上がり時間trに対応する値に設定される。
これによって、中間点検出器30から出力される挿入パルスが立ち上がる時間でフリップフロップ32がセットされ、第2カウント値CT2が第2参照値REF2に一致する時間でフリップフロップ32がリセットされる。そして、フリップフロップ32の出力値SQの論理値を反転させた値が、パルス幅変調信号PWMとして出力される。
図6に戻り、パルス制御部18について説明する。パルス制御部18は、パルス幅指定値Kを反映させるべき時間帯が、前半時間帯TS(0)であるか、後半時間帯TS(1)であるかを第1カウント値CT1に基づいて判定する。そして、パルス幅指定値Kを反映させる時間帯が前半時間帯TS(0)であるときは、(数5)に基づく前半アルゴリズムによって、パルス幅指定値Kに対する第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および挿入制御値INSを求め、信号出力部16に出力する。他方、パルス幅指定値Kを反映させる時間帯が後半時間帯TS(1)であるときは、(数6)に基づく後半アルゴリズムによって、パルス幅指定値Kに対する第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および挿入制御値INSを求め、信号出力部16に出力する。このような処理を実行するための各構成要素につき、以下、説明する。
タイミング生成部36は、第1カウント値CT1に基づいて、読み込み制御値WRおよび確定制御値LATを制御状態設定部42に出力する。さらに、タイミング生成部36は、読み込み制御値WRをラッチ回路38に出力する。これらの制御値は、パルス制御部18が信号出力部16の動作タイミングを規定するための値である。
図8には、タイミング生成部36の構成が示されている。第1カウント値CT1は、モジュロ演算器36−1に入力される。モジュロ演算器36−1は、カウント値CT1に対し、モジュロ演算[CT1 mod (M+1)/2]を実行し、その演算結果を確定点検出器36−2および読み込み点検出器36−3に出力する。確定点検出器36−2は、モジュロ演算器36−1から出力される値が(M+1)/2−1と一致する時間帯に1となり、その他の時間帯に0となる確定制御値LATを出力する。確定点検出器36−2は、モジュロ演算器36−1から出力される値が(M+1)/2−Xと一致する時間帯に1となり、その他の時間帯に0となる読み込み制御値WRを出力する。ここで、Xは、2以上、(M+1)/2以下の任意の正の整数である。
図6のラッチ回路38には、パルス幅指定数Kおよび読み込み制御値WRが入力される。ラッチ回路38は、読み込み制御値WRの立ち上がりにおいてパルス幅指定数Kを読み込み、読み込み制御値WRが一旦立ち下がった後、次に立ち上がるまでの間、その値を制御状態設定部42およびモジュロ演算部40に出力する。
図9には、モジュロ演算部40の構成が示されている。モジュロ演算器40−5は、モジュロ演算[K mod (M+1)]を実行し、これによって得られたモジュロ演算値をK_MOD_M1として出力する。モジュロ演算器40−6は、モジュロ演算[K mod M]を実行し、これによって得られたモジュロ演算値をK_MOD_Mとして出力する。
極性反転器40−1は、Kに−1を乗じて加算器40−2に出力する。加算器40−2は、Mに−Kを加算したM−Kをモジュロ演算器40−7に出力する。モジュロ演算器40−7は、モジュロ演算[M−K mod M]を実行し、これによって得られたモジュロ演算値をM_K_MOD_Mとして出力する。極性反転器40−3は、Kに−1を乗じて加算器40−4に出力する。加算器40−4は、M+1に−Kを加算した(M+1)−Kをモジュロ演算器40−8に出力する。モジュロ演算器40−8は、モジュロ演算[(M+1)−K mod (M+1)]を実行し、これによって得られたモジュロ演算値をM1_K_MOD_M1として出力する。
図6に示されているように、モジュロ演算部40は、モジュロ演算値、K_MOD_M1、K_MOD_M、M_K_MOD_M、および、M1_K_MOD_M1を制御状態設定部42に出力する。
図10A、図10Bおよび図10Cには、制御状態設定部42が実行する処理のフローチャートが示されている。図10Aにおける丸印で囲まれた符号「TS0」は、図10Bにおいて丸印で囲まれた符号「TS0」に処理の流れが接続されることを示す。また、図10Aにおける丸印で囲まれた符号「TS1」は、図10Cにおいて丸印で囲まれた符号「TS1」に処理の流れが接続されることを示す。そして、図10Bにおいて、丸印で囲まれた符号「0」は、図10Aにおいて丸印で囲まれた符号「0」に処理の流れが接続されることを示す。図10Cにおいて、丸印で囲まれた符号「1」は、図10Aにおいて丸印で囲まれた符号「1」に処理の流れが接続されることを示す。
制御状態設定部42は、第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSを0に初期化し、カウントリセット値CNT_RSTを1に初期化する(S101)。
制御状態設定部42は、リセットクロックCLK0が1から0に立ち下がるまで待機する(S102)。そして、リセットクロックCLK0が立ち下がった時に、カウントリセット値CNT_RSTを0とすることで、第1カウンタ12および第2カウンタ14の各カウント値を0にリセットする(S103)。
制御状態設定部42は、読み込み制御値WRが0から1に立ち上がった時に、パルス幅指定数Kおよび第1カウント値CT1を読み込む(S104)。そして、第1カウント値CT1が、最小公倍数時間帯TLCMの中間点を示す(M+1)/2以上であるか否かを判定する(S105)。制御状態設定部42は、第1カウント値CT1が(M+1)/2以上であるときは、(数5)に基づく前半アルゴリズムに従い、立ち上がり時間trおよび立ち下がり時間tfを求め、ST0の処理に移行する。前半アルゴリズムの実行に際しては、モジュロ演算部40から出力されたモジュロ演算値群が用いられる。
他方、第1カウント値CT1が、(M+1)/2未満であるときは、制御状態設定部42は、(数6)に基づく後半アルゴリズムに従い、立ち上がり時間trおよび立ち下がり時間tfを求め、ST1の処理に移行する。
このような処理によれば、第1カウント値CT1が、最小公倍数時間帯TLCMの中間点を表す(M+1)/2以上であるときは、前半アルゴリズムに従って立ち上がり時間trおよび立ち下がり時間tfが求められる。他方、第1カウント値CT1が(M+1)/2未満であるときは、後半アルゴリズムに従って立ち上がり時間trおよび立ち下がり時間tfが求められる。
これによって、前半時間帯TS(0)においては、次の後半時間帯TS(1)で設定されるべき立ち上がり時間trおよび立ち下がり時間tfが求められ、後半時間帯TS(1)においては、次の前半時間帯TS(0)で設定されるべき立ち上がり時間trおよび立ち下がり時間tfが求められる。
図10Bに示されるST0の処理について説明する。制御状態設定部42は、確定制御値LATが0から1に立ち上がるまで待機する(S201)。そして、確定制御値LATが1になった時に、(数5)に基づく前半アルゴリズムが、(i)(a)、(i)(b)、(ii)(a)、および(ii)(b)のいずれの条件の下で実行されているかに応じて、それぞれ、ステップS202、S203、S204、およびS205に移行する。これらのステップにおいては、各条件に応じて、第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSが設定される。各ステップで設定される値は以下の通りである。
ステップS202:REF1=tr/T1,REF2=tf/T2,SWAP=0,INV=0,INS=0
ステップS203:REF1=tf/T1,REF2=tr/T2,SWAP=0,INV=1,INS=0
ステップS204:REF1=tf/T1,REF2=tr/T2,INS=0,
tf=0の場合SWAP=0,INV=1,tf≠0の場合SWAP=1,INV=0
ステップS205:REF1=tr/T1,REF2=tf/T2,SWAP=1,
INV=1,INS=0
制御状態設定部42は、確定制御値LATが1から0に立ち下がった時に、第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSを信号出力部16に出力し(S206)、図10AのステップS103に戻る。制御状態設定部42は、第1カウンタ12および第2カウンタ14の各カウント値を0にリセットする(S103)。
なお、ここでは、ステップS206の後、図10AのステップS103に戻り、各カウント値をリセットする処理について説明したが、ステップS206の後、ステップS104に戻ることとしてもよい。すなわち、各カウンタ値のリセットは、最低限、システム起動時(S101〜S103)に実行すればよく、必ずしもST0の処理が実行されるごとに実行される必要はない。
図10Cに示されるST1の処理について説明する。制御状態設定部42は、確定制御値LATが0から1に立ち上がるまで待機する(S301)。そして、確定制御値LATが1になった時に、(数6)に基づく前半アルゴリズムが、(i)(a)、(i)(b)、(ii)(a)、および(ii)(b)のいずれの条件の下で実行されているかに応じて、それぞれ、ステップS302、S303、S304、およびS305に移行する。これらのステップにおいては、各条件に応じて、第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSが設定される。各ステップで設定される値は以下の通りである。
ステップS302:REF1=tf/T1,REF2=tr/T2,
tf=0の場合SWAP=0,INV=1,INS=1,tf≠0の場合SWAP=1,INV=0,INS=0
ステップS303:REF1=tr/T1,REF2=tf/T2,SWAP=1,INV=1,INS=0
ステップS304:REF1=tr/T1,REF2=tf/T2,tf=0の場合SWAP=1,INV=1,INS=1,tf≠0の場合SWAP=0,INV=0,INS=0
ステップS305:REF1=tf/T1,REF2=tr/T2,SWAP=0,
INV=1,INS=0
制御状態設定部42は、確定制御値LATが1から0に立ち下がった時に、第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSを信号出力部16に出力し(S306)、図10AのステップS104に戻る。
(4)パルス幅変調信号出力装置の動作例
図11には、半周期型パルス幅変調信号出力装置のタイミングチャートが例示されている。図2〜図5に示される事項と同一の事項については同一の符号を付してその説明を省略する。また、図6に示される構成、ならびに、図10A、図10Bおよび図10Cに示されるフローチャートを適宜参照する。
ここでは、読み込み制御値WRが立ち上がった時間t1における状態から説明を行う。読み込み制御値WRが立ち上がった時に、制御状態設定部42は、パルス幅指定数Kおよび第1カウント値CT1を読み込む(S104)。図11の例では、パルス幅指定数Kとして11が読み込まれ、第1カウント値CT1として6が読み込まれる。制御状態設定部42は、第1カウント値CT1が、最小公倍数時間帯TLCMの中間点を示す(M+1)/2以上であるか否かを判定する(S105)。図11の例では、CT1=6であり、第1カウント値CT1は(M+1)/2=4以上である。したがって、制御状態設定部42は、前半アルゴリズムに従って、立ち上がり時間trおよび立ち下がり時間tfを求める(S106)。
前半アルゴリズムにおいては、パルス幅指定数Kおよび第1カウンタ12の最大カウント数Mに基づいて、モジュロ演算部40によって各モジュロ演算値が求められ、(数5)におけるいずれの条件が成立するかが判定される。図11の例では、パルス幅指定数Kが、K=11であり、第1カウンタ12の最大カウント数Mが、M=7であるため、モジュロ演算値は、それぞれ、K_MOD_M1=3、K_MOD_M=4、M_K_MOD_M=3、および、M1_K_MOD_M1=5となる。したがって、(数5)における条件(i)(b)が成立し、立ち上がり時間としてtr=3・T2が求められ、立ち下がり時間としてtf=1・T1が求められる。
制御状態設定部42は、確定制御値LATが立ち上がる時間t2まで待機した後(S201)、(数5)における条件(i)(b)に応じた第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSを設定する(S203)。ここで求められる各値は、REF1=tf/T1=1、REF2=tr/T2=3、SWAP=0、INV=1、INS=0である。
制御状態設定部42は、確定制御値LATが立ち下がる時間t3に、第1参照値REF1=1、REF2=3、SWAP=0、INV=1、およびINS=0を信号出力部16に出力する(S206)。制御状態設定部42は、さらに、リセットクロックCLK0が立ち下がった時間t3に、カウントリセット値CNT_RSTを0とすることで、第1カウンタ12および第2カウンタ14の各カウント値を0にリセットする(S103)。これによって、時間t3以降の前半時間帯TS(0)における信号出力部16の状態が設定される。なお、上記のように、各カウンタ値のリセットは、最低限、システム起動時に実行すればよく、前半時間帯TS(0)の先端において毎回実行される必要はない。前半時間帯TS(0)において、信号出力部16は次のように動作する。
いまの場合、入れ替え制御値SWAPが0であり、挿入制御値INSが0である。そのため、第1変化点検出器20から出力された値がフリップフロップ32のセット端子Sに入力され、第2変化点検出器26から出力された値がフリップフロップ32のリセット端子Rに入力される。したがって、第1カウント値CT1が第1参照値REF1となる時間、すなわち、CT1=REF1=1となる時間t4にフリップフロップ32がセットされ、その出力値SQは0から1に立ち上がる。そして、第2カウント値CT2が第2参照値REF2、すなわち、CT2=REF2=3となる時間t7にフリップフロップ32がリセットされ、その出力値SQは1から0に立ち下がる。
ここでは、論理制御値INVは1であるため、フリップフロップ32の出力値SQの論理値が反転された値が、パルス幅変調信号PWMとして出力される。したがって、パルス幅変調信号PWMは、時間t4から時間t7までの時間帯における値が0となり、時間t3から時間t4までの時間帯における値、および、時間t7から次の後半時間帯TS(1)の開始時間t8までの時間帯における値が1となる。
これによって、11Δの時間長に亘って値が1となり、17Δの時間長に亘って値が0となるパルス幅変調信号PWMが、信号出力部16から出力される。
次に、読み込み制御値WRが立ち上がった時間t5以降の動作について説明する。読み込み制御値WRが立ち上がった時に、制御状態設定部42は、パルス幅指定数Kおよび第1カウント値CT1を読み込む(S104)。図11の例では、パルス幅指定数Kとして7が読み込まれ、第1カウント値CT1として2が読み込まれる。制御状態設定部42は、第1カウント値CT1が、最小公倍数時間帯TLCMの中間点を示す(M+1)/2以上であるか否かを判定する(S105)。図11の例では、CT1=2であり、第1カウント値CT1は(M+1)/2=4未満である。したがって、制御状態設定部42は、後半アルゴリズムに従って、立ち上がり時間trおよび立ち下がり時間tfを求める(S107)。
後半アルゴリズムにおいては、パルス幅指定数Kおよび第1カウンタ12の最大カウント数Mに基づいて、モジュロ演算部40によって各モジュロ演算値が求められ、(数6)におけるいずれの条件が成立するかが判定される。図11の例では、パルス幅指定数Kが、K=7であり、第1カウンタ12の最大カウント数Mが、M=7であるため、モジュロ演算値は、それぞれ、K_MOD_M1=7、K_MOD_M=0、M_K_MOD_M=0、および、M1_K_MOD_M1=1となる。したがって、(数6)における条件(ii)(a)が成立し、立ち上がり時間としてtr=7・T1が求められ、立ち下がり時間としてtf=0・T2が求められる。
制御状態設定部42は、確定制御値LATが立ち上がる時間t6まで待機した後(S301)、(数6)における条件(ii)(a)に応じた第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSを設定する(S304)。ここで求められる各値は、REF1=tr/T1=7、REF2=tf/T2=0、SWAP=1、INV=1、INS=1である。
制御状態設定部42は、確定制御値LATが1から0になった時間t8に、第1参照値REF1=7、REF2=0、SWAP=1、INV=1、およびINS=1を信号出力部16に出力する(S306)。これによって、時間t8以降の後半時間帯TS(1)における信号出力部16の状態が設定される。後半時間帯TS(1)において、信号出力部16は次のように動作する。
図11の例では、入れ替え制御値SWAPが1であり、挿入制御値INSが1である。そのため、中間点検出器30から出力された値がフリップフロップ32のセット端子Sに入力され、第1変化点検出器20から出力された値がフリップフロップ32のリセット端子Rに入力される。したがって、最小公倍数時間帯TLCMの中間点に対応する時間t8にフリップフロップ32がセットされ、その出力値SQは0から1に立ち上がる。そして、第1カウント値CT1が第1参照値REF1、すなわち、CT1=REF1=7となる時間t9にフリップフロップ32がリセットされ、その出力値SQは1から0に立ち下がる。
ここでは、論理制御値INVは1であるため、フリップフロップ32の出力値SQの論理値が反転された値が、パルス幅変調信号PWMとして出力される。したがって、パルス幅変調信号PWMは、時間t8から時間t9までの時間帯における値が0となり、時間t9から次の前半時間帯TS(0)の開始時間t10までの時間帯における値が1となる。
これによって、7Δの時間長に亘って値が1となり、21Δの時間長に亘って値が0となるパルス幅変調信号PWMが、信号出力部16から出力される。
ここでは、時間t1以降の動作について説明したが、それより前の動作も同様である。すなわち、図11の左側の後半時間帯TS(1)より前の前半時間帯TS(0)においては、パルス幅指定数K=3、および、第1カウンタ12の最大カウント数M=7に基づいて、(数6)における条件(i)(a)に応じた第1参照値REF1、第2参照値REF2、入れ替え制御値SWAP、論理制御値INV、および、挿入制御値INSが設定される。ここで求められる各値は、REF1=tf/T1=5、REF2=tr/T2=4、SWAP=1、INV=0、INS=0である。
ここでは、入れ替え制御値SWAPが1であり、挿入制御値INSが0である。そのため、第2変化点検出器26から出力された値がフリップフロップ32のセット端子Sに入力され、第1変化点検出器20から出力された値がフリップフロップ32のリセット端子Rに入力される。したがって、第2カウント値CT2が第2参照値REF2、すなわち、CT2=REF2=4となる時間u1にフリップフロップ32がセットされ、その出力値SQは0から1に立ち上がる。そして、第1カウント値CT1が第1参照値REF1、すなわち、CT1=REF1=5となる時間u2にフリップフロップ32がリセットされ、その出力値SQは1から0に立ち下がる。
ここでは、論理制御値INVは0であるため、フリップフロップ32の出力値SQがパルス幅変調信号PWMとして出力される。したがって、パルス幅変調信号PWMは、時間u1から時間u2での時間帯における値が1となり、後半時間帯TS(1)のその他の時間帯における値が0となる。
これによって、3Δの時間長に亘って値が1となり、25Δの時間長に亘って値が0となるパルス幅変調信号PWMが、信号出力部16から出力される。
(5)半周期型パルス幅変調信号出力装置による効果
本発明に係る半周期型パルス幅変調信号出力装置では、第1クロック信号CLK1および第2クロック信号CLK2の周期の差Δを時間分解能としてパルス幅変調信号のパルス幅が設定される。したがって、パルス発生器10が出力するクロック信号の周波数を低くしても、高い分解能でパルス幅が設定され得る。また、半周期型パルス幅変調信号出力装置はデジタル回路によって構成されるため、ハードウエアが小型化される。
さらに、本発明に係る半周期型パルス幅変調信号出力装置によれば、最小公倍数時間帯TLCMの前半時間帯TS(0)および後半時間帯TS(1)のそれぞれにおいて、1周期のパルス幅変調信号が生成される。これによって、図2のパルス時間帯Wに従う基本的なパルス幅変調出力装置に比べて、パルス幅変調信号の周期は半分となる。
したがって、本発明に係る半周期型パルス幅変調信号出力装置をDC/DCコンバータの制御に用いることで、DC/DCコンバータの出力電圧に含まれるリプル成分が低減され、さらには、負荷変動に対する出力電圧の追従性が向上する。