(57)【特許請求の範囲】
【請求項１】
１以上のリングオシレータの出力を用いて乱数を生成する乱数生成回路において、
少なくとも１つのリングオシレータは、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成され、各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、各論理ゲートの出力にそれぞれインバータが接続され、それらインバータのいずれか１つの出力を当該リングオシレータの出力とする構成である
ことを特徴とする乱数生成回路。
【請求項２】
一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、
偶数段のインバータと１段の論理ゲートで構成されたＭ２個（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、
前記第１のリングオシレータの中間ノード出力と前記第２のリングオシレータの中間ノード出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、
前記（Ｍ１＋Ｍ２）入力ＸＯＲの出力をサンプリングクロックでラッチし、乱数値として出力するＤ−ＦＦと、
前記サンプリングクロックを生成する制御部と
を備え、
前記第１のリングオシレータを構成する各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、
前記第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、
前記インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である
ことを特徴とする乱数生成回路。
【請求項３】
一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、
偶数段のインバータと１段の論理ゲートで構成されたＭ２（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、
前記第１のリングオシレータの中間ノード出力と前記第２のリングオシレータの中間ノード出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、
前記（Ｍ１＋Ｍ２）入力ＸＯＲの出力をサンプリングクロックでラッチし、乱数値として出力するＤ−ＦＦと、
前記サンプリングクロックを生成する制御部と
を備え、
前記第１のリングオシレータを構成する各論理ゲートの他方の入力に、当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号と前記サンプリングクロックの反転信号とのＡＮＤ出力が接続され、
前記第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、
前記インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である
ことを特徴とする乱数生成回路。
【請求項４】
一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、
偶数段のインバータと１段の論理ゲートで構成されたＭ２（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、
前記第１のリングオシレータの中間ノード出力と前記第２のリングオシレータの中間ノード出力をサンプリングクロックでそれぞれラッチする（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦと、
前記（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦの各ラッチ出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、
前記（Ｍ１＋Ｍ２）入力ＸＯＲの出力を前記サンプリングクロックでラッチし、乱数値として出力する後段Ｄ−ＦＦと、
前記サンプリングクロックを生成する制御部と
を備え、
前記第１のリングオシレータを構成する各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、
前記第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、
前記インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である
ことを特徴とする乱数生成回路。
【請求項５】
一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、
偶数段のインバータと１段の論理ゲートで構成されたＭ２（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、
前記第１のリングオシレータの中間ノード出力と前記第２のリングオシレータの中間ノード出力をサンプリングクロックでそれぞれラッチする（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦと、
前記（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦの各ラッチ出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、
前記（Ｍ１＋Ｍ２）入力ＸＯＲの出力を前記サンプリングクロックでラッチし、乱数値として出力する後段Ｄ−ＦＦと、
前記サンプリングクロックを生成する制御部と
を備え、
前記第１のリングオシレータを構成する各論理ゲートの他方の入力に、当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号と前記サンプリングクロックの反転信号とのＡＮＤ出力が接続され、
前記第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、
前記インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である
ことを特徴とする乱数生成回路。
【請求項６】
一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたリングオシレータと、
前記リングオシレータの中間ノード出力を周波数Ｓのサンプリングクロックでラッチする第１の前段Ｄ−ＦＦと、
周波数Ｓのサンプリングクロックで入力信号をラッチする第２の前段Ｄ−ＦＦと、
前記第２の前段Ｄ−ＦＦのラッチ出力と、前記第１の前段Ｄ−ＦＦのラッチ出力との排他的論理和をとる２入力ＸＯＲと、
セレクタ制御信号により、前記サンプリングクロックのＭ回（Ｍは２以上の整数）に１回の頻度で前記第１の前段Ｄ−ＦＦの出力を選択し、前記サンプリングクロックの（Ｍ−１）回は前記２入力ＸＯＲの出力を選択し、前記第２の前段Ｄ−ＦＦに入力するセレクタと、
前記周波数ＳのサンプリングクロックをＭ分周した周波数Ｓ／Ｍの出力用クロックで前記第２の前段Ｄ−ＦＦの出力をラッチし、乱数値として出力する後段Ｄ−ＦＦと、
前記周波数Ｓのサンプリングクロック、前記セレクタ制御信号、前記周波数Ｓ／Ｍの出力用クロックを生成する制御部と
を備え、
前記リングオシレータを構成する各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、
前記リングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、
前記インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である
ことを特徴とする乱数生成回路。
【請求項７】
一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたリングオシレータと、
前記リングオシレータの中間ノード出力を周波数Ｓのサンプリングクロックでラッチする第１の前段Ｄ−ＦＦと、
周波数Ｓのサンプリングクロックで入力信号をラッチする第２の前段Ｄ−ＦＦと、
前記第２の前段Ｄ−ＦＦのラッチ出力と、前記第１の前段Ｄ−ＦＦのラッチ出力との排他的論理和をとる２入力ＸＯＲと、
セレクタ制御信号により、前記サンプリングクロックのＭ回（Ｍは２以上の整数）に１回の頻度で前記第１の前段Ｄ−ＦＦの出力を選択し、前記サンプリングクロックの（Ｍ−１）回は前記２入力ＸＯＲの出力を選択し、前記第２の前段Ｄ−ＦＦに入力するセレクタと、
前記周波数ＳのサンプリングクロックをＭ分周した周波数Ｓ／Ｍの出力用クロックで前記第２の前段Ｄ−ＦＦの出力をラッチし、乱数値として出力する後段Ｄ−ＦＦと、
前記周波数Ｓのサンプリングクロック、前記セレクタ制御信号、前記周波数Ｓ／Ｍの出力用クロックを生成する制御部と
を備え、
前記リングオシレータを構成する各論理ゲートの他方の入力に、当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号と前記周波数Ｓのサンプリングクロックの反転信号とのＡＮＤ出力が接続され、
前記リングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、
前記インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である
ことを特徴とする乱数生成回路。
【請求項８】
請求項１〜請求項７のいずれかに記載の乱数生成回路において、
前記論理ゲートは、ＮＡＮＤゲートまたはＮＯＲゲートであることを特徴とする乱数生成回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル論理ゲート回路からなるリングオシレータをもとに高い品質の真性乱数を低ゲートな回路構成で生成する乱数生成回路に関する。特に、電源のＯＮ／ＯＦＦ制御機能を備えた乱数生成回路において、電源ＯＮ直後の生成乱数の品質を向上させるための技術に関する。
【背景技術】
【０００２】
暗号技術をベースとするセキュリティ分野においては、乱数の生成が重要な役割を果たしている。チャレンジレスポンス認証や鍵共有など暗号技術において利用される乱数の条件として、予測不可能であることがあげられる。乱数の予測不可能性を根拠とする暗号技術への適用においては、自然界に存在する揺らぎ現象のようなランダム性を備えた物理現象を利用して乱数を生成する真性乱数生成回路が重要な役割を果たす。
【０００３】
非特許文献１に示す従来の真性乱数生成回路は、図１０に示すように、奇数段のインバータからなる複数のリングオシレータの中間ノード出力のＸＯＲ（排他的論理和）を取り、その出力をＤ−ＦＦ（Ｄ型フリップフロップ）でラッチし、乱数値として出力する構成である。複数のリングオシレータは、発振周期に常に一定量のジッタを伴って互いに独立に自己発振しているため、これらの独立なリングオシレータの中間ノード値のＸＯＲ出力は、予測不可能なランダム性を備える。このＸＯＲ出力に対して、Ｄ−ＦＦにより一定周期でサンプリング動作を行うことにより、予測不可能な真性乱数列を取り出すことができる。
【０００４】
ところで、乱数生成回路において乱数を生成する必要がない場合、消費電力をセーブするために回路動作を停止することが必要となる。この場合、例えばリングオシレータを構成する奇数個のインバータの１つをＮＡＮＤゲートまたはＮＯＲゲートとしてゲーティングを行うことにより、リングオシレータの発振動作のＯＮ／ＯＦＦの制御を行うことができる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Sunar B., Martin W., Stinson D.,”A provably secure true random number generator with built-in tolerance to active attacks”, IEEE Trans. Computers 56(1), pp.109-119 (2007)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、図１１に示すようにＮＡＮＤゲートを用いたリングオシレータでは、ＮＡＮＤゲートに入力する動作ＯＮ／ＯＦＦ制御信号がLow のときにＮＡＮＤゲート出力がHighに固定され、動作ＯＮ／ＯＦＦ制御信号をLow からHighに切り替えると、ＮＡＮＤゲートがインバータとして機能して発振動作を開始する。ただし、このときの発振動作は、常にＮＡＮＤゲートを起点として出力電位がHighの状態を初期状態として開始することになる。
【０００７】
発振動作の初期においては、電源ＯＮの度に毎回ＮＡＮＤゲートを起点として同じ初期動作状態から回路動作を開始するため、リングオシレータの発振ジッタがまだ十分獲得できていない電源ＯＮ後のしばらくの間は、電源ＯＮの度に毎回同じパターンの乱数列が発生する確率が高くなる傾向がある。この電源ＯＮ後の最初の数ビットが毎回同じ乱数列であるとすると、再現性がないという本来の真性乱数が満たすべき重要な条件に反し、チャレンジレスポンス認証等においてセキュリティの低下をもたらすと考えられる。このため、有効な乱数として外部へ出力する際に、電源ＯＮ後の最初の数10ビット、場合によっては 100ビット以上を破棄する必要がある問題があった。
【０００８】
また、高いサンプリング周波数の場合、サンプリング間隔が短くなるため、従来のフリーランニング動作を基本とするリングオシレータでは、サンプリング前後の生成乱数が互いになんらかの相関を持ってしまい、乱数品質が低下する問題がある。
【０００９】
本発明は、回路動作開始直後の初回サンプリングにおいてもランダム性の高い真性乱数を生成することができる乱数生成回路を提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の発明は、１以上のリングオシレータの出力を用いて乱数を生成する乱数生成回路において、少なくとも１つのリングオシレータは、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成され、各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、各論理ゲートの出力にそれぞれインバータが接続され、それらインバータのいずれか１つの出力を当該リングオシレータの出力とする構成である。
【００１１】
第２の発明は、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、偶数段のインバータと１段の論理ゲートで構成されたＭ２（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、第１のリングオシレータの中間ノード出力と第２のリングオシレータの中間ノード出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、（Ｍ１＋Ｍ２）入力ＸＯＲの出力をサンプリングクロックでラッチし、乱数値として出力するＤ−ＦＦと、サンプリングクロックを生成する制御部とを備え、第１のリングオシレータを構成する各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である。
【００１２】
第３の発明は、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、偶数段のインバータと１段の論理ゲートで構成されたＭ２（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、第１のリングオシレータの中間ノード出力と第２のリングオシレータの中間ノード出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、（Ｍ１＋Ｍ２）入力ＸＯＲの出力をサンプリングクロックでラッチし、乱数値として出力するＤ−ＦＦと、サンプリングクロックを生成する制御部とを備え、第１のリングオシレータを構成する各論理ゲートの他方の入力に、当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号とサンプリングクロックの反転信号とのＡＮＤ出力が接続され、第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である。
【００１３】
第４の発明は、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、偶数段のインバータと１段の論理ゲートで構成されたＭ２（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、第１のリングオシレータの中間ノード出力と第２のリングオシレータの中間ノード出力をサンプリングクロックでそれぞれラッチする（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦと、（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦの各ラッチ出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、（Ｍ１＋Ｍ２）入力ＸＯＲの出力をサンプリングクロックでラッチし、乱数値として出力する後段Ｄ−ＦＦと、サンプリングクロックを生成する制御部とを備え、第１のリングオシレータを構成する各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である。
【００１４】
第５の発明は、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたＭ１個（Ｍ１は１以上の整数）の第１のリングオシレータと、偶数段のインバータと１段の論理ゲートで構成されたＭ２（Ｍ２は０以上の整数、Ｍ１＋Ｍ２は２以上の整数）の第２のリングオシレータと、第１のリングオシレータの中間ノード出力と第２のリングオシレータの中間ノード出力をサンプリングクロックでそれぞれラッチする（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦと、（Ｍ１＋Ｍ２）個の前段Ｄ−ＦＦの各ラッチ出力の排他的論理和をとる（Ｍ１＋Ｍ２）入力ＸＯＲと、（Ｍ１＋Ｍ２）入力ＸＯＲの出力をサンプリングクロックでラッチし、乱数値として出力する後段Ｄ−ＦＦと、サンプリングクロックを生成する制御部とを備え、第１のリングオシレータを構成する各論理ゲートの他方の入力に、当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号とサンプリングクロックの反転信号とのＡＮＤ出力が接続され、第１のリングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である。
【００１５】
第６の発明は、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたリングオシレータと、リングオシレータの中間ノード出力を周波数Ｓのサンプリングクロックでラッチする第１の前段Ｄ−ＦＦと、周波数Ｓのサンプリングクロックで入力信号をラッチする第２の前段Ｄ−ＦＦと、第２の前段Ｄ−ＦＦのラッチ出力と、第１の前段Ｄ−ＦＦのラッチ出力との排他的論理和をとる２入力ＸＯＲと、セレクタ制御信号により、サンプリングクロックのＭ回（Ｍは２以上の整数）に１回の頻度で第１の前段Ｄ−ＦＦの出力を選択し、サンプリングクロックの（Ｍ−１）回は２入力ＸＯＲの出力を選択し、第２の前段Ｄ−ＦＦに入力するセレクタと、周波数ＳのサンプリングクロックをＭ分周した周波数Ｓ／Ｍの出力用クロックで第２の前段Ｄ−ＦＦの出力をラッチし、乱数値として出力する後段Ｄ−ＦＦと、周波数Ｓのサンプリングクロック、セレクタ制御信号、周波数Ｓ／Ｍの出力用クロックを生成する制御部とを備え、リングオシレータを構成する各論理ゲートの他方の入力に当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号が接続され、リングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である。
【００１６】
第７の発明は、一方の入力が他の論理ゲートの出力に接続された奇数段の論理ゲートで構成されたリングオシレータと、リングオシレータの中間ノード出力を周波数Ｓのサンプリングクロックでラッチする第１の前段Ｄ−ＦＦと、周波数Ｓのサンプリングクロックで入力信号をラッチする第２の前段Ｄ−ＦＦと、第２の前段Ｄ−ＦＦのラッチ出力と、第１の前段Ｄ−ＦＦのラッチ出力との排他的論理和をとる２入力ＸＯＲと、セレクタ制御信号により、サンプリングクロックのＭ回（Ｍは２以上の整数）に１回の頻度で第１の前段Ｄ−ＦＦの出力を選択し、サンプリングクロックの（Ｍ−１）回は２入力ＸＯＲの出力を選択し、第２の前段Ｄ−ＦＦに入力するセレクタと、周波数ＳのサンプリングクロックをＭ分周した周波数Ｓ／Ｍの出力用クロックで第２の前段Ｄ−ＦＦの出力をラッチし、乱数値として出力する後段Ｄ−ＦＦと、周波数Ｓのサンプリングクロック、セレクタ制御信号、周波数Ｓ／Ｍの出力用クロックを生成する制御部とを備え、リングオシレータを構成する各論理ゲートの他方の入力に、当該論理ゲートのインバータ動作をＯＮまたはＯＦＦとする動作ＯＮ／ＯＦＦ制御信号と周波数Ｓのサンプリングクロックの反転信号とのＡＮＤ出力が接続され、リングオシレータを構成する各論理ゲートの出力にそれぞれインバータが接続され、インバータのいずれか１つの出力を当該リングオシレータの中間ノード出力とする構成である。
【００１７】
また、上記の論理ゲートは、ＮＡＮＤゲートまたはＮＯＲゲートとしてもよい。
【発明の効果】
【００１８】
本発明の乱数生成回路で用いる奇数段の論理ゲート（ＮＡＮＤゲートまたはＮＯＲゲート）で構成されるリングオシレータでは、動作ＯＮ／ＯＦＦ制御信号のＯＮ制御により、どの論理ゲートが発振動作の起点となるかは熱的な揺らぎをもとにランダムに決まる。すなわち、回路動作開始後はランダムに初期状態を決定して発振動作を開始するので、回路動作開始直後の初回サンプリングにおいても、再現性が少なくランダム性の高い真性乱数を生成することができる。
【００１９】
さらに、第６および第７の発明の乱数生成回路はシリアル処理型構成であるため、単一のリングオシレータのみで複数のリングオシレータを用いた場合と等価な効果を得ることができる。これにより、小さなゲート規模で複数のリングオシレータの回路構成と同等レベルで高品質の真性乱数を生成することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施例１の乱数生成回路の構成例を示す図である。
【図２】実施例１における制御部１００の動作例を示すタイムチャートである。
【図３】本発明の実施例１の乱数生成回路の他の構成例を示す図である。
【図４】本発明の実施例２の乱数生成回路の構成例を示す図である。
【図５】本発明の実施例３の乱数生成回路の構成例を示す図である。
【図６】本発明の実施例４の乱数生成回路の構成例を示す図である。
【図７】本発明の実施例５の乱数生成回路の構成例を示す図である。
【図８】実施例５における制御部２００の動作例を示すタイムチャートである。
【図９】本発明の実施例６の乱数生成回路の構成例を示す図である。
【図１０】従来の乱数生成回路の構成例１を示す図である。
【図１１】従来の乱数生成回路の構成例２を示す図である。
【発明を実施するための形態】
【実施例１】
【００２１】
図１は、本発明の実施例１の乱数生成回路の構成例を示す。
図１において、実施例１は、図１１に示す従来の乱数生成回路の複数個（Ｍ個）のリングオシレータ１０−１〜１０−Ｍの１つ（ここでは１０−１）を、Ｎ個（Ｎは奇数）のＮＡＮＤゲートにより構成した場合の回路を示す。すなわち、請求項におけるＭ１＝１、Ｍ２＝（Ｍ−１）の例を示す。
【００２２】
当該リングオシレータ１０−１は、中間ノードの負荷容量を均等化するために、ＮＡＮＤゲートの出力ノードにインバータが等しく接続される。１つのインバータの出力はサンプリングのため、Ｍ入力ＸＯＲ２１を介してＤ−ＦＦ２２に接続される。動作ＯＮ／ＯＦＦ制御信号は、リングオシレータ１０−１のバッファ１１を介して各ＮＡＮＤゲートに均等に分配入力され、さらに他のリングオシレータ１０−２〜１０−ＭのＮＡＮＤゲートに入力され、それぞれリングオシレータのＯＮ（動作）、ＯＦＦ（非動作）を切り替える構成である。なお、リングオシレータ１０−１およびリングオシレータ１０−２〜１０−Ｍは、ＮＡＮＤゲートの代わりにＮＯＲゲートを用いた構成としてもよい。
【００２３】
図２は、実施例１における制御部１００の動作例を示す。
制御部１００は、動作ＯＮ／ＯＦＦ制御信号とシステムクロックを入力し、動作ＯＮ／ＯＦＦ制御信号がHighのときにシステムクロックを分周（ここでは４分周）してＤ−ＦＦ２２に与えるサンプリングクロックを生成し、必要に応じて乱数有効表示信号を生成する。
【００２４】
ここで、Ｎ個のＮＡＮＤゲートで構成されるリングオシレータ１０−１の回路動作について説明する。まず、回路動作OFF 状態ではＮＡＮＤゲート入力への共通の動作ＯＮ／ＯＦＦ制御信号はLow に設定される。この状態ではＮ個のＮＡＮＤゲート出力は全てHighに固定され、発振動作は停止状態となる。動作ＯＮ／ＯＦＦ制御信号がHighに切り替ると、ＮＡＮＤゲートはインバータとして機能し始めるが、動作ＯＮ／ＯＦＦ制御信号がHighに切り替わった時点ではＮ個のＮＡＮＤゲートの出力電圧は全てHighであるため、いずれかのＮＡＮＤゲートを起点として出力をLow 側に遷移する動作が発生する。ＮＡＮＤゲート出力にインバータを付加することによりノードの負荷容量の均等化が行われているため、Ｎ個のＮＡＮＤゲートの中のどのＮＡＮＤゲートが発振動作の起点となるかは熱的な揺らぎをもとにランダムに決まる。そのため、他のリングオシレータ１０−２〜１０−Ｍのように、常に特定のＮＡＮＤゲートを起点として発振動作が開始することを回避することができる。これにより、Ｍ入力ＸＯＲ２１を介してＤ−ＦＦ２２の出力には、ランダム性の高い乱数値を取り出すことができる。
【００２５】
なお、図１に示す実施例１の構成では、乱数生成回路を構成するＭ個のリングオシレータの中で、Ｎ個のＮＡＮＤゲートで構成されるリングオシレータが１個で、残りの（Ｍ−１）個は従来のリングオシレータである場合を示したが、図３に示すように、Ｎ個のＮＡＮＤゲートで構成されるリングオシレータの個数は１個以上Ｍ個以下の任意の個数であってもよい。図３の構成では、すべてのリングオシレータに本発明を適用しているため（Ｍ１＝Ｍ、Ｍ２＝０）、回路動作開始直後の初回サンプリングにおいて、図１の構成よりもさらに再現性が少なくランダム性の高い真性乱数の生成が可能となる。以下に示す実施例においても同様である。
【００２６】
次に、乱数有効表示信号について説明する。
一般に１つのＮＡＮＤゲートを用いるリングオシレータでは、自己発振動作の開始直後は、発振のジッタ成分が十分蓄積されておらずランダム性の効果が不十分と考えられる。そのため、制御部１００でサンプリングクロック数をカウントし、カウンタ値がある一定数に達した段階で乱数有効表示信号を有効にすることにより、Ｄ−ＦＦから十分なランダム性を備えた乱数値を取得する。この乱数有効表示信号を有効にするカウンタ値は、実評価結果から経験値として決める。例えば、最初の 100ビットを破棄して 101ビット目から有効とする。
【００２７】
一方、Ｎ個のＮＡＮＤゲートで構成されるリングオシレータを用いる本発明の乱数生成回路は、原理的に回路動作ＯＮ時点でＤ−ＦＦにセットされる最初の値だけを破棄すればよいため、乱数有効表示信号を省略することも可能である。しかし、実際の回路では、ＮＡＮＤゲートの駆動力や配線長のアンバランスが避けられないため、最初の生成ビットから完全にランダム化することは難しい。そこで、所定のタイミングで乱数有効表示信号を有効にする構成としてもよい。ただし、その場合でも乱数有効表示信号を有効にするタイミングは、上記の 101ビット目より早い例えば５ビット目からとするような設定が可能である。
【実施例２】
【００２８】
図４は、本発明の実施例２の乱数生成回路の構成例を示す。
図４において、実施例２は、図１または図３に示す実施例１の動作ＯＮ／ＯＦＦ制御信号をリングオシレータ１０−１の各ＮＡＮＤゲートに分配するバッファ１１に代えて、インバータ３１で反転したサンプリングクロックと動作ＯＮ／ＯＦＦ制御信号の論理積出力を各ＮＡＮＤゲートに分配するＡＮＤ回路１２を用いた構成である。
【００２９】
これにより、動作ＯＮ／ＯＦＦ制御信号がLow またはサンプリングクロックがHighのときに、リングオシレータ１０−１のＮＡＮＤゲート出力はHighに固定され、動作ＯＮ／ＯＦＦ制御信号がHighかつサンプリングクロックがLow で発振動作を開始する。このとき、特定のＮＡＮＤゲートではなく、ランダムに決まるいずれかのＮＡＮＤゲートを起点として発振動作が開始する。したがって、動作開始直後に再現性のないランダムな乱数を生成できるだけでなく、本実施例の構成では１クロック毎にリセット動作が入るため１クロック前後の生成乱数と相関を持たないランダム乱数を生成することができる。
【実施例３】
【００３０】
図５は、本発明の実施例３の乱数生成回路の構成例を示す。
図５において、Ｍ個のリングオシレータ１０−１〜１０−Ｍのうち、実施例１と同様に少なくとも１つのリングオシレータがＮ個のＮＡＮＤゲートで構成される場合に、各リングオシレータの中間ノード出力をサンプリングクロックに同期した前段Ｄ−ＦＦ２３−１〜２３−Ｍでそれぞれラッチする。さらに、前段Ｄ−ＦＦ２３−１〜２３−Ｍの各出力はＭ入力ＸＯＲ２１に入力され、その出力が後段Ｄ−ＦＦ２４に入力される。後段Ｄ−ＦＦ２４は、前段Ｄ−ＦＦ２３−１〜２３−Ｍと同期したサンプリングクロックにより、Ｍ入力ＸＯＲ２１の出力をラッチし、乱数値として出力する。基本的な動作は実施例１と同様である。
【実施例４】
【００３１】
図６は、本発明の実施例４の乱数生成回路の構成例を示す。
図６において、実施例４は、図５に示す実施例３の動作ＯＮ／ＯＦＦ制御信号をリングオシレータ１０−１の各ＮＡＮＤゲートに分配するバッファ１１に代えて、インバータ３１で反転したサンプリングクロックと動作ＯＮ／ＯＦＦ制御信号の論理積出力を各ＮＡＮＤゲートに分配するＡＮＤ回路１２を用いた構成である。
【００３２】
これにより、動作ＯＮ／ＯＦＦ制御信号がLow またはサンプリングクロックがHighのときに、リングオシレータ１０−１のＮＡＮＤゲート出力はHighに固定され、動作ＯＮ／ＯＦＦ制御信号がHighかつサンプリングクロックがLow で発振動作を開始する。このとき、特定のＮＡＮＤゲートではなく、ランダムに決まるいずれかのＮＡＮＤゲートを起点として発振動作が開始する。したがって、動作開始直後に再現性のないランダムな乱数を生成できるだけでなく、本実施例の構成では１クロック毎にリセット動作が入るため１クロック前後の生成乱数と相関を持たないランダム乱数を生成することができる。
【実施例５】
【００３３】
図７は、本発明の実施例５の乱数生成回路の構成例を示す。本実施例は、実施例３の回路をシリアル処理化した構成である。
【００３４】
図７において、実施例１，３と同様にＮ個のＮＡＮＤゲートで構成されるリングオシレータ１０の中間ノード出力を周波数Ｓのサンプリングクロックに同期した前段Ｄ−ＦＦ２３−１でラッチする。さらに、前段Ｄ−ＦＦ２３−１の出力と２入力ＸＯＲ２５の出力とをセレクタ２６で選択した出力を、周波数Ｓのサンプリングクロックに同期した前段Ｄ−ＦＦ２３−２でラッチする。２入力ＸＯＲ２５は、前段Ｄ−ＦＦ２３−１の出力と前段Ｄ−ＦＦ２３−２の出力とを入力し、ＸＯＲ出力をセレクタ２６に出力する。さらに、前段Ｄ−ＦＦ２３−２の出力は後段Ｄ−ＦＦ２４に入力される。後段Ｄ−ＦＦ２４は、周波数ＳのサンプリングクロックをＭ分周した周波数Ｓ／Ｍの出力用クロックで前段Ｄ−ＦＦ２３−２の出力をラッチし、乱数値として出力する。
【００３５】
制御部２００は、動作ＯＮ／ＯＦＦ制御信号とシステムクロックを入力し、システムクロックを分周して前段Ｄ−ＦＦ２３−１，２３−２に与えるサンプリングクロック、セレクタ２６に与えるセレクタ制御信号、後段Ｄ−ＦＦ２４に与える出力用クロック、および乱数有効表示信号を生成する。
【００３６】
図８は、実施例５における制御部２００の動作例を示す。
動作ＯＮ／ＯＦＦ制御信号がHighのときにシステムクロックを４分周して生成されるサンプリングクロックは、前段Ｄ−ＦＦ２３−１，２３−２に与えられる。さらに、動作ＯＮ／ＯＦＦ制御信号がHighのときに、サンプリングクロックからセレクタ制御信号および出力用クロックが生成される。セレクタ２６を制御するセレクタ制御信号は、サンプリングクロックのＭ回に１回の頻度で前段Ｄ−ＦＦ２３−１のラッチ出力を選択し、（Ｍ−１）回は前段Ｄ−ＦＦ２３−１のラッチ出力と前段Ｄ−ＦＦ２３−２のラッチ出力とのＸＯＲ出力を選択するように設定される。これは、実施例３のＭ個のリングオシレータ１０−１〜１０−Ｍの１サンプリング毎の出力を前段Ｄ−ＦＦ２３−１〜２３−Ｍでラッチし、Ｍ入力ＸＯＲ２１に入力することと等価である。出力用クロックは、周波数ＳのサンプリングクロックをＭ分周した周波数Ｓ／Ｍのクロックである。後段Ｄ−ＦＦ２２は、この出力用クロックで前段Ｄ−ＦＦ２３−２の出力をラッチし、乱数値として出力する。
【００３７】
このように、周波数ＳのサンプリングクロックがＭクロック経過すると、実施例３で示したＭ個のリングオシレータ１０−１〜１０−Ｍの中間ノードのＸＯＲ出力を得る構成と等価な回路がシリアル回路として実現される。乱数有効表示信号については、実施例１で説明したことと同様に、所定のタイミングで有効とする構成であればよい。
【実施例６】
【００３８】
図９は、本発明の実施例６の乱数生成回路の構成例を示す。
図９において、実施例６は、図７に示す実施例５の動作ＯＮ／ＯＦＦ制御信号をリングオシレータ１０の各ＮＡＮＤゲートに分配するバッファ１１に代えて、インバータ３１で反転したサンプリングクロックと動作ＯＮ／ＯＦＦ制御信号の論理積出力を各ＮＡＮＤゲートに分配するＡＮＤ回路１２を用いた構成である。
【００３９】
これにより、動作ＯＮ／ＯＦＦ制御信号がLow またはサンプリングクロックがHighのときに、リングオシレータ１０のＮＡＮＤゲート出力はHighに固定され、動作ＯＮ／ＯＦＦ制御信号がHighかつサンプリングクロックがLow で発振動作を開始する。このとき、特定のＮＡＮＤゲートではなく、ランダムに決まるいずれかのＮＡＮＤゲートを起点として発振動作が開始する。したがって、動作開始直後に再現性のないランダムな乱数を生成できるだけでなく、本実施例の構成では１クロック毎にリセット動作が入るため１クロック前後の生成乱数と相関を持たないランダム乱数を生成することができる。
【符号の説明】
【００４０】
１０  リングオシレータ
１１  バッファ
１２  ＡＮＤ回路
２１  Ｍ入力ＸＯＲ
２２  Ｄ−ＦＦ
２３  前段Ｄ−ＦＦ
２４  後段Ｄ−ＦＦ
２５  ２入力ＸＯＲ
２６  セレクタ
３１  インバータ
１００，２００  制御部
【図１】
0005356362.tif 000002
【図２】
0005356362.tif 000003
【図３】
0005356362.tif 000004
【図４】
0005356362.tif 000005
【図５】
0005356362.tif 000006
【図６】
0005356362.tif 000007
【図７】
0005356362.tif 000008
【図８】
0005356362.tif 000009
【図９】
0005356362.tif 000010
【図１０】
0005356362.tif 000011
【図１１】
0005356362.tif 000012