(57)【特許請求の範囲】
【請求項１】
回路の出力が不安定な状態であるメタステーブルにおける前記回路の出力に基づいて乱数データを生成する乱数生成部と、
前記乱数データを格納する乱数格納部と、
前記メタステーブルの消滅後に前記乱数生成部から出力される前記乱数データを前記乱数格納部に格納させる制御を行なう制御部とを備える乱数発生装置。
【請求項２】
前記乱数発生装置は、さらに、
前記メタステーブルの消滅を検知する検知器を備え、
前記制御部は、前記検知結果に基づいて前記制御を行なう請求項１記載の乱数発生装置。
【請求項３】
前記検知結果は外部から読み出し可能である請求項２記載の乱数発生装置。
【請求項４】
前記制御部は、
所定の周期を有するクロックを分周する分周器を含み、前記分周されたクロックに基づいて前記制御を行なう請求項１記載の乱数発生装置。
【請求項５】
前記制御部は、１個以上のレジスタを含み、外部からの前記レジスタに対する書き込みに基づいて前記制御を行なう請求項１記載の乱数発生装置。
【請求項６】
前記乱数発生装置は、さらに、
Ｍ系列を生成するＭ系列生成部と、
前記Ｍ系列および前記乱数データの排他的論理和を出力するＥＸＯＲゲートとを備え、
前記乱数格納部は、前記排他的論理和を前記乱数データとして格納する請求項１記載の乱数発生装置。
【請求項７】
前記Ｍ系列生成部は、
Ｍ系列生成用の論理回路である複数個のＭ系列ロジック部と、
前記乱数用発振器出力のカウント用の論理回路である複数個のカウントロジック部と、
Ｍ系列生成用のクロックまたは前記乱数用発振器出力を選択する複数個の第１のセレクタと、
前段の前記Ｍ系列ロジック部の出力または前段の前記カウントロジック部の出力を選択する複数個の第２のセレクタと、
前記第１のセレクタの選択したデータをクロックとして使用し、前記クロックのタイミングで前記第２のセレクタの選択したデータを保持して次段の前記Ｍ系列ロジック部および次段の前記カウンタロジック部へ出力するレジスタとを含む請求項６記載の乱数発生装置。
【請求項８】
前記乱数生成部は、
前記メタステーブルを発生する乱数用発振器と、
前記メタステーブルにおける前記乱数用発振器の出力に基づいて前記乱数データを生成する２値化部とを含む請求項１記載の乱数発生装置。
【請求項９】
前記制御部は、さらに、１個以上のレジスタを含み、外部からの前記レジスタに対する書き込みに基づいて前記乱数用発振器において前記メタステーブルを発生させる制御を行なう請求項８記載の乱数発生装置。
【請求項１０】
前記乱数発生装置は、さらに、
前記乱数用発振器の出力をカウントするカウンタを備える請求項８記載の乱数発生装置。
【請求項１１】
前記乱数用発振器の出力は外部へ出力可能である請求項８記載の乱数発生装置。
【請求項１２】
前記乱数用発振器は、
ループ状に接続された複数個の遅延回路と、
第１の入力テストデータまたは前記遅延回路の出力を選択する第３のセレクタと、
第２の入力テストデータ、または前記第３のセレクタに出力が接続される前記遅延回路とは異なる前記遅延回路の出力を選択する第４のセレクタとを含む請求項８記載の乱数発生装置。
【請求項１３】
前記２値化部は、前記遅延回路の出力を保持し、前記保持したデータが外部から読み出し可能であるレジスタを含む請求項１２記載の乱数発生装置。
【請求項１４】
前記２値化部は、
前記メタステーブルにおけるパルス信号が前記乱数用発振器の前記各遅延回路を通過する回数をそれぞれカウントする複数個のレジスタと、
前記各カウント結果の排他的論理和を出力するＥＸＯＲゲートとを含み、
前記レジスタは外部から書き込み可能であり、前記ＥＸＯＲゲートの出力は外部から読み出し可能である請求項８記載の乱数発生装置。
【請求項１５】
前記乱数用発振器は、
ループ状に接続された複数個の遅延回路と、
前記遅延回路に対応して配置される複数個の第５のセレクタとを含み、
前記遅延回路は前段の前記遅延回路の出力および前記第５のセレクタの出力を入力し、
前記第５のセレクタは、前記メタステーブルを発生するための制御信号または第３の入力テストデータを前記遅延回路へ出力する請求項８記載の乱数発生装置。
【請求項１６】
前記乱数発生装置は、さらに、クロックを生成するクロック用発振器を備え、
前記制御部は、前記クロック用発振器で生成されるクロックに基づいて前記制御を行なう請求項１記載の乱数発生装置。
【請求項１７】
前記乱数発生装置は、さらに、
Ｍ系列を生成するＭ系列生成部と、
前記Ｍ系列および前記乱数データの排他的論理和を出力するＥＸＯＲゲートとを備え、
前記乱数格納部は、前記排他的論理和を前記乱数データとして格納し、
前記Ｍ系列生成部は、
Ｍ系列生成用の論理回路である複数個のＭ系列ロジック部と、
前記クロック用発振器出力のカウント用の論理回路である複数個のカウントロジック部と、
Ｍ系列生成用のクロックまたは前記クロック用発振器出力を選択する複数個の第１のセレクタと、
前段の前記Ｍ系列ロジック部の出力または前段の前記カウントロジック部の出力を選択する複数個の第２のセレクタと、
前記第１のセレクタの選択したデータをクロックとして使用し、前記クロックのタイミングで前記第２のセレクタの選択したデータを保持して次段の前記Ｍ系列ロジック部および次段の前記カウンタロジック部へ出力するレジスタとを含む請求項１６記載の乱数発生装置。
【請求項１８】
前記乱数発生装置は、さらに、
前記クロック用発振器の出力をカウントするカウンタを備える請求項１６記載の乱数発生装置。
【請求項１９】
前記クロック用発振器の出力は外部へ出力可能である請求項１６記載の乱数発生装置。
【請求項２０】
回路の出力が不安定な状態であるメタステーブルにおける前記回路の出力に基づいて乱数データを生成する乱数生成部と、
前記乱数データを格納する乱数格納部と、
前記メタステーブルの消滅を検知する検知器と、
前記検知器が前記メタステーブルの発生から所定時間内に前記メタステーブルの消滅を検知した場合には前記メタステーブルの消滅後に、または前記所定時間が経過しても前記検知器が前記メタステーブルの消滅を検知しない場合には前記所定時間経過後に、前記乱数生成部から出力される前記乱数データを前記乱数格納部に格納させる制御を行なう制御部とを備える乱数発生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数発生装置に関し、特に、回路の出力が不安定な状態における回路の出力に基づいて乱数を生成する乱数発生装置に関する。
【背景技術】
【０００２】
情報セキュリティ分野においては乱数の使用が不可欠であり、近年、一様性（乱数の確率値および出現率に差異が生じないこと）を有し、かつ乱数出現の規則性や前後の相関性、周期性などを有しない自然乱数（真正乱数）を発生する高性能な乱数発生装置の需要が高まっている。
【０００３】
たとえば、特許文献１には以下のような乱数発生装置が開示されている。すなわち、カスケード接続されたＭｕｌｌｅｒ（ミューラー）Ｃゲート１，２が第２の方形波Ｓの立ち上がり時点以降における第１の方形波Ｆの立ち下がり時点を検出し、カスケード接続されたＭｕｌｌｅｒＣゲート３，４が第２の方形波Ｓの立ち上がり時点以降における第１の方形波Ｆの立ち上がり時点を検出し、第２の方形波Ｓの立ち上がり時点で第１の方形波Ｆの値が１の場合にはＮＡＮＤゲート５が０を乱数として出力し、第２の方形波Ｓの立ち上がり時点で第１の方形波Ｆの値が０の場合にはＮＡＮＤゲート６が０を乱数として出力する。
【０００４】
また、特許文献２には以下のような乱数発生装置が開示されている。すなわち、ループ状に接続された複数の遅延回路、複数の遅延回路で形成されたループ内に複数の遅延回路の総遅延時間よりも短いパルス幅のパルス信号を発生させるパルス発生回路、および複数の遅延回路のうちのある遅延回路の出力ノードに接続され、その出力ノードをパルス信号が通過した回数をカウントし、そのカウント値に基づいて真正乱数データを出力するカウンタを備える。
【特許文献１】特開２００３−１５０３７２号公報
【特許文献２】特開２００５−１８２５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１記載の乱数発生装置は２つの入力信号の関係に応じて乱数を発生する構成であるため、適切な入力信号を生成できない場合には乱数性が低下してしまうという問題点があった。
【０００６】
また、特許文献２記載の乱数発生装置は、回路の不確定動作によって回路の出力が不安定となる状態、すなわちメタステーブルにおける回路の出力に基づいて乱数を発生する構成であるが、メタステーブルが消滅する前、すなわち出力ノードを通過するパルス信号が消滅する前のカウント値を真正乱数データとして出力すると、メタステーブルの寿命に依存しない乱数が生成されるために乱数性が低下してしまう場合があるという問題点があった。
【０００７】
それゆえに、本発明の目的は、乱数性を向上させることが可能な乱数発生装置を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明のある局面に係わる乱数発生装置は、回路の出力が不安定な状態であるメタステーブルにおける回路の出力に基づいて乱数データを生成する乱数生成部と、乱数データを格納する乱数格納部と、メタステーブルの消滅後に乱数生成部から出力される乱数データを乱数格納部に格納させる制御を行なう制御部とを備える。
【０００９】
また本発明のさらに別の局面に係わる乱数発生装置は、回路の出力が不安定な状態であるメタステーブルにおける回路の出力に基づいて乱数データを生成する乱数生成部と、乱数データを格納する乱数格納部と、メタステーブルの消滅を検知する検知器と、検知器がメタステーブルの発生から所定時間内にメタステーブルの消滅を検知した場合にはメタステーブルの消滅後に、または所定時間が経過しても検知器がメタステーブルの消滅を検知しない場合には所定時間経過後に、乱数生成部から出力される乱数データを乱数格納部に格納させる制御を行なう制御部とを備える。
【発明の効果】
【００１０】
本発明によれば、乱数性を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００１２】
＜第１の実施の形態＞
［構成および基本動作］
図１は、本発明の第１の実施の形態に係る乱数発生装置の構成を示す図である。同図を参照して、乱数発生装置は、乱数生成部１と、Ｍ系列生成部（擬似乱数生成部）２と、ＥＸＯＲ（イクスクルーシブオア）ゲート３と、乱数格納部４と、制御信号生成部５とを備える。乱数生成部１は、リング発振器１１（乱数用発振器）と、２値化部１２とを含む。
【００１３】
乱数生成部１は、リング発振器１１においてメタステーブルが発生しているときのリング発振器１１の出力に基づいて乱数データを生成する。
【００１４】
Ｍ系列生成部２は、公知のＭ系列（最長符号系列）を生成する。Ｍ系列は、一様性のある擬似乱数データ、すなわち“０”と“１”の発生確率がともに５０％で、規則性のある擬似的な乱数データである。なお、乱数生成部１およびＭ系列生成部２は非同期で動作する。
【００１５】
ＥＸＯＲゲート３は、乱数生成部１から受けた乱数データおよびＭ系列生成部２から受けた擬似乱数データの排他的論理和を出力する。乱数生成部１の生成する乱数データは一様性が保証されていないが、Ｍ系列生成部２の生成する擬似乱数データは一様性が保証されているため、ＥＸＯＲゲート３からは一様性のある乱数データが出力される。
【００１６】
乱数格納部４は、ＥＸＯＲゲート３から受けた乱数データを格納し、乱数として出力する。より詳細には、乱数格納部４は、乱数データを複数ビット格納するための複数個のレジスタを含む。また、乱数格納部４は、ＣＰＵ等の外部回路が出力する図示しないリード信号を受けて各レジスタに格納された乱数データを乱数としてＣＰＵバスへ出力する。
【００１７】
制御信号生成部５は、乱数生成部１と、Ｍ系列生成部２と、乱数格納部４とを制御して乱数を生成する。
【００１８】
図２は、リング発振器１１および２値化部１２の構成を示す図である。同図を参照して、リング発振器１１は、インバータ２１ａ〜２１ｅと、ＮＡＮＤゲート２２ａ〜２２ｃとを含む。２値化部１２はレジスタ２３ａ〜２３ｃと、ＥＸＯＲゲート２４とを含む。
【００１９】
リング発振器１１は、制御信号生成部５から受けた発振制御信号に応じて発振状態または安定状態になる。２値化部１２は、リング発振器１１のループにおける各ノードをパルス信号が通過した回数をカウントし、このカウント値に基づいて乱数データを出力する。
【００２０】
より詳細には、ＮＡＮＤゲート２２ａ〜２２ｃおよびインバータ２１ａで構成される回路は、制御信号生成部５から受けた発振制御信号に応じて、奇数個のインバータからなるループを形成するか、または偶数個のインバータからなるループを形成するかを切り替える。
【００２１】
リング発振器１１において、インバータ２１ｂの出力およびＮＡＮＤゲート２２ｂの入力の接続点がノードＮ２１であり、ＮＡＮＤゲート２２ｃの出力およびインバータ２１ｃの入力の接続点がノードＮ２２であり、インバータ２１ｄの出力およびインバータ２１ｅの入力の接続点がノードＮ２３である。
【００２２】
ノードＮ２１〜Ｎ２３は、それぞれ２値化部１２におけるレジスタ２３ａ〜２３ｃのクロック入力端子に接続される。
【００２３】
このような構成により、発振制御信号がＨレベルのときはＮＡＮＤゲート２２ｂの出力信号がＨレベルとなるため、インバータ２１ｃ〜２１ｅと、ＮＡＮＤゲート２２ａおよび２２ｃとからなるループ、すなわち奇数個のインバータからなるループが形成される。発振制御信号がＬレベルのときはＮＡＮＤゲート２２ａの出力信号がＨレベルとなるため、インバータ２１ｂ〜２１ｅと、ＮＡＮＤゲート２２ｂおよび２２ｃとからなるループ、すなわち偶数個のインバータからなるループが形成される。したがって、発振制御信号がＬレベルのときは各インバータおよび各ＮＡＮＤゲートの出力信号の論理レベルが確定するためループが安定状態になるが、発振制御信号がＨレベルのときは各インバータおよび各ＮＡＮＤゲートの出力信号がＨレベルおよびＬレベルを繰り返すためにループが発振状態になる。
【００２４】
レジスタ２３ａ〜２３ｃは、反転出力端子とデータ入力端子とが接続された、１ビットのカウンタである。レジスタ２３ａ〜２３ｃは、クロック入力端子に入力される信号の立ち上がりエッジを検出するたびに正反転出力端子からの出力信号を反転させる。
【００２５】
図３は、リング発振器１１および２値化部１２の動作を説明するためのタイムチャートである。
【００２６】
同図を参照して、制御信号生成部５から出力される発振制御信号は、時刻ｔ０にＨレベルに立ち上げられ、時間Ｔ０経過後にＬレベルに立ち下げられるパルス信号である。この時間Ｔ０（パルス幅）は、リング発振器１１のループの遅延時間Ｔ１よりも短い時間である。
【００２７】
発振制御信号がＬレベルからＨレベルになると前述のようにループが安定状態から発振状態となる。発振状態においては各インバータおよび各ＮＡＮＤゲートの出力信号がＨレベルおよびＬレベルを繰り返すため、リング発振器１１のループにおける各ノードをパルス信号が通過する。そして、発振制御信号がＨレベルからＬレベルになるとループが発振状態でなくなるため、発振状態において各ノードを通過していたパルス信号が徐々に細くなり、最終的にパルス信号が消滅して安定状態となる。このように発振状態におけるパルス信号よりも細いパルス信号がループを通過している状態、すなわちリング発振器１２の出力が不安定な状態がメタステーブルである。ここで、パルス信号のレベルが小さくなり、レジスタ２３ａ〜２３ｃがパルス信号をクロックとして認識できなくなった状態、すなわちレジスタ２３ａ〜２３ｃがパルス信号の立ち上がりエッジまたは立ち下がりエッジを検出できなくなった状態がメタステーブルの消滅である。
【００２８】
同図に示すタイムチャートにおいて、各レジスタは、それぞれパルス数を２回ずつカウントする。すなわち、初期状態において各レジスタの非反転出力がＬレベルであった場合、各レジスタの非反転出力は１回目のカウントでＨレベルになり、２回目のカウントでＬレベルになる。そうすると、メタステーブル消滅後のＥＸＯＲゲート２４の出力信号はＬレベルになる。
【００２９】
メタステーブルの寿命は、リング発振器１１のループにおける各回路の特性によって決まり、各回路の特性は製造ばらつきおよび周囲温度等によって変動するものであるため、メタステーブルの寿命は制御できるものではなく、メタステーブルが消滅するノード、すなわち最後のパルス信号が通過するノードは不確定である。
【００３０】
たとえば、メタステーブルがループを２周した後に出力ノードＮ２２で消滅した場合、出力ノードＮ２１に対応するレジスタはパルス数を３回カウントし、出力ノードＮ２２〜Ｎ２３に対応するレジスタはそれぞれパルス数を２回ずつカウントする。すなわち、初期状態において各レジスタの非反転出力がＬレベルであった場合、メタステーブル消滅後の出力ノードＮ２１に対応するレジスタの非反転出力はＨレベルになり、出力ノードＮ２２〜Ｎ２３に対応するレジスタの非反転出力はそれぞれＬレベルになる。そうすると、メタステーブル消滅後のＥＸＯＲゲート２４の出力信号はＨレベルになる。したがって、時刻ｔ０から所定時間経過後（メタステーブル消滅後）の時刻ｔ１における２値化部１２の出力信号はメタステーブルの寿命に依存するため、真正乱数データ、すなわち規則性がなく質の高い乱数データとなる。
【００３１】
以上のように、本実施の形態に係る乱数発生装置における乱数生成部１は、リング発振器１１の３個（奇数個）のインバータからなるループと４個（偶数個）のインバータからなるループとを切り替え、メタステーブルの寿命を“０”，“１”に２値化することによって真正乱数データを生成する。したがって、小型で消費電力が小さく、高性能な乱数発生装置が実現できる。
【００３２】
図４は、Ｍ系列生成部２の構成を示す図である。
同図を参照して、Ｍ系列生成部２は、ｎ個（ｎは３以上の自然数）のレジスタ９１と、複数個のＥＸＯＲゲート９２と、ＡＮＤゲート９３と、ＯＲゲート９４とを含む。
【００３３】
各レジスタ９１は、そのデータ入力端子が前段のレジスタ９１の非反転出力端子に接続され、クロック入力端子に制御信号生成部５からのＭ系列シフト信号が入力され、反転出力端子がＡＮＤゲート９３の入力端子に接続される。ただし、初段のレジスタ９１は、データ入力端子がＯＲゲート９４の出力端子に接続される。
【００３４】
各ＥＸＯＲゲート９２は、入力端子の一方が対応のレジスタ９１の非反転出力を受け、その入力端子の他方が前段のＥＸＯＲゲート９２の出力信号を受け、これらの排他的論理和を出力する。ただし、初段のＥＸＯＲゲート９２は、その入力端子の一方が（ｎ−２）段目のレジスタ９１の非反転出力を受け、入力端子の他方がｎ段目のＥＸＯＲゲート９２の出力信号を受ける。
【００３５】
このように、複数段のレジスタ９１を直列に接続し、最終出力をフィードバックする構成により、擬似乱数が生成されることは周知である。このＭ系列生成部２が出力する擬似乱数データの繰返し周期はＥＸＯＲゲート９２の数および位置に応じて異なり、擬似乱数データの繰返し周期が最も長くなるようにＥＸＯＲゲート９２の数および位置が定められる。この場合、繰返し周期が（２n−１）の擬似乱数データが生成される。
【００３６】
ＡＮＤゲート９３は、ｎ個のレジスタ９１の反転出力の論理積を出力する。ＯＲゲート９４は、最終段のＥＸＯＲゲート９２の出力信号およびＡＮＤゲート９３の出力信号の論理和を出力する。このような構成により、すべてのレジスタ９１の非反転出力がＬレベルになってＭ系列生成部２が出力する擬似乱数データがＬレベルの安定状態になることが防止される。
【００３７】
図５は、制御信号生成部５の構成を示す図である。
同図を参照して、制御信号生成部５は、リング発振器１０１（クロック用発振器）と、レジスタ３１ａ〜３１ｂと、ＡＮＤゲート３２ａ〜３２ｂとを含む。
【００３８】
図６は、リング発振器１０１の構成を示す図である。
同図を参照して、リング発振器１０１は、ＡＮＤゲート３３と、インバータ３４ａ〜３４ｃとを含む。
【００３９】
ＡＮＤゲート３３と、インバータ３４ａ〜３４ｃとからなるループ、すなわち奇数個のインバータからなるループが形成される。発振制御信号がＬレベルのときはＡＮＤゲート３３の出力信号がＬレベルとなるため、リング発振器１０１の出力信号はＨレベルで安定する。一方、発振制御信号がＨレベルのときはＡＮＤゲート３３の出力信号がＨレベルとなるため、ＡＮＤゲート３３および各インバータの出力信号の論理レベルがＨおよびＬレベルを繰り返してループが発振状態となり、制御信号生成用クロックが出力される。
【００４０】
再び図５を参照して、レジスタ３１ａ〜３１ｂは、データ入力端子に入力されたデータをリング発振器１０１から受けた制御信号生成用クロックのタイミングでサンプリングして保持し、保持したデータを出力する。レジスタ３１ａの非反転出力端子がレジスタ３１ｂのデータ入力端子に接続され、反転出力端子がＡＮＤゲート３２ａの入力端子の一方およびＡＮＤゲート３２ｂの入力端子の一方に接続される。レジスタ３１ｂの非反転出力端子がＡＮＤゲート３２ａの入力端子の他方に接続され、反転出力端子がＡＮＤゲート３２ｂの入力端子の他方およびレジスタ３１ａのデータ入力端子に接続される。
【００４１】
ＡＮＤゲート３２ａの出力が乱数格納信号となり、また、ＡＮＤゲート３２ｂの出力が発振制御信号およびＭ系列シフト信号となる。
【００４２】
次に、制御信号生成部５が各回路を制御して乱数を生成する際の動作について説明する。
【００４３】
図７は、本発明の第１の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【００４４】
制御信号生成部５は、発振制御信号およびＭ系列シフト信号をＬレベルからＨレベルに変化させる。発振制御信号がＬレベルからＨレベルになると、乱数生成部１におけるリング発振器１１が発振状態となる。また、Ｍ系列シフト信号がＬレベルからＨレベルになると、Ｍ系列生成部２における各レジスタがシフト動作を行ない、Ｍ系列生成部２の出力、すなわち擬似乱数データの論理レベルがたとえばＬレベルからＨレベルに変化する。
【００４５】
次に、制御信号生成部５は、発振制御信号およびＭ系列シフト信号をＨレベルからＬレベルに変化させる。発振制御信号がＨレベルからＬレベルになるとリング発振器１１が発振状態でなくなり、リング発振器１１においてメタステーブルが発生する。
【００４６】
そして、リング発振器１１においてメタステーブルが消滅し、乱数生成部１から真正乱数データとしてたとえばＨレベルのデータが出力される。ＥＸＯＲゲート３は、乱数生成部１からＨレベルのデータおよびＭ系列生成部２からＨレベルのデータを受けて、Ｌレベルのデータを乱数データとして出力する。
【００４７】
次に、制御信号生成部５は、乱数格納部４を制御して、ＥＸＯＲゲート３から受けた乱数データをメタステーブル消滅後のタイミングで格納する。同図において、制御信号生成部５は、リング発振器１１においてメタステーブルが消滅した後のタイミングである制御信号生成用クロックの４クロック目で乱数格納信号をＬレベルからＨレベルに変化させている。乱数格納信号がＬレベルからＨレベルになると、乱数格納部４は、ＥＸＯＲゲート３から出力されているＬレベルの乱数データを格納する。
【００４８】
ここで、メタステーブルが消滅した後に乱数格納信号をＬレベルからＨレベルに変化させるように構成するためには、制御信号生成用クロックの周期をある程度大きくする必要がある。制御信号生成用クロックの周期を大きくする方法としては、制御信号生成部５が含むリング発振器１０１における各インバータを入出力間の遅延量の大きい回路とするか、リング発振器１０１におけるループを構成するインバータの数を増やすか、またはインバータの出力に容量値の大きい素子を接続する等の方法が考えられる。
【００４９】
ところで、特許文献１記載の乱数発生装置は２つの入力信号の関係に応じて乱数を発生する構成であるため、適切な入力信号を生成できない場合には乱数性が低下してしまうという問題点があった。
【００５０】
また、特許文献２記載の乱数発生装置は、メタステーブルが消滅する前のカウント値を真正乱数データとして出力すると、メタステーブルの寿命に依存しない乱数が生成されるために乱数性が低下してしまう場合があるという問題点があった。
【００５１】
しかしながら、本発明の第１の実施の形態に係る乱数発生装置では、制御信号生成部５は、乱数格納部４を制御して、ＥＸＯＲゲート３から受けた乱数データをメタステーブル消滅後のタイミングで格納する。すなわち、メタステーブルの寿命に基づく乱数を生成する。
【００５２】
したがって、本発明の第１の実施の形態に係る乱数発生装置では、乱数性を向上させることができる。
【００５３】
また、本発明の第１の実施の形態に係る乱数発生装置では、リング発振器１０１が生成する制御信号生成用クロックの周波数は乱数発生装置の外部から制御することができない。したがって、耐タンパ性、すなわち機器の内部構造および記憶しているデータ等の解析の困難さを向上させることができる。
【００５４】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００５５】
＜第２の実施の形態＞
本実施の形態は、第１の実施の形態に係る乱数発生装置におけるリング発振器１１および制御信号生成部５の構成を変更した乱数発生装置に関する。すなわち、本実施の形態に係る乱数発生装置は、リング発振器１１の代わりにリング発振器１３（乱数用発振器）を備え、また、制御信号生成部５の代わりに制御信号生成部１５を備える。
【００５６】
図８は、リング発振器１３の構成を示す図である。
同図を参照して、リング発振器１３は、ＮＡＮＤゲート４１ａ〜４１ｆを含む。ＮＡＮＤゲート４１ａ〜４１ｆはループを形成する。このループは偶数個のインバータからなるループと等価であり、発振制御信号がＬレベルおよびＨレベルのいずれの場合にも安定状態になる。
【００５７】
リング発振器２１において、ＮＡＮＤゲート４１ｆの出力およびＮＡＮＤゲート４１ａの入力の接続点がノードＮ４１であり、ＮＡＮＤゲート４１ｂの出力およびＮＡＮＤゲート４１ｃの入力の接続点がノードＮ４２であり、ＮＡＮＤゲート４１ｄの出力およびＮＡＮＤゲート４１ｅの入力の接続点がノードＮ４３である。
【００５８】
ノードＮ４１〜Ｎ４３は、それぞれ２値化部１２におけるレジスタ２３ａ〜２３ｃのクロック入力端子に接続される。
【００５９】
リング発振器１３の構成および動作は、特許文献１の図１９に示すリング発振器と同様である。すなわち、このループの初期状態は、ノードＮ４１〜Ｎ４３の電位がＨレベルの安定状態である。発振制御信号がＨレベルに立ち上げられたことに応じて、ＮＡＮＤゲート４１ａ〜４１ｅの出力がＬレベルに立下げられた後、ＮＡＮＤゲート４１ａ、４１ｃおよび４１ｅの電位がＬレベル、ＮＡＮＤゲート４１ｂ、４１ｄおよび４１ｆの電位がＨレベルの安定状態に遷移する。発振制御信号の変化時において、ノードＮ４１〜Ｎ４３に順次メタステーブルが発生する。メタステーブルの波形は時間が経つにつれて徐々に小さくなって消滅する。
【００６０】
したがって、リング発振器２１のループの遅延時間よりも短いパルス幅の発振制御信号を生成しなくても、発振制御信号をＬレベルからＨレベルに立ち上げるだけで簡単にメタステーブルを発生することができるため、乱数発生装置の構成を簡易化することができる。
【００６１】
図９は、制御信号生成部１５の構成を示す図である。
同図を参照して、制御信号生成部１５は、図５に示す制御信号生成部５に対して、さらにインバータ３５を含む。インバータ３５は、ＡＮＤゲート３２ｂの出力を反転させ、発振制御信号として乱数生成部１へ出力する。その他の構成および動作は図５に示す制御信号生成部５と同様である。
【００６２】
次に、制御信号生成部１５が各回路を制御して乱数を生成する際の動作について説明する。
【００６３】
図１０は、本発明の第２の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【００６４】
制御信号生成部１５は、発振制御信号をＨレベルからＬレベルに変化させる。この場合、乱数生成部１におけるリング発振器１１は安定状態であり、各ノードの電位がＨレベルであるため、乱数生成部１の出力はＬレベルとなる。また、制御信号生成部１５は、Ｍ系列シフト信号をＬレベルからＨレベルに変化させる。Ｍ系列シフト信号がＬレベルからＨレベルになると、Ｍ系列生成部２における各レジスタがシフト動作を行ない、Ｍ系列生成部２の出力、すなわち擬似乱数データの論理レベルがたとえばＬレベルからＨレベルに変化する。
【００６５】
次に、制御信号生成部５は、発振制御信号をＬレベルからＨレベルに変化させる。発振制御信号がＬレベルからＨレベルになると、リング発振器１３においてメタステーブルが発生する。また、制御信号生成部５は、Ｍ系列シフト信号をＨレベルからＬレベルに変化させる。
【００６６】
そして、リング発振器１３においてメタステーブルが消滅し、乱数生成部１から真正乱数データとしてたとえばＨレベルのデータが出力される。ＥＸＯＲゲート３は、乱数生成部１からＨレベルのデータおよびＭ系列生成部２からＨレベルのデータを受けて、Ｌレベルのデータを乱数データとして出力する。
【００６７】
次に、制御信号生成部５は、乱数格納部４を制御して、ＥＸＯＲゲート３から受けた乱数データをメタステーブル消滅後のタイミングで格納する。同図において、制御信号生成部５は、リング発振器１３においてメタステーブルが消滅した後のタイミングである制御信号生成用クロックの４クロック目で乱数格納信号をＬレベルからＨレベルに変化させている。乱数格納信号がＬレベルからＨレベルになると、乱数格納部４は、ＥＸＯＲゲート３から出力されているＬレベルの乱数データを格納する。
【００６８】
したがって、本発明の第２の実施の形態に係る乱数発生装置は、第１の実施の形態に係る乱数発生装置と同様にメタステーブルの寿命に基づく乱数を生成することができるため、乱数性を向上させることができる。また、第１の実施の形態に係る乱数発生装置と同様に、耐タンパ性を向上させることができる。
【００６９】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００７０】
＜第３の実施の形態＞
本実施の形態は、第１の実施の形態に係る乱数発生装置における制御信号生成部５の構成を変更した乱数発生装置に関する。すなわち、本実施の形態に係る乱数発生装置は、制御信号生成部５の代わりに制御信号生成部２５を備える。
【００７１】
図１１は、制御信号生成部２５の構成を示す図である。
同図を参照して、制御信号生成部２５は、図５に示す制御信号生成部５に対して、リング発振器１０１の代わりに分周器５１を含む。分周器５１は、外部から乱数発生装置に入力されるシステムクロックまたは内部発振によるクロックを分周し、分周したクロックを制御信号生成用クロックとしてレジスタ３１ａ〜３１ｂへ出力する。その他の構成および動作は図５に示す制御信号生成部５と同様である。
【００７２】
したがって、本実施の形態に係る乱数発生装置は、第１の実施の形態に係る乱数発生装置と同様にメタステーブルの寿命に基づく乱数を生成することができるため、乱数性を向上させることができる。
【００７３】
ここで、第１の実施の形態に係る乱数発生装置では、前述のように制御信号生成用クロックの周期を大きくするためにリング発振器１０１におけるループを構成するインバータの数を増やす等の方法をとる必要があり、リング発振器１０１の回路規模が大きくなる。しかしながら、本実施の形態に係る乱数発生装置では、クロックを発生するリング発振器が不要となり、また、分周器はたとえば数個のレジスタで構成できることから、回路規模を小さくすることができる。
【００７４】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００７５】
＜第４の実施の形態＞
本実施の形態は、第１の実施の形態に係る乱数発生装置における制御信号生成部５の構成を変更した乱数発生装置に関する。すなわち、本実施の形態に係る乱数発生装置は、制御信号生成部５の代わりに制御信号生成部３５を備える。
【００７６】
図１２は、制御信号生成部３５の構成を示す図である。
同図を参照して、制御信号生成部２５は、レジスタ５２ａ〜５２ｃを含む。レジスタ５２ａ〜５２ｃは、図示しないＣＰＵ（Central Processing Unit）からＣＰＵバス経由で受けたデータを、同じくＣＰＵから受けた書き込み信号のタイミングで保持し、保持したデータをそれぞれ発振制御信号、乱数格納信号およびＭ系列シフト信号として出力する。すなわち、ＣＰＵは、レジスタ５２ａ〜５２ｃを制御して、図７と同様の発振制御信号、乱数格納信号およびＭ系列シフト信号を生成する。ここで、ＣＰＵは、乱数発生装置の外部に存在する。
【００７７】
次に、制御信号生成部５が各回路を制御して乱数を生成する際の動作について説明する。
【００７８】
図１３は、本発明の第４の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【００７９】
同図において、ＣＰＵバスデータのＭＳＢ（Most Significant Bit）がレジスタ５２ａに対応し、ＭＳＢから２ビット目がレジスタ５２ｂに対応し、ＬＳＢ（Least Significant Bit）がレジスタ５２ｃに対応する。
【００８０】
ＣＰＵは、発振制御信号、乱数格納信号およびＭ系列シフト信号の論理レベルを変更するタイミングに応じてＣＰＵバスデータを変更し、かつ、書き込み信号を各レジスタへ出力することにより、同図に示すような発振制御信号、乱数格納信号およびＭ系列シフト信号を生成する。その他の動作は図７と同様であるため、ここでは説明を繰り返さない。
【００８１】
したがって、本実施の形態に係る乱数発生装置は、第１の実施の形態に係る乱数発生装置と同様にメタステーブルの寿命に基づく乱数を生成することができるため、乱数性を向上させることができる。
【００８２】
さらに、本実施の形態に係る乱数発生装置では、制御信号生成部３５は３個のレジスタだけで構成されるため、第１〜第３の実施の形態に係る乱数発生装置よりも回路規模を小さくすることができる。
【００８３】
なお、本実施の形態に係る乱数発生装置では、制御信号生成部２５がレジスタ５２ａ〜５２ｃを含む構成としたが、これに限定するものではなく、制御信号生成部２５がレジスタ５２ａ〜５２ｃのうちの少なくともいずれか一つを含み、ＣＰＵが、発振制御信号、乱数格納信号およびＭ系列シフト信号のうちの少なくともいずれか一つを制御する構成とすることができる。
【００８４】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００８５】
＜第５の実施の形態＞
本実施の形態は、メタステーブルの消滅を検知し、かつ、第１の実施の形態に係る乱数発生装置における制御信号生成部５の構成を変更した乱数発生装置に関する。
【００８６】
図１４は、本発明の第５の実施の形態に係る乱数発生装置の構成を示す図である。
同図を参照して、乱数発生装置は、第１の実施の形態に係る乱数発生装置に対して、さらにメタステーブル消滅検知器６を備え、かつ、制御信号生成部５の代わりに制御信号生成部４５を備える。メタステーブル消滅検知器６は、レジスタ６１と、ＡＮＤゲート６２とを含む。
【００８７】
レジスタ６１のクロック入力端子にＥＸＯＲゲート３の出力が接続され、データ入力端子にＨレベルの固定電位が接続され、リセット端子に制御信号生成部４５からの消滅検知リセットが入力される。ＡＮＤゲート６２の入力端子の一方にレジスタ６１の出力が接続され、他方に制御信号生成部４５からのゲート制御信号が入力される。ＡＮＤゲート６２は両入力端子の論理積を消滅検知結果として制御信号生成部４５へ出力する。
【００８８】
次に、本実施の形態に係る乱数発生装置がメタステーブルの消滅を検知して乱数を生成する際の動作について説明する。
【００８９】
図１５は、本発明の第５の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【００９０】
メタステーブルが発生するまでの動作は第１の実施の形態に係る乱数発生装置と同様であるため、ここでは説明を繰り返さない。
【００９１】
リング発振器１１においてメタステーブルが発生した後、制御信号生成部４５は、消滅検知リセットをＬレベルからＨレベルに変化させる。消滅検知リセットがＨレベルになると、レジスタ６１はリセット状態となり、レジスタ６１の出力はＬレベルとなる。
【００９２】
次に、制御信号生成部４５は、消滅検知リセットをＨレベルからＬレベルに変化させてレジスタ６１のリセット状態を解除する。そして、制御信号生成部４５は、レジスタ６１のリセット状態が解除された後にゲート制御信号をＬレベルからＨレベルに変化させ、ＡＮＤゲート６２から出力される消滅検知結果を受ける。
【００９３】
ここで、メタステーブルが消滅していない場合には、乱数生成部１からの乱数データはＨレベルおよびＬレベルを繰り返している。また、Ｍ系列生成部２からの出力はＨレベルまたはＬレベルで安定している。したがって、レジスタ６１のクロック入力端子に入力されるＥＸＯＲゲート３からの出力はＨレベルおよびＬレベルを繰り返しており、また、レジスタ６１のデータ入力端子の電位がＨレベルであることから、レジスタ６１の出力はＨレベルである。また、ゲート制御信号がＨレベルであることから、ＡＮＤゲート６２から出力される消滅検知結果はＨレベルとなる。そして、制御信号生成部４５は、ＡＮＤゲート６２から受けた消滅検知結果がＨレベルである場合にはメタステーブルは未だ消滅していないと判断する。
【００９４】
そして、制御信号生成部４５は、消滅検知リセットをＬレベルからＨレベルに変化させてレジスタ６１を再びリセット状態とする。また、制御信号生成部４５は、ゲート制御信号をＨレベルからＬレベルに変化させる。このように、制御信号生成部４５は、メタステーブルが消滅するまで以上の動作（以下、検出動作とも称する。）を繰り返す。
【００９５】
一方、メタステーブルが消滅した場合には、乱数生成部１からの乱数データはＨレベルまたはＬレベルで安定する。また、Ｍ系列生成部２からの出力はＨレベルまたはＬレベルで固定される。したがって、レジスタ６１のクロック入力端子に入力されるＥＸＯＲゲート３からの出力はＨレベルまたはＬレベルとなり、レジスタ６１はデータ入力端子のＨレベルをラッチしないため、レジスタ６１の出力はリセット状態のＬレベルが維持される。制御信号生成部４５は、ＡＮＤゲート６２から受けた消滅検知結果がＬレベルである場合にはメタステーブルが消滅したと判断し、乱数格納部４を制御して、ＥＸＯＲゲート３から受けた乱数データを格納する。同図において、制御信号生成部４５は、４回目の検知動作において、消滅検知結果がＬレベルとなったことからメタステーブルが消滅したと判断し、乱数格納信号をＬレベルからＨレベルに変化させている。
【００９６】
したがって、本実施の形態に係る乱数発生装置は、メタステーブル消滅検知器６がメタステーブルの消滅を検知し、制御信号生成部４５が、メタステーブル消滅検知器６からメタステーブルが消滅したことを表わす消滅検知結果を受けた後に乱数格納部４を制御して、ＥＸＯＲゲート３から受けた乱数データを格納する。このような構成により、メタステーブルの寿命に基づく乱数をより確実に生成することができ、乱数性を向上させることができる。
【００９７】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００９８】
＜第６の実施の形態＞
本実施の形態は、第５の実施の形態に係る乱数発生装置における制御信号生成部４５の動作内容を追加した乱数発生装置に関する。
【００９９】
ここでは、本実施の形態に係る乱数発生装置がメタステーブルの消滅を検知して乱数を生成する際の動作について説明する。
【０１００】
図１６は、本発明の第６の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【０１０１】
制御信号生成部４５は、メタステーブルが発生してから所定時間経過してもメタステーブルが消滅しない場合、すなわち検出動作を所定回数行なってもＡＮＤゲート６２からの消滅検知結果がＨレベルのままである場合には、乱数格納部４を制御して、ＥＸＯＲゲート３から受けた乱数データを格納する。同図において、制御信号生成部４５は、ｘ回目（ｘは１以上の自然数）の検知動作においても消滅検知結果がＨレベルであることから乱数格納信号をＬレベルからＨレベルに変化させている。
【０１０２】
そして、制御信号生成部４５は、発振制御信号およびＭ系列シフト信号をＬレベルからＨレベルに変化させて次の乱数生成を開始する。
【０１０３】
したがって、本実施の形態に係る乱数発生装置では、乱数生成時間が長くなりすぎることを防ぐことができる。また、本実施の形態に係る乱数発生装置では、メタステーブルの寿命に基づく乱数が生成されないが、メタステーブルが発生してから、メタステーブル消滅前に乱数格納信号をＬレベルからＨレベルに変化させるまでの期間を適切に設定することにより、乱数性を十分に向上させることができる。
【０１０４】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【０１０５】
＜第７の実施の形態＞
本実施の形態は、第１の実施の形態に係る乱数発生装置における制御信号生成部５の構成を変更した乱数発生装置に関する。
【０１０６】
図１７は、本発明の第７の実施の形態に係る乱数発生装置の構成を示す図である。
同図を参照して、乱数発生装置は、第１の実施の形態に係る乱数発生装置に対して、制御信号生成部５の代わりに制御信号生成部５５を備える。制御信号生成部５５は、レジスタ７１ａ〜レジスタ７１ｅを含む。
【０１０７】
レジスタ７１ａ〜７１ｅは、図示しないＣＰＵからＣＰＵバス経由で受けたデータを、同じくＣＰＵから受けた書き込み信号のタイミングで保持し、保持したデータをそれぞれ発振制御信号、Ｍ系列シフト信号、乱数格納信号、消滅検知リセットおよびゲート制御信号として出力する。ここで、ＣＰＵは、乱数発生装置の外部に存在する。
【０１０８】
メタステーブル消滅検知器６におけるＡＮＤゲート６２から出力される消滅検知結果は、ＣＰＵバス経由でＣＰＵへ出力される。
【０１０９】
図１８は、ＣＰＵが本発明の第７の実施の形態に係る乱数発生装置を制御して乱数を生成する際の動作手順を定めたフローチャートである。
【０１１０】
まず、ＣＰＵは、レジスタ７１ａおよびレジスタ７１ｂの出力をＬレベルからＨレベルに変化させる。すなわち、ＣＰＵは、発振制御信号およびＭ系列シフト信号をＬレベルからＨレベルに変化させる。発振制御信号がＬレベルからＨレベルになると、乱数生成部１におけるリング発振器１１が発振状態となる。また、Ｍ系列シフト信号がＬレベルからＨレベルになると、Ｍ系列生成部２における各レジスタがシフト動作を行ない、Ｍ系列生成部２の出力、すなわち擬似乱数データの論理レベルがたとえばＬレベルからＨレベルに変化する（Ｓ１）。
【０１１１】
次に、ＣＰＵは、レジスタ７１ａおよびレジスタ７１ｂの出力をＨレベルからＬレベルに変化させる。すなわち、ＣＰＵは、発振制御信号およびＭ系列シフト信号をＨレベルからＬレベルに変化させる。発振制御信号がＨレベルからＬレベルになるとリング発振器１１が発振状態でなくなり、リング発振器１１においてメタステーブルが発生する（Ｓ２）。
【０１１２】
リング発振器１１においてメタステーブルが発生した後、ＣＰＵは、レジスタ７１ｄの出力をＬレベルからＨレベルに変化させる。すなわち、ＣＰＵは、消滅検知リセットをＬレベルからＨレベルに変化させる。消滅検知リセットがＨレベルになると、レジスタ６１はリセット状態となり、レジスタ６１の出力はＬレベルとなる（Ｓ３）。
【０１１３】
次に、ＣＰＵは、消滅検知リセットをＨレベルからＬレベルに変化させてレジスタ６１のリセット状態を解除する。そして、ＣＰＵは、レジスタ６１のリセット状態が解除された後にゲート制御信号をＬレベルからＨレベルに変化させて、ＡＮＤゲート６２から出力される消滅検知結果をＣＰＵバス経由で読み出す。
【０１１４】
ＣＰＵは、ＡＮＤゲート６２から受けた消滅検知結果がＬレベルである場合にはメタステーブルが消滅したと判断し（Ｓ５でＹＥＳ）、レジスタ７１ｃの出力をＬレベルからＨレベルに変化させる。すなわち、ＣＰＵは、乱数格納信号をＬレベルからＨレベルに変化させることにより、乱数格納部４にＥＸＯＲゲート３から受けた乱数データを格納させる制御を行なう。そして、乱数格納部４が格納した１ｂｉｔの乱数データは乱数としてＣＰＵバス経由でＣＰＵへ出力される、すなわち、ＣＰＵは、乱数格納部４が格納した１ｂｉｔの乱数データを乱数として読み出す（Ｓ６）。
【０１１５】
一方、ＣＰＵは、ＡＮＤゲート６２から受けた消滅検知結果がＨレベルである場合にはメタステーブルは未だ消滅していないと判断し（Ｓ５でＮＯ）、変数として保持している”消滅検知結果の読み出し回数”に１を加える（Ｓ７）。
【０１１６】
ＣＰＵは、消滅検知結果の読み出し回数が所定の読み出し限度回数以上である場合には（Ｓ８でＹＥＳ）、乱数格納信号をＬレベルからＨレベルに変化させることにより、乱数格納部４にＥＸＯＲゲート３から受けた乱数データを格納させる制御を行なう。そして、ＣＰＵは、乱数格納部４が格納した１ｂｉｔの乱数データを乱数として読み出す（Ｓ６）。
【０１１７】
一方、ＣＰＵは、消滅検知結果の読み出し回数が所定の読み出し限度回数未満である場合には（Ｓ８でＮＯ）、消滅検知リセットをＬレベルからＨレベルに変化させてレジスタ６１を再びリセット状態とする（Ｓ３）。また、ＣＰＵは、ゲート制御信号をＨレベルからＬレベルに変化させる。
【０１１８】
ＣＰＵは、乱数を所定ビット数分取得した場合には（Ｓ９でＹＥＳ）、取得した乱数を図示しない暗号器、ハッシュ関数生成部およびＭ系列生成部へ出力する（Ｓ１０）。なお、暗号器、ハッシュ関数生成部およびＭ系列生成部は、回路、またはＣＰＵ等に組み込まれたソフトウェアによって構成される。
【０１１９】
一方、ＣＰＵは、乱数を所定ビット数分取得していない場合には（Ｓ９でＮＯ）、レジスタ７１ａおよびレジスタ７１ｂの出力をＬレベルからＨレベルに変化させて、次の乱数生成を開始する（Ｓ１）。
【０１２０】
したがって、本実施の形態に係る乱数発生装置は、第１の実施の形態に係る乱数発生装置と同様にメタステーブルの寿命に基づく乱数を生成することができるため、乱数性を向上させることができる。
【０１２１】
さらに、本実施の形態に係る乱数発生装置では、制御信号生成部５５は５個のレジスタだけで構成されるため、第５〜第６の実施の形態に係る乱数発生装置よりも回路規模を小さくすることができる。
【０１２２】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【０１２３】
＜第８の実施の形態＞
本実施の形態は、リング発振器のテストを行なう乱数発生装置に関する。
【０１２４】
図１９は、本発明の第８の実施の形態に係る乱数発生装置におけるリング発振器のテスト方法を説明するための乱数発生装置の概略図である。
【０１２５】
同図を参照して、乱数発生装置は、セレクタ７３と、カウンタ７４と、複数個のリング発振器７５とを備える。
【０１２６】
次に、リング発振器のテストを行なう際の乱数発生装置の動作について説明する。
まず、図示しない制御信号生成部は、発振制御信号をリング発振器７５へ出力し、リング発振器７５を発振状態とする。
【０１２７】
また、セレクタ７３は、複数個のリング発振器７５から受けた信号のうち、テスト対象のリング発振器７５から受けた信号を選択してカウンタ７４へ出力する。
【０１２８】
ここで、リング発振器７５は、たとえばリング発振器１１、リング発振器１３およびリング発振器１０１である。リング発振器１１では、インバータ２１ｂ〜２１ｅおよびレジスタ２３ａ〜２３ｃのうちのいずれか一つの出力がセレクタ７３に接続される。また、リング発振器１３では、ＮＡＮＤゲート４１ａ〜４１ｆおよびレジスタ２３ａ〜２３ｃのうちのいずれか一つの出力がセレクタ７３に接続される。また、リング発振器１０１では、ＡＮＤゲート３３およびインバータ３４ａ〜３４ｃのうちのいずれか一つの出力がセレクタ７３に接続される。
【０１２９】
カウンタ７４は、セレクタ７３経由で受けたテスト対象のリング発振器７５の出力を所定時間カウントする。
【０１３０】
そして、図示しないテスト制御部がカウンタ７４のカウント値を読み出し、リング発振器７５の発振周波数を算出する。発振周波数が所定の範囲内である場合にはテスト対象のリング発振器７５は合格となり、また、発振周波数が所定の範囲外である場合にはテスト対象のリング発振器７５は不合格となる。
【０１３１】
なお、カウンタ７４がリング発振器１１およびリング発振器１３におけるレジスタの出力をカウントする場合には、インバータまたはＮＡＮＤゲートの出力をカウントする場合と比べてカウント値が半分になるため、発振周波数はカウント値の２倍に基づいて算出される。その他の構成および動作は前述の第１の実施の形態に係る乱数発生装置等と同様である。
【０１３２】
したがって、本実施の形態に係る乱数発生装置では、リング発振器７５のテストを乱数発生装置内部で行なうことができるため、リング発振器７５の出力またはカウント値を乱数発生装置外部へ出力する必要がなくなり、テスト時間の短縮を図ることができる。
【０１３３】
なお、乱数発生装置がカウンタ７４を備えず、リング発振器７５の出力がセレクタ７３経由で乱数発生装置の外部へ出力される構成としてもよい。このような構成により、乱数発生装置の外部に存在するＣＰＵ等がリング発振器７５からの出力と所定のテストパターンとを比較して、リング発振器７５の合否を判定することができるため、カウンタ７４およびテスト制御部等が不要となり、回路規模を小さくすることができる。
【０１３４】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【０１３５】
＜第９の実施の形態＞
本実施の形態は、第８の実施の形態に係る乱数発生装置におけるカウンタ７４の代わりにＭ系列生成部２を変形してカウンタ機能を追加した乱数発生装置に関する。
【０１３６】
図２０は、本発明の第９の実施の形態に係る乱数発生装置におけるリング発振器のテスト方法を説明するための乱数発生装置の概略図である。
【０１３７】
同図を参照して、乱数発生装置は、第８の実施の形態に係る乱数発生装置に対して、カウンタ７４を備えず、また、Ｍ系列生成部２の代わりにＭ系列生成部７６を備える。セレクタ７３は、図示しない制御信号生成部から受けたＭ系列シフト信号またはリング発振器７５の出力を選択してＭ系列生成部７６へ出力する。
【０１３８】
図２１は、Ｍ系列生成部７６の構成の概略図である。
同図を参照して、Ｍ系列生成部７６は、セレクタ８１と、Ｍ系列ロジック８２と、カウンタロジック８３と、セレクタ８４と、レジスタ９１とを含む。
【０１３９】
Ｍ系列ロジック８２は、レジスタ９１間に配置される、Ｍ系列生成用の論理回路である。Ｍ系列ロジック８２は、ＥＸＯＲゲート９２またはＯＲゲート９４を含む回路か、または配線のみの回路かのいずれかである。
【０１４０】
カウンタロジック８３は、レジスタ９１間に配置される、リング発振器７５の出力のカウント用の論理回路であり、レジスタ９１との組み合わせでカウンタ機能を実現する。
【０１４１】
セレクタ８１は、Ｍ系列カウンタ切り替え信号に基づいて、前段のＭ系列ロジック８２の出力またはカウンタロジック８３の出力を選択してレジスタ９１へ出力する。
【０１４２】
セレクタ８４は、Ｍ系列カウンタ切り替え信号に基づいて、Ｍ系列生成用のクロック、すなわちＭ系列シフト信号、またはリング発振器７５の出力を選択して各レジスタ９１のクロック入力端子へ出力する。
【０１４３】
レジスタ９１は、セレクタ８４の選択したデータをクロックとして使用し、このクロックのタイミングでセレクタ８１の選択したデータを保持して次段のＭ系列ロジック８２およびカウンタロジック８３へ出力する。
【０１４４】
リング発振器のテストが行なわれる場合には、Ｍ系列カウンタ切り替え信号に基づいて、セレクタ８１はカウンタロジック８３の出力を選択し、また、セレクタ８４はリング発振器７５の出力を選択する。この場合、Ｍ系列生成部７６は、リング発振器７５の出力をカウントする。
【０１４５】
一方、乱数が生成される通常動作においては、Ｍ系列カウンタ切り替え信号に基づいて、セレクタ８１はＭ系列ロジック８２の出力を選択し、また、セレクタ８４はＭ系列シフト信号を選択する。この場合、Ｍ系列生成部７６はＭ系列を生成する。
【０１４６】
その他の構成および動作は前述の第１の実施の形態に係る乱数発生装置等と同様である。
【０１４７】
したがって、本実施の形態に係る乱数発生装置では、カウンタ７４の代わりにＭ系列生成部７６を変形してリング発振器７５の出力をカウントすることができるため、第９の実施の形態に係る乱数発生装置と比べて回路規模を小さくすることができる。
【０１４８】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【０１４９】
＜第１０の実施の形態＞
本実施の形態は、図２に示すリング発振器１１および２値化部１２にリング発振器の縮退故障テスト機能を追加した乱数発生装置に関する。
【０１５０】
図２２は、本発明の第１０の実施の形態に係る乱数発生装置におけるリング発振器１１１および２値化部１２の構成を示す図である。
【０１５１】
同図を参照して、リング発振器１１１は、リング発振器１１に対して、さらに、セレクタ８５〜８６を含む。
【０１５２】
セレクタ８５は、テストデータ１またはインバータ２１ｅの出力を選択してインバータ２１ｂへ出力する。セレクタ８６は、テストデータ２またはインバータ２１ｃの出力を選択してインバータ２１ｄへ出力する。レジスタ２３ａ〜２３ｃは、乱数発生装置の外部から読み出し可能である。
【０１５３】
まず、図示しない制御信号生成部は、発振制御信号をＨレベルにする。発振制御信号がＨレベルになると、インバータ２１ｃ〜２１ｅと、ＮＡＮＤゲート２２ａおよび２２ｃとからなるループが形成される。
【０１５４】
次に、乱数発生装置の外部に存在するＣＰＵがＣＰＵバス経由でテストデータ２をセレクタ８６へ出力する。そうすると、テストデータ２に応じたデータがレジスタ２３ａ〜２３ｃに保持される。
【０１５５】
そして、ＣＰＵがレジスタ２３ａ〜２３ｃの保持するデータをＣＰＵバス経由で読み出し、乱数発生装置に入力するテストデータに対応する検証用のテストパターンと比較して、リング発振器１１１の合否を判定する。
【０１５６】
次に、制御信号生成部５は、発振制御信号をＨレベルからＬレベルに変化させる。発振制御信号がＨレベルからＬレベルになると、インバータ２１ｂ〜２１ｅと、ＮＡＮＤゲート２２ｂおよび２２ｃとからなるループが形成される。
【０１５７】
そして、ＣＰＵがＣＰＵバス経由でテストデータ１をセレクタ８５へ出力する。そうすると、テストデータ１に応じたデータがレジスタ２３ａ〜２３ｃに保持される。
【０１５８】
そして、ＣＰＵがレジスタ２３ａ〜２３ｃの保持するデータをＣＰＵバス経由で読み出し、乱数発生装置に入力するテストデータに対応する検証用のテストパターンと比較して、リング発振器１１１の合否を判定する。なお、テストデータ１〜２は、シミュレーションで生成された、回路の故障を１００％検出できるテストパターンであることが好ましい。
【０１５９】
また、レジスタ２３ａ〜２３ｃは、乱数発生装置の外部から書き込み可能である。ＥＸＯＲゲート２４の出力は外部から読み出し可能である。
【０１６０】
ＣＰＵがＣＰＵバス経由でテストデータ３をレジスタ２３ａ〜２３ｃに書き込む。そして、ＣＰＵは、ＥＸＯＲゲート２４の出力をＣＰＵバス経由で読み出し、レジスタ２３ａ〜２３ｃに書き込んだテストデータ３に対応する検証用のテストパターンと比較して、リング発振器１１１の合否を判定する。
【０１６１】
その他の構成および動作は前述の第１の実施の形態に係る乱数発生装置等と同様である。
【０１６２】
したがって、本実施の形態に係る乱数発生装置では、セレクタ８５およびセレクタ８６にテストデータ１〜２を入力することにより、リング発振器１１１の縮退故障、すなわち各ゲートの入力または出力が一定の論理レベルに固定されてしまう故障を検出することができる。
【０１６３】
また、リング発振器１１１におけるセレクタ８５およびセレクタ８６の２箇所でテストデータの入力を行なうことにより、セレクタ８５およびセレクタ８６の入力部分についても縮退故障の検出を行なうことができる。
【０１６４】
また、レジスタ２３ａ〜２３ｃは、乱数発生装置の外部から読み出し可能である。このような構成により、乱数発生装置に入力するテストデータに対応する検証用のテストパターンを乱数発生装置内で保持し、かつ、これらを比較してリング発振器１１１の合否を判定する回路を乱数発生装置内で備える必要がなくなり、回路規模を小さくすることができる。
【０１６５】
また、レジスタ２３ａ〜２３ｃは、乱数発生装置の外部から書き込み可能であり、ＥＸＯＲゲート２４の出力は外部から読み出し可能である。このような構成により、レジスタ２３ａ〜２３ｃおよびＥＸＯＲゲート２４の縮退故障の検出を行なうことができる。
【０１６６】
次に、本発明の他の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【０１６７】
＜第１１の実施の形態＞
本実施の形態は、図８に示すリング発振器１３および２値化部１２にリング発振器の縮退故障テスト機能を追加した乱数発生装置に関する。
【０１６８】
図２３は、本発明の第１１の実施の形態に係る乱数発生装置におけるリング発振器１１３および２値化部１２の構成を示す図である。
【０１６９】
同図を参照して、リング発振器１１３は、リング発振器１３に対して、さらに、セレクタ４２ａ〜４２ｆを含む。
【０１７０】
セレクタ４２ａ〜４２ｆは、テストデータａ〜ｆまたは発振制御信号を選択してＮＡＮＤゲート４１ａ〜４１ｆへ出力する。
【０１７１】
乱数発生装置の外部に存在するＣＰＵがＣＰＵバス経由でテストデータａ〜ｆをセレクタ４２ａ〜４２ｆへ出力する。ＣＰＵは、セレクタ４２ａ〜４２ｆへのテストデータａ〜ｆを個別に制御することができる。なお、テストデータａ〜ｆは、シミュレーションで生成された、回路の故障を１００％検出できるテストパターンであることが好ましい。
【０１７２】
この乱数発生装置がリング発振器の縮退故障テストを行なう際の動作としては、たとえば、図示しない制御信号生成部が、発振制御信号をＬレベルからＨレベルに変化させる際に、セレクタ４２ａ〜４２ｆのうちの少なくともいずれか一つがテストデータを選択し、ＣＰＵが発振制御信号と同様の信号をテストデータとしてセレクタに出力する。そして、リング発振器１１３においてメタステーブルが発生するか否かをレジスタ２３ａ〜２３ｃまたはＥＸＯＲゲート２４の出力をＣＰＵバス経由でＣＰＵが読み出すことによって確認する。
【０１７３】
その他の構成および動作は前述の第１の実施の形態に係る乱数発生装置等と同様である。
【０１７４】
したがって、本実施の形態に係る乱数発生装置では、セレクタ４２ａ〜４２ｆにテストデータを入力することにより、リング発振器１１３の縮退故障を検出することができる。
【０１７５】
また、リング発振器１１３の各ＮＡＮＤゲートにおいてテストデータを入力することにより、セレクタ４２ａ〜４２ｆの入力部分についても縮退故障の検出を行なうことができる。
【０１７６】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１７７】
【図１】本発明の第１の実施の形態に係る乱数発生装置の構成を示す図である。
【図２】リング発振器１１および２値化部１２の構成を示す図である。
【図３】リング発振器１１および２値化部１２の動作を説明するためのタイムチャートである。
【図４】Ｍ系列生成部２の構成を示す図である。
【図５】制御信号生成部５の構成を示す図である。
【図６】リング発振器１０１の構成を示す図である。
【図７】本発明の第１の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【図８】リング発振器１３の構成を示す図である。
【図９】制御信号生成部１５の構成を示す図である。
【図１０】本発明の第２の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【図１１】制御信号生成部２５の構成を示す図である。
【図１２】制御信号生成部３５の構成を示す図である。
【図１３】本発明の第４の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【図１４】本発明の第５の実施の形態に係る乱数発生装置の構成を示す図である。
【図１５】本発明の第５の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【図１６】本発明の第６の実施の形態に係る乱数発生装置における各信号のタイムチャートである。
【図１７】本発明の第７の実施の形態に係る乱数発生装置の構成を示す図である。
【図１８】ＣＰＵが本発明の第７の実施の形態に係る乱数発生装置を制御して乱数を生成する際の動作手順を定めたフローチャートである。
【図１９】本発明の第８の実施の形態に係る乱数発生装置におけるリング発振器のテスト方法を説明するための乱数発生装置の概略図である。
【図２０】本発明の第９の実施の形態に係る乱数発生装置におけるリング発振器のテスト方法を説明するための乱数発生装置の概略図である。
【図２１】Ｍ系列生成部７６の構成の概略図である。
【図２２】本発明の第１０の実施の形態に係る乱数発生装置におけるリング発振器１１１および２値化部１２の構成を示す図である。
【図２３】本発明の第１１の実施の形態に係る乱数発生装置におけるリング発振器１１３および２値化部１２の構成を示す図である。
【符号の説明】
【０１７８】
１  乱数生成部、２，７６  Ｍ系列生成部（擬似乱数生成部）、３，２４，９２  ＥＸＯＲゲート、４  乱数格納部、５，１５，２５，３５，４５，５５  制御信号生成部、６  メタステーブル消滅検知器、１１，１３  リング発振器（乱数用発振器）、１０１  リング発振器（クロック用発振器）、１２  ２値化部、２１ａ〜２１ｅ，３４ａ〜３４ｃ，３５  インバータ、２２ａ〜２２ｃ，４１ａ〜４１ｅ  ＮＡＮＤゲート、２３ａ〜２３ｃ，３１ａ〜３１ｂ，５２ａ〜５２ｃ，６１，７１ａ〜７１ｅ，９１  レジスタ、３２ａ〜３２ｂ，３３，６２，９３  ＡＮＤゲート、９４  ＯＲゲート、５１  分周器、４２ａ〜４２ｆ，７３，８１，８４〜８６  セレクタ、７４  カウンタ、７５，１１１，１１３  リング発振器、８２  Ｍ系列ロジック、８３  カウンタロジック、Ｎ２１〜Ｎ２３，Ｎ４１〜Ｎ４３  ノード。
【図１】
0004471901.tif 000002
【図２】
0004471901.tif 000003
【図３】
0004471901.tif 000004
【図４】
0004471901.tif 000005
【図５】
0004471901.tif 000006
【図６】
0004471901.tif 000007
【図７】
0004471901.tif 000008
【図８】
0004471901.tif 000009
【図９】
0004471901.tif 000010
【図１０】
0004471901.tif 000011
【図１１】
0004471901.tif 000012
【図１２】
0004471901.tif 000013
【図１３】
0004471901.tif 000014
【図１４】
0004471901.tif 000015
【図１５】
0004471901.tif 000016
【図１６】
0004471901.tif 000017
【図１７】
0004471901.tif 000018
【図１８】
0004471901.tif 000019
【図１９】
0004471901.tif 000020
【図２０】
0004471901.tif 000021
【図２１】
0004471901.tif 000022
【図２２】
0004471901.tif 000023
【図２３】
0004471901.tif 000024