(57)【特許請求の範囲】
【請求項１】
二値論理の「０」と「１」とが交互に繰り返される出力値を出力する発振回路と、
前記発振回路の出力値に基づいて、各ビットにおいて二値論理の「０」と「１」とが交互に繰り返されるＮビット（Ｎは１以上）のバス幅を有する出力値を生成して出力する第１の設定部と、
前記第１の設定部の出力値を所定のサンプリングクロックに基づいてサンプリングすることにより、乱数を生成する乱数生成回路と、
を備え、
前記第１の設定部は、外部入力された選択信号に基づいて、前記第１の設定部の出力値の有効バス幅を可変に設定する、乱数生成装置。
【請求項２】
前記発振回路は、直列に接続された複数奇数個の論理ゲートを含み、
前記第１の設定部は、複数の入力端子を有するセレクタを含み、
前記セレクタの各々の前記入力端子には、全ての前記論理ゲートのうち異なる数の前記論理ゲートの出力値が入力される、請求項１に記載の乱数生成装置。
【請求項３】
二値論理の「０」と「１」とが交互に繰り返される出力値を出力する発振回路と、
前記発振回路の出力値に基づいて、各ビットにおいて二値論理の「０」と「１」とが交互に繰り返される複数Ｎビットのバス幅を有する出力値を生成して出力する第１の設定部と、
前記第１の設定部の出力値を所定のサンプリングクロックに基づいてサンプリングすることにより、乱数を生成する乱数生成回路と、
を備え、
前記第１の設定部は、外部入力された選択信号に基づいて、Ｎビットの出力値の各ビットにおいて前記発振回路からの出力ビット位置を可変に設定する、乱数生成装置。
【請求項４】
前記発振回路は、直列に接続された複数奇数個の論理ゲートを含み、
前記第１の設定部は、Ｎビットの出力値の各ビットに対応して、複数の入力端子を有するセレクタを含み、
前記セレクタの各々の前記入力端子には、全ての前記論理ゲートのうちＮ個の前記論理ゲートの出力値が入力される、請求項３に記載の乱数生成装置。
【請求項５】
前記発振回路の発振周波数を可変に設定する第２の設定部をさらに備える、請求項１〜４のいずれか一つに記載の乱数生成装置。
【請求項６】
（Ａ）二値論理の「０」と「１」とが交互に繰り返される出力値を生成するステップと、
（Ｂ）前記ステップ（Ａ）で生成された出力値に基づいて、各ビットにおいて二値論理の「０」と「１」とが交互に繰り返されるＮビット（Ｎは１以上）のバス幅を有する出力値を生成するステップと、
（Ｃ）前記ステップ（Ｂ）で生成された出力値を所定のサンプリングクロックに基づいてサンプリングすることにより、乱数を生成するステップと、
（Ｄ）外部入力された選択信号に基づいて、前記ステップ（Ｂ）で生成される出力値の有効バス幅を可変に設定するステップと、
を備える、乱数生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数生成装置及び乱数生成方法に関し、特に、真性乱数の生成装置及び生成方法に関する。
【背景技術】
【０００２】
近年における情報技術の発達に伴い、第三者による盗聴、改ざん、なりすまし等の犯罪が増加する傾向にある。そのため、暗号化による情報セキュリティが重要になってきており、暗号化において乱数の利用は不可欠である。
【０００３】
従来は、関数の組み合わせによる計算式を用いた演算によって生成される擬似乱数が多く使用されていたが、関数や初期設定が人為的に漏洩する危険性や、第三者によって乱数生成パターンが予測され得る可能性があった。そのため、擬似乱数に代えて、再現不可能性及び予測不可能性の高い真性乱数が求められるようになった。
【０００４】
一般的な真性乱数生成器では、二値論理の「０」と「１」とが交互に繰り返される出力値をリング発振器から出力し、その出力値をシフトレジスタで所定のサンプリングクロックを用いてサンプリングすることによって、真性乱数が生成される。
【０００５】
なお、下記特許文献１には、乱数出力レジスタから出力された乱数出力に基づいてシステムクロックの整数倍のサンプリングクロックを生成し、当該サンプリングクロックを用いて発振器の出力値をサンプリングすることにより、乱数出力レジスタで乱数を生成する真性乱数生成装置が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１７４２０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の通り一般的な真性乱数生成器では、リング発振器からの出力値をシフトレジスタでサンプリングすることによって、真性乱数が生成される。しかし、乱数を取得する外部装置が必要とする乱数のバス幅は装置によって異なるため、リング発振器の出力値のバス幅が固定されていると、外部装置の必要バス幅とリング発振器の出力バス幅とが一致しない状況が発生し得る。従って、外部装置の必要バス幅と、シフトレジスタが一回のサンプリングでリング発振器から取得するビット数との間に過不足が生じ、その結果、シフトレジスタにおけるサンプリング効率が低下する。
【０００８】
本発明はかかる事情に鑑みて成されたものであり、乱数生成回路におけるサンプリング効率を向上することが可能な、乱数生成装置及び乱数生成方法を得ることを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明の第１の態様に係る乱数生成装置は、二値論理の「０」と「１」とが交互に繰り返される出力値を出力する発振回路と、前記発振回路の出力値に基づいて、各ビットにおいて二値論理の「０」と「１」とが交互に繰り返されるＮビット（Ｎは１以上）のバス幅を有する出力値を生成して出力する第１の設定部と、前記第１の設定部の出力値を所定のサンプリングクロックに基づいてサンプリングすることにより、乱数を生成する乱数生成回路と、を備え、前記第１の設定部は、外部入力された選択信号に基づいて、前記第１の設定部の出力値の有効バス幅を可変に設定することを特徴とするものである。
【００１０】
第１の態様に係る乱数生成装置によれば、第１の設定部は、外部入力された選択信号に基づいて、第１の設定部の出力値の有効バス幅を可変に設定する。従って、乱数を取得する外部装置の必要バス幅に対して過不足のない有効バス幅の出力値を第１の設定部が出力し、乱数生成回路が当該出力値をサンプリングすることにより、乱数生成回路において必要バス幅の乱数を効率的に生成できる。その結果、乱数生成回路におけるサンプリング効率を向上することが可能となる。また、必要最小限の有効バス幅の出力値を第１の設定部が出力することにより、消費電力を低減できるとともに、クロックのスイッチングノイズ等に起因する誤動作の発生を抑制することが可能となる。
【００１１】
本発明の第２の態様に係る乱数生成装置は、第１の態様に係る乱数生成装置において特に、前記発振回路は、直列に接続された複数奇数個の論理ゲートを含み、前記第１の設定部は、複数の入力端子を有するセレクタを含み、前記セレクタの各々の前記入力端子には、全ての前記論理ゲートのうち異なる数の前記論理ゲートの出力値が入力されることを特徴とするものである。
【００１２】
第２の態様に係る乱数生成装置によれば、発振回路は、直列に接続された複数奇数個の論理ゲートを含み、第１の設定部は、複数の入力端子を有するセレクタを含み、セレクタの各々の入力端子には、全ての論理ゲートのうち異なる数の論理ゲートの出力値が入力される。これにより、出力値の有効バス幅を可変に設定可能な発振回路を、簡易な構成によって低コストで実現することが可能となる。
【００１３】
本発明の第３の態様に係る乱数生成装置は、二値論理の「０」と「１」とが交互に繰り返される出力値を出力する発振回路と、前記発振回路の出力値に基づいて、各ビットにおいて二値論理の「０」と「１」とが交互に繰り返される複数Ｎビットのバス幅を有する出力値を生成して出力する第１の設定部と、前記第１の設定部の出力値を所定のサンプリングクロックに基づいてサンプリングすることにより、乱数を生成する乱数生成回路と、を備え、前記第１の設定部は、外部入力された選択信号に基づいて、Ｎビットの出力値の各ビットにおいて前記発振回路からの出力ビット位置を可変に設定することを特徴とするものである。
【００１４】
第３の態様に係る乱数生成装置によれば、第１の設定部は、発振回路の出力値に基づいて複数ビットのバス幅を有する出力値を生成し、乱数生成回路は、第１の設定部の出力値をサンプリングすることにより乱数を生成する。従って、一つの発振回路を用いて複数ビットのバス幅を有する乱数を生成できるため、複数の発振回路を用いる場合と比較して回路規模を削減できる。また、第１の設定部は、外部入力された選択信号に基づいて、Ｎビットの出力値の各ビットにおいて前記発振回路からの出力ビット位置を可変に設定する。従って、Ｎビットの出力値の各ビット間で位相を異ならせることができるため、生成される乱数の真性度を高めることが可能となる。
【００１５】
本発明の第４の態様に係る乱数生成装置は、第３の態様に係る乱数生成装置において特に、前記発振回路は、直列に接続された複数奇数個の論理ゲートを含み、前記第１の設定部は、Ｎビットの出力値の各ビットに対応して、複数の入力端子を有するセレクタを含み、前記セレクタの各々の前記入力端子には、全ての前記論理ゲートのうちＮ個の前記論理ゲートの出力値が入力されることを特徴とするものである。
【００１６】
第４の態様に係る乱数生成装置によれば、発振回路は、直列に接続された複数奇数個の論理ゲートを含み、第１の設定部は、Ｎビットの出力値の各ビットに対応して、複数の入力端子を有するセレクタを含み、セレクタの各々の入力端子には、全ての論理ゲートのうちＮ個の論理ゲートの出力値が入力される。これにより、出力ビット位置を可変に設定可能な発振回路を、簡易な構成によって低コストで実現することが可能となる。
【００１７】
本発明の第５の態様に係る乱数生成装置は、第１〜第４のいずれか一つの態様に係る乱数生成装置において特に、前記発振回路の発振周波数を可変に設定する第２の設定部をさらに備えることを特徴とするものである。
【００１８】
第５の態様に係る乱数生成装置によれば、第２の設定部は、発振回路の発振周波数を可変に設定する。従って、発振回路の特性に起因して乱数の真性度が低い場合には、真性度の高い乱数が得られる他の周波数に設定し直すことにより、発振回路の特性に拘わらず真性度の高い乱数を生成することが可能となる。また、特定の論理ゲートの故障等に起因して出荷時に設定した発振周波数では乱数が生成されなくなった場合には、他の周波数に設定し直すことにより所望の乱数を生成でき、その結果、装置の信頼性を向上することが可能となる。
【００１９】
本発明の第６の態様に係る乱数生成方法は、（Ａ）二値論理の「０」と「１」とが交互に繰り返される出力値を生成するステップと、（Ｂ）前記ステップ（Ａ）で生成された出力値に基づいて、各ビットにおいて二値論理の「０」と「１」とが交互に繰り返されるＮビット（Ｎは１以上）のバス幅を有する出力値を生成するステップと、（Ｃ）前記ステップ（Ｂ）で生成された出力値を所定のサンプリングクロックに基づいてサンプリングすることにより、乱数を生成するステップと、（Ｄ）外部入力された選択信号に基づいて、前記ステップ（Ｂ）で生成される出力値の有効バス幅を可変に設定するステップと、を備えることを特徴とするものである。
【００２０】
第６の態様に係る乱数生成方法によれば、ステップ（Ｄ）では、外部入力された選択信号に基づいて、ステップ（Ｂ）で生成される出力値の有効バス幅が可変に設定される。従って、乱数を取得する外部装置の必要バス幅に対して過不足のない有効バス幅の出力値をステップ（Ｂ）で生成し、ステップ（Ｃ）で当該出力値をサンプリングすることにより、ステップ（Ｃ）において必要バス幅の乱数を効率的に生成できる。その結果、乱数生成回路におけるサンプリング効率を向上することが可能となる。また、ステップ（Ｂ）で必要最小限の有効バス幅の出力値を生成することにより、消費電力を低減できるとともに、クロックのスイッチングノイズ等に起因する誤動作の発生を抑制することが可能となる。
【発明の効果】
【００２１】
本発明によれば、乱数生成回路におけるサンプリング効率を向上することが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施の形態１に係る乱数生成装置の構成を示す図である。
【図２】サンプリング回路の構成を示す図である。
【図３】発振回路の構成を示す図である。
【図４】本発明の実施の形態２に係る乱数生成装置の構成を示す図である。
【図５】発振回路の構成を示す図である。
【図６】本発明の実施の形態３に係る乱数生成装置の構成を示す図である。
【図７】発振回路の構成を示す図である。
【図８】本発明の実施の形態４に係る乱数生成装置の構成を示す図である。
【図９】発振回路の構成を示す図である。
【図１０】第１の変形例に係る乱数生成装置の構成を示す図である。
【図１１】第２の変形例に係る乱数生成装置の構成を示す図である。
【図１２】第３の変形例に係る乱数生成装置の構成を示す図である。
【図１３】第４の変形例に係る乱数生成装置の構成を示す図である。
【発明を実施するための形態】
【００２３】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００２４】
＜実施の形態１＞
図１は、本発明の実施の形態１に係る乱数生成装置１の構成を示す図である。図１に示すように乱数生成装置１は、発振回路２と、発振回路２の後段に接続されたサンプリング回路３とを備えて構成されている。
【００２５】
発振回路２は、二値論理の「０」と「１」とが交互に繰り返される出力値Ｓ３を出力する。サンプリング回路３は、乱数生成回路として機能し、発振回路２の出力値Ｓ３をサンプリングクロックＳＣに基づいてサンプリングすることにより、真性乱数Ｓ４を生成する。
【００２６】
図２は、サンプリング回路３の構成を示す図である。サンプリング回路３は、複数Ｍ個のフリップフロップ５（１）〜５（Ｍ）が直列に接続された構成を有している。各フリップフロップ５には、サンプリングクロックＳＣが共通に入力される。
【００２７】
初段のフリップフロップ５（１）のＤ端子には、発振回路２から出力値Ｓ３が入力される。二段目以降のフリップフロップ５（２）〜５（Ｍ）のＤ端子には、前段のフリップフロップ５（１）〜５（Ｍ−１）のＱ端子からの出力が入力される。Ｍ個のフリップフロップ５（１）〜５（Ｍ）が直列に接続され、各フリップフロップ５からの出力が配列されることによって、合計Ｍビットの真性乱数Ｓ４がサンプリング回路３から出力される。
【００２８】
図３は、発振回路２の構成を示す図である。発振回路２は、複数の奇数個の論理ゲートが直列に接続された構成を有している。図３に示した例では、発振回路２は１７個の論理ゲートＧ１〜Ｇ１７によって構成されており、初段の論理ゲートＧ１にはＮＡＮＤ回路が用いられ、二段目以降の論理ゲートＧ２〜Ｇ１７にはインバータ回路が用いられる。
【００２９】
セレクタ６は、複数の入力端子を有している。図３に示した例では、セレクタ６は８個の入力端子Ｔ１〜Ｔ８を有している。入力端子Ｔ１には、３段目の論理ゲートＧ３の出力値Ｄ３が入力される。同様に、入力端子Ｔ２には５段目の論理ゲートＧ５の出力値Ｄ５が、入力端子Ｔ３には７段目の論理ゲートＧ７の出力値Ｄ７が、入力端子Ｔ４には９段目の論理ゲートＧ９の出力値Ｄ９が、入力端子Ｔ５には１１段目の論理ゲートＧ１１の出力値Ｄ１１が、入力端子Ｔ６には１３段目の論理ゲートＧ１３の出力値Ｄ１３が、入力端子Ｔ７には１５段目の論理ゲートＧ１５の出力値Ｄ１５が、入力端子Ｔ８には最終段の論理ゲートＧ１７の出力値Ｄ１７が、それぞれ入力される。
【００３０】
セレクタ６は、乱数生成装置１の外部装置から入力された選択信号Ｓ２に基づいて、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７の中から一の出力値を選択し、その選択した出力値を出力値Ｓ３として出力する。つまり、セレクタ６は、発振回路２の発振周波数を可変に設定する設定部として機能する。例えば、出力値Ｄ３が選択された場合には、発振回路２の発振周波数は３段構成のリングオシレータに相当する発振周波数に設定され、出力値Ｄ５が選択された場合には、発振回路２の発振周波数は５段構成のリングオシレータに相当する発振周波数に設定される。
【００３１】
初段の論理ゲートＧ１の一方入力端子には、発振回路２の動作開始を指示するためのイネーブル信号Ｓ１が入力される。論理ゲートＧ１の他方入力端子には、セレクタ６からの出力値Ｓ３が入力される。二段目以降の論理ゲートＧ２〜Ｇ１７には、前段の論理ゲートＧ１〜Ｇ１６の出力が入力される。
【００３２】
以下、本実施の形態１に係る乱数生成装置１の動作について、図１〜３を参照しつつ説明する。以下の動作は、例えば、製品出荷前のテスト時に実行される。
【００３３】
真性乱数Ｓ４の生成が要求されていない期間において、イネーブル信号Ｓ１はネゲートされており、それにより発振回路２の動作は停止されている。
【００３４】
真性乱数Ｓ４の生成が要求されると、イネーブル信号Ｓ１がアサートされる。イネーブル信号Ｓ１がアサートされることにより、発振回路２は発振動作を開始する。これにより、発振回路２から出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７が出力される。
【００３５】
セレクタ６は、選択信号Ｓ２に基づいて、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７の中から一の出力値を選択し、その選択した出力値を出力値Ｓ３として出力する。出力値Ｓ３は、サンプリング回路３に入力される。この例では、セレクタ６は入力端子Ｔ１（出力値Ｄ３）を選択しているものとする。この場合、発振回路２の発振周波数は３段構成のリングオシレータに相当する発振周波数に設定される。
【００３６】
サンプリング回路３は、サンプリングクロックＳＣに同期して出力値Ｓ３をサンプリングする。図２を参照して、サンプリングされた出力値Ｓ３は初段のフリップフロップ５（１）に入力され、保持される。サンプリング回路３は、次のサンプリングクロックＳＣが入力されることにより、その時点で発振回路２が出力している出力値Ｓ３をサンプリングする。サンプリングされた出力値Ｓ３は初段のフリップフロップ５（１）に入力され、保持される。また、初段のフリップフロップ５（１）がそれまで保持していた出力値Ｓ３（前回のサンプリングクロックＳＣに基づいてサンプリングした出力値Ｓ３）は、初段のフリップフロップ５（１）から二段目のフリップフロップ５（２）にシフトされる。上記と同様の動作をＭ回繰り返すことにより、Ｍ個のフリップフロップ５（１）〜５（Ｍ）の各々に出力値Ｓ３が保持される。そして、各フリップフロップ５（１）〜５（Ｍ）が保持している出力値Ｓ３を各々のＱ端子から出力し、これらＭ個の出力値Ｓ３を配列することによって、合計Ｍビットの乱数Ｓ４がサンプリング回路３から出力される。
【００３７】
次に、生成された乱数Ｓ４の真性度（再現不可能性及び予測不可能性）が評価される。乱数Ｓ４の真性度が規定値より低い場合には、外部装置からセレクタ６に選択信号Ｓ２を入力することにより、現在選択されている入力端子Ｔ１とは異なる入力端子（例えば入力端子Ｔ２）を選択する。つまり、発振回路２の発振周波数を変更する。そして、上記と同様に乱数Ｓ４を生成し、その生成した乱数Ｓ４の真性度を再び評価する。規定値より高い真性度の乱数Ｓ４が得られるまで、セレクタ６による発振周波数の変更と、生成された乱数Ｓ４の評価とを繰り返す。
【００３８】
このように本実施の形態１に係る乱数生成装置１によれば、セレクタ６（設定部）は、発振回路２の発振周波数を可変に設定する。従って、発振回路２の特性に起因して乱数Ｓ４の真性度が低い場合には、真性度の高い乱数Ｓ４が得られる他の周波数に設定し直すことにより、発振回路２の特性に拘わらず真性度の高い乱数Ｓ４を生成することが可能となる。また、特定の論理ゲートの故障等に起因して出荷時に設定した発振周波数では乱数Ｓ４が生成されなくなった場合には、他の周波数に設定し直すことにより所望の乱数Ｓ４を生成でき、その結果、装置の信頼性を向上することが可能となる。
【００３９】
また、本実施の形態１に係る乱数生成装置１によれば、セレクタ６は、外部入力された選択信号Ｓ２に基づいて、発振回路２の発振周波数を設定する。従って、製品出荷前のテストにおいて乱数Ｓ４の真性度が低い場合には、真性度の高い乱数Ｓ４を生成し得る周波数を探索して、選択信号Ｓ２によって当該周波数に設定することにより、真性度の高い乱数Ｓ４を生成し得る製品を出荷できる。その結果、製品の歩留まりを向上することが可能となる。
【００４０】
また、本実施の形態１に係る乱数生成装置１によれば、発振回路２は、直列に接続された複数奇数個の論理ゲートＧ１〜Ｇ１７を含み、セレクタ６は、複数の入力端子Ｔ１〜Ｔ８を有し、セレクタ６の入力端子Ｔ１〜Ｔ８には、全ての論理ゲートＧ１〜Ｇ１７のうち異なる論理ゲートの出力値が入力される。これにより、発振周波数を可変に設定可能な発振回路２を、簡易な構成によって低コストで実現することが可能となる。
【００４１】
＜実施の形態２＞
図４は、本発明の実施の形態２に係る乱数生成装置１の構成を示す図である。図４の接続関係で示すように、乱数生成装置１は、発振回路２、サンプリング回路３、及び設定回路７を備えて構成されている。設定回路７は、サンプリング回路３によって生成された真性乱数Ｓ４に基づいて選択信号Ｓ５を生成する。設定回路７は、サンプリング回路３から乱数Ｓ４が出力される毎に選択信号Ｓ５を出力する。
【００４２】
図５は、発振回路２の構成を示す図である。セレクタ６は、設定回路７から入力された選択信号Ｓ５に基づいて、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７の中から一の出力値を選択し、その選択した出力値を出力値Ｓ３として出力する。
【００４３】
以下、本実施の形態２に係る乱数生成装置１の動作について、図４，５を参照しつつ説明する。以下の動作は、例えば、製品出荷後の実運用時に実行される。
【００４４】
真性乱数Ｓ４の生成が要求されていない期間において、イネーブル信号Ｓ１はネゲートされており、それにより発振回路２の動作は停止されている。
【００４５】
真性乱数Ｓ４の生成が要求されると、イネーブル信号Ｓ１がアサートされる。イネーブル信号Ｓ１がアサートされることにより、発振回路２は発振動作を開始する。これにより、発振回路２から出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７が出力される。
【００４６】
セレクタ６は、選択信号Ｓ５に基づいて、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７の中から一の出力値を選択し、その選択した出力値を出力値Ｓ３として出力する。出力値Ｓ３は、サンプリング回路３に入力される。
【００４７】
サンプリング回路３は、サンプリングクロックＳＣに同期して出力値Ｓ３をサンプリングすることにより、乱数Ｓ４を生成して出力する。
【００４８】
設定回路７は、乱数Ｓ４に基づいて選択信号Ｓ５を生成する。本実施の形態の例ではセレクタ６は８個の入力端子Ｔ１〜Ｔ８を有しており、選択信号Ｓ５の必要ビット幅は３ビットであるため、設定回路７は、Ｍビットの乱数Ｓ４の中から特定の３ビット（例えば上位３ビット又は下位３ビット）を抽出することにより、３ビットの選択信号Ｓ５を生成する。あるいは、排他的論理和等の演算によって、乱数Ｓ４から３ビットの選択信号Ｓ５を生成しても良い。
【００４９】
セレクタ６は、設定回路７から入力された選択信号Ｓ５に基づいて、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７の中から一の出力値を選択し、その選択した出力値を出力値Ｓ３として出力する。以降は上記と同様の動作が繰り返され、サンプリング回路３によって乱数Ｓ４が生成される毎に、当該乱数Ｓ４に基づいてセレクタ６によって発振回路２の発振周波数が変更される。
【００５０】
このように本実施の形態２に係る乱数生成装置１によれば、セレクタ６（設定部）は、サンプリング回路３によって生成された乱数Ｓ４に基づいて、発振回路２の発振周波数を設定する。従って、発振回路２の発振周波数が、サンプリング回路３によって生成された乱数Ｓ４に応じて不規則に変動するため、生成される乱数Ｓ４の真性度を高めることが可能となる。
【００５１】
また、本実施の形態２に係る乱数生成装置１によれば、セレクタ６は、サンプリング回路３から乱数Ｓ４が出力される毎に、当該乱数Ｓ４に基づいて発振回路２の発振周波数を設定する。従って、サンプリング回路３から乱数Ｓ４が出力される毎に発振回路２の発振周波数が変動するため、生成される乱数Ｓ４の真性度をさらに高めることが可能となる。
【００５２】
＜実施の形態３＞
図６は、本発明の実施の形態３に係る乱数生成装置１の構成を示す図である。図６に示すように乱数生成装置１は、発振回路２と、発振回路２の後段に接続されたサンプリング回路３とを備えて構成されている。
【００５３】
図７は、発振回路２の構成を示す図である。発振回路２は、複数の奇数個の論理ゲートが直列に接続された構成を有している。図７に示した例では、発振回路２は１７個の論理ゲートＧ１〜Ｇ１７によって構成されており、初段の論理ゲートＧ１にはＮＡＮＤ回路が用いられ、二段目以降の論理ゲートＧ２〜Ｇ１７にはインバータ回路が用いられる。
【００５４】
セレクタ７は、複数の入力端子を有している。図７に示した例では、セレクタ７は８個の入力端子Ｔ１〜Ｔ８を有している。入力端子Ｔ１には、３段目の論理ゲートＧ３の出力値Ｄ３が入力される。入力端子Ｔ２には、出力値Ｄ３と５段目の論理ゲートＧ５の出力値Ｄ５とが入力される。入力端子Ｔ３には、出力値Ｄ３，Ｄ５と７段目の論理ゲートＧ７の出力値Ｄ７とが入力される。入力端子Ｔ４には、出力値Ｄ３，Ｄ５，Ｄ７と９段目の論理ゲートＧ９の出力値Ｄ９とが入力される。入力端子Ｔ５には、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９と１１段目の論理ゲートＧ１１の出力値Ｄ１１とが入力される。入力端子Ｔ６には、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１と１３段目の論理ゲートＧ１３の出力値Ｄ１３とが入力される。入力端子Ｔ７には、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３と１５段目の論理ゲートＧ１５の出力値Ｄ１５とが入力される。入力端子Ｔ８には、出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５と最終段の論理ゲートＧ１７の出力値Ｄ１７とが入力される。
【００５５】
セレクタ７は、乱数生成装置１の外部装置から入力された選択信号Ｓ６に基づいて、入力端子Ｔ１〜Ｔ８の中から一の入力端子を選択し、その選択した入力端子に入力されている出力値を出力値Ｓ３として出力する。つまり、セレクタ７は、出力値Ｓ３の有効バス幅を可変に設定する設定部として機能する。例えば、入力端子Ｔ１が選択された場合には、出力値Ｓ３の有効バス幅は１ビットに設定され、入力端子Ｔ２が選択された場合には、出力値Ｓ３の有効バス幅は２ビットに設定される。
【００５６】
初段の論理ゲートＧ１の一方入力端子には、発振回路２の動作開始を指示するためのイネーブル信号Ｓ１が入力される。論理ゲートＧ１の他方入力端子には、最終段の論理ゲートＧ１７からの出力値Ｄ１７が入力される。二段目以降の論理ゲートＧ２〜Ｇ１７には、前段の論理ゲートＧ１〜Ｇ１６の出力が入力される。
【００５７】
以下、本実施の形態３に係る乱数生成装置１の動作について、図６，７を参照しつつ説明する。以下の動作は、例えば、製品出荷前、又は製品出荷後の実運用時に実行される。
【００５８】
まず、選択信号Ｓ６によって、出力値Ｓ３の有効バス幅を設定する。例えば、乱数Ｓ４を取得する後段の外部装置の必要バス幅に対して過不足のないバス幅を、出力値Ｓ３の有効バス幅として設定する。
【００５９】
真性乱数Ｓ４の生成が要求されると、イネーブル信号Ｓ１がアサートされる。イネーブル信号Ｓ１がアサートされることにより、発振回路２は発振動作を開始する。これにより、発振回路２から出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７が出力される。
【００６０】
セレクタ７は、選択信号Ｓ６に基づいて入力端子Ｔ１〜Ｔ８の中から一の入力端子を選択し、その選択した入力端子に入力されている出力値を出力値Ｓ３として出力する。
【００６１】
サンプリング回路３は、サンプリングクロックＳＣに同期して出力値Ｓ３をサンプリングすることにより、乱数Ｓ４を生成して出力する。
【００６２】
このように本実施の形態３に係る乱数生成装置１によれば、セレクタ７（設定部）は、外部入力された選択信号Ｓ６に基づいて、セレクタ７の出力値Ｓ３の有効バス幅を可変に設定する。従って、乱数Ｓ４を取得する後段の外部装置の必要バス幅に対して過不足のない有効バス幅の出力値Ｓ３をセレクタ７が出力し、サンプリング回路３が当該出力値Ｓ３をサンプリングすることにより、サンプリング回路３において必要バス幅の乱数Ｓ４を効率的に生成できる。その結果、サンプリング回路３におけるサンプリング効率を向上することが可能となる。また、必要最小限の有効バス幅の出力値Ｓ３をセレクタ７が出力することにより、消費電力を低減できるとともに、クロックのスイッチングノイズ等に起因する誤動作の発生を抑制することが可能となる。
【００６３】
また、本実施の形態３に係る乱数生成装置１によれば、発振回路２は、直列に接続された複数奇数個の論理ゲートＧ１〜Ｇ１７を含み、セレクタ７は、複数の入力端子Ｔ１〜Ｔ８を有し、セレクタ７の各入力端子Ｔ１〜Ｔ８には、全ての論理ゲートＧ１〜Ｇ１７のうち異なる数の論理ゲートの出力値が入力される。これにより、出力値Ｓ３の有効バス幅を可変に設定可能な発振回路２を、簡易な構成によって低コストで実現することが可能となる。
【００６４】
＜実施の形態４＞
図８は、本発明の実施の形態４に係る乱数生成装置１の構成を示す図である。図８に示すように乱数生成装置１は、発振回路２と、発振回路２の後段に接続されたサンプリング回路３とを備えて構成されている。
【００６５】
図９は、発振回路２の構成を示す図である。発振回路２は、複数の奇数個の論理ゲートが直列に接続された構成を有している。図９に示した例では、発振回路２は１７個の論理ゲートＧ１〜Ｇ１７によって構成されており、初段の論理ゲートＧ１にはＮＡＮＤ回路が用いられ、二段目以降の論理ゲートＧ２〜Ｇ１７にはインバータ回路が用いられる。
【００６６】
また、出力値Ｓ３のバス幅Ｎの各ビットに対応して、セレクタ８が設けられている。本実施の形態の例では出力値Ｓ３のバス幅は８ビットであり、８個のセレクタ８１〜８８が実装される。
【００６７】
各セレクタ８は、複数の入力端子を有している。図９に示した例では、セレクタ８は８個の入力端子Ｔ１〜Ｔ８を有している。入力端子Ｔ１には、３段目の論理ゲートＧ３の出力値Ｄ３が入力される。同様に、入力端子Ｔ２には５段目の論理ゲートＧ５の出力値Ｄ５が、入力端子Ｔ３には７段目の論理ゲートＧ７の出力値Ｄ７が、入力端子Ｔ４には９段目の論理ゲートＧ９の出力値Ｄ９が、入力端子Ｔ５には１１段目の論理ゲートＧ１１の出力値Ｄ１１が、入力端子Ｔ６には１３段目の論理ゲートＧ１３の出力値Ｄ１３が、入力端子Ｔ７には１５段目の論理ゲートＧ１５の出力値Ｄ１５が、入力端子Ｔ８には最終段の論理ゲートＧ１７の出力値Ｄ１７が、それぞれ入力される。
【００６８】
セレクタ８は、乱数生成装置１の外部装置から入力された選択信号Ｓ７（Ｓ７１〜Ｓ７８）に基づいて、入力端子Ｔ１〜Ｔ８の中から一の入力端子を選択し、その選択した入力端子に入力されている出力値を出力値Ｓ３（Ｓ３１〜Ｓ３８）として出力する。つまり、セレクタ８は、Ｎビットの出力値Ｓ３の各ビットにおいて発振回路２からの出力ビット位置を可変に設定する設定部として機能する。例えば、セレクタ８１において入力端子Ｔ１が選択された場合には、出力ビット位置は論理ゲートＧ３に設定され、出力値Ｓ３１の位相は論理ゲート３段分の遅延量に対応する位相となる。また、セレクタ８１において入力端子Ｔ２が選択された場合には、出力ビット位置は論理ゲートＧ５に設定され、出力値Ｓ３１の位相は論理ゲート５段分の遅延量に対応する位相となる。
【００６９】
初段の論理ゲートＧ１の一方入力端子には、発振回路２の動作開始を指示するためのイネーブル信号Ｓ１が入力される。論理ゲートＧ１の他方入力端子には、最終段の論理ゲートＧ１７からの出力値Ｄ１７が入力される。二段目以降の論理ゲートＧ２〜Ｇ１７には、前段の論理ゲートＧ１〜Ｇ１６の出力が入力される。
【００７０】
以下、本実施の形態４に係る乱数生成装置１の動作について、図８，９を参照しつつ説明する。以下の動作は、例えば、製品出荷前、又は製品出荷後の実運用時に実行される。
【００７１】
まず、選択信号Ｓ７１〜Ｓ７８によって、Ｎビットの出力値Ｓ３の各ビットの周波数をそれぞれ設定する。例えば、出力値Ｓ３の全てのビット（Ｓ３１〜Ｓ３８）において周波数を異ならせたい場合には、セレクタ８１〜８８が互いに異なる入力端子Ｔ１〜Ｔ８を選択するように、選択信号Ｓ７１〜Ｓ７８を設定する。
【００７２】
真性乱数Ｓ４の生成が要求されると、イネーブル信号Ｓ１がアサートされる。イネーブル信号Ｓ１がアサートされることにより、発振回路２は発振動作を開始する。これにより、発振回路２から出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７が出力される。
【００７３】
セレクタ８１〜８８は、選択信号Ｓ７１〜Ｓ７８に基づいて入力端子Ｔ１〜Ｔ８の中から一の入力端子をそれぞれ選択し、その選択した入力端子に入力されている出力値を出力値Ｓ３１〜Ｓ３８としてそれぞれ出力する。
【００７４】
サンプリング回路３は、サンプリングクロックＳＣに同期して出力値Ｓ３１〜Ｓ３８をサンプリングすることにより、乱数Ｓ４を生成して出力する。
【００７５】
このように本実施の形態４に係る乱数生成装置１によれば、セレクタ８（設定部）は、発振回路２の出力値Ｄ３，Ｄ５，Ｄ７，Ｄ９，Ｄ１１，Ｄ１３，Ｄ１５，Ｄ１７に基づいて複数Ｎビットのバス幅を有する出力値Ｓ３を生成し、サンプリング回路３は、セレクタ８の出力値Ｓ３をサンプリングすることにより乱数Ｓ４を生成する。従って、一つの発振回路２を用いて複数ビットのバス幅を有する乱数Ｓ４を生成できるため、複数の発振回路を用いる場合と比較して回路規模を削減できる。また、セレクタ８は、外部入力された選択信号Ｓ７に基づいて、Ｎビットの出力値Ｓ３の各ビットにおいて発振回路２からの出力ビット位置を可変に設定する。従って、Ｎビットの出力値Ｓ３の各ビット間で位相を異ならせることができるため、生成される乱数Ｓ４の真性度を高めることが可能となる。
【００７６】
また、本実施の形態４に係る乱数生成装置１によれば、発振回路２は、直列に接続された複数奇数個の論理ゲートＧ１〜Ｇ１７を含み、Ｎビットの出力値Ｓ３の各ビットに対応する各セレクタ８１〜８８は、複数の入力端子Ｔ１〜Ｔ８を有し、セレクタ８の各々の入力端子Ｔ１〜Ｔ８には、全ての論理ゲートＧ１〜Ｇ１７のうち異なるＮ個の論理ゲートの出力値が入力される。これにより、出力ビット位置を可変に設定可能な発振回路２を、簡易な構成によって低コストで実現することが可能となる。
【００７７】
＜変形例＞
図１０は、第１の変形例に係る乱数生成装置１の構成を示す図である。本変形例に係る乱数生成装置１は、上記実施の形態１（図１）と上記実施の形態３（図６）とを組み合わせて適用したものである。選択信号Ｓ２によって発振回路２の発振周波数が可変に設定され、選択信号Ｓ６によって出力値Ｓ３の有効バス幅が可変に設定される。
【００７８】
図１１は、第２の変形例に係る乱数生成装置１の構成を示す図である。本変形例に係る乱数生成装置１は、上記実施の形態２（図４）と上記実施の形態３（図６）とを組み合わせて適用したものである。選択信号Ｓ５によって発振回路２の発振周波数が可変に設定され、選択信号Ｓ６によって出力値Ｓ３の有効バス幅が可変に設定される。
【００７９】
図１２は、第３の変形例に係る乱数生成装置１の構成を示す図である。本変形例に係る乱数生成装置１は、上記実施の形態１（図１）と上記実施の形態４（図８）とを組み合わせて適用したものである。選択信号Ｓ２によって発振回路２の発振周波数が可変に設定され、選択信号Ｓ７（Ｓ７１〜Ｓ７８）によって発振回路２からの出力ビット位置が可変に設定される。
【００８０】
図１３は、第４の変形例に係る乱数生成装置１の構成を示す図である。本変形例に係る乱数生成装置１は、上記実施の形態２（図４）と上記実施の形態４（図８）とを組み合わせて適用したものである。選択信号Ｓ５によって発振回路２の発振周波数が可変に設定され、選択信号Ｓ７（Ｓ７１〜Ｓ７８）によって発振回路２からの出力ビット位置が可変に設定される。
【符号の説明】
【００８１】
１  乱数生成装置
２  発振回路
３  サンプリング回路
６，７，８１〜８８  セレクタ
【図１】
0006379032.tif 000002
【図２】
0006379032.tif 000003
【図３】
0006379032.tif 000004
【図４】
0006379032.tif 000005
【図５】
0006379032.tif 000006
【図６】
0006379032.tif 000007
【図７】
0006379032.tif 000008
【図８】
0006379032.tif 000009
【図９】
0006379032.tif 000010
【図１０】
0006379032.tif 000011
【図１１】
0006379032.tif 000012
【図１２】
0006379032.tif 000013
【図１３】
0006379032.tif 000014