(57)【要約】  乱数を生成する乱数生成回路を提供する。本発明の乱数生成回路は、複数の増幅器が直列接続され、隣接する増幅器間に端子を有する増幅器列と、前記増幅器列中の他の隣接する増幅器間に挿入され、前記増幅器列からの発振信号にジッタを生じさせるための雑音を発生する高雑音回路とを有する発振回路と、前記端子に接続され、前記発振信号の発振周波数よりも低い周波数のクロック信号に従い前記発振信号を保持してこれを乱数として出力する保持回路と、を具備する。
2011039846.tif 000002
【特許請求の範囲】
【請求項１】
複数の増幅器が直列接続され、隣接する増幅器間に端子を有する増幅器列と、前記増幅器列中の他の隣接する増幅器間に挿入され、前記増幅器列からの発振信号にジッタを生じさせるための雑音を発生する高雑音回路とを有する発振回路と、
前記端子に接続され、前記発振信号の発振周波数よりも低い周波数のクロック信号に従い前記発振信号を保持してこれを乱数として出力する保持回路と、
を具備することを特徴とする乱数生成回路。
【請求項２】
前記高雑音回路は、
第１のゲート端子及び第１のソース端子及び第１のドレイン端子及び第１の基板端子を有し、前記第１のドレイン端子が高電位側電源に接続され、前記第１の基板端子が低電位側電源に接続されるNＭＯＳトランジスタと、
第２のゲート端子及び第２のソース端子及び第２のドレイン端子及び第２の基板端子を有し、前記第２のドレイン端子が前記低電位側電源に接続され、該第２のゲート端子が前記第１のゲート端子に接続され、該第２のソース端子が前記第１のソース端子に接続され、前記第２の基板端子が前記高電位側電源に接続されるPＭＯＳトランジスタと、
を具備することを特徴とする請求項１記載の回路。
【請求項３】
前記増幅器はＣＭＯＳインバータであることを特徴とする請求項１記載の回路。
【請求項４】
前記増幅器の少なくとも一つが、制御電圧に従って前記発振信号の遅延を制御するための制御端子を備えることを特徴とする請求項１記載の回路。
【請求項５】
前記保持回路は、
前記発振信号の発振周波数よりも低い周波数の第１クロックに従い前記発振信号を保持して出力する第１保持回路と、
前記第１保持回路の出力に接続されるＸＯＲ回路と、
前記ＸＯＲ回路の出力に接続され、前記発振信号の発振周波数よりも低い周波数の第２クロックに従い前記ＸＯＲ回路からの出力を保持してこれを乱数として出力する第２保持回路と、
前記ＸＯＲ回路の出力に接続され、前記第１クロックに従い前記ＸＯＲ回路からの出力を保持して出力する第３保持回路と、
前記第３保持回路の出力とリセットの論理和を演算して出力するＯＲ回路と、を具備し、
前記ＸＯＲ回路は、前記ＯＲ回路の出力と前記第１保持回路の出力の排他的論理和を演算することを特徴とする請求項１記載の回路。
【請求項６】
前記第１保持回路の出力に接続され、エラー信号を出力するチェック回路をさらに具備することを特徴とする請求項５記載の回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数を生成する乱数生成回路に関する。
【背景技術】
【０００２】
情報通信技術の発展に伴い、情報セキュリティに対する要求が強くなっている。情報セキュリティ技術における予測不可能性は、使用される乱数の質に依存するため、乱数生成回路の性能は非常に重要である。乱数生成方法は２種類に大別することができる。第１の方法は、何らかのアルゴリズムに基づいて擬似的に乱数列を生成するもの、第２の方法は物理的な不確定要因に基づいて乱数列を生成するものである。【０００３】
物理的な現象を利用して乱数を生成する方法としてよく知られているものに、速い発振信号を、それより十分遅いクロックでラッチするという方法がある。速い発振信号にジッタが乗っている場合、クロックタイミングに対して発振信号の位相が揺らぐため、ランダムな出力を得ることが可能になる。ただし、ジッタの大きさは、一般的に発振周期に比べて非常に小さいので、何度も発振を繰り返す必要があり、その分、消費電力が増大するという問題がある。消費電力を下げるためには、発振回数を減らす必要がある。そのためには、発振周期に対するジッタを大きくすることにより、乱数生成効率を向上することが必要である。【０００４】
従来、発振信号に対してジッタを大きくする方法として、特許文献１、２に記載されている方法が知られている。【０００５】
特許文献１に記載された方法は、発振器を構成するロジック間の配線を長くしてノイズを乗りやすくするというものである。しかしこの方法は、配線長を長くするものであることから、発振回路で必要とされる面積よりも回路面積がかなり大きくなってしまうという問題がある。また、この方法には面積コストが増大するという問題点もある。【０００６】
特許文献２に記載された方法は、揺らぎを発生する特殊な素子を発振回路中に挿入することにより発振信号に揺らぎを生じさせるというものである。しかしこの方法は、通常のＣＭＯＳ素子とは別に、乱数回路用に特殊な素子を作製するための追加プロセスが必要になるという問題があり、プロセスコストが増大する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−１７６６９８公報
【特許文献２】特開２００３−１０８３６３公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、面積コストを増大させることなく、また特殊なプロセスによるプロセスコストを増大させることもなく、発振信号のジッタの量を増やして乱数生成の効率を高め、その結果として消費電力を低下させることのできる乱数生成回路を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一態様に係る乱数生成回路は、複数の増幅器が直列接続され、隣接する増幅器間に端子を有する増幅器列と、前記増幅器列中の他の隣接する増幅器間に挿入され、前記増幅器列からの発振信号にジッタを生じさせるための雑音を発生する高雑音回路とを有する発振回路と、前記端子に接続され、前記発振信号の発振周波数よりも低い周波数のクロック信号に従い前記発振信号を保持してこれを乱数として出力する保持回路と、を具備する。
【発明の効果】
【００１０】
本発明によれば、面積コストを増大させることなく、また特殊なプロセスによるプロセスコストを増大させることもなく、発振信号のジッタの量を増やして乱数生成の効率を高め、その結果として消費電力を低下させることのできる乱数生成回路を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態に係る乱数生成回路を示すブロック図である。
【図２】ランダムデータ生成の様子を示したタイミングチャートである。
【図３】高雑音回路を示す回路図である。
【図４Ａ】高雑音回路の動作を説明する図である。
【図４Ｂ】高雑音回路の動作を説明する図である。
【図５】ノイズ電流の割合をプロットしたグラフである。
【図６】ジッタの大きさの見積を示すグラフである。
【図７】ＣＭＯＳインバータのリング発振器を用いた場合を示す図である。
【図８】差動増幅器を用いる場合を示す図である。
【図９】インバータの一つをＮＡＮＤゲートとした場合を示す図である。
【図１０】シュミットトリガ入力を持つ回路を接続した図である。
【図１１】電圧制御型のＣＭＯＳインバータに置き換えた場合を示す図である。
【図１２】ランダムデータの生成確実性を向上する場合を示す図である。
【図１３】電圧制御のタイミングの様子を示したタイミングチャートである。
【図１４】チェック回路を設けた場合を示す図である。
【図１５】複数の発信回路からの出力を選択する構成を示す図である。
【図１６】高雑音回路のその他の例を示す図である。
【図１７】高雑音回路のその他の例を示す図である。
【図１８】クロック信号にジッタを乗せる場合を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら本発明の実施形態を説明する。
【００１３】
図１は、一実施形態に係る乱数生成回路を示すブロック図である。複数の増幅器１ａ〜１ｃがリング状に配線されており、その途中の一つの配線に高雑音回路２が配置される。増幅器１ａは第１の入力端子及び第１の出力端子を有する。増幅器１ｂは第２の入力端子及び第２の出力端子を有し、該第２の入力端子が増幅器１ａの第１の出力端子に接続される。増幅器１ｃは第３の入力端子及び第３の出力端子を有し、該第３の出力端子が増幅器１ａの第１の入力端子に接続される。これら増幅器１ａ〜１ｃは発振回路を構成しており、増幅器１ｃからは発振信号を出力する。複数の増幅器１ａ〜１ｃは例えば反転増幅器であって発振回路内に奇数個設けられる。なお、増幅器の数は図１に示された３個に限定されない。
【００１４】
高雑音回路２は、第４の入力端子及び第４の出力端子を有し、該第４の入力端子が増幅器１ｂの第２の出力端子に接続され、該第４の出力端子が増幅器１ｃの第３の入力端子に接続され、発振信号にジッタを生じさせるための雑音を発生する。
【００１５】
このように、リング状に配線された複数の増幅器１ａ〜１ｃは発振回路をなし、発振波形６を出力する。途中に挿入される高雑音回路２は、流れる電流が小さく制限された素子である。発振回路の出力は、保持回路３の入力に接続され、クロック４の入力のタイミングに応じてランダムデータ（乱数）５が保持され、保持回路３から出力される。クロックに応じてデータを記憶・保持する回路として、例えばＤ型フリップフロップや、トランスペアレントラッチなどを用いることができる。以下では、例えば立ち上がりエッジトリガのＤ型フリップフロップを用いる場合について説明しているが、立ち下りのエッジでトリガされるエッジトリガや、立ち上がり、立ち下り、またはこれら両方のエッジでトリガされるフリップフロップ、またはＪＫフリップフロップなど、その他のフリップフロップやラッチを同様に用いてもよい。
【００１６】
高雑音回路２を用いることで、素子両端に現れるノイズが大きくなる。高雑音回路２は発振回路の途中の配線に設置されているため、高雑音回路２のノイズのために発振信号６のジッタの量が増える。それを、発振回路に比べてジッタ量の少ないクロック４を用いてラッチすることで、ランダムデータ５が得られる。
【００１７】
図２は、ランダムデータ生成の様子を示したタイミングチャートである。発振信号６はクロック信号４に対して高い周波数で発振しており、また、高雑音回路２の影響で大きなジッタを含んでいる。発振信号６がＬｏｗからＨｉｇｈ、またはＨｉｇｈからＬｏｗに遷移するタイミングとクロック信号４の立ち上がりのタイミングが同時であるか、またはジッタの大きさ程度に近い場合、保持回路３の出力はランダムになる。発振周波数が低い場合やジッタが小さい場合、クロックタイミングが発振信号６の遷移タイミングに一致する確率が低くなるので、ランダムデータ５が生成される確率も低くなる。その場合、後述されるいくつかの方法によれば、発振信号６の遷移タイミングとクロック信号４のタイミングが合うように制御することによってランダムデータの生成確率を上げることができる。しかしながら、発振周波数はクロック周波数に対して高い方が好ましい。また、ジッタを大きくすることで制御が行いやすくなる。
【００１８】
図３は高雑音回路２を示す回路図である。高雑音回路２は、直列に接続されたＮＭＯＳＦＥＴ２０とＰＭＯＳＦＥＴ２１とを有する。通常のＣＭＯＳインバータとは、高電位側電源ＶＤＤと低電位側電源ＶＳＳに対して位置関係が逆に接続される。すなわち、ＮＭＯＳＦＥＴ２０はドレイン端子がＶＤＤに接続され、ゲート端子が入力に接続され、ソース端子が出力に接続され、図示されない基板端子がＶＳＳに接続される。ＰＭＯＳＦＥＴ２１はドレイン端子がＶＳＳに接続され、ゲート端子が入力に接続され、ソース端子が出力に接続され、図示されない基板端子がＶＤＤに接続される。
【００１９】
図４Ａおよび図４Ｂは、図３で示した高雑音回路２の動作を説明する図である。発振回路の中に置かれた高雑音回路２の出力Ｖｏｕｔの電圧値は、基本的に、ＶＳＳ＜Ｖｏｕｔ＜ＶＤＤの範囲である。入力端子にＶＤＤの電圧が入力されたとき、両方のＭＯＳＦＥＴ（２０，２１）のゲートソース間には、ＶＤＤ−Ｖｏｕｔの電圧が加わる。これはＶｏｕｔ＞ＶＳＳであるので、ＮＭＯＳＦＥＴ２０は小さなオーバードライブ電圧が印加された状態になる。一方、ＰＭＯＳＦＥＴ２１はＯＦＦした状態になる。よって、出力電圧はＮＭＯＳＦＥＴ２０を通じてＶＤＤ側に上昇するが、ＮＭＯＳＦＥＴ２０のオーバードライブ電圧が小さいため、流れる電流は小さい。また、ゲートソース間電圧が閾値電圧Ｖｔｈに達すると、ＮＭＯＳＦＥＴ２０はサブスレッショルド領域に入り、ますます電流は小さくなる。また、入力端子にＶＳＳの電圧が入力されたとき、両方のＭＯＳＦＥＴ（２０，２１）のゲートソース間には、ＶＳＳ−Ｖｏｕｔの電圧が加わる。これはＶＤＤ＞Ｖｏｕｔであるので、ＰＭＯＳＦＥＴ２１は小さくオーバードライブ電圧が印加された状態になる。一方、ＮＭＯＳＦＥＴ２０はＯＦＦした状態になる。よって、出力電圧はＰＭＯＳＦＥＴ２１を通じてＶＳＳ側に下降するが、ＰＭＯＳＦＥＴ２１のオーバードライブ電圧が小さいため、流れる電流は小さい。また、ゲートソース間電圧が閾値電圧Ｖｔｈに達すると、ＰＭＯＳＦＥＴ２１はサブスレッショルド領域に入り、ますます電流は小さくなる。
【００２０】
以上のように、高雑音回路２は、ロジック状態は変えないが、流れる電流が小さいことを特徴とした回路になっている。流れる電流が小さいということの技術的意味は、すなわち、チャネル抵抗が高いことである。よって、この回路の出力には、通常のＣＭＯＳ回路に比べて大きいノイズ信号が現れる。
【００２１】
トランジスタのもつノイズを大別すると、フリッカーノイズと熱雑音である。低周波数の領域ではフリッカーノイズが支配的であり、高周波領域では熱雑音が支配的である。両者が交わるコーナー周波数は、典型的にはおおよそ数百ｋＨｚ〜数ＭＨｚ程度である。乱数生成回路を数十ＭＨｚ〜数百ＭＨｚで動かす場合、熱雑音が支配的になる。トランジスタの熱雑音による電流ノイズＩｎｏｉｓｅは一般的に、
【数１】
2011039846.tif 000003
【００２２】
で表される。ここで、ｋはボルツマン定数、Ｔは絶対温度である。γは比例係数であり微細ＭＯＳＦＥＴになるほど大きくなる。ｇｄｓはＭＯＳＦＥＴのチャネルコンダクタンスである。本実施形態に係る高雑音回路においては、上述したようにＶＳＳ＜Ｖｏｕｔ＜ＶＤＤであるので、回路の動作電圧範囲においては、｜Ｖｇｓ−Ｖｔｈ｜＜＝｜Ｖｄｓ｜（ただし、Ｖｇｓはゲート、ソース間電圧、Ｖｄｓはドレイン、ソース間電圧）である。従って、ＭＯＳＦＥＴは基本的に飽和領域で動作し、｜Ｖｇｓ｜＜｜Ｖｔｈ｜の範囲においてサブスレッショルド領域で動作する。
【００２３】
ＮＭＯＳＦＥＴ２０のノイズについて見積もる。ＰＭＯＳＦＥＴ２１についても同様に考えることができる。簡単のため、飽和領域でのドレイン電流Ｉｄを、
【数２】
2011039846.tif 000004
【００２４】
であらわす。ここで、μはキャリアの移動度、Ｃｏｘは単位面積辺りのゲート容量、Ｗはチャネル幅、Ｌはチャネル長、λはチャネル長変調係数である。このとき、チャネルコンダクタンスは、
【数３】
2011039846.tif 000005
【００２５】
となるので、平均電流Ｉｄの周りに発生するノイズ電流Ｉｎｏｉｓｅの割合は、
【数４】
2011039846.tif 000006
【００２６】
となる。これは、Ｖｇｓ及びＶｄｓが小さいほど大きくなる。通常のＣＭＯＳインバータでは、ＮＭＯＳＦＥＴにおいてソース電位はＶＳＳであるが、本実施形態の高雑音回路２では、ソース電位はＶｏｕｔ＞ＶＳＳであり、ＶｇｓとＶｄｓとも小さくなるため、通常のＣＭＯＳインバータよりもノイズの割合が大きくなることがわかる。
【００２７】
図５は、ＶＤＤを１．５Ｖとし、Ｖｔｈを０．４Ｖとして、ＶｉｎとＶｏｕｔを変化させたときのノイズ電流の割合をプロットしたグラフである。Ｖｏｕｔはソース電位であるので、Ｖｏｕｔ＝０Ｖの時が、通常のＣＭＯＳインバータの場合に対応する。Ｖｉｎが与えられた時に、Ｖｏｕｔの全ての場合で、ＣＭＯＳの場合よりもノイズの割合が大きくなることがわかる。ＣＭＯＳ回路の遅延はトランジスタに流れる電流量で決まるが、平均電流に対するノイズの割合が増えると言うことは、ＣＭＯＳ回路の遅延にノイズが乗るということであり、すなわち、ジッタが増えることになる。また、図５によれば、Ｖｏｕｔが大きい方がノイズが大きくなるが、これはＶｄｓが小さいほどノイズが大きいことの表れであり、この効果をより大きくするために、高雑音回路２に与える高電位側電源ＶＤＤ２、低電位側電源ＶＳＳ２を、それぞれＶＤＤ２＜ＶＤＤ、ＶＳＳ２＞ＶＳＳとしても良い。また、基板バイアスをかけることで、閾値電圧｜Ｖｔｈ｜を大きくしても良い。
【００２８】
図６は増幅器としてＣＭＯＳインバータを用いて、３段のリング発振器を構成した場合（従来発振器）と、インバータとインバータの間一箇所に高雑音回路を挿入した回路（本発明）において、０．１３ミクロンプロセスのトランジスタを用いて回路シミュレーションによりジッタの大きさを見積もったものである。横軸は発振を開始させてからの経過時間である。図から明らかなとおり、本発明の実施形態により、従来に比べかなり大きなジッタを発生させることができる。これは高雑音回路を信号が通る時に、回路を流れる電流にノイズが入るため、信号の伝播遅延にノイズが入ることによる。
【００２９】
なお、高雑音回路２の接続位置は、発振回路を構成する各増幅器１ａ〜１ｃの間のいずれでも良く、複数あってもよい。また、発振回路の出力と保持回路３の入力の接続位置も増幅器１ａ〜１ｃおよび高雑音回路２の出力のいずれでも良く、また、保持回路３を各々の出力に対して複数用いても良い。
【００３０】
図７は、信号の発振手段としてＣＭＯＳインバータのリング発振器を用いた場合の実施形態である。奇数個のリング状に接続されたＣＭＯＳインバータ７０ａ〜７０ｅと高雑音回路２により発振回路が構成され、その出力が一定のクロックにより保持回路３でラッチされる。通常のＣＭＯＳインバータのみで作るリング発振器よりも、高雑音回路２を用いることで、発振信号に入るジッタ成分が増加する。すなわち、ランダムデータ５の生成効率をより高くすることが可能になる。
【００３１】
高雑音回路２に流れる平均電流はＣＭＯＳインバータ７０よりも小さいため、高雑音回路２の平均遅延時間は増大し、その分、発振周波数は遅くなる。ただし、その分ＣＭＯＳインバータ７０ａ〜７０ｅの数を減らすことで発振周波数を上げることが可能であり、最終的に、高雑音回路２を導入しない状態と同じ発振周波数を実現することは設計により可能である。
【００３２】
図７では、ＣＭＯＳリング発振器に高雑音回路２を適用した場合の図を示しているが、高雑音回路２は論理値として入力と出力を変化させないため、他の様々な発振回路中に適用することが可能である。例えば、図８のように、差動増幅器８０ａ〜８０ｄを使用して発振回路を構成し、差動増幅器８０ｂと８０ｃの間に高雑音回路８１ａ，８１ｂを挿入する構成も考えられる。差動増幅器の場合は、奇数個の差動増幅器をそのまま接続しても良いし、偶数個の差動増幅器でも一組の入力と出力の関係を入れ替えることで発振回路を構成することが可能である。また、図８では高雑音回路８１ａ，８１ｂを２つの発振信号の経路それぞれに接続しているが、いずれか一方のみに接続する構成としても良い。また、図８では保持回路３を一つのみ使用しているが、発振する信号経路は２つあるため、両方の経路に保持回路３を接続してランダムデータを２ビット得てもよい。
【００３３】
また、例えば図９のように、インバータ７０ａ〜７０ｆの一つをＮＡＮＤゲート９０などにして、トリガ信号９１を使用することで、発振を開始するタイミングを制御することができる。ＮＡＮＤゲート９０はもちろんＮＯＲゲートやＸＯＲゲートなど他のロジックゲートでも構わない。このようにすると、例えばクロックタイミングにトリガ信号９１を同期させて制御することで、発振信号の遷移タイミングとクロック４のタイミングを合わせ、ランダムデータ５を生成しやすくすることが可能である。または、クロック信号４に対するトリガ信号９１のタイミングを複数通り用意し、最適なタイミングを選択することも可能である。または、複数通りのタイミングをクロック４ごとに全て選択して一連のデータを生成した後、それらの排他的論理和を求めることで最終ランダムデータ５とすることも可能である。複数のタイミングを実現する方法は、例えば、バッファ回路の数を変えた複数の経路を有し、セレクタ回路で信号経路を選択するように構成された回路によって可能である。
【００３４】
その他、ＮＡＮＤゲートやＮＯＲゲートを用いてもリング発振器を構成することは可能である。また、ＬＣＲ遅延を利用したものや発振制御端子を持つ電圧制御発振器（ＶＣＯ：Ｖｏｌｔａｇｅ  Ｃｏｎｔｒｏｌｌｅｄ  Ｏｓｃｉｌｌａｔｏｒ）など、全ての発振回路に本発明は適用することができる。
【００３５】
図１０は、高雑音回路の出力にシュミットトリガ入力を持つ回路を接続した例を示したものである。高雑音回路２の出力にシュミットトリガインバータ１００が接続されている。高雑音回路２では電流が小さいため、発振回路中で、高雑音回路２を信号が通過する遅延時間は比較的長い。例えばＣＭＯＳインバータのリング発振器の場合、その他のインバータの遅延は比較的短いため、高雑音回路２からの出力が十分に変化する前に信号が１周して次の信号遷移が始まるため、高雑音回路２からの出力の信号はフルスイングすることができない可能性がある。すなわち、高雑音回路２に流れる電流は少なくなるため、高雑音回路２から出力されるノイズが十分に発振周期に反映されないことになる。
【００３６】
シュミットトリガは出力が変化する閾値レベルが、ＨｉｇｈとＬｏｗで違う電圧値をとるため、少なくとも、その入力電圧差については高雑音回路２からの出力がスイングする。そのため、高雑音回路２に比較的多くの電流が流れ、その分ノイズが発生し発振信号にジッタを乗せることができる。すなわち、ランダムデータ生成の効率をより高くすることが可能になる。
【００３７】
図１１はＣＭＯＳリング発振器を構成する複数のＣＭＯＳインバータの一つを電圧制御型のＣＭＯＳインバータに置き換えた電圧制御発振器の例を示している。図１１に示す電圧制御発振器１１３は、複数のＣＭＯＳインバータ１１０ａ〜１１０ｄと、高雑音回路２と、遅延を制御するための制御電圧を印加する制御端子１１２ａ，１１２ｂを備えたＣＭＯＳインバータ１１１と、を有する。ここでは複数のＣＭＯＳインバータの一つのみをＣＭＯＳインバータ１１１に置き換えているが、複数または全部をＣＭＯＳインバータ１１１のように制御端子１１２ａ，１１２ｂを持つものに置き換えても良い。
【００３８】
この構成を用いると、制御端子１１２ａ，１１２ｂに印加する制御電圧で発振周波数を制御できるため、高雑音回路２の適用により変化した発振周波数を電圧制御により元に戻すことが可能である。
【００３９】
図１１の構成にはもう一つの利点がある。すなわち、クロックタイミングに応じて制御電圧を変える構成が可能になることである。保持回路３でラッチされるデータがランダム性を持つためには、クロック４の立ち上がりタイミングと、発振信号の立ち上がりまたは立ち下がりタイミングとが、一致もしくはジッタの大きさ程度に近くなるのが最も好ましい。しかし、電圧制御発振器１１３とクロック４はそれぞれ独立に動作しているため、通常はそのタイミングは合わない。この場合、電圧制御発振器１１３の制御電圧を変えて、クロックタイミングごとに発振周波数を変えることにより、いずれかの発振周波数で上記タイミングを合わせることが可能である。
【００４０】
図１２は、電圧制御発振器を用い、かつランダムデータの生成確実性を向上する場合を示した図である。図１２の構成において、上述した保持回路３は、第１保持回路１２１ａと、ＸＯＲ回路１２８と、第２保持回路１２１ｂと、第３保持回路１２１ｃと、ＯＲ回路１２７とに置き換えられている。第１保持回路１２１ａは、第１クロック１２２に従って電圧制御発振器１１３からの出力を保持する。第１保持回路１２１ａからの出力は、ＸＯＲ回路１２８の第１の入力に与えられる。ＸＯＲ回路１２８の第２の入力はＯＲ回路１２７からの出力である。ＸＯＲ回路１２８は、第１の入力と第２の入力、すなわち第１保持回路１２１ａからの出力とＯＲ回路１２７からの出力の排他的論理和を演算して出力する。このＸＯＲ回路１２８からの出力は、第２の保持回路１２１ｂおよび第３保持回路１２１ｃに入力される。第２保持回路１２１ｂは、第１クロック１２２に従ってＸＯＲ回路１２８からの出力を保持する。第２保持回路１２１ｂからの出力はＯＲ回路１２７に入力される。ＯＲ回路１２７は、このＯＲ回路１２８からの出力とリセット１２６の論理和を演算して出力する。このＯＲ回路１２７の出力は、上記の通り、ＸＯＲ回路１２８の第２の入力である。第３保持回路１２１ｃは、第２クロック１２３に従ってＸＯＲ回路１２８からの出力を保持し、ランダムデータ１２５を出力する。なお、上記第１クロック１２２および第２クロック１２３の周波数は、いずれも電圧制御発振器１１３における発振信号の発振周波数よりも低いものとする。
【００４１】
図１２の電圧制御発振器１１３は、高雑音回路を含んだ、ジッタ成分を多く含む発振器である。発振周波数を変えて一連のデータ１２４を取得すると、どこかの制御電圧１２９で、第１クロック１２２のタイミングと発振のタイミングがジッタの大きさの範囲に入るため、そこでランダムデータ１２５が出力される。
【００４２】
一連のデータ１２４の排他的論理和（ＸＯＲ）１２８を演算すると、どの制御電圧１２９でタイミングが近くなったのかが分からなくても、排他的論理和１２８の出力はランダムデータの要素を取り込んだものとなる。最終的には、一連のデータ１２４の取得が終わった段階で、第２クロック１２３を立ち上げ、最終ランダムデータ１２５を出力させる。
【００４３】
リセット１２６は、第２クロック１２３により最終ランダムデータ１２５を取り込んだ後に立ち上げ、一連のデータ１２４の履歴をリセットする。なおここでは、リセット１２６はＯＲ回路１２７によって行っているが、ＮＯＲ回路でも良い。この場合、論理は反転するが乱数データであるので問題はない。もちろん、ＮＡＮＤ回路やＡＮＤ回路を用いても良いし、または、フィードバックさせている第３保持回路１２１ｃをリセット端子つきフリップフロップにして、フリップフロップをリセットする、などとしてもリセット信号１２６に適切な論理信号を用いれば同様に可能である。
【００４４】
この方法によれば、高雑音回路により増幅されたジッタ成分を確実にランダムデータとして取り込むことができる。すなわち、ランダムデータ生成の効率をより高くすることが可能になる。
【００４５】
図１３は電圧制御のタイミングの様子を示したタイミングチャートである。第１クロック１２２のタイミングのたびに、制御電圧１２９の大きさを変えて、ランダムデータを取得する。制御電圧１２９を変化させる幅を小さくすればするほど、第１クロック１２２のタイミングと発振信号のタイミングが、ジッタの大きさの幅に入った信号を取り込む確率が高くなり、ランダムデータ生成の効率を上げることができる。なお、図１３では、第１クロック１２２が４クロックで一区切り（リセット）としているが、これに限ったことではない。また、制御電圧１２９は一区切り後に、再度最も低い電圧レベルから変化を始めているが、２周目は最も高い電圧から低い電圧へ変化させるという方法もある。また、制御電圧１２９は階段状に変化させているが、連続的に変化させてもよい。第２クロック１２３のタイミングは、第１クロック１２２と同期をとらなくても、どのタイミングでも良いので一区切りの周期で定期的にデータを取得すれば、各データに均等にジッタ成分を取り込んだランダムデータを含ませることが可能である。リセット信号１２６は第２クロック信号１２３と同期させ、第２保持回路１２１ｂがデータを取り込んだ後、フィードバックされる排他的論理和１２８で保持されている一連のデータの履歴を消去する。
【００４６】
図１４は、図１２の回路における第１保持回路１２１ａからの出力にチェック回路１４０を設けたものである。例えば、第１クロック１２２に対して、発振信号の立ち上がりタイミングを合わせようとした場合、第１クロック１２２が発振信号より早ければ第１保持回路１２１ａの出力はＬｏｗばかりになり、第１クロック１２２が発振信号より遅ければ第１保持回路１２１ａの出力はＨｉｇｈばかりになる。例えば、制御電圧１２９を発振周期がだんだん短くなるように制御すれば、発振信号の立ち上がりに対して、クロックタイミングは、早いタイミングから遅いタイミングへ移動する。すなわち、制御電圧１２９の変化範囲が正しければ、第１保持回路１２１ａの出力は、Ｌｏｗばかりの出力からＨｉｇｈばかりの出力へ変化していく。一連のデータ取得の間で、この変化が起きているかどうかをチェックすることで、ランダムデータを取り込んでいるかどうかのチェックが可能である。チェック回路１４０で上述の変化が検出できなければ、チェック回路１４０はランダムデータの取り込み誤りが発生したと判断し、エラー信号１４１を外部に出力する。
【００４７】
逆に、チェック回路１４０は上述の変化が起きた段階で、ランダムデータの取り込みが完了したと判断して、第２クロック１２３を立ち上げるという使用方法も可能である。また、チェック回路１４０で上述の変化が起きるように、制御電圧１２９の変化範囲をコントロールするようにフィードバックすることも可能である。
【００４８】
Ｌｏｗが連続している状態から、Ｈｉｇｈが連続している状態へ変化しているかどうかは、例えば、カウンタ回路を用いることで検出できる。例えば、一連のデータを第１クロック１２２で１０クロック分使って取得する場合、１０クロック全てＬｏｗであれば、カウンタ出力はゼロであるし、全てＨｉｇｈであれば、カウンタ出力は１０となる。例えば、カウンタ出力が３であれば、１クロック分はランダム出力と判断すれば、少なくとも２クロック分はＨｉｇｈが連続したと考えられる。また、カウンタ出力が７であれば、１クロック分はランダム出力と判断すれば、少なくとも２クロック分はＬｏｗが連続したと考えられる。許されるカウンタ出力の範囲を設定すると、それはチェック回路の閾値として用いることができる。例えば、一連のデータ取得クロック数ｎに対して、０．３ｎ〜０．７ｎを合格と判断するように設定できる。
【００４９】
以上は、一つの発振回路について説明を行なったが、同様の構成を持つ複数の発振回路を用意することも当然ながら可能である。複数の発振回路のそれぞれに保持回路を接続して、複数のランダムデータを生成することも可能であるし、または、図１５のように複数の発振回路１５０ａ〜１５０ｃの信号をセレクタ１５１で選択して保持回路１５２に入力することも可能である。さらに、複数の発振回路１５０ａ〜１５０ｃのそれぞれの基本周波数を少しずつ変えることで、どれか一つでもランダムデータを生成するのに最適になるように複数の発振回路を用意すると、ランダムデータの生成効率を上げることができる。複数の発振器１５０ａ〜１５０ｃそれぞれに保持回路を接続する場合は、複数の保持回路（図示しない）から出力されるランダムデータの全て、または一部の排他的論理和をとることで最終ランダムデータを生成すると、ジッタ成分を保持したデータを確実に取り込むことができる。また、複数の発振回路１５０ａ〜１５０ｃをセレクタ１５１で選択する場合は、選択信号１５３をクロック１５４ごとに順に切り替えることで、いずれかの選択信号１５３の場合にジッタ成分を含んだランダムデータを取り込むことができるので、一連のデータの排他的論理和をとることで最終ランダムデータを生成すると、ジッタ成分を保持したデータを確実に取り込むことができる。または、保持回路出力をチェックして、ジッタ成分を取り込むことが可能な発振回路を常に選択するように制御することも可能である。一連のデータの排他的論理和を取る方法や、ランダムデータを取り込んだかどうかのチェック方法は、図１２や図１４の回路を使用することが可能である。
【００５０】
図１６は、高雑音回路のその他の例である。これはＮＭＯＳＦＥＴのソース端子、ドレイン端子を、それぞれ入力、出力とし、ゲート端子にＶＳＳ＜Ｖｂ＜ＶＤＤとなる電圧Ｖｂを印加した、パストランジスタ１６０である。図１６はＮＭＯＳＦＥＴであるが、同様の構成はもちろんＰＭＯＳＦＥＴでも可能である。この高雑音回路は回路規模が小さい点で有利である。ただし、アナログ電圧Ｖｂが必要になるので、システム中にＶｂを出力できる電源を備えていない場合、その電源回路を別に用意しておく必要がある。
【００５１】
なお、図３の高雑音回路は、ロジック電源のみで高抵抗出力が可能であり、追加回路が必要ないという点で有利である。
【００５２】
図１７は、高雑音回路のその他の例である。ＮＭＯＳＦＥＴ１７０のソースを電源１に接続し、ドレインを抵抗に接続し、ゲートを入力に接続し、抵抗のもう一方の端子を電源２に接続する。電源１はＶＤＤもしくはＶＳＳのいずれかである。ＶＤＤおよびＶＳＳのうち電源１でない方を電源２とする。ＮＭＯＳＦＥＴ１７０の基板電位は、基板バイアス電位を用いない場合ＶＳＳに接続される。同様の構成はＮＭＯＳＦＥＴの代わりにＰＭＯＳＦＥＴを用いて構成することもできる。なお、この回路構成では、出力信号が入力に対して反転する。
【００５３】
抵抗素子に高抵抗体を用いることで、大きなノイズを発生させることができる。例えば、ウェルの抵抗や、シリサイド化してないポリシリコンゲート、ソフトブレークダウンさせた絶縁膜、などを用いることができる。この回路では、追加電源は使用していないものの、ウェル抵抗やポリ抵抗は、一般にトランジスタに比べて同じ抵抗値でもサイズが大きくなる。また、ソフトブレークダウンさせた絶縁膜は、サイズも小さく、また、自発的にノイズを発生することが可能という点で有利であるが、ソフトブレークダウンを起こさせる回路や配線を、あらかじめ用意しておく必要がある。
【００５４】
高雑音回路は、アプリケーションによっては、図１６や図１７の回路を使用すると有利であるが、より一般的な使用状況を考えた場合、図３の構成を使用するのが有利である。
【００５５】
発振回路中に本発明の実施形態に係る高雑音回路を挿入すると、発振信号のジッタとして高雑音回路のノイズが現れるだけでなく、高雑音回路のノイズが消えずに発振のたびに蓄積されていく。従来のＣＭＯＳ回路だけでなく、高雑音回路を用いることで、ランダムデータ生成のために必要な発振回数を少なくすることができ、乱数生成効率を上げることができる。乱数生成効率が上がれば、より少ない電力で必要なビット数の乱数を生成することが可能であり、半導体回路が低消費電力になる。
【００５６】
上記の説明は、すべて発振回路に高雑音回路を用いることを前提に説明を行ったが、発振回路はそのままで、クロック信号生成回路に高雑音回路を用いてジッタを乗せる構成や、発振信号とクロック信号の両方に高雑音回路を用いて、両者にジッタを乗せる構成も考えられる。
【００５７】
例えば、図１８は、クロック信号１８０をいったんＣＭＯＳインバータ１８１で受け、その出力を、高雑音回路１８２に通し、もう一度インバータ１８３で反転して、保持回路１８４におけるランダムデータ１８６生成のためのクロック入力１８５とする例である。高雑音回路１８２の遅延が入るため、他の回路とクロックタイミングが変わることに注意が必要であるが、出力はランダムデータなので、出力タイミングがクロック１８０に対して毎回等遅延でずれるのは問題ない。また、クロック１８０の位相が半周期ずれても良いならば、図３の高雑音回路は、入力容量は他のＣＭＯＳインバータと同じであるので、もとのクロック信号をそのまま高雑音回路１８２で受けても良い。
【００５８】
高雑音回路を発振回路に挿入する場合で説明した他の回路構成、例えば、シュミットトリガを用いる構成や、電圧制御インバータを用いる構成も、同様に使用できる。
【００５９】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６０】
１ａ〜１ｃ…増幅器；
２…高雑音回路；
３…保持回路；
４…クロック；
５…ランダム（乱数）データ
【図１】
2011039846.tif 000007
【図２】
2011039846.tif 000008
【図３】
2011039846.tif 000009
【図４Ａ】
2011039846.tif 000010
【図４Ｂ】
2011039846.tif 000011
【図５】
2011039846.tif 000012
【図６】
2011039846.tif 000013
【図７】
2011039846.tif 000014
【図８】
2011039846.tif 000015
【図９】
2011039846.tif 000016
【図１０】
2011039846.tif 000017
【図１１】
2011039846.tif 000018
【図１２】
2011039846.tif 000019
【図１３】
2011039846.tif 000020
【図１４】
2011039846.tif 000021
【図１５】
2011039846.tif 000022
【図１６】
2011039846.tif 000023
【図１７】
2011039846.tif 000024
【図１８】
2011039846.tif 000025
【国際調査報告】
2011039846.tif 000026
2011039846.tif 000027
2011039846.tif 000028
2011039846.tif 000029