(57)【要約】【課題】小型で消費電力が小さく、高性能な乱数発生装置を提供する。【解決手段】この乱数発生装置のリング発振器１２では、ＥＸ−ＯＲゲート２１および４個のインバータ２２がループを形成する。このループは起動信号が「Ｌ」レベルのときは安定状態になり、起動信号が「Ｈ」レベルのときは発振状態になる。ループの遅延時間よりも短いパルス幅の起動信号に応じて、出力ノードＮ１〜Ｎ５に「Ｈ」レベルと「Ｌ」レベルの間の不確定な状態であるメタステーブルが順次発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなって消滅する。メタステーブルの寿命は制御できないため、メタステーブルが消滅するノードはランダムである。このため、カウンタ１３の出力信号はメタステーブルの寿命に依存した真正乱数データとなる。したがって、小型で消費電力が小さく、高性能な乱数発生装置が実現できる。【選択図】        図３
2005018251.tif 000002
【特許請求の範囲】
【請求項１】
乱数発生装置であって、
ループ状に接続された複数の遅延回路、
前記複数の遅延回路で形成されたループ内に前記複数の遅延回路の総遅延時間よりも短いパルス幅のパルス信号を発生させるパルス発生回路、および
前記複数の遅延回路のうちのある遅延回路の出力ノードに接続され、その出力ノードを前記パルス信号が通過した回数をカウントし、そのカウント値に基づいて真正乱数データ信号を出力するカウンタを備える、乱数発生装置。
【請求項２】
前記複数の遅延回路のうちの１つの遅延回路は論理ゲート回路を含み、
前記論理ゲート回路の一方入力ノードは前段の遅延回路の出力信号を受け、その出力ノードは後段の遅延回路の入力ノードに接続され、
前記パルス発生回路は、前記論理ゲート回路の他方入力ノードに起動信号を与えて前記パルス信号を発生させる、請求項１に記載の乱数発生装置。
【請求項３】
前記論理ゲート回路は排他的論理和ゲート回路であり、
前記１つの遅延回路以外の各遅延回路はインバータである、請求項２に記載の乱数発生装置。
【請求項４】
前記論理ゲート回路はＮＡＮＤゲート回路であり、
前記１つの遅延回路以外の各遅延回路はインバータである、請求項２に記載の乱数発生装置。
【請求項５】
前記複数の遅延回路の各々は論理ゲート回路を含み、
各論理ゲート回路の一方入力ノードは前段の論理ゲート回路の出力信号を受け、
前記パルス発生回路は、各論理ゲート回路の他方入力ノードに起動信号を与えて前記パルス信号を発生させる、請求項１に記載の乱数発生装置。
【請求項６】
前記論理ゲート回路はＮＡＮＤゲート回路である、請求項５に記載の乱数発生装置。
【請求項７】
ループ状に接続される遅延回路の数は変更可能になっており、
前記パルス発生回路は、ループ状に接続される遅延回路の数を変えることによって前記パルス信号を発生させる、請求項１に記載の乱数発生装置。
【請求項８】
前記パルス発生回路は、起動信号が第１の電位の場合は第１の数の遅延回路をループ状に接続してリングオシレータを構成し、前記起動信号が第２の電位の場合は第２の数の遅延回路をループ状に接続して減衰回路を構成する、請求項７に記載の乱数発生装置。
【請求項９】
前記パルス発生回路は、起動信号が第１の電位の場合は第１の数の遅延回路をループ状に接続して第１のリングオシレータを構成し、前記起動信号が第２の電位の場合は第２の数の遅延回路をループ状に接続して第２のリングオシレータを構成する、請求項７に記載の乱数発生装置。
【請求項１０】
前記複数の遅延回路は、
出力信号が第１の電位から第２の電位まで第１の遅延時間で変化し、出力信号が第２の電位から第１の電位まで第２の遅延時間で変化する第１のインバータ、および
出力信号が第１の電位から第２の電位まで前記第２の遅延時間で変化し、出力信号が第２の電位から第１の電位まで前記第１の遅延時間で変化する第２のインバータを交互に含む、請求項１から請求項９までのいずれかに記載の乱数発生装置。
【請求項１１】
互いに異なる遅延回路の出力ノードに接続された複数のカウンタを備え、
さらに、前記複数のカウンタからの真正乱数データ信号を加算する第１の加算回路を備える、請求項１から請求項１０までのいずれかに記載の乱数発生装置。
【請求項１２】
前記カウンタは奇数個設けられている、請求項１１に記載の乱数発生装置。
【請求項１３】
前記複数のカウンタに対応する各遅延回路の出力信号の論理レベルは同じである、請求項１１または請求項１２に記載の乱数発生装置。
【請求項１４】
さらに、前記複数のカウンタのうちのいずれか１つのカウンタを選択し、選択したカウンタの出力信号のみを前記第１の加算回路に与える選択回路を備える、請求項１１から請求項１３までのいずれかに記載の乱数発生装置。
【請求項１５】
さらに、０と１の出現率が等しい擬似乱数データ信号を出力する擬似乱数発生回路、および
前記第１の加算回路からの真正乱数データ信号と前記擬似乱数発生回路からの擬似乱数データ信号とを加算して乱数データ信号を出力する第２の加算回路を備える、請求項１１から請求項１４までのいずれかに記載の乱数発生装置。
【請求項１６】
さらに、前記第２の加算回路からの乱数データ信号を順次記憶し、予め定められたビット数の乱数データ信号を含む乱数値を生成する乱数格納回路を備える、請求項１５に記載の乱数発生装置。
【請求項１７】
さらに、前記乱数格納回路で記憶された乱数データ信号のビット数をカウントするビット数カウンタ、および
前記ビット数カウンタによって予め定められたビット数がカウントされたことに応じて、前記乱数格納回路から前記乱数値を読み出す制御回路を備える、請求項１６に記載の乱数発生装置。
【請求項１８】
前記ビット数カウンタによって予め定められたビット数がカウントされた後の予め定められた期間だけ乱数生成動作が停止され、前記制御回路は前記予め定められた期間に前記乱数格納回路から前記乱数値を読み出す、請求項１７に記載の乱数発生装置。
【請求項１９】
前記ビット数カウンタは、前記予め定められたビット数をカウントしたことに応じて、制御信号を第１の電位から第２の電位に変化させ、さらに、テスト時に、前記乱数データ信号の代わりに前記制御信号を前記乱数格納回路に与える切換回路を備える、請求項１７または請求項１８に記載の乱数発生装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は乱数発生装置に関し、特に、リング発振回路を備える乱数発生装置に関する。
【０００２】
【従来の技術】
情報セキュリティ分野においては乱数の使用が不可欠であり、近年、一様性（乱数の確率値および出現率に差異が生じないこと）を有し、かつ乱数出現の規則性や前後の相関性、周期性などを有しない自然乱数（真正乱数）を発生する高性能な乱数発生装置の需要が高まっている。このような乱数発生装置として、微弱放射線、抵抗やダイオードの熱雑音、水晶発振器の揺らぎなどの自然現象を利用して得られるランダムパルスを用いたものがある。
【０００３】
従来の乱数発生装置では、乱数を生成するフリップフロップの入力ラインにジッタ生成回路を付加し、入力信号のジッタによってフリップフロップ出力の不確定動作範囲を広げるものが提案されている（たとえば、特許文献１参照）。
【０００４】
また、リング発振回路を構成する電界効果トランジスタのサブストレート効果を利用することによって、リング発振回路の発振周波数を変動させ、周波数の変動するクロック信号を生成するものもある。この場合、周波数が変動するクロック信号のパルス数をカウンタで計数することによって乱数を生成する（たとえば、特許文献２参照）。
【０００５】
【特許文献１】
特開２００２−３６６３４７号公報
【０００６】
【特許文献２】
特開２００１−３３１３０６号公報
【０００７】
【発明が解決しようとする課題】
しかし、自然現象によるランダムパルスを利用した乱数発生装置では、ランダムパルス発生源、信号増幅器、波形整形回路、一様性適正化回路などのアナログ要素が多く含まれるため、回路規模が大きくかつ複雑になってしまう。このため、これらを一体のＬＳＩ（大規模集積回路）としてマイコンやＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：アプリケーション固有集積回路）に搭載することは難しかった。さらに、熱雑音を利用したものは外部ノイズなどの影響を受けやすいため動作の安定性に欠けていた。また、放射線を利用したものは環境への影響が懸念されていた。
【０００８】
超小型・薄型ハイテク機器に適用するためには、上記特許文献１，２に記載した方法では十分でなく、さらに小型で消費電力が小さく、高性能な乱数発生装置が要求される。
【０００９】
それゆえに、この発明の主たる目的は、小型で消費電力が小さく、高性能な乱数発生装置を提供することである。
【００１０】
【課題を解決するための手段】
この発明に係る乱数発生装置は、ループ状に接続された複数の遅延回路と、複数の遅延回路で形成されたループ内に複数の遅延回路の総遅延時間よりも短いパルス幅のパルス信号を発生させるパルス発生回路と、複数の遅延回路のうちのある遅延回路の出力ノードに接続され、その出力ノードをパルス信号が通過した回数をカウントし、そのカウント値に基づいて真正乱数データ信号を出力するカウンタとを備えたものである。
【００１１】
【発明の実施の形態】
［実施の形態１］
図１は、この発明の実施の形態１による乱数発生装置の概略構成を示すブロック図である。図１において、この乱数発生装置は、真正乱数発生部１、ＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ：線形帰還シフトレジスタ）２、ＥＸ−ＯＲ（エクスクルーシブ・オア）ゲート３、乱数格納部４およびＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）５を備える。
【００１２】
真正乱数発生部１は、ＣＰＵ５からの乱数発生要求信号に応じて真正乱数データ（規則性がなく質の高い乱数データ）を生成する。ＬＦＳＲ２は、ＣＰＵ５からのクロック信号に応じて一様性のある擬似乱数データ（“０”と“１”の発生確率がともに５０％で、規則性のある擬似的な乱数データ）を生成する。真正乱数発生部１とＬＦＳＲ２は非同期とする。なお、ＬＦＳＲ２は、ＣＰＵ５からのクロック信号を受ける代わりに、ＣＰＵ５からのライト信号を受けてもよい。
【００１３】
ＥＸ−ＯＲゲート３は、真正乱数発生部１からの真正乱数データとＬＦＳＲ２からの擬似乱数データとの排他的論理和データを乱数格納部４へ与える。真正乱数発生部１の出力真正乱数データは一様性が保証されていないが、ＬＦＳＲ２の出力擬似乱数データは一様性が保証されているため、ＥＸ−ＯＲゲート３からは一様性のある乱数データが出力される。
【００１４】
乱数格納部４は、ＣＰＵ５からのライト信号に応じてＥＸ−ＯＲゲート３からの乱数データを記憶し、ＣＰＵ５からのリード信号に応じて乱数値を出力する。ＣＰＵ５は、乱数発生要求信号、クロック信号、ライト信号およびリード信号を生成して真正乱数発生部１、ＬＦＳＲ２および乱数格納部４を制御し、乱数格納部４から乱数値を読出す。
【００１５】
図２は、図１に示した真正乱数発生部１の構成を示すブロック図である。図２において、この真正乱数発生部１は、起動入力生成部１１、リング発振器１２およびカウンタ１３を含む。
【００１６】
起動入力生成部１１は、ＣＰＵ５からの乱数発生要求信号に応じて、真正乱数データを発生させるための起動信号を生成する。リング発振器１２は、起動入力生成部１１からの起動信号に応じて発振状態または安定状態になる。カウンタ１３は、リング発振器１２のループ上のノードを伝達する信号のパルス数をカウントすることによって真正乱数データを出力する。
【００１７】
図３は、図２に示したリング発振器１２およびカウンタ１３の構成を示す回路図である。図３において、このリング発振器１２はＥＸ−ＯＲゲート２１および４個のインバータ２２を含み、カウンタ１３は５個のフリップフロップ２３および４個のＥＸ−ＯＲゲート２４を含む。
【００１８】
リング発振器１２において、ＥＸ−ＯＲゲート２１の出力端子と一方入力端子との間に４個のインバータ２２が直列接続される。ＥＸ−ＯＲゲート２１の他方入力端子は、起動入力生成部１１からの起動信号を受ける。ＥＸ−ＯＲゲート２１および４個のインバータ２２はループを形成し、このループは起動信号が「Ｌ」レベルのときは安定状態になり、起動信号が「Ｈ」レベルのときは発振状態になる。各出力ノードＮ１〜Ｎ５は、それぞれ対応するフリップフロップ２３のクロック入力端子に接続される。
【００１９】
各フリップフロップ２３は、その負論理出力端子とデータ入力端子とが接続された、１ビットのカウンタである。各フリップフロップ２３は、クロック入力端子に入力される信号の立上りエッジに応じて出力信号を反転させる。各ＥＸ−ＯＲゲート２４は、その一方入力端子が対応のフリップフロップ２３の正論理出力信号を受け、その他方入力端子が前段のＥＸ−ＯＲゲート２４の出力信号を受け、それらの排他的論理和信号を出力する。ただし、初段のＥＸ−ＯＲゲート２４は、その一方入力端子が出力ノードＮ１に対応するフリップフロップ２３の正論理出力信号を受け、その他方入力端子が出力ノードＮ２に対応するフリップフロップ２３の正論理出力信号を受ける。
【００２０】
図４（Ａ）（Ｂ）（Ｃ）は、図３に示したリング発振器１２およびカウンタ１３の動作を説明するためのタイムチャートである。図４（Ａ）（Ｂ）（Ｃ）において、「Ｈ」レベルと「Ｌ」レベルの間の不確定な状態であるメタステーブルを出力ノードＮ１〜Ｎ５に発生させるための３通りの起動信号のパターンを示す。
【００２１】
図４（Ａ）において、起動信号は、時刻ｔ０に「Ｈ」レベルに立上げられ、時間Ｔ０経過後に「Ｌ」レベルに立下げられるパルス信号である。この時間Ｔ０（パルス幅）は、リング発振器１２のループの遅延時間Ｔ１よりも短い時間とする。初期状態において出力ノードＮ１，Ｎ３，Ｎ５の電位が「Ｌ」レベル、出力ノードＮ２，Ｎ４の電位が「Ｈ」レベルの安定状態であった場合、出力ノードＮ１の電位はＥＸ−ＯＲゲート２１による遅延時間だけ起動信号が遅延されたパルス波形になる。この出力ノードＮ１の電位変化に応じて、出力ノードＮ２の電位はインバータ２２による遅延時間だけ出力ノードＮ１のパルス波形が遅延され、かつ反転された波形になる。各出力ノードＮ１〜Ｎ５でこのような動作が順次繰り返され、パルス波形は徐々になまってくる。このように波形がなまっている状態がメタステーブルである。このメタステーブルの波形は時間が経つにつれて徐々に小さくなり、ループを２周した後出力ノードＮ１で消滅する（メタステーブルの波形がフリップフロップ２３のしきい値を超えなくなった時点で、メタステーブルが消滅したと判断する）。この場合、各フリップフロップ２３は、それぞれパルス数を２回ずつカウントする。すなわち、初期状態において各フリップフロップ２３の正論理出力信号が“０”であった場合、各フリップフロップ２３の正論理出力信号は１回目のカウントで“１”になり、２回目のカウントで“０”になる。このため、メタステーブル消滅後の最終段のＥＸ−ＯＲゲート２４の出力信号は“０”になる。
【００２２】
なお、このメタステーブルの寿命は制御できない。すなわち、メタステーブルが消滅するノードはランダムである。たとえば、メタステーブルがループを２周した後出力ノードＮ２で消滅した場合、出力ノードＮ１に対応するフリップフロップ２３はパルス数を３回カウントし、出力ノードＮ２〜Ｎ５に対応するフリップフロップ２３はそれぞれパルス数を２回ずつカウントする。すなわち、初期状態において各フリップフロップ２３の正論理出力信号が“０”であった場合、メタステーブル消滅後の出力ノードＮ１に対応するフリップフロップ２３の正論理出力信号は“１”になり、出力ノードＮ２〜Ｎ５に対応するフリップフロップ２３の正論理出力信号はそれぞれ“０”になる。このため、メタステーブル消滅後の最終段のＥＸ−ＯＲゲート２４の出力信号は“１”になる。したがって、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号は、メタステーブルの寿命に依存した真正乱数データとなる。
【００２３】
なお、ＥＸ−ＯＲゲート２１やインバータ２２の遅延特性によって、メタステーブルが消滅するノードがいずれかのノードに偏る場合がある。しかし、フリップフロップ２３を奇数個（５個）設けることによって、メタステーブルが同じノードで消滅した場合でも、メタステーブルの周回数が異なるとカウンタ１３の出力信号は異なる。すなわち、メタステーブルがループを１周した後出力ノードＮ２で消滅した場合における最終段のＥＸ−ＯＲゲート２４の出力信号（“０”）と、メタステーブルがループを２周した後出力ノードＮ２で消滅した場合における最終段のＥＸ−ＯＲゲート２４の出力信号（“１”）とは異なる。このため、カウンタ１３からは質の高い乱数が出力される。
【００２４】
図４（Ｂ）において、起動信号は、時刻ｔ０に「Ｈ」レベルに立上げられ、時間Ｔ０経過後に「Ｌ」レベルに立下げられ、時刻ｔ１０に「Ｈ」レベルに立上げられる。時刻ｔ０から時刻ｔ１０までの動作は、図４（Ａ）で説明した動作と同様であり、出力ノードＮ１〜Ｎ５に順次メタステーブルが発生する。時刻ｔ１０に起動信号が「Ｈ」レベルに立上げられたことに応じて、ループが発振状態になる。ループが発振状態になっても、図４（Ａ）で説明した場合と同様にメタステーブルの波形は時間が経つにつれて徐々に小さくなって、ループを２周した後出力ノードＮ２で消滅する。メタステーブルの寿命は制御できないため、メタステーブルが消滅するノードはランダムである。したがって、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号はメタステーブルの寿命に依存した真正乱数データとなる。
【００２５】
図４（Ｃ）において、起動信号は、時刻ｔ０に「Ｌ」レベルに立下げられる。時刻ｔ０において、起動信号が「Ｌ」レベルに立下げられたことに応じて、ループが発振状態から安定状態に遷移するとともに、出力ノードＮ１〜Ｎ５に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなって、ループを２周した後出力ノードＮ１で消滅する。メタステーブルの寿命は制御できないため、メタステーブルが消滅するノードはランダムである。したがって、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号はメタステーブルの寿命に依存した真正乱数データとなる。
【００２６】
また、ここではインバータ２２が４個、フリップフロップ２３が５個の場合について説明したが、インバータ２２が任意の偶数個、フリップフロップ２３が任意の個数であってもよい。
【００２７】
図５は、図１に示したＬＦＳＲ２の構成を示す回路図である。図５において、このＬＦＳＲ２は、ｎ個（ただし、ｎは任意の自然数）のフリップフロップ３１、複数のＥＸ−ＯＲゲート３２、ＡＮＤゲート３３およびＯＲゲート３４を含む。
【００２８】
各フリップフロップ３１は、そのデータ入力端子が前段のフリップフロップ３１の正論理出力端子に接続され、そのクロック入力端子がＣＰＵ５からのクロック信号を受け、その負論理出力端子がＡＮＤゲート３３の入力端子に接続される。ただし、初段のフリップフロップ３１は、そのデータ入力端子がＯＲゲート３４の出力端子に接続される。
【００２９】
各ＥＸ−ＯＲゲート３２は、その一方入力端子が対応のフリップフロップ３１の正論理出力信号を受け、その他方入力端子が前段のＥＸ−ＯＲゲート３２の出力信号を受け、それらの排他的論理和信号を出力する。ただし、初段のＥＸ−ＯＲゲート３２は、その一方入力端子が（ｎ−２）段目のフリップフロップ３１の正論理出力信号を受け、その他方入力端子がｎ段目のＥＸ−ＯＲゲート３２の出力信号を受ける。
【００３０】
このように、複数段のフリップフロップ３１を直列に接続し、最終出力をフィードバックする構成により、擬似乱数が生成されることは周知である。このＬＦＳＲ２が出力する擬似乱数データの繰返し周期はＥＸ−ＯＲゲート３２の数および位置に応じて異なり、擬似乱数データの繰返し周期が最も長くなるようにＥＸ−ＯＲゲート３２の数および位置が定められる。この場合、繰返し周期が（２ｎ−１）の擬似乱数データが生成される。
【００３１】
ＡＮＤゲート３３は、ｎ個のフリップフロップ３１の負論理出力信号の論理積信号を出力する。ＯＲゲート３４は、最終段のＥＸ−ＯＲゲート３２の出力信号およびＡＮＤゲート３３の出力信号に応じた信号を出力する。この構成により、すべてのフリップフロップ３１の正論理出力信号が“０”になってＬＦＳＲ２の出力擬似乱数データが“０”の安定状態になることが防止される。
【００３２】
図６は、図１に示した乱数格納部４の構成を示す回路図である。図６において、この乱数格納部４は、８個のフリップフロップ４１および８個のバッファ回路４２を含み、８ビットの乱数データを格納することができる。
【００３３】
各フリップフロップ４１は、そのデータ入力端子が前段のフリップフロップ４１の正論理出力端子に接続され、そのクロック入力端子がＣＰＵ５からのライト信号を受け、その正論理出力端子が対応するバッファ回路４２に接続される。ただし、初段のフリップフロップ４１は、そのデータ入力端子がＥＸ−ＯＲゲート３から乱数データを受ける。８個のバッファ回路４２は、ＣＰＵ５からのリード信号に応じて、対応する８個のフリップフロップ４１に記憶された乱数データを、８ビットの乱数値としてバスを介してＣＰＵ５に出力する。
【００３４】
図７は、図６に示した乱数格納部４の動作を説明するためのタイムチャートである。図７において、乱数値は１６進数で表示され、初期状態における乱数値を“０”とする。
【００３５】
起動信号が「Ｈ」レベルの時は真正乱数発生部１のリング発振器１２が発振状態になり、起動信号が「Ｌ」レベルのときは安定状態になる。なお、ここでは動作説明の便宜を図るため、乱数データは起動信号の立下りエッジに応じて“１”または“０”にされる信号に簡略化する。起動信号のパルス幅は（ｔ２１−ｔ２０）、ライト信号のパルス幅は（ｔ２２−ｔ２１）であり、起動信号およびライト信号の周期はともに（ｔ２３−ｔ２２）である。時刻ｔ２１において、起動信号が「Ｌ」レベルに立下げられ、乱数データが“１”にされるとともに、ライト信号が「Ｈ」レベルに立上げられる。時刻ｔ２２において、ライト信号が「Ｌ」レベルに立下げられたことに応じて、初段のフリップフロップ４１がその瞬間の乱数データ“１”を記憶する。このとき、１６進数で表わされる乱数値は“０１”（２進表現では０００００００１）になる。
【００３６】
時刻ｔ２３において、ライト信号が「Ｌ」レベルに立下げられたことに応じて、初段のフリップフロップ４１がその瞬間の乱数データ“１”を記憶するとともに、２段目のフリップフロップ４１が時刻ｔ２２に初段のフリップフロップ４１によって記憶された乱数データ“１”を記憶する。このとき、乱数値は“０３”（２進表現では００００００１１）になる。このようにして、時刻ｔ２４における乱数値は“０６”（２進表現では０００００１１０）、時刻ｔ２５における乱数値は“０Ｃ”（２進表現では００００１１００）になる。この動作を順次繰返すことによって、時刻ｔ２９における乱数値は“Ｃ６”（２進表現では１１０００１１０）になって８ビットの乱数データが記憶される。その後、ＣＰＵ５からのリード信号に応じて、乱数値“Ｃ６”を出力する。
【００３７】
このように、乱数格納部４を８段のシフトレジスタで構成することによって８ビットの乱数データが格納できるため、ＣＰＵ５の乱数格納部４へのアクセス頻度が少なくて済む。
【００３８】
以上のように、この実施の形態１では、真正乱数発生部１のリング発振器１２を発振制御し、メタステーブルの寿命を“０”，“１”に２値化することによって真正乱数データを生成する。したがって、小型で消費電力が小さく、高性能な乱数発生装置が実現できる。
【００３９】
なお、ここでは８ビットの乱数データを記憶する場合について説明したが、乱数格納部４をｍ個（ただし、ｍは任意の自然数）のフリップフロップ４１およびｍ個のバッファ回路４２で構成すれば、ｍビットの乱数データを記憶させることができる。
【００４０】
［実施の形態１の変更例］
図８は、この発明の実施の形態１の変更例によるリング発振器１２およびカウンタ１３の構成を示す回路図であって、図３と対比される図である。図８のリング発振器１２およびカウンタ１３を参照して、図３のリング発振器１２およびカウンタ１３と異なる点は、カウンタ１３のフリップフロップ２３の数が３個に減っている点である。図８において、フリップフロップ２３は奇数番目の出力ノードＮ１，Ｎ３，Ｎ５にのみ接続される。
【００４１】
リング発振器１２において、ＥＸ−ＯＲゲート２１の遅延特性により、出力ノードＮ１の電位が「Ｈ」レベルまたは「Ｌ」レベルのどちらかに偏る傾向がある。たとえば、ＥＸ−ＯＲゲート２１の出力信号が「Ｌ」レベルに立下げられるときの遅延時間が、「Ｈ」レベルに立上げられるときの遅延時間よりも長い場合、ＥＸ−ＯＲゲート２１の出力ノードＮ１の電位は「Ｈ」レベルに偏る傾向がある。さらに、各インバータ２２の遅延特性により、メタステーブルが消滅するノードは奇数番目の出力ノードＮ１，Ｎ３，Ｎ５、若しくは偶数番目の出力ノードＮ２，Ｎ４のどちらかに偏る傾向がある。この場合、図３に示したようにすべての出力ノードＮ１〜Ｎ５にフリップフロップ２３が接続された構成では、カウンタ１３からの真正乱数データが“０”か“１”のどちらかに偏ってしまい、真正乱数データの一様性が保たれない。
【００４２】
しかし、図８のように奇数番目の出力ノードＮ１，Ｎ３，Ｎ５にのみフリップフロップ２３を接続する構成であれば、メタステーブルの消滅するノードが奇数番目の出力ノードＮ１，Ｎ３，Ｎ５、若しくは偶数番目の出力ノードＮ２，Ｎ４のどちらかに偏った場合でも、カウンタ１３からの真正乱数データが“０”か“１”のどちらかに偏らない。たとえば、メタステーブルが消滅するノードが出力ノードＮ１，Ｎ５の場合と出力ノードＮ３の場合とでは、カウンタ１３からの真正乱数データは異なる。このため、真正乱数データの一様性が改善される。
【００４３】
したがって、この実施の形態１の変更例では、リング発振器１２の奇数番目の出力ノードＮ１，Ｎ３，Ｎ５に対応してフリップフロップ２３を設けることによって、真正乱数発生部１で生成する真正乱数データの質を高めることができ、さらに高性能な乱数発生装置が実現できる。
【００４４】
なお、ここでは奇数番目の出力ノードＮ１，Ｎ３，Ｎ５にフリップフロップ２３を接続した場合について説明したが、偶数番目の出力ノードＮ２，Ｎ４にフリップフロップ２３を接続した場合も同様の効果が得られる。
【００４５】
［実施の形態２］
図９は、この発明の実施の形態２によるリング発振器５０およびカウンタ１３の構成を示す回路図であって、図３と対比される図である。図９のリング発振器５０およびカウンタ１３を参照して、図３のリング発振器１２およびカウンタ１３と異なる点は、ＥＸ−ＯＲゲート２１がＮＡＮＤゲート５１で置換されている点である。
【００４６】
図１０（Ａ）（Ｂ）（Ｃ）は、このリング発振器５０およびカウンタ１３の動作を説明するためのタイムチャートである。図１０（Ａ）（Ｂ）（Ｃ）において、メタステーブルを出力ノードＮ１〜Ｎ５に発生させるための３通りの起動信号のパターンを示す。
【００４７】
図１０（Ａ）において、起動信号は、時刻ｔ０に「Ｈ」レベルに立上げられ、時間Ｔ０経過後に「Ｌ」レベルに立下げられるパルス信号である。この時間Ｔ０（パルス幅）は、リング発振器５０のループの遅延時間Ｔ１よりも短い時間とする。初期状態において出力ノードＮ１，Ｎ３，Ｎ５の電位が「Ｈ」レベル、出力ノードＮ２，Ｎ４の電位が「Ｌ」レベルの安定状態であった場合、出力ノードＮ１の電位はＮＡＮＤゲート５１による遅延時間だけ起動信号が遅延され、かつ反転されたパルス波形になる。この出力ノードＮ１の電位変化に応じて、出力ノードＮ２〜Ｎ５に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなり、出力ノードＮ５で消滅する。メタステーブルの寿命は制御できないため、メタステーブルが消滅するノードはランダムである。したがって、メタステーブルが発生した時間から所定時間経過後の時刻ｔ１におけるカウンタ１３の出力信号は、メタステーブルの寿命に依存した真正乱数データとなる。
【００４８】
なお、この場合はＮＡＮＤゲート５１を用いた回路構成より、起動信号が「Ｌ」レベルのときは出力ノードＮ１の電位が「Ｈ」レベルに固定される。すなわち、メタステーブルは１周しかしない。このため、メタステーブルが１周する間に消滅するような回路構成にする。
【００４９】
図１０（Ｂ）において、起動信号は、時刻ｔ０に「Ｈ」レベルに立上げられ、時間Ｔ０経過後に「Ｌ」レベルに立下げられ、時刻ｔ３０に「Ｈ」レベルに立上げられる。時刻ｔ０から時刻ｔ３０までの動作は、図１０（Ａ）で説明した動作と同様であり、出力ノードＮ１〜Ｎ５に順次メタステーブルが発生する。時刻ｔ３０に起動信号が「Ｈ」レベルに立上げられたことに応じて、ループが発振状態になる。メタステーブルはループを１周した後出力ノードＮ１で消滅する。メタステーブルの寿命は制御できないため、メタステーブルが消滅するノードはランダムである。したがって、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号はメタステーブルの寿命に依存した真正乱数データとなる。なお、この場合は時刻ｔ３０に起動信号を「Ｈ」レベルに固定するため、メタステーブルが１周する間に消滅するような回路構成にしなくてもよい。
【００５０】
図１０（Ｃ）において、起動信号は、時刻ｔ０に「Ｌ」レベルに立下げられる。時刻ｔ０において、起動信号が「Ｌ」レベルに立下げられたことに応じて、ループが発振状態から安定状態に遷移するとともに、出力ノードＮ１〜Ｎ５に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなって、出力ノードＮ５で消滅する。メタステーブルの寿命は制御できないため、メタステーブルが消滅するノードはランダムである。したがって、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号はメタステーブルの寿命に依存した真正乱数データとなる。
【００５１】
なお、この場合は起動信号を「Ｌ」レベルに固定するため、メタステーブルは１周しかしない。このため、メタステーブルが１周する間に消滅するような回路構成にする。
【００５２】
以上のように、この発明の実施の形態２では、実施の形態１と同様に真正乱数発生部１のリング発振器５０を発振制御し、メタステーブルの寿命を“０”，“１”に２値化することによって真正乱数データを生成する。したがって、小型で消費電力が小さく、高性能な乱数発生装置が実現できる。
【００５３】
なお、ここではインバータ２２が４個、フリップフロップ２３が５個の場合について説明したが、インバータ２２が任意の偶数個、フリップフロップ２３が任意の個数の場合でも同様の効果が得られる。
【００５４】
［実施の形態３］
図１１は、この発明の実施の形態３によるリング発振器６０の構成を示す回路図である。図１１において、このリング発振器６０はスイッチ回路ＳＷ１および７個のインバータ２２を含む。
【００５５】
リング発振器６０において、出力ノードＮ１１と出力ノードＮ１８との間に７個のインバータ２２が直列接続される。スイッチ回路ＳＷ１は、起動信号が「Ｈ」レベルの場合は出力ノードＮ１１と出力ノードＮ１８とを接続し、起動信号が「Ｌ」レベルの場合は出力ノードＮ１１と出力ノードＮ１７とを接続する。すなわち、起動信号が「Ｈ」レベルの場合はループ内のインバータ２２の数が７個（奇数個）になるように、起動信号が「Ｌ」レベルの場合はループ内のインバータ２２の数が６個（偶数個）になるように切換える。このため、起動信号が「Ｌ」レベルのときはループが安定状態になり、起動信号が「Ｈ」レベルのときはループが発振状態になる。出力ノードＮ１１〜Ｎ１８は、それぞれカウンタ１３の対応するフリップフロップのクロック入力端子に接続される。
【００５６】
このリング発振器６０の動作は、図４（Ａ）（Ｂ）（Ｃ）のタイムチャートで示した動作と同様である。図４（Ａ）（Ｂ）（Ｃ）に示した３通りの起動信号のパターンに応じて、出力ノードＮ１１〜Ｎ１８に順次メタステーブルが発生する。メタステーブルの寿命は制御できないため、メタステーブルが消滅するノードはランダムである。したがって、メタステーブルが発生した時間から所定時間経過後（メタステーブル消滅後）のカウンタ１３の出力信号は、メタステーブルの寿命に依存した真正乱数データとなる。
【００５７】
以上のように、この実施の形態３では、リング発振器６０の７個（奇数個）のインバータ２２からなるループと６個（偶数個）のインバータ２２からなるループとを切換えるスイッチ回路ＳＷ１を設け、メタステーブルの寿命を“０”，“１”に２値化することによって真正乱数データを生成する。したがって、小型で消費電力が小さく、高性能な乱数発生装置が実現できる。
【００５８】
なお、ここではスイッチ回路ＳＷ１が７個のインバータ２２からなるループと６個のインバータ２２からなるループとを切換える場合について説明したが、スイッチ回路ＳＷ１が任意の奇数個のインバータ２２からなるループと任意の偶数個のインバータ２２からなるループとを切換えるように構成すれば同様の効果が得られる。
【００５９】
［実施の形態３の変更例］
図１２は、この発明の実施の形態３の変更例によるリング発振器７０の構成を示す回路図である。図１２において、このリング発振器７０は、３個のインバータ２２および３個のインバータ７１、インバータ７２、ＮＡＮＤゲート７３〜７５を含む。図１２のリング発振器７０は、図１１のリング発振器６０のスイッチ回路ＳＷ１を、ＮＡＮＤゲート７３〜７５およびインバータ７２を用いて具体化したものである。すなわち、ＮＡＮＤゲート７３〜７５およびインバータ７２によって、奇数個のインバータからなるループと偶数個のインバータからなるループとが切換えられる。
【００６０】
リング発振器７０において、３個のインバータ２２は出力ノードＮ２１と出力ノードＮ２４との間に直列接続され、３個のインバータ７１は出力ノード２４と出力ノードＮ２５との間に直列接続される。ＮＡＮＤゲート７３は、その一方入力端子が出力ノードＮ２４に接続され、その他方入力端子は起動信号を受ける。ＮＡＮＤゲート７４は、その一方入力端子が出力ノードＮ２５に接続され、その他方入力端子はインバータ７２を介して起動信号を受ける。ＮＡＮＤゲート７５は、その一方入力端子がＮＡＮＤゲート７３からの信号を受け、その他方端子がＮＡＮＤゲート７４からの信号を受け、その出力端子はノードＮ２１に接続される。出力ノードＮ２１〜Ｎ２４は、それぞれカウンタ１３の対応するフリップフロップのクロック入力端子に接続される。
【００６１】
この構成により、起動信号が「Ｈ」レベルのときはＮＡＮＤゲート７４の出力信号が「Ｈ」レベルに固定されるため、３個のインバータ２２およびＮＡＮＤゲート７３，７５からなるループ、すなわち奇数個のインバータからなるループとみなすことができる。起動信号が「Ｌ」レベルのときはＮＡＮＤゲート７３の出力信号が「Ｈ」レベルに固定されるため、３個のインバータ２２と３個のインバータ７１とＮＡＮＤゲート７４，７５からなるループ、すなわち偶数個のインバータからなるループとみなすことができる。このため、起動信号が「Ｈ」レベルのときはループが発振状態になり、起動信号が「Ｌ」レベルのときはループが安定状態になる。
【００６２】
このリング発振器７０の動作は、図１１に示したリング発振器６０の動作と同様である。なお、図３および図９で示したリング発振器１２，５０では、起動信号のタイミングによってはメタステーブルが発生しない場合がある。しかし、図１２に示したリング発振器７０では、確実にメタステーブルが発生する。
【００６３】
図１３は、図３に示したリング発振器１２のメタステーブルが発生しない場合の動作を説明するためのタイムチャートであって、図４（Ｃ）と対比される図である。図１３において、時刻ｔ０より早い時刻ｔ４０に起動信号が「Ｌ」レベルに立下げられる。
【００６４】
時刻ｔ４０において、起動信号が「Ｌ」レベルに立下げられたこと応じて、ループが発振状態から安定状態に遷移する。このとき、出力ノードＮ１の電位は、出力ノードＮ５の電位変化に応じて「Ｈ」レベルに立上げられた瞬間に、起動信号が「Ｌ」レベルに立下げられたこと応じて「Ｌ」レベルに立下げられる。このため、出力ノードＮ１〜Ｎ５にはメタステーブルが発生しない。
【００６５】
図１４（Ａ）（Ｂ）は、図１２に示したリング発振器７０が確実にメタステーブルを発生する動作を説明するためのタイムチャートである。図１４（Ａ）は、時刻ｔ０に起動信号が「Ｌ」レベルに立下げられた場合のタイムチャートであり、図１４（Ｂ）は時刻ｔ０よりも早い時刻ｔ４０に起動信号が「Ｌ」レベルに立下げられた場合のタイムチャートである。
【００６６】
図１４（Ａ）において、時刻ｔ０に起動信号が「Ｌ」レベルに立下げられたこと応じて、ループが発振状態から安定状態に遷移する。このとき、図４（Ｃ）に示したタイムチャートと同様に、出力ノードＮ２１〜Ｎ２５に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなって、ループを１周した後出力ノードＮ２２で消滅する。なお、このメタステーブルの寿命は制御できない。すなわち、メタステーブルが消滅するノードはランダムである。この場合、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号は、メタステーブルの寿命に依存した真正乱数データとなる。
【００６７】
図１４（Ｂ）において、時刻ｔ４０までは出力ノードＮ２１の電位が出力ノードＮ２４の電位変化に応じて変動する発振状態である。時刻ｔ４０に起動信号が「Ｌ」レベルに立下げられたこと応じて、ループが発振状態から安定状態に遷移する。このとき、出力ノードＮ２１の電位は、出力ノードＮ２５の電位変化に応じて変動し、「Ｈ」レベルに立上げられた後「Ｌ」レベルに立下げられる。このため、出力ノードＮ２１〜Ｎ２５に順次メタステーブルが発生する。このように確実にメタステーブルが発生するのは、奇数個のインバータで形成されるループと偶数個のインバータで形成されるループとの遅延時間の差を利用しているためである。メタステーブルの波形は時間が経つにつれて徐々に小さくなって、ループを１周した後出力ノードＮ２４で消滅する。なお、このメタステーブルの寿命は制御できない。すなわち、メタステーブルが消滅するノードはランダムである。この場合、時刻ｔ４０から所定時間経過後（メタステーブル消滅後）の時刻ｔ４１におけるカウンタ１３の出力信号は、メタステーブルの寿命に依存した真正乱数データとなる。
【００６８】
以上のように、この実施の形態３の変更例では、リング発振器７０の奇数個のインバータからなるループと偶数個のインバータからなるループとを切換える切換回路を設け、これらのループの遅延時間の差を利用することによって、確実にメタステーブルを発生することができる。したがって、さらに高性能な乱数発生装置が実現できる。
【００６９】
なお、ここではインバータ２２が３個、インバータ７１が３個の場合について説明したが、任意の奇数個のインバータからなるループと任意の偶数個のインバータからなるループとが切換えられるように構成すれば同様の効果が得られる。
【００７０】
［実施の形態４］
図１５は、この発明の実施の形態４によるリング発振器８０の構成を示す回路図である。図１５において、このリング発振器８０はスイッチ回路ＳＷ１１および７個のインバータ２２を含む。
【００７１】
リング発振器８０において、出力ノードＮ１１と出力ノードＮ１８との間に７個のインバータ２２が直列接続される。スイッチ回路ＳＷ１１は、起動信号が「Ｈ」レベルの場合は出力ノードＮ１１と出力ノードＮ１４とを接続し、起動信号が「Ｌ」レベルの場合は出力ノードＮ１１と出力ノードＮ１８とを接続する。すなわち、起動信号が「Ｈ」レベルの場合はループ内のインバータ２２が３個（奇数個）になるように、起動信号が「Ｌ」レベルの場合はループ内のインバータ２２が７個（奇数個）になるように切換える。このため、ループは起動信号が「Ｈ」レベルのときは短ループ発振状態（発振周波数が高い）になり、起動信号が「Ｌ」レベルのときは長ループ発振状態（発振周波数が低い）になる。出力ノードＮ１１〜Ｎ１８は、それぞれカウンタ１３の対応するフリップフロップのクロック入力端子に接続される。
【００７２】
図１６は、このリング発振器８０の動作を説明するためのタイムチャートである。図１６において、時刻ｔ０に起動信号が「Ｌ」レベルに立下げられる。
【００７３】
時刻ｔ０において、起動信号が「Ｌ」レベルに立下げられたことに応じて、出力ノードＮ１１〜Ｎ１８に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなり、ループを１周した後出力ノードＮ１で消滅する。なお、このメタステーブルの寿命は制御できない。すなわち、メタステーブルが消滅するノードはランダムである。したがって、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号は、メタステーブルの寿命に依存した真正乱数データとなる。
【００７４】
以上のように、この発明の実施の形態４では、リング発振器８０の３個（奇数個）のインバータ２２からなる短ループと７個（奇数個）のインバータ２２からなる長ループとを切換えるスイッチ回路ＳＷ１１を設けることによって、リング発振器８０のループの遅延時間よりも短いパルス幅の起動信号を生成しなくても、起動信号を「Ｌ」レベルに立下げるだけで簡単にメタステーブルを発生することができる。したがって、より簡易な構成の乱数発生装置が実現できる。
【００７５】
なお、ここでは、リング発振器８０のインバータ２２が７個の場合について説明したが、このインバータ２２が任意の奇数個の場合において、短ループの発振周波数が長ル−プの発振周波数よりも十分高くなるように構成すれば同様の効果が得られる。
【００７６】
また、このリング発振器は、図１２に示したリング発振器７０と同様にＮＡＮＤゲートを用いて具体化することもできる。
【００７７】
［実施の形態５］
図１７は、この発明の実施の形態５によるリング発振器９０の構成を示す回路図である。図１７において、このリング発振器９０は、５個のＮＡＮＤゲート９１を含む。
【００７８】
各ＮＡＮＤゲート９１は、その一方入力端子が前段のＮＡＮＤゲート９１の出力信号を受け、その他方入力端子が起動信号を受ける。ただし、初段のＮＡＮＤゲート９１は、その一方入力端子が最終段のＮＡＮＤゲート９１の出力信号を受ける。これら５個のＮＡＮＤゲート９１はループを形成し、このループは起動信号が「Ｌ」レベルのときは安定状態になり、起動信号が「Ｈ」レベルのときは発振状態になる。出力ノードＮ３１〜Ｎ３５は、それぞれカウンタ１３の対応するフリップフロップのクロック入力端子に接続される。
【００７９】
図１８は、このリング発振器９０の動作を説明するためのタイムチャートである。図１８において、初期状態は出力ノードＮ３１〜Ｎ３５の電位が「Ｈ」レベルの安定状態である。時刻ｔ０に起動信号が「Ｈ」レベルに立上げられたことに応じて、各ＮＡＮＤゲート９１の出力ノードＮ３１〜Ｎ３５の電位が「Ｌ」レベル立下げられた後、ループが安定状態から発振状態に遷移する。このとき、出力ノードＮ３２〜Ｎ３５に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなって、出力ノードＮ３５で消滅する。なお、このメタステーブルの寿命は制御できない。すなわち、メタステーブルが消滅するノードはランダムである。この場合、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号はメタステーブルの寿命に依存した真正乱数データとなる。
【００８０】
以上のように、この実施の形態５では、リング発振器９０のループの遅延時間よりも短いパルス幅の起動信号を生成しなくても、起動信号を「Ｈ」レベルに立上げるだけで簡単にメタステーブルを発生することができる。したがって、より簡易な構成の乱数発生装置が実現できる。
【００８１】
なお、ここではＮＡＮＤゲート９１が５個の場合について説明したが、ＮＡＮＤゲート９１が任意の奇数個の場合でも同様の効果が得られる。
【００８２】
［実施の形態５の変更例］
図１９は、この発明の実施の形態５の変更例によるリング発振器の構成を示す回路図であって、図１８と対比される図である。図１９のリング発振器１００を参照して、図１８のリング発振器９０と異なる点は、ＮＡＮＤゲート９１の数が６個に増えている点である。これらの６個のＮＡＮＤゲート９１はループを形成し、このループは起動信号が「Ｌ」レベルおよび「Ｈ」レベルのときに安定状態になる。出力ノードＮ３１〜Ｎ３６は、それぞれカウンタ１３の対応するフリップフロップのクロック入力端子に接続される。
【００８３】
初期状態は出力ノードＮ３１〜Ｎ３６の電位が「Ｈ」レベルの安定状態である。時刻ｔ０に起動信号が「Ｈ」レベルに立上げられたことに応じて、各ＮＡＮＤゲート９１の出力ノードＮ３１〜Ｎ３６の電位が「Ｌ」レベル立下げられた後、出力ノードＮ３１，Ｎ３３，Ｎ３５の電位が「Ｌ」レベル、出力ノードＮ３２，Ｎ３４，Ｎ３６の電位が「Ｈ」レベルの安定状態に遷移する。このとき、出力ノードＮ３２〜Ｎ３６に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなって消滅する。なお、このメタステーブルの寿命は制御できない。すなわち、メタステーブルが消滅するノードはランダムである。この場合、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１におけるカウンタ１３の出力信号はメタステーブルの寿命に依存した真正乱数データとなる。
【００８４】
以上のように、この実施の形態５の変更例では、実施の形態４と同様にリング発振器１００のループの遅延時間よりも短いパルス幅の起動信号を生成しなくても、起動信号を「Ｈ」レベルに立上げるだけで簡単にメタステーブルを発生することができる。したがって、より簡易な構成の乱数発生装置が実現できる。
【００８５】
なお、ここではＮＡＮＤゲート９１が６個の場合について説明したが、ＮＡＮＤゲート９１が任意の偶数個の場合でも同様の効果が得られる。
【００８６】
［実施の形態６］
図２０は、この発明の実施の形態６によるリング発振器１１０の構成を示すブロック図である。図２０において、このリング発振器１１０はＤＬ（遅延回路）１１１〜ＤＬ１１４を含む。
【００８７】
ＤＬ１１１〜ＤＬ１１４は、１個または複数個の素子で構成され、正論理信号を出力する遅延回路（たとえば、偶数個のインバータを直列接続した遅延回路）である。すなわち、出力ノードＮ４１が「Ｈ」レベルであれば出力ノードＮ４２〜Ｎ４４も「Ｈ」レベルになり、出力ノードＮ４１が「Ｌ」レベルであれば出力ノードＮ４２〜Ｎ４４も「Ｌ」レベルになる。
【００８８】
さらに、ＤＬ１１１〜ＤＬ１１４はそれぞれ同じ遅延特性を持つ遅延回路とする。すなわち、ＤＬ１１１〜ＤＬ１１４の出力信号が「Ｌ」レベルに立下げられるときの遅延時間はそれぞれ等しく、ＤＬ１１１〜ＤＬ１１４の出力信号が「Ｈ」レベルに立上げられるときの遅延時間はそれぞれ等しい。出力ノードＮ４１〜Ｎ４４は、それぞれカウンタ１３の対応するフリップフロップのクロック入力端子に接続される。
【００８９】
以上のような構成により、起動入力生成部１１からの起動信号に応じてメタステーブルが発生した場合、メタステーブルが消滅するノードがいずれかのノードに偏る可能性が低くなる。
【００９０】
したがって、この実施の形態６では、メタステーブルの寿命の偏りが少なくなり、質の高い真正乱数データが生成される。このため、さらに高性能な乱数発生装置が実現できる。
【００９１】
［実施の形態６の変更例］
この発明の実施の形態６の変更例では、図２０のＤＬ１１１〜ＤＬ１１３は、１個または複数個の素子で構成され、負論理信号を出力する遅延回路（たとえば、奇数個のインバータを直列接続した遅延回路）とする。すなわち、出力ノードＮ４１の電位が「Ｈ」レベルであれば、出力ノードＮ４２，Ｎ４４の電位が「Ｌ」レベル、出力ノードＮ４３の電位が「Ｈ」レベルになる。
【００９２】
さらに、ＤＬ１１１，ＤＬ１１３はそれぞれ同じ遅延特性を持つ遅延回路とし、ＤＬ１１２，１１４はそれぞれ同じ遅延特性を持つ遅延回路とし、ＤＬ１１１，ＤＬ１１３とＤＬ１１２，１１４は相反するの遅延特性を持つ遅延回路とする。すなわち、ＤＬ１１１，ＤＬ１１３の出力信号が「Ｌ」レベルに立下げられるときの遅延時間が、「Ｈ」レベルに立上げられるときの遅延時間よりも長い場合は、ＤＬ１１２，ＤＬ１１４の出力信号が「Ｌ」レベルに立下げられるときの遅延時間が、「Ｈ」レベルに立上げられるときの遅延時間よりも短い。出力ノードＮ４１〜Ｎ４４は、それぞれカウンタ１３の対応するフリップフロップのクロック入力端子に接続される。
【００９３】
以上のような構成により、起動入力生成部１１からの起動信号に応じてメタステーブルが発生した場合、メタステーブルが消滅するノードがいずれかのノードに偏る可能性が低くなる。
【００９４】
したがって、この実施の形態６の変更例では、実施の形態６と同様にメタステーブルの寿命の偏りが少なくなり、質の高い真正乱数データが生成される。このため、さらに高性能な乱数発生装置が実現できる。
【００９５】
［実施の形態７］
図２１は、この発明の実施の形態７によるリング発振器１１０およびカウンタ１２０の構成を示すブロック図である。図２１において、このリング発振器１１０はＤＬ１１１〜ＤＬ１１４を含み、カウンタ１２０は４個のフリップフロップ２３、ＡＮＤゲート１２１〜１２４およびＥＸ−ＯＲゲート１２５を含む。
【００９６】
ＤＬ１１１〜ＤＬ１１４は、１個または複数個の素子で構成される遅延回路である。出力ノードＮ４１〜Ｎ４４は、それぞれ対応するフリップフロップ２３のクロック入力端子に接続される。各フリップフロップ２３は、その負論理出力端子とデータ入力端子とが接続された、１ビットのカウンタである。ＡＮＤゲート１２１〜１２４は、その一方入力端子がそれぞれ信号ＥＮ１１〜ＥＮ１４を受け、その他方入力端子がそれぞれ対応するフリップフロップ２３の正論理出力信号を受け、その出力端子がＥＸ−ＯＲゲート１２５に接続される。ＥＸ−ＯＲゲート１２５は、ＡＮＤゲート１２１〜１２４の出力信号の排他的論理和信号を出力する。
【００９７】
以上のような構成により、この実施の形態７では、信号ＥＮ１１〜ＥＮ１４のうち１つだけ「Ｈ」レベルにし、他の３つを「Ｌ」レベルにしてＥＸ−ＯＲゲート１２５の出力信号を観測することによって、ＤＬ１１１〜１１４および各フリップフロップ２３の回路テストを行なうことができる。たとえば、ループを発振状態にし、信号ＥＮ１１を「Ｈ」レベル、信号ＥＮ１２〜ＥＮ１４を「Ｌ」レベルにしたときのＥＸ−ＯＲゲート１２５の出力信号を観測する。このとき、ＥＸ−ＯＲゲート１２５の出力信号が正常であれば、ＤＬ１１１〜１１４および出力ノードＮ４１に接続されたフリップフロップ２３は正常であり、ＥＸ−ＯＲゲート１２５の出力信号が異常であれば、ＤＬ１１１〜１１４または出力ノードＮ４１に接続されたフリップフロップ２３に障害があると判断できる。同様に、信号ＥＮ１２〜ＥＮ１４のうち１つだけを順次「Ｈ」レベルにして、それぞれの場合のＥＸ−ＯＲゲート１２５の出力信号を観測することによって、ＤＬ１１１〜１１４および各フリップフロップ２３の回路テストを行なうことができる。
【００９８】
［実施の形態８］
図２２は、この発明の実施の形態８による乱数発生装置の概略構成を示すブロック図であって、図１と対比される図である。図２２の乱数発生装置を参照して、図１の乱数発生装置と異なる点は、乱数生成制御部１３１および乱数生成ビット数カウンタ１３２が追加されている点である。
【００９９】
図２２において、乱数生成制御部１３１は、乱数発生要求信号を生成して真正乱数発生部１、ＬＦＳＲ２および乱数生成ビット数カウンタ１３２に与えるとともに、ライト信号を生成して乱数格納部４に与える。乱数生成ビット数カウンタ１３２は、乱数生成制御部１３１からの乱数発生要求信号のパルス数をカウントし、乱数格納部４が格納できるビット数だけカウントすると、乱数生成完了通知信号を生成してＣＰＵ５および乱数生成制御部１３１に与える。
【０１００】
図２３は、この乱数発生装置の動作を説明するためのタイムチャートである。図２３において、このタイムチャートは乱数格納部４が８ビットの乱数データを格納する場合の各信号の波形を示す。
【０１０１】
真正乱数発生部１は、乱数生成制御部１３１からの乱数発生要求信号に応じて真正乱数データを生成する。真正乱数発生部１に含まれるリング発振器は、乱数発生要求信号が「Ｈ」レベルの時にループが発振状態になり、「Ｌ」レベルのときにループが安定状態になるものとする。ＬＦＳＲ２は、乱数生成制御部１３１からの乱数発生要求信号に応じて擬似乱数を生成する。
【０１０２】
乱数生成ビット数カウンタ１３２は、乱数生成制御部１３１からの乱数発生要求信号のパルス数を順次カウントする。時刻ｔ５０において、乱数生成ビットカウント値が“８”になったことに応じて乱数生成完了通知信号を「Ｈ」レベルに立上げるとともに、乱数生成ビットカウント値を“０”にリセットする。
【０１０３】
乱数生成制御部１３１は、乱数生成ビット数カウンタ１３２からの乱数生成完了通知信号が「Ｈ」レベルの期間、乱数発生要求信号を「Ｌ」レベルに保持する。これにより、乱数生成完了通知信号が「Ｈ」レベルにされている期間、真正乱数発生部１およびＬＦＳＲ２は乱数生成動作を停止する。
【０１０４】
ＣＰＵ５は、乱数生成ビットカウンタ１３２からの乱数生成完了通知信号が「Ｈ」レベルにされたことに応じて、時刻ｔ５１にリード信号を「Ｈ」レベルに立上げて乱数格納部４に格納された８ビットの乱数値を読出す。
【０１０５】
時刻ｔ５２において、乱数生成ビットカウンタ１３２は乱数生成完了通知信号を「Ｌ」レベルに立下げ、乱数生成制御部１３１は乱数発生要求信号を「Ｈ」レベルに立上げ、ＣＰＵ５はリード信号を「Ｌ」レベルに立下げる。
【０１０６】
以上のように、この実施の形態８では、ＣＰＵ５が乱数格納部４から乱数値を読出すときに、乱数発生要求信号を一定期間「Ｌ」レベルに保持し、真正乱数発生部１およびＬＦＳＲ２の乱数生成動作を停止する。したがって、真正乱数発生部１およびＬＦＳＲ２の動作頻度を少なくすることができる。これにより、乱数発生装置の低消費電力化が実現できる。
【０１０７】
［実施の形態８の変更例］
図２４は、この発明の実施の形態８の変更例による乱数発生装置の概略構成を示すブロック図であって、図２２と対比される図である。図２４の乱数発生装置を参照して、図２２の乱数発生装置と異なる点は、ＥＸ−ＯＲゲート３と乱数格納部４との間にスイッチ回路ＳＷ２１が追加されている点である。
【０１０８】
図２４において、スイッチ回路ＳＷ２１を切換えることによって、乱数格納部４が乱数生成ビット数カウンタ１３２からの乱数生成完了通知信号を受けるようにした場合、乱数生成制御部１３１および乱数生成ビット数カウンタ１３２の動作テストを行なうことができる。
【０１０９】
図２５は、この乱数発生装置の動作を説明するためのタイムチャートである。図２５において、乱数値は１６進数で表示され、初期状態における乱数値を“０”とする。
【０１１０】
乱数生成制御部１３１は、周波数が等しく、所定の位相差を有する乱数発生要求信号およびライト信号を生成する。乱数格納部４は、ライト信号の立下りエッジに応じてその瞬間の乱数生成完了通知信号の値を記憶する。時刻ｔ５０までは、乱数生成完了通知信号は「Ｌ」レベル（“０”）なので、乱数格納部４の乱数値は“０”である。時刻ｔ５０に乱数生成完了通知信号が「Ｈ」レベル（“１”）に立上げられるため、時刻ｔ６０において乱数値は“１”になる。ＣＰＵ５は、乱数生成完了通知信号が「Ｈ」レベル（“１”）にされたことに応じて、時刻ｔ５１にリード信号を「Ｈ」レベルに立上げて乱数格納部４の乱数値を読出す。このときに読出された乱数値が“１”であれば、乱数生成制御部１３１および乱数生成ビット数カウンタ１３２は正常であると判断される。一方、読出された乱数値が“１”以外の値であれば、乱数生成制御部１３１または乱数生成ビット数カウンタ１３２に障害が存在すると考えられる。時刻ｔ５２において、乱数生成ビットカウンタ１３２は乱数生成完了通知信号を「Ｌ」レベルに立下げ、乱数生成制御部１３１は乱数発生要求信号を「Ｈ」レベルに立上げ、ＣＰＵ５はリード信号を「Ｌ」レベルに立下げる。
【０１１１】
以上のように、この実施の形態８の変更例では、乱数生成制御部１３１および乱数生成ビット数カウンタ１３２の動作テストを行なうことができる。
【０１１２】
［実施の形態９］
図２６は、この発明の実施の形態９による乱数発生装置の概略構成を示すブロック図であって、図１と対比される図である。図２６の乱数発生装置を参照して、図１の乱数発生装置と異なる点は、真正乱数発生部１の数が２個に増えている点である。
【０１１３】
図２６において、２個の真正乱数発生部１は、それぞれＣＰＵ５からの乱数発生要求信号に応じて真正乱数データを生成し、ＥＸ−ＯＲゲート３に出力する。２個の真正乱数発生部１の発振周波数は互いに異なるものとする。この構成によって、一方の真正乱数発生部１がメタステーブルを発生しない場合でも、他方の真正乱数発生部１がメタステーブルを発生すればよい。
【０１１４】
したがって、この実施の形態９では、真正乱数発生部１を複数個設けることによって、発生する乱数の質が高くなる。このため、さらに高性能な乱数発生装置が実現できる。
【０１１５】
なお、ここでは真正乱数発生部１が２個の場合について説明したが、互いに発振周波数の異なる真正乱数発生部１を３以上の複数個設けてもよい。この場合、いずれかの真正乱数発生部１がメタステーブルを発生すればよく、同様の効果が得られる。
【０１１６】
［実施の形態１０］
図２７は、この発明の実施の形態１０による乱数発生装置の概略構成を示すブロック図であって、図１と対比される図である。図２７の乱数発生装置を参照して、図１の乱数発生装置と異なる点は、真正乱数発生部１が起動入力生成部１１と複数のリング発振器＋カウンタ１４１に置換されている点と、ＥＸ−ＯＲゲート３および乱数格納部４が複数個に増えている点である。
【０１１７】
図２７において、起動入力生成部１１は、図２に示した起動入力生成部１１と同じであり、ＣＰＵ５からの乱数発生要求信号に応じて起動信号を生成する。各リング発振器＋カウンタ１４１は、図２に示したリング発振器１２およびカウンタ１３を含み、起動入力生成部１１からの起動信号に応じて、真正乱数データを生成して対応するＥＸ−ＯＲゲート３に出力する。この構成により、１個の起動入力生成部１１で複数の真正乱数データを並列して生成することができる。ＬＦＳＲ２は、ＣＰＵ５からのクロック信号に応じて、擬似乱数データを生成して複数のＥＸ−ＯＲゲート３に出力する。なお、ＬＦＳＲ２は、ＣＰＵ５からのクロック信号を受ける代わりに、ＣＰＵ５からのライト信号を受けてもよい。各ＥＸ−ＯＲゲート３は、対応するリング発振器＋カウンタ１４１からの真正乱数データとＬＦＳＲ２からの擬似乱数データとの排他的論理和データを対応する乱数格納部４に出力する。各乱数格納部４は、ＣＰＵ５からのライト信号に応じて対応するＥＸ−ＯＲゲート３からの乱数データを記憶し、ＣＰＵ５からのリード信号に応じて記憶した乱数値を出力する。
【０１１８】
以上のように、この実施の形態１０では、複数のリング発振器＋カウンタ１４１、複数のＥＸ−ＯＲゲート３および複数の乱数格納部４をそれぞれ並列に設けることによって、複数ビットの乱数データを同時に生成することができる。したがって、乱数をより高速に生成することができる。このため、さらに高性能な乱数発生装置が実現できる。
【０１１９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１２０】
【発明の効果】
以上のように、この発明に係る乱数発生装置では、ループ状に接続された複数の遅延回路と、複数の遅延回路で形成されたループ内に複数の遅延回路の総遅延時間よりも短いパルス幅のパルス信号を発生させるパルス発生回路と、複数の遅延回路のうちのある遅延回路の出力ノードに接続され、その出力ノードをパルス信号が通過した回数をカウントし、そのカウント値に基づいて真正乱数データ信号を出力するカウンタとが設けられる。この場合、ループ内に発生するメタステーブルの寿命を“０”，“１”に２値化することによって真正乱数データを生成する。したがって、小型で消費電力が小さく、高性能な乱数発生装置が実現できる。
【図面の簡単な説明】
【図１】この発明の実施の形態１による乱数発生装置の概略構成を示すブロック図である。
【図２】図１に示した真正乱数発生部の構成を示すブロック図である。
【図３】図２に示したリング発振器およびカウンタの構成を示す回路図である。
【図４】図３に示したリング発振器およびカウンタの動作を説明するためのタイムチャートである。
【図５】図１に示したＬＦＳＲの構成を示す回路図である。
【図６】図１に示した乱数格納部の構成を示す回路図である。
【図７】図６に示した乱数格納部の動作を説明するためのタイムチャートである。
【図８】この発明の実施の形態１の変更例によるリング発振器およびカウンタの構成を示す回路図である。
【図９】この発明の実施の形態２によるリング発振器およびカウンタの構成を示す回路図である。
【図１０】図９に示したリング発振器およびカウンタの動作を説明するためのタイムチャートである。
【図１１】この発明の実施の形態３によるリング発振器の構成を示す回路図である。
【図１２】この発明の実施の形態３の変更例によるリング発振器の構成を示す回路図である。
【図１３】図３に示したリング発振器のメタステーブルが発生しない場合の動作を説明するためのタイムチャートである。
【図１４】図１２に示したリング発振器が確実にメタステーブルを発生する動作を説明するためのタイムチャートである。
【図１５】この発明の実施の形態４によるリング発振器の構成を示す回路図である。
【図１６】図１５に示したリング発振器の動作を説明するためのタイムチャートである。
【図１７】この発明の実施の形態５によるリング発振器の構成を示す回路図である。
【図１８】図１７に示したリング発振器の動作を説明するためのタイムチャートである。
【図１９】この発明の実施の形態５の変更例によるリング発振器の構成を示す回路図である。
【図２０】この発明の実施の形態６によるリング発振器の構成を示すブロック図である。
【図２１】この発明の実施の形態７によるリング発振器およびカウンタの構成を示すブロック図である。
【図２２】この発明の実施の形態８による乱数発生装置の概略構成を示すブロック図である。
【図２３】図２２に示した乱数発生装置の動作を説明するためのタイムチャートである。
【図２４】この発明の実施の形態８の変更例による乱数発生装置の概略構成を示すブロック図である。
【図２５】図２４に示した乱数発生装置の動作を説明するためのタイムチャートである。
【図２６】この発明の実施の形態９による乱数発生装置の概略構成を示すブロック図である。
【図２７】この発明の実施の形態１０による乱数発生装置の概略構成を示すブロック図である。
【符号の説明】
１  真正乱数発生部、２  ＬＦＳＲ、３，２１，２４，３２，１２５  ＥＸ−ＯＲゲート、４  乱数格納部、５  ＣＰＵ、１１  起動入力生成部、１２，５０，６０，７０，８０，９０，１００，１１０  リング発振器、１３，１２０  カウンタ、２２，７１，７２  インバータ、２３，３１，４１  フリップフロップ、３３，１２１〜１２４  ＡＮＤゲート、３４  ＯＲゲート、４２  バッファ回路、５１，７３〜７５，９１  ＮＡＮＤゲート、１１１〜１１４  遅延回路、１３１  乱数生成制御部、１３２  乱数生成ビット数カウンタ、１４１  リング発振器＋カウンタ。
【図１】
2005018251.tif 000003
【図２】
2005018251.tif 000004
【図３】
2005018251.tif 000005
【図４】
2005018251.tif 000006
【図５】
2005018251.tif 000007
【図６】
2005018251.tif 000008
【図７】
2005018251.tif 000009
【図８】
2005018251.tif 000010
【図９】
2005018251.tif 000011
【図１０】
2005018251.tif 000012
【図１１】
2005018251.tif 000013
【図１２】
2005018251.tif 000014
【図１３】
2005018251.tif 000015
【図１４】
2005018251.tif 000016
【図１５】
2005018251.tif 000017
【図１６】
2005018251.tif 000018
【図１７】
2005018251.tif 000019
【図１８】
2005018251.tif 000020
【図１９】
2005018251.tif 000021
【図２０】
2005018251.tif 000022
【図２１】
2005018251.tif 000023
【図２２】
2005018251.tif 000024
【図２３】
2005018251.tif 000025
【図２４】
2005018251.tif 000026
【図２５】
2005018251.tif 000027
【図２６】
2005018251.tif 000028
【図２７】
2005018251.tif 000029