<第1の乱数生成方法>
図1は、第1の乱数生成方法(=無理数rのp進数展開を利用した乱数生成方法)の一例を示すフローチャートである。本フローが開始されると、まず、ステップS10において、無理数rがn進数表記(ただしnは2以上の整数)で設定される。なお、無理数rに代えて、計算機の有効桁数以上の桁数に亘って循環しない小数部を持つ有理数sをn進数表記で設定してもよい。
次に、ステップS20では、無理数rまたは有理数sのp進数展開(ただしpは2以上の整数であって、p≠n、かつ、p>rまたはp>s)が行われる。例えば、10進数表記された無理数r(10)のp進数展開は、次の(1)式で表すことができる。なお、p>rである場合、p進数展開された無理数rの整数部は、一桁(a0のみ)となる。
ここで、rが無理数である場合には、p進数展開により取得された数列(a0、a−1、a−2、…)を無限周期の乱数列として取り扱うことができる。そこで、続くステップS30では、上記の数列(a0、a−1、a−2、…)、または、これに演算処理を施したもの(詳細は後述)が乱数信号として出力される。
図2は、ステップS20の一例を示すフローチャートである。先にも述べたように、ステップS20では、無理数rのp進数展開を利用して乱数列(a0、a−1、a−2、…)が取得される。以下では、図2とともに、次の(2a)式〜(2c)式を適宜参照しながら、ステップS20での演算処理について詳述する。
本フローが開始されると、まず、ステップS21において、無理数rのp進数展開が行われる。ここでのp進数展開は、上記の(2a)式で表すことができる。
次に、ステップS22では、p進数展開された無理数rの整数部a0が抽出される。そして、ステップS23では、整数部a0が乱数列の第1項として出力される。
次に、ステップS24では、p進数展開された無理数rの小数部(r−a0)が抽出される。また、ステップS25では、小数部(r−a0)にpを乗ずることにより、小数部(r−a0)を1桁繰り上げた無理数(r−a0)pが新たに生成される。なお、更新後の無理数(r−a0)pは、上記の(2b)式で表すことができる。
その後、フローがステップS22に戻り、無理数(r−a0)pの整数部a−1が抽出される。そして、ステップS23では、整数部a−1が乱数列の第2項として出力される。
次に、ステップS24では、無理数(r−a0)pの小数部{(r−a0)p−a−1}が抽出される。また、ステップS25では、小数部{(r−a0)p−a−1}にpを乗ずることにより、小数部{(r−a0)p−a−1}を1桁繰り上げた無理数{(r−a0)p−a−1}pが新たに生成される。なお、更新後の無理数{(r−a0)p−a−1}pは、上記の(2c)式で表すことができる。
その後、フローがステップS22に戻り、無理数{(r−a0)p−a−1}pの整数部a−2が抽出される。そして、ステップS23では、整数部a−2が乱数列の第3項として出力される。
以降も上記一連の処理が繰り返されることにより、乱数列(a0、a−1、a−2、…)の取得が継続される。
具体例として、√2の2進数展開を利用した乱数列(a0、a−1、a−2、…)の取得処理は、次の(3a)式〜(3c)式で表すことができる。
また、πの5進数展開を利用した乱数列(a0、a−1、a−2、…)の取得処理は、次の(4a)式〜(4c)式で表すことができる。
次に、p進数展開の技術的意義について説明する。理論的には、n進数表記された無理数rの各桁値をそのまま利用しても、乱数列を生成することは可能である。例えば、10進数表記された無理数(例えば√2=1.4142…)の各桁値をそのまま利用すれば、乱数列(例えば1、4、1、4、2、…)を生成することができる。
しかしながら、実機での乱数生成処理を考えた場合には、マイコンで取り扱うことのできる有効桁数が重要となる。例えば、√2から乱数列を生成するに際して、マイコンが小数点以下1桁しか取り扱うことのできない極端なケースを考える。
このケースでは、r(10)=1.4となるので、各桁値をそのまま利用した場合、a0=1、a−1=4、a−2以降は全て0となり、乱数列を生成することができない。
一方、r(10)=1.4のp進数展開(例えばp=3)を利用すれば、次の(5a)式〜(5d)式で示したように、a0=1、a−1=1、a−2=0、a−3=1、…となり、a−4以降も同様の演算で乱数列の生成を継続することができる。
以上より、実機での乱数生成処理を考えた場合には、無理数rの各桁値をそのまま乱数として利用するのではなく、p進数展開を利用して乱数列を生成することが重要となる。
なお、上記の乱数列(a0、a−1、a−2、…)をそのまま乱数信号として出力することもできるが、より階調数の大きい乱数信号を生成するためには、上記の乱数列(a0、a−1、a−2、…)に適切な演算処理を施して乱数信号を生成することが望ましい。以下では、この点について、図3を参照しながら詳細に説明する。
図3は、ステップS30で実施される演算処理の一例を示すフローチャートである。本フローが開始されると、まず、ステップS31において、変数iの初期設定(i=0)が行われる。
次に、ステップS32では、乱数列(a0、a−1、a−2、…)をm桁ずつ(ただしmは2以上の整数)に区切り、これを10進数表記することにより、有理数Aiが生成される。なお、有理数Aiは、次の(6a)式で表すことができる。例えば、m=3の場合、A0=a0+a−1p+a−2p2となり、A1=a−3+a−4p+a−5p2となる。また、akの最大値は(p−1)であることから、有理数Aiの最大値Amaxは、次の(6b)式で表すことができる。
次に、ステップS33では、有理数Aiに応じた乱数信号VRSの信号値Vが算出される。なお、乱数信号VRSの最大値及び最小値をVmax及びVminとしたとき、乱数信号VRSの信号値Vは、次の(7)式で表すことができる。
その後、ステップS34では、変数iが一つインクリメントされて、フローがステップS32に戻される。以降も、ステップS32〜S34が繰り返されることにより、有理数Aiが順次生成され、これに応じて乱数信号VRSの信号値Vが順次切り替えられる。
図4は、上記の演算処理により生成される乱数信号VRS(r=√2、p=3、m=10の場合)の波形図である。本図で示したように、乱数信号VRSは、時間の経過(=変数iのインクリメント)に伴い、最大値Vmaxと最小値Vmin(本図の例では、Vmax=4.62V、Vmin=4.18V)との間で不規則的に変動する。
なお、無理数rのp進数展開で得られる乱数列自体は、0〜(p−1)の値しか取り得ない。例えば、2進数展開で得られる乱数は0か1となり、5進数展開で得られる乱数は0〜4のいずれかとなる。従って、無理数rのp進数展開で得られる乱数列をそのまま乱数信号VRSとして出力する場合には、その階調数を高めることが難しい。
一方、上記の演算処理によって生成される乱数信号VRSは、(Amax+1)個の値を取り得るので、その階調数を大幅に高めることが可能となる。
次に、マイコンの数値計算時に桁落ち(=疑似乱数列の周期短縮)が生じる場合の擬似乱数生成方法について、図5を参照しながら説明する。
図5は、疑似乱数列の周期が短くなる例(r=√2、p=2の場合)を示す図である。なお、本図には、疑似乱数列の生成と共に順次繰り上げられていく小数部(=先出の(2b)式または(2c)式を参照)が10進数表記で順次記載されている。
マイコンを用いて数値計算を行う場合、その計算精度は有限の有効桁数L(例えば小数点以下18桁)によって決まる。すなわち、マイコンを用いた数値計算では、無理数rを用いることと、有効桁数L以上の桁数に亘って循環しない小数部を持つ有理数sを用いることとは等価である。なお、当然のことながら、疑似乱数列の周期は、有効桁数Lが大きいほど長くなる。
ところで、疑似乱数列の生成処理(=整数部の抽出処理)では、小数部にpを乗じて順次桁上げを繰り返す必要がある(図2のステップS25を参照)。しかしながら、小数部の末桁で偶数と5の倍数が掛け合わされると、新たな小数部の末桁に0が生じるので、疑似乱数列の周期が短くなっていく(図中の太枠内を参照)。
これを鑑みると、pは5の倍数でない奇数とすることが望ましい。このような設定を行うことにより、十分に長い周期の擬似乱数列を生成することが可能となる。
なお、疑似乱数列の出力に際しては、p進数展開により取得される数列から所定長の部分数列を切り出し、その部分数列を反復して疑似乱数列を生成するようにしてもよい。
<乱数利用例>
図6は、固定周波数方式の周波数スペクトル図である。本図の黒線は、第1矩形波信号(500kHz固定)について、周波数毎の信号強度を示した周波数スペクトルである。一方、本図のグレー線は、第2矩形波信号(10MHz固定)について、周波数毎の信号強度を示した周波数スペクトルである。
双方の周波数スペクトル(黒線、グレー線)を対比すれば分かるように、固定周波数方式で高周波駆動を行うと、高周波領域のピーク強度が大きくなるので、放射ノイズや伝導ノイズが増大する。
一方、駆動周波数に変調を掛けるスペクトラム拡散方式を採用すれば、固定周波数方式の基本的な周波数ノイズレベルに対して、一定の減衰量を得ることが可能となる。特に、駆動周波数の変調手段としては、これまでに説明してきた乱数信号VRSを好適に用いることが可能である。
以下では、乱数信号VRSを用いたスペクトラム拡散方式について、具体例を挙げながら詳細に説明する。
<第1実施形態>
図7は、スイッチング回路の一構成例を示す回路図(第1実施形態)である。本実施形態のスイッチング回路1は、矩形波信号VQを生成するパルス発振器10と、矩形波信号VQに応じて出力スイッチN1(本図ではNMOSFET)をオン/オフさせる駆動部20とを有し、入力電圧Vinの印加端と出力スイッチN1との間に接続された負荷抵抗RL1を駆動する。
パルス発振器10は、これまでに説明してきた乱数生成方法を用いて乱数信号VRSを生成する乱数信号生成部110と、乱数信号VRSに応じた発振周波数のパルス信号(ここでは矩形波信号VQ)を生成するパルス信号生成部120と、を含む。
パルス信号生成部120は、コンパレータ121と、Dフリップフロップ122と、積分回路123と、ローパスフィルタ124と、コンパレータ125と、を含む。
コンパレータ121は、非反転入力端(+)に入力される乱数信号VRSと反転入力端(−)に入力される三角波信号VRTとを比較してクリア信号CLRを生成する。クリア信号CLRは、乱数信号VRSが三角波信号VRTよりも高いときにハイレベルとなり、乱数信号VRSが三角波信号VRTよりも低いときにローレベルとなる。
Dフリップフロップ122は、クロック信号CLKとクリア信号CLRの入力を受けて矩形波信号VQを出力する順序回路である。例えば、Dフリップフロップ122は、クロック信号CLKの立上りエッジを受けて矩形波信号VQをハイレベル(=データ端(D)に印加されている電源電圧Vcc)とし、クリア信号CLRの立上りエッジを受けて矩形波信号VQをローレベル(=GND)とする。
積分回路123は、参照電圧Vref1を基準として矩形波信号VQを積分することにより三角波信号VRTを生成する手段であり、オペアンプAMP1と、抵抗R1と、キャパシタC1と、を含む。オペアンプAMP1の非反転入力端(+)には、参照電圧Vref1が印加されている。一方、オペアンプAMP1の反転入力端(−)には、抵抗R1を介して矩形波信号VQが印加されている。また、オペアンプAMP1の反転入力端(−)と出力端との間には、キャパシタC1が接続されている。
ローパスフィルタ124は、抵抗R2とキャパシタC2から成るRCフィルタであり、三角波信号VRTから高周波成分を除去する。
コンパレータ125は、非反転入力端(+)に入力される三角波信号VRTと反転入力端(−)に入力される参照電圧Vref2を比較してクロック信号CLKを生成する。クロック信号CLKは、三角波信号VRTが参照電圧Vref2よりも高いときにハイレベルとなり、三角波信号VRTが参照電圧Vref2よりも低いときにローレベルとなる。
なお、見方を変えると、本構成例のパルス発振器10は、基本周波数を有するキャリア波を生成するキャリア波生成手段と、周波数掃引信号を発生させる周波数掃引手段と、キャリア波に基づいてパルス信号を生成するパルス生成手段と、を備えており、キャリア波生成手段は、周波数掃引信号に応じてキャリア波の周波数を不規則的に変化させる構成であると言うこともできる。
図8は、乱数信号生成部110の一構成例を示すブロック図である。本構成例の乱数信号生成部110は、マイコン111と、マスタクロック源112と、メモリ113と、DAC114と、を含む。
マイコン111は、マスタクロックMCLKに同期して動作し、これまでに説明してきた乱数生成方法を用いて乱数信号VRSを生成するためのデジタル計算機である。
マスタクロック源112は、マイコン111を駆動するためのマスタクロックMCLKを生成する。
メモリ113は、マイコン111のプログラム格納領域及び作業領域として用いられる半導体記憶手段である。
DAC114は、マイコン111から入力されるデジタルの乱数信号をアナログの乱数信号VRSに変換して出力する。
このように、本構成例の乱数信号生成部110であれば、マイコン111でのデジタル演算処理によって所望の乱数信号VRS(=十分な長さの周期を持つ疑似乱数列)を生成することができるので、回路規模の増大とは無縁である。
図9は、パルス信号生成部120の一動作例を示すタイミングチャートであり、上から順に、矩形波信号VQ、三角波信号VRT、クロック信号CLK、及び、クリア信号CLRが描写されている。
時刻t1において、三角波信号VRTが乱数信号VRSよりも低くなると、クリア信号CLRがハイレベルに立ち上がる。その結果、矩形波信号VQがローレベル(=GND)に立ち下がるので、その後、三角波信号VRTが下降から上昇に転じる。
時刻t2において、三角波信号VRTが参照電圧Vref2よりも高くなると、クロック信号CLKがハイレベルに立ち上がる。その結果、矩形波信号VQがハイレベル(=Vcc)に立ち上がるので、その後、三角波信号VRTが上昇から下降に転じる。
時刻t2以降も、上記と同様の動作が繰り返されることにより、矩形波信号VQの生成が継続される。
なお、乱数信号生成部110で生成される乱数信号VRSは、これまでに説明してきた乱数生成方法により、その信号値が不規則に変動する。また、乱数信号VRSが不規則に変動すると、これに伴って矩形波信号VQの駆動周波数fも不規則に変動する。
このように、本構成例のパルス発振器10であれば、乱数信号VRSを用いて駆動周波数fに変調を掛けることができるので、スペクトラム拡散方式の作用効果により、固定周波数方式の基本的な周波数ノイズレベルに対して一定の減衰量を得ることが可能となる。
図10は、第1実施形態における乱数信号VRSの波形図である。図11は、第1実施形態における乱数信号VRS、三角波信号VRT、及び、矩形波信号VQの相関関係を示す波形図である。図12は、シミュレーションにより得られた第1実施形態における出力スイッチN1のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、及び、ドレイン・ソース間電流Idsの相関関係を示す波形図である。
なお、上記の各波形図は、r=√2、p=3、m=10、乱数信号VRSが4.41Vを中心値として±0.7%の変動幅を持つ場合(Vmax=4.441V、Vmin=4.379V)に得られたものである。
図13〜図15は、第1実施形態における出力スイッチN1のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、及び、ドレイン・ソース間電流Idsそれぞれの周波数スペクトル図である。なお、各図の黒線は、駆動周波数fを固定した場合の周波数スペクトルを示している。一方、各図のグレー線は、駆動周波数fに疑似乱数変調を掛けた場合の周波数スペクトルを示している。
各図を参照すれば分かるように、駆動周波数fに疑似乱数変調を掛けた場合には、駆動周波数fを固定した場合と比べて、出力スイッチN1のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、並びに、ドレイン・ソース間電流Idsの全てにおいて、最大で10dB程度のノイズ低減を達成することが可能となる。
<第2実施形態>
図16は、DC/DCコンバータの一構成例を示す回路図(第2実施形態)である。本実施形態のDC/DCコンバータ2は、先出のパルス発振器10と、スイッチ出力部30と、帰還電圧生成部40と、エラーアンプ50と、位相補償部60と、コンパレータ70と、駆動部80と、を有する。
パルス発振器10は、基本的に図7と同様の構成であるが、矩形波信号VQではなく、三角波信号VRTを出力する。
スイッチ出力部30は、入力電圧Vinを降圧して所望の出力電圧Voutを生成して負荷抵抗RL2に供給する出力段であり、出力スイッチN2(本図ではNMOSFET)と、ダイオードD1と、インダクタL1と、キャパシタC3と、を含む。出力スイッチN2のドレインは、入力電圧Vinの入力端に接続されている。出力スイッチN2のソースは、ダイオードD1のカソードとインダクタL1の第1端に接続されている。出力スイッチN2のゲートは、駆動部80の出力端に接続されている。インダクタL1の第2端とキャパシタC3の第1端は、出力電圧Voutの出力端に接続されている。ダイオードD1のアノードとキャパシタC3の第2端は、接地端に接続されている。
このように、本実施形態では、ダイオード整流方式による降圧型のスイッチ出力部30が用いられている。ただし、スイッチ出力部30の構成は何らこれに限定されるものではなく、例えば、ダイオードD1を同期整流トランジスタに置き換えても構わない。また、昇圧型、昇降圧型、ないしは、反転型のスイッチ出力部30を用いることも任意である。
帰還電圧生成部40は、出力電圧Voutの出力端と接地端との間に直列接続された抵抗R3及びR4を用いることにより、出力電圧Voutに応じた帰還電圧Vfb(=出力電圧Voutの分圧電圧)を生成する。なお、出力電圧Voutがエラーアンプ50の入力ダイナミックレンジに収まっている場合には、帰還電圧生成部40を割愛し、出力電圧Voutをエラーアンプ50に直接入力することも可能である。
エラーアンプ50は、オペアンプAMP2と、抵抗R5及びR6と、キャパシタC4とを含み、帰還電圧Vfbと所定の参照電圧Vrefとの差分に応じた誤差信号Verrを生成する。オペアンプAMP2の非反転入力端(+)は、参照電圧Vrefの印加端に接続されている。オペアンプAMP2の反転入力端(−)は、帰還電圧Vfbの印加端に接続されている。また、オペアンプAMP2の反転入力端(−)と出力端との間には、抵抗R6とキャパシタC4が並列接続されている。なお、誤差信号Verrは、帰還電圧Vfbが参照電圧Vrefよりも低いときに上昇し、帰還電圧Vfbが参照電圧Vrefよりも高いときに低下する。
位相補償部60は、抵抗R7とキャパシタC5から成るRCローパスフィルタであり、誤差信号Verrが発振しないように位相補償を行う。
コンパレータ70は、非反転入力端(+)に入力される誤差信号Verrと、反転入力端(−)に入力される三角波信号VRTとを比較して、パルス幅変調されたデューティ信号Sdを生成する。デューティ信号Sdは、誤差信号Verrが三角波信号VRTよりも高いときにハイレベルとなり、誤差信号Verrが三角波信号VRTよりも低いときにローレベルとなる。
駆動部80は、入力電圧Vinから所望の出力電圧Voutが生成されるように、デューティ信号Sdに応じて出力スイッチN2をオン/オフさせる。より具体的に述べると、駆動部80は、デューティ信号Sdがハイレベルであるときに出力スイッチN2をオンとし、デューティ信号Sdがローレベルであるときに出力スイッチN2をオフとするようにゲート制御を行う。
図17は、第2実施形態における乱数信号VRSの波形図である。図18は、第2実施形態における乱数信号VRSと三角波信号VRTの相関関係を示す波形図である。図19は、シミュレーションにより得られた第2実施形態における出力スイッチN2のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、及び、ドレイン・ソース間電流Idsの相関関係を示す波形図である。図20は、第2実施形態における出力電圧Voutを示す波形図である。
なお、上記の各波形図は、r=√2、p=3、m=10、乱数信号VRSが0.7Vを中心値として±2%の変動幅を持つ場合(Vmax=0.714V、Vmin=0.686V)に得られたものである。
図21〜図23は、第2実施形態における出力スイッチN2のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、及び、ドレイン・ソース間電流Idsそれぞれの周波数スペクトル図である。なお、各図の黒線は、駆動周波数fを固定した場合の周波数スペクトルを示している。一方、各図のグレー線は、駆動周波数fに疑似乱数変調を掛けた場合の周波数スペクトルを示している。
各図を参照すれば分かるように、駆動周波数fに疑似乱数変調を掛けた場合には、駆動周波数fを固定した場合と比べて、出力スイッチN2のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、並びに、ドレイン・ソース間電流Idsの全てにおいて、最大で10dB程度のノイズ低減を達成することが可能となる。
<第2の乱数生成方法>
図24は、第2の乱数生成方法の一例を示すフローチャートである。本フローが開始されると、まず、ステップS41において、変数kの初期設定(k=1)が行われる。
次に、ステップS42では、入力信号Pkの初期値(=P1)として、0以外の実数Sが設定される。なお、乱数の種となる実数Sとしては、例えば、無理数(または計算機の有効桁数以上の桁数に亘って循環しない小数部を持つ有理数)や素数が好適である。
次に、ステップS43では、入力信号Pkに所定の乗算処理(=係数rの乗算処理)が施されて乗算信号rPkが算出される。
次に、ステップS44では、乗算信号rPkに所定の条件判定処理が施されて入力信号Pkの更新値(=次回の入力信号Pk+1)が設定される。
その後、ステップS45では、変数kが一つインクリメントされて、フローがステップS43に戻される。以降も、ステップS43〜S45が繰り返されることにより、乗算信号rPkが順次生成され、その一部または全部、若しくは、これに所定の演算処理を施したものが乱数信号として出力される。例えば、乗算信号rPkが2進数で表記されるデジタル信号である場合には、その任意のビットを乱数信号として利用することができる。
<条件判定処理>
次に、ステップS44における条件判定処理のアルゴリズムについて説明する。上記の条件判定処理では、乗算信号rPkの信号値とL個の閾値K1〜KL(ただし、Lは2以上の整数であり、K1<K2<…<KL)とがそれぞれ比較され、次の(8)0〜(8)L式に照らし合わせて、入力信号Pkの更新値(=次回の入力信号Pk+1)が設定される。
なお、実数Sを2進数で表記されるNビット(例えばN=19)のデジタル信号S(2)としたときには、入力信号Pk及び乗算信号rPkもデジタル信号となる。このとき、閾値K1〜KLをそれぞれ2N−L+2〜2N+1に設定すると、先出の(8)0〜(8)L式は、次の(9)0〜(9)L式として書き改めることができる。
このように、ステップS44における条件判定処理では、乗算信号rPkの信号値と複数の閾値K1〜KLとがそれぞれ比較され、乗算信号の信号値rPk、若しくは、乗算信号rPkの信号値から複数の閾値K1〜KLのいずれかを差し引いた差分値が入力信号Pkの更新値(=次回の入力信号Pk+1)として設定される。
<乱数性評価>
次に、上記一連のフローで生成される乱数信号の評価手法について説明する。乱数信号の評価に際しては、まず、乱数信号(=乗算信号rPk)が0≦xi≦1(ただしiは正の整数であり、ここではi=1,2,…,n)を満たす実数の集合{xi}として正規化される。例えば、Ri=rPiとして、集合{Ri}(ただしRmin≦Ri≦Rmax)を作成し、次の(10)式を用いて実数xiを求めればよい。
また、乗算信号rPkがデジタル信号であり、その下位からm番目のビット(ここではrPkmと表わす)を乱数信号として利用する場合には、a1(2)=[rP1mrP2m…rP19m],a2(2)=[rP20mrP21m…rP38m],…,an(2)=[rP(19n−18)mrP(19n−17)m…rP19nm]というように、例えば、乱数列(rP1m,rP2m,…,rP19nm)を19桁ずつに区切り、次の(11)式を用いて実数xiを求めればよい。
次に、上記で求められた実数の集合{xi}から2次元空間における実数ベクトルの集合{(x,y)=(x1,x2),(x2,x3),…,(xn,x1)}が生成される。これは、写像f:{xi}→{(x,y)}として定義される。
そして、次の(12)式により、相関係数rxyが算出される。
図25は、実数ベクトルの集合{(x,y)}を2次元空間にプロットした図である。まず、本図左側には、第1条件(S=√2−1,r=3,L=2,K1=1,K2=2,n=65535)で集合{xi}を生成したときの結果が示されている。本図から明らかなように、第1条件において、実数ベクトル(x,y)は、2次元空間に一様に分散していることが分かる。なお、相関係数rxyは、−3.4×10−3であった。
また、本図中央には、第2条件(S=17,r=3,L=2,N=19,K1=219,K2=220,n=65535)で集合{xi}を生成したときの結果が示されている。本図から明らかなように、第2条件でも、実数ベクトル(x,y)は、2次元空間に一様に分散していることが分かる。なお、相関係数rxyは、2.9×10−3であった。
一方、本図の右側には、線形帰還シフトレジスタ(LFSR[linear feedback shift register])を使用し、所定の条件(ビット数=16,n=65535)で集合{xi}を生成したときの結果が示されている。本図から明らかなように、LFSRを用いる従来の乱数生成方法では、実数ベクトル(x,y)が2次元空間に一様に分散していないことが分かる。なお、相関係数rxyは0.5であった。
このように、第2の乱数生成方法を用いて生成された乱数信号を0≦xi≦1(ただしiは正の整数)を満たす実数の集合{xi}として正規化し、実数の集合{xi}から実数ベクトルの集合{(x,y)=(x1,x2),(x2,x3),…,(xn,x1)}を生成したときには、相関係数rxyが0≦rxy<0.5を満たすものとなる。従って、従来の乱数生成方法と比べて、乱数性の高い乱数信号を生成することが可能となる。特に、LFSRを用いる従来の乱数生成方法では、相関係数Rxyが0.5なので、モンテカルロシミュレーションや暗号化処理を行う計算システムには用いることができないが、第2の乱数生成方法であれば、相関係数Rxyが十分に小さいので、上記の計算システムにも好適に用いることが可能である。
<スペクトラム拡散信号発生器>
図26は、スペクトラム拡散信号発生器の一構成例を示す図である。本構成例のスペクトラム拡散信号発生器200は、乱数信号生成回路200Aと、パルス信号生成回路200Bと、を有するパルス発振器の一種である。
乱数信号生成回路200Aは、先に説明した第2の乱数信号生成方法を用いて乱数信号(=乗算信号rPk)を生成する回路ブロックであり、初期値設定部210と、乗算部220と、条件判定部230と、を含む。
パルス信号生成回路200Bは、乗算信号rPkに応じた発振周波数のパルス信号を生成し、これをスペクトラム拡散信号VSSとして出力する回路ブロックであり、カウンタ240と、周波数決定部250と、を含む。
初期値設定部210は、入力信号Pkの初期値(=P1)として、0以外の実数Sを設定する。
乗算部220は、入力信号Pkに所定の乗算処理(=係数rの乗算処理)を施して乗算信号rPkを算出する。
条件判定部230は、乗算信号rPkに所定の条件判定処理を施して入力信号Pkの更新値(=次回の入力信号Pk+1)を設定する。
なお、乱数信号生成回路200Aでは、上記の乗算処理と条件判定処理が繰り返されることにより、乗算信号rPkが順次生成され、その一部または全部、若しくは、これに所定の演算処理を施したものが乱数信号として出力される。例えば、乗算信号rPkが2進数で表記されるデジタル信号である場合には、その任意のビットを乱数信号として利用することができる。この点については、先述の通りである。
カウンタ240は、クロック信号PWMのパルスカウント値M1を出力する。
周波数決定部250は、パルスカウント値M1と乱数信号rPkに応じた目標カウント値M2(後述)とを比較して、スペクトラム拡散信号VSSの発振周波数を決定する。
以下では、S=17d(=000…10001b),r=3,L=2,N=19,K1=219,K2=220である場合を例に挙げて、上記各部の構成及び動作を説明する。ただし、これとは異なる条件を用いることも任意である。
また、以下では、入力信号Pk及び乗算信号rPkに付されている添え字kを必要のない限り割愛し、それぞれ、入力信号P及び乗算信号rP(=3P)と略記する。
<初期値設定部>
図27は、初期値設定部210の一構成例を示す図である。今、入力信号Pの各ビットを下位ビットから順に、A1〜A21(ただしビットA20及びA21は演算用(後述)であり常に0)と定義する。この場合、入力信号Pを初期値S=17d(=000…10001b)に設定するためには、ビットA1及びA5を「1」とし、その他のビットを全て「0」とすればよいことが分かる。
なお、入力信号Pの初期値Sとこれに乗算される係数rが共に奇数なので、ビットA1については、常に「1」(=ハイレベル電位V1)に維持しておけばよい。従って、初期値設定部210では、実質的に、ビットA5の初期値設定のみを行えばよいことになる。本構成例の初期値設定部210は、これを実現するための手段として、RSフリップフロップ211と、抵抗212と、キャパシタ213と、ORゲート214と、を含む。
RSフリップフロップ211のセット端(S)と抵抗212の第1端は、信号Vsの入力端に接続されている。抵抗212の第2端とキャパシタ213の第1端(=信号Vrの出力端)は、RSフリップフロップ211のリセット端(R)に接続されている。キャパシタ213の第2端は、接地端に接続されている。RSフリップフロップ211の出力端(Q)(=信号Vqの出力端)は、ORゲート214の第1入力端に接続されている。ORゲート214の第2入力端は、信号AA5(後述)の入力端に接続されている。ORゲート214の出力端は、ビットA5の出力端に相当する。
上記構成から成る初期値設定部210において、抵抗212とキャパシタ213は、信号Vsを平滑して信号Vrを生成する。従って、信号Vrの波形は、信号Vsのエッジを鈍らせた波形となる。RSフリップフロップ211は、信号Vsが閾値Vthを上回ったときに信号Vqをハイレベルにセットし、信号Vrが閾値Vthを上回ったときに信号Vqをローレベルにリセットする。ORゲート214は、信号Vqと信号AA5の論理和信号をビットA5として出力する。従って、ビットA5は、信号Vqと信号AA5の少なくとも一方がハイレベルであるときにハイレベルとなり、信号Vqと信号AA5の双方がローレベルであるときにローレベルとなる。
図28は、初期値設定部210による初期値設定動作の一例を示すタイミングチャートであり、上から順に、信号Vs(実線)及び信号Vr(破線)、信号Vq、信号AA5、並びに、ビットA5が描写されている。
時刻t11において、信号Vsがハイレベルに立ち上げられると、信号Vrはこれに伴って緩やかに上昇を開始する。その結果、Vs>Vth、Vr<Vthとなるので、信号Vqがハイレベルにセットされる。従って、ビットA5は、信号AA5の論理レベルに依ることなく、ハイレベル(=初期値「1」に相当)に固定される。
その後、時刻t12において、Vr>Vthになると、信号Vqがローレベルにリセットされる。従って、時刻t12以降、ビットA5として信号AA5がスルー出力される。
なお、ビットA1〜A19についても、必要に応じて上記と同様の回路を用いることにより、それぞれの初期値を「1」に設定することができる。従って、19ビットの入力信号Pについて言えば、その初期値Sを「0000…0001b」(=1d)〜「1111…1111b」(=524287d)の範囲で任意に設定することが可能である。
また、ビットA1及びA5以外の初期値を「0」とする初期設定動作については、信号Vrを用いて実現することができる。この点については、条件判定部230の構成及び動作の説明と併せて後述する。
<乗算部>
N=19である場合、入力信号Pの数値範囲は、1d〜524287dとなり、これを3倍して得られる乗算信号3Pの数値範囲は、3d〜1572861dとなる。従って、乗算信号3Pを2進数で表記するためには、21ビットが必要となる。
ここで、10進数表記の乗算信号3P(10)は、次の(13)式で表すことができる。
従って、入力信号Pを「A19A18A17…A3A2A1」というように2進数で表記し、乗算信号3Pを「Y21Y20Y19Y18…Y4Y3Y2Y1」というように2進数で表記した場合、乗算部220による乗算動作は、図29で示す演算処理となる。なお、本図中のC1〜C19は、それぞれ、繰上がりビットを示している。
図29の演算処理を論理式で表わすと、次の(14)1〜(14)21式のようになる。ただし、この論理式はあくまでも一例であり、同様の演算結果が得られる論理式は、この限りではない。
図30は、上記の演算処理を実施する乗算部220の一構成例を示す図である。本構成例の乗算部220は、XORゲートa1〜a58と、ANDゲートb1〜b37と、ORゲートc1〜c18と、を含む。
XORゲートa1は、ビットA1とビットA2との排他的論理和信号をビットY2として出力する。この論理演算処理は、(14)2式に相当する。
ANDゲートb1は、ビットA1とビットA2との論理積信号(=繰上がりビットC1に相当)を出力する。XORゲートa2は、b1出力とビットA2との排他的論理和信号を出力する。XORゲートa3は、a2出力とビットA3との排他的論理和信号をビットY3として出力する。これらの論理演算処理は、(14)3式に相当する。
ANDゲートb2は、ビットA2とビットA3との論理積信号を出力する。XORゲートa6は、ビットA2とビットA3との排他的論理和信号を出力する。ANDゲートb3は、b1出力とa6出力との論理積信号を出力する。ORゲートc1は、b2出力とb3出力との論理和信号(=繰上がりビットC2に相当)を出力する。XORゲートa4は、c1出力とビットA3との排他的論理和信号を出力する。XORゲートa5は、a4出力とビットA4との排他的論理和信号をビットY4として出力する。
ANDゲートb4は、ビットA3とビットA4との論理積信号を出力する。XORゲートa7は、ビットA3とビットA4との排他的論理和信号を出力する。ANDゲートb5は、c1出力とa7出力との論理積信号を出力する。ORゲートc2は、b4出力とb5出力との論理和信号(=繰上がりビットC3に相当)を出力する。XORゲートa8は、c2出力とビットA4との排他的論理和信号を出力する。XORゲートa9は、a8出力とビットA5との排他的論理和信号をビットY5として出力する。
ビットY6〜Y20の生成回路は、それぞれ、ビットY5の生成回路と基本的に同様であり、3つのXORゲート、2つのANDゲート、及び、1つのORゲートが繰り返して配置されている。そこで、ビットY6〜Y20の生成回路については、重複した説明を割愛し、ビットY21以降の生成回路について説明を続ける。
ANDゲートb36は、ビットA19とビットA20との論理積信号を出力する。XORゲートa55は、ビットA19とビットA20との排他的論理和信号を出力する。ANDゲートb37は、c17出力とa55出力との論理積信号を出力する。ORゲートc18は、b36出力とb37出力との論理和信号(=繰上がりビットC19に相当)を出力する。XORゲートa56は、c18出力とビットA20(=常に0)との排他的論理和信号(すなわち繰上がりビットC19そのもの)をビットY21として出力する。これらの論理演算処理は、(14)21式に相当する。
XORゲートa57は、ビットY20とビットY20との排他的論理和信号を生成し、これを条件判定処理用の信号YY20(=常に0)として条件判定部220に出力する。
XORゲートa58は、ビットY21とビットY21との排他的論理和信号を生成し、これを条件判定処理用の信号YY21(=常に0)として条件判定部220に出力する。
ただし、上記の論理回路はあくまでも一例であり、同様の演算結果が得られる論理回路は、この限りではない。
図31は、ビットY18の経時変化を示す図である。本図から分かるように、ビットY18は、ランダムに、「0」(=0V)と「1」(=5V)を取る。そこで、以下では、ビットY18を乱数信号として利用する例を挙げて説明を行う。ただし、乗算信号3Pの各ビットのうち、いずれを乱数信号と利用しても構わない。また、乗算信号3Pそのものを乱数信号として利用することも可能である。
<条件判定部>
図32は、条件判定部230の一構成例を示す図である。本構成例の条件判定部230は、ANDゲートd2〜d19と、Dフリップフロップe2〜e21と、を含む。
ANDゲートd2〜d19は、それぞれ、信号Vr(先出の図27を参照)とビットY2〜Y19との論理積信号を出力する。従って、信号Vrがローレベルに維持されている間、d2出力〜d19出力は、ビットY2〜Y19それぞれの論理レベルに依ることなくローレベルに固定される。一方、信号Vrがハイレベルに立ち上がると、それ以降、ビットY2〜Y19がd2出力〜d19出力としてスルー出力される。このような論理演算処理により、ビットA2〜A19(ただしビットA5を除く)の初期値を「0」に設定することができる。
Dフリップフロップe2〜e21は、それぞれ、クロック端に入力されるクロック信号PWMに同期して、データ端(D)への入力信号をラッチし、これを出力端(Q)から出力する。より具体的に述べると、Dフリップフロップe2〜e4及びe6〜e19は、それぞれ、d2出力〜d4出力及びd6出力〜d19出力をラッチし、これをビットA2〜A4及びA6〜A19として出力する。
Dフリップフロップe5は、d5出力をラッチし、これを信号AA5として出力する。なお、信号AA5は、初期値設定部210によるビットA5の初期値設定処理(=信号Vqとの論理和演算処理)に供される。
Dフリップフロップe20及びe21は、それぞれ、信号YY20及びYY21をラッチし、これをビットA20及びA21として出力する。
また、Dフリップフロップe2〜e21それぞれの出力論理レベルは、プリセット信号PREに応じてハイレベルにプリセットされ、クリア信号CLRに応じてローレベルにリセットされる。
本構成例の条件判定部230は、信号Vrがハイレベルに立ち上げられて以降、ビットY2〜Y19をそれぞれビットA2〜A19としてそのままラッチする一方、ビットA20及びA21として常に「0」を出力する。この信号処理は、乗算信号3Pkと閾値219及び220とをそれぞれ比較し、次の(15)0〜(15)2式に照らし合わせて、入力信号Pkの更新値(=次回の入力信号Pk+1)を設定していることに他ならない。
<カウンタ>
図33は、カウンタ240の一構成例を示す図である。本構成例のカウンタ240は、Dフリップフロップf1〜f8を含み、それぞれの出力信号Q1〜Q8をパルスカウント値M1(=0d〜255d)の各ビットとして出力する。すなわち、パルスカウント値M1は、「Q8Q7Q6Q5Q4Q3Q2Q1」という8ビットの2進数で表記される。
Dフリップフロップf1は、クロック端に入力されるクロック信号PWMに同期して、データ端(D)への入力信号(=反転出力信号Q1B)をラッチし、これを出力信号Q1として出力端(Q)から出力する一方、その論理反転信号を反転出力信号Q1Bとして反転出力端(QB)から出力する。
Dフリップフロップf2〜f8は、それぞれ、クロック端に入力される反転出力信号Q1B〜Q7Bに同期してデータ端(D)への入力信号(=反転出力信号Q2B〜Q8B)をラッチし、これを出力信号Q2〜Q8として出力端(Q)から出力する一方、その論理反転信号を反転出力信号Q2B〜Q8Bとして反転出力端(QB)から出力する。
また、Dフリップフロップf1〜f8それぞれの出力論理レベルは、プリセット信号PREに応じてハイレベルにプリセットされ、クリア信号CLRに応じてローレベルにリセットされる。
図34は、カウンタ240によるパルスカウント動作の一例を示すタイミングチャートであり、上から順に、クロック信号PWMと出力信号Q1〜Q4(出力信号Q5〜Q8は省略)が描写されている。本図から分かるように、パルスカウント値M1は、クロック信号PWMのパルスが入力される毎に、「00000000b」→「00000001b」→「00000010b」→「00000011b」→…というように変化していく。
<周波数決定部>
図35は、周波数決定部250の一構成例を示す図である。本構成例の周波数決定部250は、目標カウント値更新部250Xと、デューティ設定部250Yと、出力部250Zと、を含む。
目標カウント値更新部250Xは、パルスカウント値M1の初期化直後(=クリア信号CLRのパルス生成直後)に順次入力される複数ビット分の乱数信号(ここでは、クロック信号PWMの第1パルス目〜第5パルス目にそれぞれ対応する5ビット分のビットY18)を用いて目標カウント値M2を更新する手段であり、ANDゲートX11〜X15とDフリップフロップX21〜X25を含む。
ANDゲートX11は、出力信号Q1と反転出力信号Q2B〜Q8Bとの論理積信号を出力する。従って、X11出力は、パルスカウント値M1が「1d(=00000001b)」であるときにハイレベルとなり、他の出力値ではローレベルとなる。
ANDゲートX12は、出力信号Q2と反転出力信号Q1B及びQ3B〜Q8Bの論理積信号を出力する。従って、X12出力は、パルスカウント値M1が「2d(=00000010b)」であるときにハイレベルとなり、他の出力値ではローレベルとなる。
ANDゲートX13は、出力信号Q1及びQ2と反転出力信号Q3B〜Q8Bの論理積信号を出力する。従って、X13出力は、パルスカウント値M1が「3d(=00000011b)」であるときにハイレベルとなり、他の出力値ではローレベルとなる。
ANDゲートX14は、出力信号Q3と反転出力信号Q1B、Q2B、Q4B〜Q8Bの論理積信号を出力する。従って、X14出力は、パルスカウント値M1が「4d(=00000100b)」であるときハイレベルとなり、他の出力値ではローレベルとなる。
ANDゲートX15は、出力信号Q1及びQ3と、反転出力信号Q2B及びQ4B〜Q8Bとの論理積信号を出力する。従って、X15出力は、パルスカウント値M1が「5d(=00000101b)」であるときにハイレベルとなり、他の出力値ではローレベルとなる。
DフリップフロップX21〜X25は、それぞれ、クロック端に入力されるX11出力〜X15出力に同期して、データ端(D)に入力されるビットY18をラッチし、これを出力信号QQ5〜QQ1として出力端(Q)から出力する。
また、DフリップフロップX21〜X25それぞれの出力論理レベルは、プリセット信号PREに応じてハイレベルにプリセットされ、クリア信号CLRに応じてローレベルにリセットされる。
図36は、目標カウント値更新部250Xによる目標カウント値更新動作の一例を示すタイミングチャートであり、上から順に、クリア信号CLR、クロック信号PWM、ビットY18、X11出力〜X15出力、及び、出力信号QQ5〜QQ1が描写されている。
時刻t20において、クリア信号CLRがハイレベルに立ち上げられると、出力信号QQ5〜QQ1がいずれもローレベルにリセットされる。
その後、時刻t21において、クロック信号PWMにパルスが生成され、パルスカウント値M1が「1d」になると、X11出力がハイレベルに立ち上がり、その時点におけるビットY18の値(本図の例では「1」)が出力信号QQ5としてラッチされる。
同様に、時刻t22〜t25において、クロック信号PWMにパルスが生成され、パルスカウント値M1がインクリメントされる度に、X12出力〜X15出力が順次ハイレベルに立ち上がり、各時点におけるビットY18の値(本図の例では、「0」「1」「0」「0」)が出力信号QQ4〜QQ1として順次ラッチされる。
なお、上記の出力信号QQ5〜QQ1は、目標カウント値M2の下位5ビットに相当する。すなわち、目標カウント値M2の下位5ビットは、「QQ5QQ4QQ3QQ2QQ1」という2進数で表記される乱数値となり、本図の例では、「10100b」となる。
従って、パルスカウント値M1が目標カウント値M2と一致したときに、スペクトラム拡散信号VSSをハイレベルとすることにより、その発振周波数をランダムに変化させることが可能となる。
ただし、出力信号QQ5〜QQ1をそのまま目標カウント値M2として用いると、その可変範囲が0d〜31dとなってしまうので、スペクトラム拡散信号VSSの発振周波数を設定する上で都合が悪い。そこで、出力信号QQ5〜QQ1の上位にビットを追加して目標カウント値M2を生成することが望ましい。
例えば、出力信号QQ5〜QQ1の上位に3ビットの固定値「111」を追加して、8ビットの目標カウント値M2(=111QQ5QQ4QQ3QQ2QQ1)を設定した場合には、その可変範囲が224d〜255dとなる。このとき、例えば、クロック信号PWMの周期が10nsであれば、224パルス→446kHz、240パルス→417kHz、255パルス→392kHzとなるので、スペクトラム拡散信号VSSの発振周波数を417kHz±6%でランダムに変化させることが可能となる。
なお、以下では、目標カウント値M2を8ビット(下位5ビット可変、上位3ビット固定)とした例を挙げて説明を行うが、そのビット数は任意である。
ただし、目標カウント値M2の可変範囲を下限値から上限値まで連続する一連の数値範囲に設定するためには、目標カウント値M2の下位ビットを可変値とし、上位ビットを固定値とすることが望ましい。
また、目標カウント値M2の更新期間中(図36の時刻t20〜t25を参照)にも、パルスカウント値M1はインクリメントされていくが、目標カウント値M2の上位ビットを固定して適切な下限値を設定しておけば、目標カウント値M2の更新期間中にパルスカウント値M1が目標カウント値M2に達することはない。
図35に戻り、周波数決定部250の構成要素について説明を続ける。
デューティ設定部250Yは、パルスカウント値M1が目標カウント値M2に達したときにパルスカウント値M1を初期化してスペクトラム拡散信号VSSをハイレベルとし、パルスカウント値M1が目標カウント値M2の1/2に達したときにスペクトラム拡散信号VSSをローレベルとするように、クリア信号CLR及びCLR2を生成する手段であり、NXORゲートY11〜Y19と、ANDゲートY21及びY22と、RSフリップフロップY31及びY32と、を含む。
NXORゲートY11は、出力信号QQ5と出力信号Q5との否定排他的論理和信号を出力する。従って、Y11出力は、QQ5=Q5であるときにハイレベルとなり、QQ5≠Q5であるときにローレベルとなる。
NXORゲートY12は、出力信号QQ4と出力信号Q4との否定排他的論理和信号を出力する。従って、Y12出力は、QQ4=Q4であるときにハイレベルとなり、QQ4≠Q4であるときにローレベルとなる。
NXORゲートY13は、出力信号QQ3と出力信号Q3との否定排他的論理和信号を出力する。従って、Y13出力は、QQ3=Q3であるときにハイレベルとなり、QQ3≠Q3であるときにローレベルとなる。
NXORゲートY14は、出力信号QQ2と出力信号Q2との否定排他的論理和信号を出力する。従って、Y14出力は、QQ2=Q2であるときにハイレベルとなり、QQ2≠Q2であるときにローレベルとなる。
NXORゲートY15は、出力信号QQ1と出力信号Q1との否定排他的論理和信号を出力する。従って、Y15出力は、QQ1=Q1であるときにハイレベルとなり、QQ1≠Q1であるときにローレベルとなる。
NXORゲートY16は、出力信号QQ5と出力信号Q4との否定排他的論理和信号を出力する。従って、Y16出力は、QQ5=Q4であるときにハイレベルとなり、QQ5≠Q4であるときにローレベルとなる。
NXORゲートY17は、出力信号QQ4と出力信号Q3との否定排他的論理和信号を出力する。従って、Y17出力は、QQ4=Q3であるときにハイレベルとなり、QQ4≠Q3であるときにローレベルとなる。
NXORゲートY18は、出力信号QQ3と出力信号Q2との否定排他的論理和信号を出力する。従って、Y18出力は、QQ3=Q2であるときにハイレベルとなり、QQ3≠Q2であるときにローレベルとなる。
NXORゲートY19は、出力信号QQ2と出力信号Q1との否定排他的論理和信号を出力する。従って、Y19出力は、QQ2=Q1であるときにハイレベルとなり、QQ2≠Q1であるときにローレベルとなる。
ANDゲートY21は、出力信号Q8〜Q6とY11出力〜Y15出力の論理積信号を出力する。従って、Y21出力は、「Q8Q7Q6Q5Q4Q3Q2Q1」)=「111QQ5QQ4QQ3QQ2QQ1」であるとき、すなわち、M1=M2であるときにハイレベルとなり、そうでないときにローレベルとなる。
ANDゲートY22は、反転出力信号Q8B、出力信号Q7〜Q5、及び、Y16出力〜Y19出力の論理積信号を出力する。従って、Y22出力は、「Q8Q7Q6Q5Q4Q3Q2Q1」=「0111QQ5QQ4QQ3QQ2」であるとき、すなわち、M1=M2×(1/2)であるときにハイレベルとなり、そうでないときにローレベルとなる。
RSフリップフロップY31は、セット端(S)に入力されるY21出力とリセット端(R)に入力されるクロック信号PWMの双方に応じて、出力端(Q)から出力するクリア信号CLRの論理レベルを決定する。より具体的に述べると、RSフリップフロップY31は、Y21出力がハイレベルに立ち上がったとき、すなわち、M1=M2となったときにクリア信号CLRをハイレベルにセットし、クロック信号PWMがハイレベルに立ち上がったときにクリア信号CLRをローレベルにリセットする。
RSフリップフロップY32は、セット端(S)に入力されるY22出力とリセット端(R)に入力されるクロック信号PWMの双方に応じて、出力端(Q)から出力するクリア信号CLR2の論理レベルを決定する。より具体的に述べると、RSフリップフロップY32は、Y22出力がハイレベルに立ち上がったとき、すなわち、M1=M2×(1/2)となったときにクリア信号CLR2をハイレベルにセットし、クロック信号PWMがハイレベルに立ち上がったときにクリア信号CLR2をローレベルにリセットする。
図37は、デューティ設定部250Yによるデューティ設定動作の一例を示すタイミングチャートであり、上から順番に、パルスカウント値M1、クリア信号CLR及びCLR2、並びに、スペクトラム拡散信号VSSが描写されている。
時刻t30において、クリア信号CLRがハイレベルに立ち上げられると、パルスカウント値M1がゼロ値にリセットされるとともに、スペクトラム拡散信号VSSがハイレベルに立ち上げられ、これに続いて目標カウント値M2の更新処理が行われる(先出の図36を参照)。なお、時刻t30(より正確には、時刻t30からクロック信号PWMのパルス幅の5倍に相当する時間が経過した時点)における目標カウント値M2の更新値を、M2(t30)=「111QQ5(t30)…QQ1(t30)」と表記する。
その後、パルスカウント値M1が目標カウント値M2(t30)の1/2、すなわち、M2(t30)/2=「0111QQ5(t30)…QQ2(t30)」に達すると、クリア信号CLR2がハイレベルに立ち上がるので、スペクトラム拡散信号VSSがローレベルに立ち下げられる。一方、クリア信号CLRは、ハイレベルに立ち上がることなくローレベルに維持されるので、パルスカウント値M1は、リセットされずに増加し続ける。
そして、時刻t31において、パルスカウント値M1が目標カウント値M2(t30)に達すると、クリア信号CLRがハイレベルに立ち上げられる。その結果、パルスカウント値M1が再びゼロ値にリセットされるとともに、スペクトラム拡散信号VSSがハイレベルに立ち上げられ、これに続いて目標カウント値M2の更新処理が行われる。なお、時刻t31(より正確には、時刻t31からクロック信号PWMのパルス幅の5倍に相当する時間が経過した時点)における目標カウント値M2の更新値を、M2(t31)=「111QQ5(t31)…QQ1(t31)」と表記する。
その後、パルスカウント値M1が目標カウント値M2(t31)の1/2、すなわち、M2(t31)/2=「0111QQ5(t31)…QQ2(t31)」に達すると、クリア信号CLR2がハイレベルに立ち上がるので、スペクトラム拡散信号VSSがローレベルに立ち下げられる。一方、クリア信号CLRは、ハイレベルに立ち上がることなくローレベルに維持されるので、パルスカウント値M1は、リセットされずに増加し続ける。
そして、時刻t32において、パルスカウント値M1が目標カウント値M2(t31)に達すると、クリア信号CLRがハイレベルに立ち上げられる。なお、時刻t32以降においても、上記と同様の動作が繰り返される。
このように、本構成例のデューティ設定部250Yによれば、目標カウント値M2の更新処理を行う度に、スペクトラム拡散信号VSSの発振周波数(延いては周期)がランダムに変化しても、そのオンデューティDon(=1周期に占めるオン期間Tonの割合)を0.5に維持することが可能となる。
本図に即して述べると、時刻t30〜t31では、スペクトラム拡散信号VSSの周期T1に対して、Ton=T1×(1/2)となるので、Don=0.5となる。また、時刻t31〜t32では、スペクトラム拡散信号VSSの周期T2に対して、Ton=T2×(1/2)となるので、やはりDon=0.5となる。
このように、スペクトラム拡散信号VSSのオンデューティDonを0.5に維持しておけば、スペクトラム拡散信号VSSを用いたアプリケーションの制御が容易となる。なお、オンデューティDonを0.5に設定しなくても、DC/DCコンバータなどのアプリケーションを動かすこと自体はできる。これを鑑みると、クリア信号CLR2をハイレベルに立ち上げるタイミングは、必ずしも、パルスカウント値M1が目標カウント値M2の1/2に達した時点に限定されるものではなく、任意に設定しても構わない。
図35に戻り、周波数決定部250の構成要素について説明を続ける。
出力部250Zは、クリア信号CLR及びCLR2に応じてスペクトラム拡散信号VSSを出力する手段であり、DフリップフロップZ11を含む。
DフリップフロップZ11は、クロック端に入力されるクリア信号CLRに同期して、スペクトラム拡散信号VSSをハイレベル(=データ端Dに入力されるハイレベル電位)にセットする。また、スペクトラム拡散信号VSSは、プリセット信号PREに応じてハイレベルにプリセットされ、クリア信号CLR2に応じてローレベルにリセットされる。
従って、スペクトラム拡散信号VSSは、クリア信号CLRに同期してハイレベルに立ち上げられる一方、クリア信号CLR2に同期してローレベルに立ち下げられる。
図38は、スペクトラム拡散信号VSSの周波数スペクトル図である。なお、本図の黒線は、発振周波数を固定値(417kHz)とした場合の周波数スペクトルであり、本図のグレー線は、発振周波数を可変値(417kHz±6%)とした場合の周波数スペクトルである。
本図から分かるように、発振周波数に疑似乱数変調を掛けた場合には、発振周波数を固定した場合と比べて、最大で20dB程度のノイズ低減を達成することが可能となる。
次に、スペクトラム拡散信号VSSの適用例について、DC/DCコンバータへの適用例を挙げながら説明する。
<第3実施形態>
図39は、DC/DCコンバータの一構成例を示す回路図(第3実施形態)である。本図に示すように、本構成例のDC/DCコンバータ3は、第2実施形態(図16)のDC/DCコンバータ2と基本的に同様の構成から成り、(1)パルス発振器10に代えてスペクトラム拡散信号200が用いられていること、並びに、(2)抵抗R8〜R10とキャパシタC6及びC7が追加されていることに特徴を有する。そこで、第2実施形態と同様の構成要素については、図16と同一の符号を付すことにより重複した説明を割愛し、以下では、本構成例の特徴部分について重点的に説明する。
抵抗R8は、コンパレータ70の非反転入力端(+)と位相補償部60との間に接続されている。抵抗R9は、コンパレータ70の非反転入力端(+)とコンパレータ70の出力端との間に接続されている。このように、抵抗R8及びR9を追加することにより、コンパレータ70にヒステリシス特性を付与することができるので、ノイズに対する耐性を高めてスイッチング制御の安定性を高めることが可能となる。
キャパシタC6は、オペアンプAMP2の反転入力端(−)と接地端との間に接続されている。このような接続により、オペアンプAMP2の発振を抑えることが可能となる。
抵抗R10の第1端は、スペクトラム拡散信号発生器200の出力端(=スペクトラム拡散信号VSSの出力端)に接続されている。抵抗R10の第2端とキャパシタC7の第1端は、いずれもコンパレータ70の反転入力端(−)に接続されている。キャパシタC7の第2端は、接地端に接続されている。このように接続された抵抗R10とキャパシタC7は、スペクトラム拡散信号VSSを平滑して三角波信号VRTを生成する平滑部90として機能する。
図40は、シミュレーションにより得られた第3実施形態における出力スイッチN2のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、及び、ドレイン・ソース間電流Idsの相関関係を示す波形図である。また、図41は、第3実施形態における出力電圧Vout及び三角波信号VRTを示す波形図である。
なお、上記の各波形図は、r=3、N=19、L=2、発振周波数417kHz±6%というシミュレーション条件下で得られたものである。これらのシミュレーション結果から明らかなように、スペクトラム拡散信号VSSを用いた場合であっても、DC/DCコンバータ3は、問題なく動作していることが分かる。
図42〜図44は、第3実施形態における出力スイッチN2のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、及び、ドレイン・ソース間電流Idsそれぞれの周波数スペクトル図である。なお、各図の黒線は、駆動周波数fを固定した場合の周波数スペクトルを示している。一方、各図のグレー線は、駆動周波数fに疑似乱数変調(スペクトラム拡散処理)を掛けた場合の周波数スペクトルを示している。
各図を参照すれば分かるように、駆動周波数fに疑似乱数変調を掛けた場合には、駆動周波数fを固定した場合と比べて、出力スイッチN2のゲート・ソース間電圧Vgs、ドレイン・ソース間電圧Vds、並びに、ドレイン・ソース間電流Idsの全てにおいて、最大で20dB程度のノイズ低減を達成することが可能となる。
<スイッチング回路>
なお、スペクトラム拡散信号発生器200の適用対象は、DC/DCコンバータ3に限定されるものではなく、例えば、図7のパルス発振器10を代替することにより、スイッチング回路1にも適用することも可能である。
<計算システム>
また、これまでに説明してきた乱数信号は、これを用いてモンテカルロシミュレーションや暗号化処理を行う計算システムにも適用することが可能である。
<その他の変形例>
また、本明細書中に開示されている種々の技術的特徴は、上記実施形態のほか、その技術的創作の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記実施形態は、全ての点で例示であって制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。