(57)【要約】【課題】入力にノイズ源を必要とせず乱数を生成可能な乱数発生器及び、乱数発生方法を提供することにある。【解決手段】デジタル値を変換して第１の電圧を出力するデジタルアナログ変換回路と、第１の電圧と、定電圧である第２の電圧とを比較し、第１の電圧が第２の電圧より小さい場合に第１の値を、第１の電圧が第２の電圧より大きい場合に第２の値を乱数値として出力する比較回路と、通常動作時に、比較回路が乱数値を複数回出力する度に、当該複数回分の乱数値の多数決が第１の値の場合は第１の電圧が大きくなるように、第２の値の場合は第１の電圧が小さくなるようにデジタル値を制御して、デジタルアナログ変換回路に出力する制御回路とを有する。【選択図】  図７
2012123474.tif 000002
【特許請求の範囲】
【請求項１】
デジタル値を変換して第１の電圧を出力するデジタルアナログ変換回路と、
前記第１の電圧と、定電圧である第２の電圧とを比較し、前記第１の電圧が前記第２の電圧より小さい場合に第１の値を、前記第１の電圧が前記第２の電圧より大きい場合に第２の値を乱数値として出力する比較回路と、
通常動作時に、前記比較回路が前記乱数値を複数回出力する度に、当該複数回分の乱数値の多数決が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力する制御回路とを有する乱数発生器。
【請求項２】
請求項１において、
前記比較回路は、前記第１の電圧と前記第２の電圧との電圧差がゼロの場合もしくは当該比較回路のオフセット電圧と等しい場合に、当該比較回路の熱ノイズに対応して前記第１、第２の値を等しい確率でランダムに出力する乱数発生器。
【請求項３】
請求項１または２において、
前記比較回路は、前記第１の電圧がゲートに供給される第１のトランジスタと、前記第２の電圧がゲートに供給される第２のトランジスタを有し、前記第１、２のトランジスタのソースに電流源が接続され、ドレインにそれぞれ負荷回路が接続され、前記第１、第２のトランジスタのいずれかのドレインが出力される乱数発生器。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記制御回路は、初期動作時に、前記比較回路が前記乱数値を１回出力する度に、前記乱数値が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力し、前記デジタル値の制御方向の変化後、前記通常動作時の処理を行う乱数発生器。
【請求項５】
デジタル値を変換して第１の電圧を出力するデジタルアナログ変換工程と、
前記第１の電圧と、定電圧である第２の電圧とを比較し、前記第１の電圧が前記第２の電圧より小さい場合に第１の値を、前記第１の電圧が前記第２の電圧より大きい場合に第２の値を乱数値として出力する比較工程と、
通常動作時に、前記比較工程が前記乱数値を複数回出力する度に、当該複数回分の乱数値の多数決が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力する制御工程とを有する乱数発生方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数発生器及び、乱数発生方法に関する。
【背景技術】
【０００２】
近年のＲＳＡ暗号等を使用したセキュリティシステムでは乱数の使用が不可欠である。ただし、ソフトウェアによりアルゴリズムに基づいて生成される乱数は、規則性や周期性等の再現性を有する擬似乱数であり、セキュリティシステム等への使用においては、再現性を有しない真の乱数が求められる。そのため、半導体の熱雑音等の物理的事象を利用することにより、再現性を有しない真の乱数生成への需要が高まっている。
【０００３】
そこで、熱ノイズを加えた信号を比較回路に入力して乱数を生成する乱数生成器や、ランダムな変動値であるトランジスタの導電性と基準値とを比較回路に入力して乱数を生成する乱数生成器が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特願２００８−２１７１４３号公報
【特許文献２】特開２００８−１６５５００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の乱数発生器は、比較回路の他に入力にノイズ源を用意することに伴う製造コスト増大や、増幅器を用いてノイズ源を増幅することによる部品点数増加に伴う消費電力の増大が問題となっていた。
【０００６】
そこで、本発明は、入力にノイズ源を必要とせず乱数を生成可能な乱数発生器及び、乱数発生方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の側面は、デジタル値を変換して第１の電圧を出力するデジタルアナログ変換回路と、
前記第１の電圧と、定電圧である第２の電圧とを比較し、前記第１の電圧が前記第２の電圧より小さい場合に第１の値を、前記第１の電圧が前記第２の電圧より大きい場合に第２の値を乱数値として出力する比較回路と、
通常動作時に、前記比較回路が前記乱数値を複数回出力する度に、当該複数回分の乱数値の多数決が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力する制御回路とを有する。
【発明の効果】
【０００８】
第１の側面によれば、入力にノイズ源を必要とせず乱数を生成可能にする。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態例における乱数発生器の構成の一例を表す図である。
【図２】図１の乱数発生器における比較回路の一例を表す図である。
【図３】比較回路のタイミングチャートの一例を表す図である。
【図４】比較回路の差動電圧値に対応したＨレベルの出力信号の発生確率を表す図である。
【図５】比較回路の１回分の出力信号、１００回分の出力信号の多数決結果におけるＬレベルの出力信号の発生確率を表す図である。
【図６】乱数発生器の論理回路の一例を表す図である。
【図７】制御回路のデジタル値の制御を表すフローチャート図である。
【図８】制御回路が１回分の乱数、または４０９６回分の乱数の多数決結果に基づいてデジタル値を制御した場合の差動電圧値の変移例を表す図である。
【図９】本実施の形態例における制御回路の論理回路の一例を表す図である。
【図１０】レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇの回路の一例を表す図である。
【図１１】レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇの回路の一例を表す図である。
【図１２】レジスタ回路Ｄ／Ａ＿Ｒｅｇの詳細な回路例を表す図である。
【図１３】図１０、図１１のタイミングチャートの一例を表す図である。
【図１４】Ａの値が可変の場合の制御回路の制御を表すフローチャート図である。
【図１５】図１４におけるルーチン１〜３を表すフローチャート図である。
【図１６】第２の実施の形態例における制御回路の論理回路の一例を表す図である。
【図１７】レジスタ回路Ａ＿ｃｏｎｌの回路の一例を表す図である。
【発明を実施するための形態】
【００１０】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１１】
本実施の形態例における乱数発生器は、デジタル値を変換して第１の電圧を出力するデジタルアナログ変換回路と、第１の電圧と定電圧である第２の電圧とを比較し、第１の電圧が第２の電圧より小さい場合に第１の値を、第１の電圧が第２の電圧より大きい場合に第２の値を乱数値として出力する比較回路と、デジタル値を制御する制御回路を有する。そして、制御回路は、乱数値を複数回出力する度に、その複数回分の乱数値の多数決が第１の値の場合は第１の電圧が大きくなるように、第２の値の場合は第１の電圧が小さくなるようにデジタル値を制御する。
【００１２】
図１は、本実施の形態例における乱数発生器１０の構成の一例を表す図である。本実施の形態例における乱数発生器１０は、例えば、定電圧生成回路１１、比較回路１２、デジタルアナログ変換回路１３、制御回路１４を有する。定電圧生成回路１１は一定の電圧ＶＩＰを、デジタルアナログ変換回路１３はデジタル値Ｄｇに対応するアナログ電圧ＶＩＭを、それぞれ比較回路１２に出力する。そして、比較回路１２は、入力された電圧ＶＩＰ、ＶＩＭの比較結果に基づいて乱数ＤＩＮ（本実施の形態例では、Ｈ／Ｌレベルのデジタル信号）を出力する。また、制御回路１４は、比較回路１２から各乱数ＤＩＮが等しい確率（本実施の形態例では５０％）で出力されるように、出力された乱数ＤＩＮに基づいて、デジタルアナログ変換回路１３に入力するデジタル値Ｄｇを制御する。
【００１３】
図２は、図１の乱数発生器１０における比較回路１２の一例を表す図である。同図の比較回路１２は、クロックＣＬＫがＬレベルでリセット状態になり、クロックＣＬＫのＨレベルに応答して、入力電圧ＶＩＭ、ＶＩＰの電圧差を増幅し、ＳＲラッチ回路Ｓ１でラッチしたＨまたはＬの出力信号ＯＵＴを乱数ＤＩＮとして出力する。同図の比較回路１２は、差動回路と、負論理のＳＲラッチ回路Ｓ１を有する。差動回路はｐＭＯＳトランジスタＰ１〜Ｐ６、及び、ｎＭＯＳトランジスタＮ１〜Ｎ５を有する。そして、ｐＭＯＳトランジスタＰ３とｎＭＯＳトランジスタＮ１からなるインバータと、ｐＭＯＳトランジスタＰ４とｎＭＯＳトランジスタＮ２からなるインバータの入出力がクロスカップルされている。
【００１４】
具体的に、差動回路のトランジスタＮ３のゲートには負極側の入力電圧ＶＩＭが、トランジスタＮ４のゲートには正極側の入力電圧ＶＩＰが供給され、各ｐＭＯＳトランジスタＰ１、Ｐ２、Ｐ５、Ｐ６、ｎＭＯＳトランジスタＮ５のゲートにクロックＣＬＫが供給される。図２の回路において、クロックＣＬＫがＬレベルの場合にｐＭＯＳトランジスタＰ１、Ｐ２、Ｐ５、Ｐ６がＯＮとなって各ノードｎ１〜ｎ４の電圧が電源電圧ＡＶＤに引き上げられ、ｎＭＯＳトランジスタＮ５がＯＦＦになりリセット状態となる。そして、クロックＣＬＫがＨレベルに遷移した時、ｎＭＯＳトランジスタＮ５はＯＮ、ｐＭＯＳトランジスタＰ１、Ｐ２、Ｐ５、Ｐ６はＯＦＦになり、ソースカップルされたｎＭＯＳトランジスタＮ３、Ｎ４が入力電圧ＶＩＭ、ＶＩＰに応じた導通状態になり、ノードｎ３、ｎ４に生じた微小電圧を２つのインバータＰ３、Ｎ１、Ｐ４、Ｎ２がＨ、Ｌレベルに増幅する。そして、増幅されたノードｎ３、ｎ４の各電圧がＳＲラッチ回路Ｓ１に入力され信号ＯＵＴが出力される。
【００１５】
例えば、「電圧ＶＩＭ＜電圧ＶＩＰ」の場合、ｎＭＯＳトランジスタＮ２、Ｎ４に流れる電流はｎＭＯＳトランジスタＮ１、Ｎ３に流れる電流よりも多くなる。これにより、「ノードｎ２、ｎ４の電圧＜ノードｎ１、ｎ３の電圧」となり、２つのインバータによって各ノードｎ３、ｎ４の電圧差が増幅される。これにより、ノードｎ３がＨレベル、ノードｎ４がＬレベルとなり、ＳＲラッチ回路Ｓ１からＨレベルの信号ＯＵＴが出力される。
【００１６】
一方、「電圧ＶＩＭ＞電圧ＶＩＰ」の場合、ｎＭＯＳトランジスタＮ２、Ｎ４に流れる電流はｎＭＯＳトランジスタＮ１、Ｎ３に流れる電流よりも少なくなる。これにより、「ノードｎ２、ｎ４の電圧＞ノードｎ１、ｎ３の電圧」となり、２つのインバータによって各ノードｎ３、ｎ４の電圧差が増幅される。これにより、ノードｎ３がＬレベル、ノードｎ４がＨレベルとなり、ＳＲラッチ回路Ｓ１からＬレベルの信号ＯＵＴが出力される。
【００１７】
なお、図２の比較回路１２は、差動回路に加え２つのインバータやＳＲラッチ回路Ｓ１を有するが、必ずしも２つのインバータやＳＲラッチ回路Ｓ１等を有する必要はない。比較回路１２は、図２の下部の比較回路１２ｘのように、差動回路のみを有し、外部にインバータやラッチ回路等を設けてもよい。同２の比較回路１２ｘは、例えば、ｎＭＯＳトランジスタＮ３〜Ｎ５、抵抗Ｒ１（Ｐ３）、Ｒ２（Ｐ４）を備えた差動回路を有する。電流源のｎＭＯＳトランジスタＮ５がＯＮになると、ｎＭＯＳトランジスタＮ３、Ｎ４が入力電圧ＶＩＭ、ＶＩＰに応じた導通状態になり、ノードｎ３の電圧が外部のラッチ回路等に出力される。
【００１８】
図３は、図２の比較回路１２のタイミングチャートの一例を表す図である。図３のグラフの横軸は時間を、縦軸は比較回路１２への入力電圧ＶＩＰ、ＶＩＭ、クロックＣＬＫ、及び、出力信号ＯＵＴを表す。同図の左端から右端にかけて、一定の電圧ＶＩＰに対して、電圧ＶＩＭが逓増している。図２において前述したとおり、「電圧ＶＩＭ＜電圧ＶＩＰ」の状態ではＨレベル、「電圧ＶＩＭ＞定電圧ＶＩＰ」の状態ではＬレベルの信号ＯＵＴが比較回路１２から出力される。従って、「電圧ＶＩＭ＞電圧ＶＩＰ」の状態となった（矢印ｔ０）直後のクロック立ち上がりタイミング時に（矢印ｔ１）、信号ＯＵＴがＨレベルからＬレベルに遷移する。
【００１９】
ところで、一般的に、比較器１２内部の各トランジスタは熱ノイズを有する。この熱ノイズによって、比較回路１２は、２つの入力電圧が等しい場合（電圧ＶＩＰ＝電圧ＶＩＭ）、等しい確率でＨレベルまたはＬレベルのいずれかの出力信号を乱数ＤＩＮとしてランダムに出力する。そこで、乱数発生器１０は、比較回路１２内のトランジスタの有する熱ノイズを利用し、比較回路１２への入力電圧ＶＩＰ、ＶＩＭを等しくすることにより、各乱数を等しい確率でランダムに出力する。
【００２０】
図４は、図２の比較回路１２の差動電圧値「電圧ＶＩＰ−電圧ＶＩＭ」に対応して、Ｌレベルの出力信号が出力される確率を表す図である。同図において、縦軸は比較回路１２がＬレベルの信号を出力する確率を、横軸は比較回路１２に入力された電圧ＶＩＰ、ＶＩＭの差動電圧値「電圧ＶＩＰ−電圧ＶＩＭ」を表す。また、同図において、差動電圧値（横軸）が０Ｖから左に離れる程、電圧ＶＩＰに対して電圧ＶＩＭがより大きく、右に離れる程、電圧ＶＩＰに対して電圧ＶＩＭがより小さいことを表す。
【００２１】
図４において、差動電圧値が０Ｖの場合のＬレベルの信号が出力される確率は５０％であり、前述したとおり、等しい確率でＬまたはＨレベルの出力信号（乱数）が出力される。そのため、制御回路１４は、一定の入力電圧ＶＩＰに対して、入力電圧ＶＩＭが等しくなるように、当該入力電圧ＶＩＭに対応するデジタル値Ｄｇを制御する。具体的に、制御回路１４は、図２の比較回路１２から出力された乱数ＤＩＮに基づいて、例えば、出力された乱数ＤＩＮがＨレベルの場合は「電圧ＶＩＭ＜電圧ＶＩＰ」の状態を示すことにより、電圧ＶＩＭを上げるようにデジタル値Ｄｇを制御し、反対にＬレベルの場合は「電圧ＶＩＭ＞電圧ＶＩＰ」の状態を示すことにより、電圧ＶＩＭを下げるようにデジタル値Ｄｇを制御する。
【００２２】
なお、この場合、比較回路１２のオフセット電圧は０Ｖであるものとする。オフセット電圧は、比較回路１２の入力電圧が共に０Ｖである場合の電圧差であり、比較回路１２の有する各トランジスタの個体差によって生じる。オフセット電圧が生じる場合については、制御回路１４は、「定電圧ＶＩＰ＋オフセット電圧＝電圧ＶＩＭ」となるように、電圧ＶＩＭに対応するデジタル値Ｄｇを制御する。
【００２３】
また、比較回路１２は、差動電圧値が０Ｖ以外の場合も同様に、熱ノイズの影響を受ける。具体的に、図４において、差動電圧値が矢印ｔ２の値を示す場合（電圧ＶＩＭ＞電圧ＶＩＰ）、比較回路１２は、熱ノイズの影響がない場合はＬレベルの信号を出力するが、熱ノイズの影響を受けることにより、約１０％の確率でＨレベルの信号を出力する。同様にして、例えば、差動電圧値が矢印ｔ３の値を示す場合（電圧ＶＩＭ＞電圧ＶＩＰ）、比較回路１２は、熱ノイズの影響を受けることにより約２０％の確率でＨレベルの信号を出力する。一方、例えば、差動電圧値が矢印ｔ４、ｔ５の値を示す場合（電圧ＶＩＭ＜電圧ＶＩＰ）、比較回路１２は、熱ノイズの影響がない場合はＨレベルの信号を出力するが、熱ノイズの影響を受けることによりそれぞれ約２０％、約１０％の確率でＬレベルの信号を出力する。
【００２４】
このように、比較回路１２は、トランジスタの有する熱ノイズによって、熱ノイズの影響がない場合の出力信号とは異なる信号（以下、ノイズ信号）を出力することがある。制御回路１４は、このようなノイズ信号に基づいて制御を行うと、差動電圧値を０Ｖからより解離させてしまうことになる。この結果、乱数発生器１０から出力される各乱数の発生確率が偏ってしまう。
【００２５】
そこで、本実施の形態例における制御回路１４は、比較回路１２からの１回分の乱数ＤＩＮではなく、複数回分の乱数ＤＩＮの多数決に基づいて電圧ＶＩＭに対応するデジタル値Ｄｇを制御することにより、ノイズ信号に基づいて制御を行う度合いを抑え、各乱数の発生確率を等しくする。
【００２６】
図５は、出力信号１回分のＬレベルの信号の発生確率（グラフｇ１）、出力信号１００回分の多数決におけるＬレベルの出力信号の発生確率（グラフｇ２）を表す図である。出力信号１００回分の多数決におけるＬレベルの出力信号の発生確率とは、１００回分の出力信号のうち５１回以上出力された信号がＬレベルである確率を表す。
【００２７】
図５において、例えば、差動電圧値が矢印ｔ３の値を示す場合、グラフｇ１ではＬレベルの出力信号の発生確率が約８０％、ノイズ信号であるＨレベルの信号の発生確率が約２０％である。これに対して、グラフｇ２では、Ｌレベルの出力信号の発生確率が１００％であり、ノイズ信号であるＨレベルの信号の発生確率は０％である。また、例えば、差動電圧値が矢印ｔ６の値を示す場合、ノイズ信号であるＨレベルの信号の発生確率は、グラフｇ１では約４０％であるのに対し、グラフｇ２では約１０％である。このように、複数回分の出力信号の多数決をとることにより、ノイズ信号の発生確率は、１回分の出力信号における発生確率よりも低く抑えられる。
【００２８】
図６は、本実施の形態例における乱数発生器１０の論理回路の一例を表す図である。同図の論理回路１０において、図１の定電圧生成回路１１は、抵抗Ｒ３、Ｒ４、アナログ電圧ＡＶＤ、アナロググランド電圧ＡＶＳを有する。定電圧生成回路１１は、例えば、電圧ＡＶＤと電圧ＡＶＳ間の抵抗Ｒ３、Ｒ４に基づく一定の電圧ＶＩＰを比較回路１２に入力する。この電圧ＶＩＰは、増幅回路等によって増幅されることなく、定電圧生成回路１１から比較回路１２に直接的に入力される。電圧ＶＩＰは、抵抗Ｒ３、Ｒ４の熱ノイズによって変動するものの、熱ノイズの範囲内で一定である。
【００２９】
また、図６の定電圧生成回路１１は、電圧ＡＶＤと電圧ＡＶＳ間の抵抗Ｒ３、Ｒ４に基づいて、電圧ＶＩＰを出力しているが、この例に限定されるものではない。例えば、定電圧生成回路１１は、同図の右下に示すように、ダイオードＤ１、Ｄ２を直列に接続した回路１１ａ、ダイオードＤ３と抵抗Ｒ４を直列に接続した回路１１ｂ、コンデンサＣ１、Ｃ２を直列に接続した回路１１ｃ等であってもよい。
【００３０】
制御回路１４は、比較回路１２から出力された乱数ＤＩＮに基づいて、デジタル値Ｄｇを制御する。以下、制御回路１４の具体的な処理について、フローチャート図に基づいて説明する。
【００３１】
図７は、本実施の形態例における制御回路１４のデジタル値Ｄｇの制御処理を表すフローチャート図である。同図のフローチャートにおいて、Ａは多数決の母数を、カウンタＣｏｕｎｔは比較回路１２が出力した乱数の数を、カウンタＨｃｏｕｎｔは比較回路１２が出力した乱数のうちＨレベルの乱数の数を示す。また、同図において、Ｄ／Ａコードはデジタル値Ｄｇを表し、電圧ＶＩＭはＤ／Ａコードの値に比例するものとする。
【００３２】
まず、制御回路１４は、Ｄ／Ａコード（デジタル値Ｄｇ）をデフォルト値defaultにセットする（Ｓ１０）。続いて、制御回路１４は、カウンタＨｃｏｕｎｔ及びカウンタＣｏｕｎｔに０をセットして初期化する（Ｓ１１）。そして、制御回路１４は、比較回路１２から出力された乱数がＨレベルの信号か否かを判定し（Ｓ１２）、Ｈレベルの信号である場合（Ｓ１２のＹｅｓ）、カウンタＣｏｕｎｔ、Ｈｃｏｕｎｔをインクリメントする（Ｓ１３）。一方、乱数がＬレベルの信号である場合（Ｓ１２のＮｏ）、制御回路１４はカウンタＣｏｕｎｔのみをインクリメントする（Ｓ１４）。
【００３３】
続いて、制御回路１４は、カウンタＣｏｕｎｔの値が多数決の母数Ａに達したか否かを判定する（Ｓ１５）。カウンタＣｏｕｎｔの値がＡに達していない場合（Ｓ１５のＮｏ）、制御回路１４は、引き続き、比較回路１２から乱数が出力される度に、カウンタＣｏｕｎｔをインクリメントすると共に、その乱数の値に応じてカウンタＨｃｏｕｎｔをインクリメントする（Ｓ１３、Ｓ１４）。一方、カウンタＣｏｕｎｔの値がＡに達した場合（Ｓ１５のＹｅｓ）、制御回路１４は、カウンタＨｃｏｕｎｔの値がＡの半数値と等しいか否かを判定して（Ｓ１６）、乱数が等しい確率（本実施の形態例では５０％）で出力されているか否かを判定する。カウンタＨｃｏｕｎｔの値がＡの半数と等しい場合（Ｓ１６のＹｅｓ）、等しい確率で各乱数が出力されていることを表すため、制御回路１４はＤ／Ａコードを制御する必要がない。そのため、制御回路１４は、Ｄ／Ａコードを制御することなく、各カウンタＣｏｕｎｔ、Ｈｃｏｕｎｔを再び初期化し（Ｓ１１）、処理（Ｓ１２〜Ｓ１６）を行う。
【００３４】
一方、カウンタＨｃｏｕｎｔの値がＡの半数値と等しくない場合（Ｓ１６のＮｏ）、各乱数が等しい確率で出力されていないことを表す。このため、制御回路１４は、Ｄ／Ａコードの制御を行う。具体的に、まず、制御回路１４は、カウンタＨｃｏｕｎｔの値がＡの半数値を超えているか否かを判定する（Ｓ１７）。カウンタＨｃｏｕｎｔの値がＡの半数値を超える場合（Ｓ１７のＹｅｓ）、Ａ回分の乱数の多数決がＨレベルの信号である場合を表す。Ｈレベルの信号は「電圧ＶＩＭ＜電圧ＶＩＰ」の状態で出力されることから、制御回路１４は、電圧ＶＩＭを上げるためにＤ／Ａコードをインクリメントする（Ｓ１８）。
【００３５】
一方、カウンタＨｃｏｕｎｔの値がＡの半数値を超えない場合（Ｓ１７のＮｏ）、Ａ回分の乱数の多数決がＬレベルの信号である場合を表す。Ｌレベルの信号は「電圧ＶＩＭ＞電圧ＶＩＰ」の状態で出力されることから、制御回路１４は、電圧ＶＩＭを下げるためにＤ／Ａコードをデクリメントする（Ｓ１９）。そして、制御回路１４は、Ｄ／Ａコードをインクリメントまたはデクリメントした後、各カウンタＣｏｕｎｔ、Ｈｃｏｕｎｔの値を再び初期化し（Ｓ１１）、処理（Ｓ１２〜Ｓ１９）を行う。
【００３６】
図８は、制御回路１４が１回分の乱数、または４０９６回分の乱数の多数決に基づいてデジタル値Ｄｇ（図７におけるＤ／Ａコード）を制御した場合の差動電圧値（電圧ＶＩＰ−電圧ＶＩＭ）の変移例を表す図である。同図の横軸は制御回路１４による制御の回数を、縦軸は差動電圧値を表す。また、同図は、制御回路１４の制御によって、差動電圧値が−３Ｖから０Ｖの状態に収束していく様を表す。細線の変移線ｆ１は１回の乱数、太線の変移線ｆ２は４０９６回分の乱数の多数決（Ａ＝４０９６）に基づいてデジタル値を制御した場合の差動電圧値の変移である。なお、この例において、比較回路１２のオフセット電圧値は０Ｖであり、比較回路１２は、差動電圧値が０Ｖの場合に熱ノイズによって等しい確率でＨ／Ｌレベルの乱数をランダムに出力するものとする。
【００３７】
図８の例によると、１回分の乱数に基づく制御ｆ１に対して、４０９６回分の乱数の多数決結果に基づく制御ｆ２の方が、少ない制御回数（横軸）で差動電圧値を０Ｖに収束している。具体的に、１回分の乱数に基づく制御ｆ１については御回数約６００〜７００回付近（矢印ｔ８）で差動電圧値が０Ｖに収束しているのに対し、多数決結果に基づく制御ｆ２では制御回数約３００回付近（矢印ｐ７）で差動電圧値が０Ｖに収束している。
【００３８】
このように、本実施の形態例における乱数発生器１０は、複数回分の出力信号の多数決（ｆ２）に基づいて入力電圧ＶＩＭに対応するデジタル値Ｄｇを制御することにより、ノイズ値に基づいて制御を行う度合いを抑えることができ、より少ない制御回数で差動電圧値を０Ｖに収束させることができる。これにより、本実施の形態例における乱数発生器１０は、より少ない制御回数で各乱数を等しい確率で出力することができる。
【００３９】
ただし、図８の例において、１回分の乱数に基づく各制御ｆ１が１クロックに対応するのに対し、４０９６回分の乱数の多数決に基づく各制御ｆ２は４０９６クロックに対応する。従って、クロック数の観点では、１回分の乱数に基づく制御ｆ１は、４０９６回分の乱数の多数決に基づく制御ｆ２に対して、少ないクロック数で差動電圧値を０Ｖに収束する。
【００４０】
しかしながら、図８の例において、１回分の乱数に基づく制御ｆ１では、差動電圧値が０Ｖに収束（矢印ｔ８）した後も差動電圧値の振れ幅が大きいのに対し、４０９６回の乱数の多数決に基づく制御ｆ２では、差動電圧値が０Ｖに収束（矢印ｔ７）した後の差動電圧値の振れ幅は小さい。というのも、１回分の乱数に基づく制御ｆ１では、制御回路１４はノイズ値に基づいてデジタル値Ｄｇを制御する確率が高く制御の精度が低いことにより、差動電圧値が０Ｖから解離するような制御を行うことがあるためである。これに対し、多数決に基づく制御ｆ２の場合、制御回路１４はノイズ値に基づいてデジタル値Ｄｇを制御する確率が低く、制御の制度が高いため、差動電圧値の振れ幅が小さい。
【００４１】
なお、多数決に基づく制御ｆ２における制御の精度は、多数決の母数が大きければ大きい程、高くなる。ただし、前述したとおり、多数決の母数が大きい程、制御回路１４の１回の制御に係るクロック数が多くなり、制御の頻度が低くなる。このため、乱数発生器１０は、例えば、差動電圧値が０Ｖに収束するまでは１回分の乱数に基づいて１クロック毎にデジタル値Ｄｇを制御し、収束後は、複数回の乱数が出力される毎に、複数回分の乱数の多数決に基づいてデジタル値Ｄｇを制御してもよい。この例については、第２の実施の形態例において、後述する。
【００４２】
図９は、本実施の形態例における制御回路１４の論理回路の一例を表す図である。同図の論理回路はレジスタ回路Ｃｏｕｎｔ＿Ｒｅｇ、レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇ、レジスタ回路Ｄ／Ａ＿Ｒｅｇを有する。まず、レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇは、Ａの値、クロックＣＬＫ、リセット信号ＸＲＳＴを入力とし、乱数ＤＩＮの数が多数決の母数Ａ（同図では８桁の２進数）に達した場合にＨレベル、達しない間はＬレベルのＦＬＡＧ信号を出力する回路である。
【００４３】
レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇは、レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇと同様の入力に加え、レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇから出力されたＦＬＡＧ信号を入力とする。レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇは、比較回路１２から出力された乱数ＤＩＮのうちＨレベル出力信号の数をカウンタＨｃｏｕｎｔとして保持する。そして、レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇは、入力されたＦＬＡＧ信号がＨレベルであって、「カウンタＨｃｏｕｎｔの値＝Ａ／２」の時にＨレベルのＥＱＵＡＬ信号を、「カウンタＨｃｏｕｎｔの値＞Ａ／２」の時にＨレベルのＯＶＥＲ信号を出力する。
【００４４】
レジスタ回路Ｄ／Ａ＿Ｒｅｇは、さらに、レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇから出力されたＥＱＵＡＬ信号、ＯＶＥＲ信号を入力とする。レジスタ回路Ｄ／Ａ＿Ｒｅｇは、デジタル値ＤｇであるＤ／Ａコードを保持する。そして、レジスタ回路Ｄ／Ａ＿Ｒｅｇは、ＦＬＡＧ信号がＨレベルであってＥＱＵＡＬ信号がＬレベルの場合に、ＯＶＥＲ信号の値に対応してインクリメントまたはデクリメントしたＤＯＵＴ（同図では８桁の２進数）を、Ｄ／Ａコード（デジタル値Ｄｇ）として出力する。
【００４５】
続いて、各レジスタ回路の具体例について説明する。
【００４６】
図１０は、図９のレジスタ回路Ｃｏｕｎｔ＿Ｒｅｇの回路の一例を表す図である。同図の回路は、８桁の２進数のカウンタＣｏｕｎｔの値を保持するレジスタＱ１［７：０］と、演算器ＣＡ１、クリップ回路ＣＬ１、ＸＮＯＲ回路Ｘ１、ＡＮＤ回路Ａ１を有する。レジスタＱ１［０］はカウンタＣｏｕｎｔの最下位桁、レジスタＱ１［７］はカウンタＣｏｕｎｔの最上位桁を示す。
【００４７】
レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇにリセット信号ＸＲＳＴが入力されると、レジスタＱ１［７：０］の全桁が０にクリアされる。そして、レジスタ回路Ｃｏｕｎｔ＿ＲｅｇにクロックＣＬＫが入力されると、レジスタＱ１［７：０］に保持されたカウンタＣｏｕｎｔの値がＸＮＯＲ回路Ｘ１及び演算器ＣＡ１に出力される。各ＸＮＯＲ回路Ｘ１は、桁毎に、レジスタＱ１［７：０］の値とＡ［７：０］の値を比較し、同値の場合はＨレベル、異なる場合はＬレベルの信号をＡＮＤ回路Ａ１に出力する。そして、ＡＮＤ回路Ａ１は、各桁に対応するＸＮＯＲ回路Ｘ１からの出力が全てＨレベルの信号である場合、即ち、レジスタＱ１［７：０］とＡ［７：０］の値が等しい場合はＨレベル、それ以外の場合はＬレベルの信号をセレクト信号としてセレクタＳＬ１に出力する。また、ＡＮＤ回路Ａ１は、出力信号をＦＬＡＧ信号として出力する。
【００４８】
また、演算器ＣＡ１は、入力されたレジスタＱ１［７：０］の値をインクリメントし、クリップ回路ＣＬ１は全桁０の値を出力する。ＡＮＤ回路Ａ１からのセレクト信号がＨレベル、即ち、レジスタＱ１［７：０］の値がＡ［７：０］の値と等しい場合、セレクタＳＬ１は、クリップ回路ＣＬ１からの出力である全桁０の値を選択してレジスタＱ１［７：０］にセットし初期化する。一方、セレクト信号がＬレベル、即ち、レジスタＱ１［７：０］の値がＡ［７：０］の値に達していない場合、セレクタＳＬ１は、演算器ＣＡ１によってインクリメントされた値を選択してレジスタＱ１［７：０］にセットする。
【００４９】
このように、レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇは、レジスタＱ１［７：０］に保持したカウンタＣｏｕｎｔの値を、Ａに達するまでインクリメントする。そして、レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇは、カウンタＣｏｕｎｔの値がＡに達した時に、ＨレベルのＦＬＡＧ信号を出力すると共に、レジスタＱ１［７：０］の値を０に初期化する。
【００５０】
図１１は、図９のレジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇの回路の一例を表す図である。同図の回路は、８桁の２進数のカウンタＨｃｏｕｎｔの値を保持するレジスタＱ２［７：０］と、演算器ＣＡ２、ＣＡ３、クリップ回路ＣＬ２、セレクタＳＬ２、ＳＬ３、ＸＮＯＲ回路Ｘ２、Ｘ３、ＡＮＤ回路Ａ２、Ａ３、ＮＡＮＤ回路Ｎ２、インバータＩ１、回路ＣＥ１を有する。同様にして、レジスタＱ２［０］はカウンタＨｃｏｕｎｔの最下位桁、レジスタＱ２［７］はカウンタＨｃｏｕｎｔの最上位桁を示す。なお、同図は、Ａが偶数である場合の回路例である。
【００５１】
図１１のレジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇにリセット信号ＸＲＳＴが入力されると、レジスタＱ２［７：０］の全桁が０にクリアされる。そして、レジスタ回路Ｈｃｏｕｎｔ＿ＲｅｇにクロックＣＬＫが入力されると、レジスタＱ２［７：０］に保持されたカウンタＨｃｏｕｔの値が演算器ＣＡ２及びセレクタＳＬ２に出力される。そして、セレクタＳＬ２は、比較回路１２から出力された乱数ＤＩＮをセレクト信号として、乱数ＤＩＮがＬレベルの信号である場合はレジスタＱ２［７：０］に保持された値を、Ｈレベルの信号である場合はインクリメント後のレジスタＱ２［７：０］の値を選択する。
【００５２】
続いて、セレクタＳＬ３は、図１０のレジスタ回路Ｃｏｕｎｔ＿Ｒｅｇから出力されたＦＬＡＧ信号をセレクト信号として、ＦＬＡＧ信号がＬレベルの場合（カウンタＣｏｕｎｔの値がＡに達していない場合）はセレクタＳＬ２からの出力を、Ｈレベルの場合（カウンタＣｏｕｎｔの値がＡに達した場合）はクリップ回路ＣＬ２からの出力である全桁０の値を選択してレジスタＱ２［７：０］にセットし初期化する。
【００５３】
続いて、ＥＱＵＡＬ信号の出力について説明する。まず、レジスタＱ２の下位７桁［６：０］に保持されたカウンタＨｃｏｕｎｔの下位７桁の値が、ＸＮＯＲ器Ｘ２に出力される。そして、各ＸＮＯＲ回路Ｘ２は、桁毎に、カウンタＨｃｏｕｎｔの下位７桁の値と、Ａの上位７桁（Ａ［７：１］）の値とを比較し、同値の場合はＨレベル、異なる場合はＬレベルの信号をＡＮＤ回路Ａ２に出力する。そして、ＡＮＤ回路Ａ２は、各桁に対応するＸＮＯＲ回路Ｘ２からの出力が全てＨレベルであり、インバータＩ１によるＡの最下位桁の反転値がＨレベルの場合、即ち、Ａの最下位桁の値が０である場合に、カウンタＨｃｏｕｎｔの値がＡの半数値（Ａ／２）と等しいと判定しＨレベルのＥＱＵＡＬ信号を出力する。
【００５４】
例えば、Ａの値が２進数１０００００００（１０進数：２５６）の場合、その半数値は２進数１００００００（１０進数：１２８）であり、Ａの上位７桁と等しい。このため、レジスタＱ２の下位７桁［６：０］がＡの上位７桁とが一致し、Ａの最下位桁の値が０である場合、レジスタＱ２に保持されたカウンタＨｃｏｕｎｔの下位７桁［６：０］の値はＡの半数値と等しいといえる。
【００５５】
続いて、ＯＶＥＲ信号の出力について説明する。演算器ＣＡ３は、Ａの半数値を示すＡの上位７桁（Ａ［７：１］）をインクリメントした値（Ａ／２＋１）をＸＮＯＲ回路Ｘ３に出力する。各ＸＮＯＲ回路Ｘ３は、桁毎の比較の結果、同値の場合はＨレベル、異なる場合はＬレベルの信号をＮＡＮＤ回路Ｎ２に出力する。ＮＡＮＤ回路Ｎ２は、各桁に対応するＸＮＯＲ回路Ｘ３からの出力が全てＨレベルの場合はＬレベルの信号を、それ以外はＨレベルの信号を回路ＣＥ１に出力する。つまり、ＮＡＮＤ回路Ｎ２は、「カウンタＨｃｏｕｎｔの値＝Ａ／２＋１」の場合はＬレベルの信号を、それ以外の場合はＨレベルの信号を回路ＣＥ１に出力する。
【００５６】
回路ＣＥ１は、「カウンタＨｃｏｕｎｔの値＜Ａ／２＋１」の間はＬレベル、「カウンタＨｃｏｕｎｔの値≧Ａ／２＋１」になるとＨレベルのＯＶＥＲ信号を出力する回路である。回路ＣＥ１は、ＮＡＮＤ回路Ｎ３、Ｎ４を有する負論理入力のＳＲラッチ回路、ＯＲ回路Ｒ１、インバータＩ２を有する。回路ＣＥ１には、ＮＡＮＤ回路Ｎ２からの出力に加えて、レジスタＦＦ［０］に保持された前回のＦＬＡＧ信号が入力される。レジスタＦＦ［０］からは、ＦＬＡＧ信号がＨレベルになった次のクロックまでは、Ｌレベルの信号が出力される。
【００５７】
具体的に、カウンタＨｃｏｕｎｔの値は、「カウンタＨｃｏｕｎｔの値＜Ａ／２＋１」の状態から「カウンタＨｃｏｕｎｔの値＝Ａ／２＋１」、そして「カウンタＨｃｏｕｎｔの値＞Ａ／２＋１」の状態に遷移する。ＸＮＯＲ回路Ｎ２からは、「カウンタＨｃｏｕｎｔの値＜Ａ／２＋１」の状態ではＨレベル、「カウンタＨｃｏｕｎｔの値＝Ａ／２＋１」の場合はＬレベル、そして「カウンタＨｃｏｕｎｔの値＞Ａ／２＋１」の状態では再び、Ｈレベルの信号が出力される。このため、回路ＣＥ１は、「カウンタＨｃｏｕｎｔの値＜Ａ／２＋１」の間はＬレベル、「カウンタＨｃｏｕｎｔの値＝Ａ／２＋１」になった時にＨレベルのＯＶＥＲ信号を出力し、「カウンタＨｃｏｕｎｔの値＞Ａ／２＋１」の状態に遷移後も、継続してＨレベルのＯＶＥＲ信号を出力する。
【００５８】
このように、レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇは、カウンタＨｃｏｕｎｔの値がＡの半数値と等しい場合にＨレベル、それ以外の場合はＬレベルのＥＱＵＡＬ出力信号を出力する。また、レジスタ回路Ｈｃｏｕｎｔ＿Ｒｅｇは、カウンタＨｃｏｕｎｔの値がＡの半数値を超えた場合にＨレベル、それ以外の場合はＬレベルのＯＶＥＲ信号を出力する。そして、ＨレベルのＦＬＡＧ信号が入力されると、レジスタＱ２［７：０］がリセットされる。
【００５９】
図１２は、図９のレジスタ回路Ｄ／Ａ＿Ｒｅｇの詳細な回路例を表す図である。同図の回路は、８桁の２進数のＤ／Ａコード（デジタル値Ｄｇ）を保持するレジスタＱ３［７：０］と、演算器ＣＡ４、ＣＡ５、セレクタＳＬ４〜ＳＬ６を有する。
【００６０】
レジスタ回路Ｄ／Ａ＿Ｒｅｇにリセット信号ＸＲＳＴが入力されると、レジスタＱ３［７：０］の全桁が０にクリアされる。そして、レジスタ回路Ｄ／Ａ＿ＲｅｇにクロックＣＬＫが入力されると、レジスタＱ３［７：０］に保持された値が演算器ＣＡ４、ＣＡ５に出力され、それぞれデクリメント及びインクリメントされる。そして、セレクタＳＬ４は、入力されたＯＶＥＲ信号がＨレベルの場合は（カウンタＨｃｏｕｎｔの値＞Ａ／２）、演算器ＣＡ４によってインクリメントされたＤ／Ａコードを、Ｌレベルの場合は（カウンタＨｃｏｕｎｔの値≦Ａ／２）、演算器ＣＡ３によってデクリメントされたＤ／Ａコードを選択し、セレクタＳＬ５に出力する。
【００６１】
続いて、セレクタＳＬ５は、ＥＱＵＡＬ信号がＨレベルの場合は（カウンタＨｃｏｕｎｔの値＝Ａ／２）、レジスタＱ３［７：０］に保持されたＤ／Ａコードを、Ｌレベルの場合（カウンタＨｃｏｕｎｔの値≠Ａ／２）は選択器ＳＬ４からの出力値を選択して、セレクタＳＬ６に出力する。そして、セレクタＳＬ６は、ＦＬＡＧ信号がＬレベルの場合（カウンタＣｏｕｎｔがＡに達していない場合）はレジスタＱ３［７：０］に保持されたＤ／Ａコードを、Ｈレベルの場合（カウンタＣｏｕｎｔがＡに達した場合）はセレクタＳＬ５によって選択された値を出力する。
【００６２】
これにより、ＦＬＡＧ信号がＬレベル、または、ＦＬＡＧ信号がＨレベルであってＥＱＵＡＬ信号がＨレベルの場合は、レジスタＱ３［７：０］に保持されたＤ／Ａコードが、レジスタＱ３［７：０］に再度セットされる。そして、それ以外の場合は、ＯＶＥＲ信号の値に応じてインクリメントまたはデクリメントされたＤ／Ａコードが、レジスタＱ３［７：０］にセットされる。このように、レジスタ回路Ｄ／Ａ＿Ｒｅｇは、入力されたＯＶＥＲ信号、ＥＱＵＡＬ信号、ＦＬＡＧ信号の各値に基づいてＤ／Ａコードを制御し、レジスタＱ３［７：０］に保持すると共に出力信号ＤＯＵＴとして出力する。
【００６３】
図１３は、図１０、図１１の回路のタイミングチャートの一例を表す図である。同図の各タイミングチャートＣＨ１〜３において、多数決の母数Ａ＝６であり、カウンタＣｏｕｎｔが６に達した時、タイミングチャートＣＨ１ではＨｃｏｕｎｔ＝１、タイミングチャートＣＨ２ではＨｃｏｕｎｔ＝３、タイミングチャートＣＨ３ではＨｃｏｕｎｔ＝４である場合をそれぞれ表す。なお、同図における信号Ｘは初期値である。
【００６４】
まず、図１３の上部のタイミングチャートＣＨ１は、比較回路１２からの６回分の乱数ＤＩＮの出力のうちＨレベルの信号が１回、Ｌレベルの信号が５回出力される場合を表す。カウンタＣｏｕｎｔが６に達した時、Ｈレベルの信号の出力が１回であるためカウンタＨｃｏｕｎｔ＝１である。この場合、カウンタＨｃｏｕｎｔの値がＡの半数値（３＝６／２）に達していないため、ＦＬＡＧ信号はＨレベルに変移するものの、ＯＶＥＲ信号及びＥＱＵＡＬ信号は共にＬレベルのままである。
【００６５】
次に、図１３の中部のタイミングチャートＣＨ２は、比較回路１２からの６回分の乱数ＤＩＮの出力のうちＨレベルの信号が３回、Ｌレベルの信号が３回出力される場合を表す。カウンタＣｏｕｎｔが６に達した時、Ｈレベルの信号の出力が３回であるためカウンタＨｃｏｕｎｔ＝３である。この場合、カウンタＨｃｏｕｎｔの値がＡの半数値（３＝６／２）と等しいため、ＦＬＡＧ信号、ＥＱＵＡＬ信号が共にＨレベルに変移する。ただし、カウンタＨｃｏｕｎｔの値はＡの半数値を超えないため、ＯＶＥＲ信号はＬレベルのままとなる。
【００６６】
そして、図１３の下部のタイミングチャートＣＨ３は、比較回路１２からの６回分の乱数ＤＩＮの出力のうちＨレベルの信号が４回、Ｌレベルの信号が２回出力される場合を表す。カウンタＣｏｕｎｔが６に達した時、Ｈレベルの信号の出力が４回であるためカウンタＨｃｏｕｎｔ＝４である。この場合、カウンタＨｃｏｕｎｔの値がＡの半数値（３＝６／２）を超えるため、ＦＬＡＧ信号、ＯＶＥＲ信号が共にＨレベルに変移する。ただし、カウンタＨｃｏｕｎｔの値がＡの半数値と等しくないため、ＥＱＵＡＬ信号はＬレベルのままとなる。
【００６７】
このように、本実施の形態例における乱数発生器１０は、複数回分の乱数の多数決に基づいて、入力電圧ＶＩＭに対応するデジタル値Ｄｇを制御する。これにより、乱数発生器１０は、デジタル値の制御を高精度に行うことができ、少ない制御回数で、差動電圧値を０Ｖに収束させ、各乱数を等しい確率でランダムに発生させることができる。また、乱数発生器１０は、差動電圧値が０Ｖに収束した後、デジタル値の制御を高精度に行うことができ、差動電圧値の振れ幅を抑えて各乱数をより等しい確率でランダムに発生させることができる。
【００６８】
また、本実施の形態例における乱数発生器１０は、乱数発生器１０の有する比較回路１２内部のトランジスタの熱ノイズを利用して乱数を発生させる。このため、乱数発生器１０は、比較回路１２の入力にノイズ源を要しないため、ノイズ源を構成する外部部品や素子を不要とし、コストを抑えることができる。また、乱数発生器１０は、比較回路１２の入力にノイズ源を要しないことから当該ノイズ源によるノイズを増幅させる増幅器を不要とし、消費電力を抑えることができる。
【００６９】
また、一般的な乱数発生器では、比較回路に流す電流を大きくすることによって、その熱ノイズの影響を相対的に抑えることがある。しかしながら、本実施の形態例における乱数発生器１０は、比較回路１２の熱ノイズ自体を利用して乱数を発生させるため、比較回路１２に流す電流を大きくする必要がない。このため、本実施の形態例における乱数発生器１０は、消費電力を抑えることができる。
【００７０】
＜第２の実施の形態例＞
第１の実施の形態例では、多数決の母数が一定の場合の多数決に基づくデジタル値の制御について述べたのに対し、第２の実施の形態例では、多数決の母数が変移する場合の多数決に基づくデジタル値の制御について述べる。具体的に、第２の実施の形態例において、乱数発生器１０は、初めは１回分の乱数に基づいてデジタル値を制御し、デジタル値の制御方向（本実施の形態例ではインクリメントまたはデクリメント）の変移後は、多数決の母数を２から上限値まで逓増させ、当該母数分の乱数の多数決に基づいてデジタル値を制御する。
【００７１】
図１４は、多数決の母数Ａを変移させる場合における制御回路１４のデジタル値の制御処理を表すフローチャート図である。多数決の母数Ａ、カウンタＨｃｏｕｎｔ、カウンタＣｏｕｎｔ、Ｄ／Ａコードについては第１の実施の形態例における図７のフローチャート図と同様である。第２の実施の形態例では、さらに、初回の制御か否かを示すフラグｆｌａｇ、初回の制御内容を示すフラグＵＰＤＮ０、２回目以降の制御内容を示すフラグＵＰＤＮ１を有する。
【００７２】
まず、制御回路１４は、Ｄ／Ａコード（デジタル値）をデフォルト値defaultにセットすると共に、Ａに１、各フラグｆｌａｇ、ＵＰＤＮ０、ＵＰＤＮ１に０をセットして初期化する（Ｓ２０）。続くＳ２４までの処理（Ｓ２１〜Ｓ２４）は、第１の実施の形態例と同様であり、制御回路１４は、比較回路１２が出力した乱数に応じて、カウンタＣｏｕｎｔ、Ｈｃｏｕｎｔを制御する。
【００７３】
続いて、ステップＳ２５において、制御回路１４は、カウンタＣｏｕｎｔの値が多数決の母数Ａに達したか否かを判定する（Ｓ２５）。初めはＡ＝１であり、ステップＳ２３またはＳ２４でインクリメントされたカウンタＣｏｕｎｔと値が等しい（Ｓ２５のＹｅｓ）。従って、制御回路１４は、続いて、カウンタＨｃｏｕｎｔの値がＡの半数値と等しいか否かを判定する（Ｓ２６）。この場合、カウンタＨｃｏｕｎｔの値はＡの半数値と等しくないため（Ｓ２６のＮｏ）、続いて、Ａ＝１か否かの判定を行う（Ｓ２７）。Ａ＝１であることから（Ｓ２７のＹｅｓ）、制御回路１４は、続いて、フラグｆｌａｇ＝０か否かを判定する（Ｓ３２）。この時、フラグｆｌａｇ＝０であるため（Ｓ３２のＹｅｓ）、制御回路１４はルーチン１の処理に遷移する（Ｓ３４）。
【００７４】
図１５は、ルーチン１〜３の処理を表すフローチャート図である。ルーチン１の処理（Ｓ３４）において、まず、制御回路１４は、比較回路１２が出力した乱数がＨレベルの信号か否かを判定する（Ｓ４０）。乱数がＨレベルの信号である場合（Ｓ４０のＹｅｓ）、制御回路１４は、電圧ＶＩＭを上げるためＤ／Ａコードをインクリメントすると共に、フラグＵＰＤＮ０、フラグｆｌａｇに１をセットする（Ｓ４１）。一方、乱数がＬレベルである場合（Ｓ４０のＮｏ）、制御回路１４は、電圧ＶＩＭを下げるためＤ／Ａコードをデクリメントすると共に、フラグＵＰＤＮ０に０を、フラグｆｌａｇに１をセットする（Ｓ４２）。フラグＵＰＤＮ０には、初回の乱数値、及び、Ｄ／Ａコードの制御方向（インクリメントまたはデクリメント）を示す値が保持される。
【００７５】
図１４に戻り、ルーチン１の処理（Ｓ３４）の後、制御回路１４は、ステップＳ２１のカウンタＣｏｕｎｔ、Ｈｃｏｕｎｔの初期化処理に戻り、ステップＳ２７まで同様の処理（Ｓ２２〜Ｓ２７）を行う。ステップＳ２７の後、制御回路１４は、フラグｆｌａｇ＝０か否かを判定するが（Ｓ３２）、図１５のステップＳ４１、Ｓ４２にてフラグｆｌａｇ＝１に更新されるため、制御回路１４は、ルーチン２の処理に遷移する（Ｓ３３）。
【００７６】
図１５に戻り、ルーチン２の処理（図１４のＳ３３）において、まず、制御回路１４は、比較回路１２が出力した乱数がＨレベルの信号か否かを判定する（Ｓ５０）。乱数がＨレベルの信号である場合（Ｓ５０のＹｅｓ）、制御回路１４は、Ｄ／Ａコードをインクリメントすると共に、フラグＵＰＤＮ１に１をセットする（Ｓ５１）。一方、乱数がＬレベルの信号である場合（Ｓ５０のＮｏ）、制御回路１４は、Ｄ／Ａコードをデクリメントすると共に、フラグＵＰＤＮ１に０をセットする（Ｓ５２）。このように、フラグＵＰＤＮ１には、２回目以降の乱数値、及び、Ｄ／Ａコードの制御方向（インクリメントまたはデクリメント）を示す値が保持される。
【００７７】
続いて、制御回路１４は、フラグＵＰＤＮ０＝フラグＵＰＤＮ１か否か、つまり、Ｄ／Ａコードの制御方向が初回の制御方向と同じか否かを判定する（Ｓ５３）。制御回路１４は、制御方向が同じである、フラグＵＰＤＮ０＝フラグＵＰＤＮ１の場合は（Ｓ５３のＹｅｓ）Ａ＝１のまま変更せず、制御方向が異なる、フラグＵＰＤＮ０≠フラグＵＰＤＮ１の場合は（Ｓ５３のＮｏ）、Ａの値を２にインクリメントする（Ｓ５４）。このように、制御回路１４は、初回の制御と制御方向が同じ場合（Ｓ５３のＹｅｓ）、制御方向が転換していないことから未だ差動電圧値が収束していないものとみなし、初回の制御と制御方向が異なる場合（Ｓ５３のＮｏ）、制御方向が転換したことから差動電圧値が収束したものとみなす。
【００７８】
図１４に戻り、ルーチン２の処理（図１４のＳ３３）の後、制御回路１４は、ステップＳ２１のカウンタＣｏｕｎｔ、Ｈｃｏｕｎｔの初期化処理に戻り、ルーチン１の処理の後と同様に、ステップＳ２７まで同様の処理（Ｓ２２〜Ｓ２７）を行う。ただし、フラグＵＰＤＮ０≠フラグＵＰＤＮ１（図１５のＳ５４）によりＡが２にインクリメントされた場合（Ｓ２７のＮｏ）、制御回路１４はルーチン３の処理に遷移する（Ｓ２８）。
【００７９】
図１５に戻り、ルーチン３の処理（図１４のＳ２８）において、まず、制御回路１４は、カウンタＨｃｏｕｎｔの値がＡの半数値を超えるか否か（カウンタＨｃｏｕｎｔ＞Ａ／２）を判定する（図１５のＳ６０）。超える場合（Ｓ６０のＹｅｓ）、Ａ回分の乱数の多数決がＨレベルの信号であることを示すため、制御回路１４はＤ／Ａコードをインクリメントする。一方、超えない場合（Ｓ６０のＮｏ）、Ａ回分の乱数の多数決結果がＬレベルの信号であることを示すため、制御回路１４はＤ／Ａコードをデクリメントする（Ｓ６２）。
【００８０】
図１４に戻り、ルーチン３の処理（図１４のＳ２８）の後、制御回路１４は、Ａの値がＡの上限値Fullcodeに達したか否かを判定する（Ｓ２９）。制御回路１４は、上限値Fullcodeに達した場合は（Ｓ２９のＹｅｓ）Ａの値を変更せず（Ｓ３０）、上限値Fullcodeに達していない間（Ｓ２９のＮｏ）Ａをインクリメントする（Ｓ３１）。そして、制御回路１４は、ステップＳ２１のカウンタＣｏｕｎｔ、Ｈｃｏｕｎｔの初期化処理に戻り、同様に、カウンタＣｏｕｎｔがＡに達する毎に、カウンタＨｃｏｕｎｔの値に基づいてＤ／Ａコードを制御する。
【００８１】
このように、本実施の形態例における乱数発生器１０は、デジタル値（Ｄ／Ａコード）の制御方向が変化しない間は、１回分の乱数に基づいて入力電圧ＶＩＭに対応するデジタル値（Ｄ／Ａコード）を制御し、制御方向が変化した後は、複数回分の乱数の多数決に基づいてデジタル値を制御する。これにより、本実施の形態例における乱数発生器１０は、少ないクロック数で差動電圧値を０Ｖに収束させることができ、収束後は、制御の精度を高くすることにより、差動電圧値の振れ幅を小さくすることができる。この結果、乱数発生器１０は、より効率的に、少ないクロック数で、高精度に、各乱数を等しい確率でランダムに出力することができる。
【００８２】
なお、制御回路１４は、デジタル値（Ｄ／Ａコード）の制御方向が変移しない間、本実施の形態例のように１回分の乱数に基づいて制御してもよいし、例えば、母数の小さい複数回分の乱数の多数決に基づいてデジタル値を制御してもよい。また、制御回路１４は、デジタル値（Ｄ／Ａコード）の制御方向の変移後、本実施の形態例のように多数決の母数を徐々に逓増させてもよいし、固定の値にしてもよい。さらに、制御回路１４は、デジタル値（Ｄ／Ａコード）の制御方向が変移したか否かに関わらず、多数決の母数値を１から上限値まで逓増させていってもよい。
【００８３】
図１６は、第２の実施の形態例における制御回路１４の論理回路の一例を表す図である。同図の論理回路は、第１の実施の形態例における論理回路（図９）に対して、さらに、レジスタ回路Ａ＿ｃｏｎｌを有する。レジスタ回路Ａ＿ｃｏｎｌは、クロックＣＬＫ、リセット信号ＸＲＳＴ、乱数ＤＩＮ、多数決の母数Ａの上限値Fullcode、レジスタ回路Ｃｏｕｎｔ＿Ｒｅｇから出力されたＦＬＡＧ信号を入力とする。レジスタ回路Ａ＿ｃｏｎｌは、各入力信号に基づいてＡの値を設定しレジスタ回路Ｃｏｕｎｔ＿Ｒｅｇに出力する。
【００８４】
図１７は、図１６のレジスタ回路Ａ＿ｃｏｎｌの回路の一例を表す図である。同図の回路は、８桁２進数のＡの値を保持するレジスタＱ４［７：０］と、回路ＣＥ２〜４、演算器ＣＬ６、ＸＮＯＲ回路Ｘ５、ＡＮＤ回路Ａ４、セレクタＳＬ８、ＳＬ９を有する。同様にして、レジスタＱ４［０］はＡの最下位桁、レジスタＱ４［７］はＡの最上位桁を示す。また、レジスタＱ４［０］についてのみ、リセット信号ＸＲＳＴによって値１がセットされる。
【００８５】
図１７のレジスタ回路Ａ＿ｃｏｎｌにリセット信号ＸＲＳＴが入力されると、レジスタＱ４［７：０］の上位７桁が０に、最下位桁が１にクリアされることにより、レジスタＱ４［７：０］に値１が保持される。そして、レジスタ回路Ａ＿ｃｏｎｌにクロックＣＬＫが入力されると、レジスタＱ４［７：０］に保持されたＡの値がＸＮＯＲ回路Ｘ５及び演算器ＣＡ６に出力される。各ＸＮＯＲ回路Ｘ５は、桁毎に、レジスタＱ４［７：０］の値とＡの上限値Fullcode［７：０］の値とを比較し、同値の場合はＨレベル、異なる場合はＬレベルの信号をＡＮＤ回路Ａ４に出力する。そして、ＡＮＤ回路Ａ４は、各桁に対応するＸＮＯＲ回路Ｘ５からの出力信号が全てＨレベルの場合、即ち、レジスタＱ４［７：０］と上限値Fullcode［７：０］の値が等しい場合はＨレベル、それ以外の場合はＬレベルの信号をセレクト信号としてセレクタＳＬ８に出力する。
【００８６】
また、演算器ＣＡ６は、入力されたカウンタＡの値をインクリメントし、セレクタＳＬ８に出力する。セレクタＳＬ８は、ＡＮＤ回路Ａ４からの出力がＨレベルの場合、即ち、レジスタＱ４［７：０］と上限値Fullcode［７：０］の値が等しい場合は、レジスタＱ４［７：０］からの値を、異なる場合は演算器ＣＡ６によってインクリメントされた値を選択する。
【００８７】
一方、回路ＣＥ２は、クロックＣＬＫ、リセット信号ＸＲＳＴに加え、ＦＬＡＧ信号を入力とし、リセット後、初めてＦＬＡＧ信号がＨレベルになった場合にＨレベルの信号を、それ以外はＬレベルの信号を出力する。具体的に、回路ＣＥ２が有するＳＲラッチ回路Ｓ２は、ＦＬＡＧ信号がＨレベルに遷移する前はＬレベルの信号を、遷移後はＨレベルの信号を継続して出力する。そして、ＳＲラッチ回路Ｓ２からＬレベルの信号が出力される間はＬレベル、ＳＲラッチ回路Ｓ２からの信号がＨレベルに遷移時にＨレベルの信号が、その後は再びＬレベルの信号がセレクト信号としてセレクタＳＬ７に出力される。
【００８８】
そして、回路ＣＥ３は、レジスタＵＰＤＮ０、ＵＰＤＮ１に保持した値が同じ場合はＨレベル、異なる場合はＬレベルの信号を回路ＣＥ４に出力する。具体的に、回路ＣＥ３のセレクタＳＬ７は、回路ＣＥ２からのセレクト信号がＨレベル、即ち、ＦＬＡＧ信号が初めてＨレベルになった場合は乱数ＤＩＮの値を、セレクト信号がＬレベルの場合はレジスタＵＰＤＮ０に保持された値を選択して、レジスタＵＰＤＮ０にセットする。
【００８９】
本実施の形態例のＡの初期値は１であるため、初めのクロックの立ち上がり時に回路ＣＥ２からＨレベルの信号が出力され、回路ＣＥ３のレジスタＵＰＤＮ０に初回の乱数ＤＩＮの値がセットされる。回路ＣＥ２からはその後Ｌレベルの信号が継続して出力されるため、レジスタＵＰＤＮ０には初回の乱数ＤＩＮの値が保持され続ける。一方レジスタＵＰＤＮ１には、新たに出力された乱数ＤＩＮの値が毎回セットされる。そして、ＸＮＯＲ回路Ｘ４は、レジスタＵＰＤＮ０（初回の乱数ＤＩＮ）の値と、レジスタＵＰＤＮ１（最新の乱数ＤＩＮ）の値とを比較し、同じ場合はＨレベル、異なる場合はＬレベルの信号を回路ＣＥ４に出力する。これにより、回路ＣＥ３は、初回の乱数ＤＩＮの値と異なった乱数ＤＩＮが出力されるまでＨレベルの信号を出力し続け、異なった乱数ＤＩＮが出力された時にＬレベルの信号を出力する。
【００９０】
そして、回路ＣＥ４は、セレクタＳＬ９に対して、回路ＣＥ３からＨレベルの信号が出力される間はＬレベルのセレクト信号を、回路ＣＥ３からＬレベルの信号が出力されるとＳＲラッチ回路Ｓ３によって、Ｈレベルのセレクト信号を継続して出力する。そして、セレクタＳＬ９は、セレクト信号がＨレベルの場合はセレクタＳＬ８から出力を、Ｌレベルの場合はレジスタＱ４［７：０］に保持されたＡの値を選択して、レジスタＱ４［７：０］にセットする。
【００９１】
このように、レジスタ回路Ａ＿ｃｏｎｌは、初回の乱数ＤＩＮの値と異なった乱数ＤＩＮが出力されるまでは値１を、初回の乱数ＤＩＮの値と異なった乱数ＤＩＮが出力された後は、Fullcodeを上限としてインクリメントした値をＡの値として、レジスタＱ４［７：０］に保持する。そして、レジスタＱ４［７：０］に保持されたＡの値はレジスタ回路Ｃｏｕｎｔ＿Ｒｅｇに出力される。
【００９２】
以上述べてきたように、本実施の形態例における制御回路１４は、差動電圧値が０Ｖに収束するまでは１回分の乱数に基づいてデジタル値を制御し、収束後、複数回分の乱数の多数決に基づいてデジタル値を制御する。これにより、本実施の形態例における乱数発生器１０は、差動電圧値を少ないクロック数で０Ｖに収束させると共に、差動電圧値が０Ｖに収束した後は、差動電圧値の振れ幅を小さくする。これにより、乱数発生器１０は、より効率的に、各乱数を等しい確率でランダムに発生させることができる。
【００９３】
なお、本実施の形態例における制御回路１４は、比較回路１２から複数回の乱数が出力される毎に、その複数回分の乱数値の多数決に基づいてデジタル値を制御する。しかしながら、制御回路１４は、比較回路１２からの複数回分の乱数を常時保持し、１クロック毎に、複数回分の乱数値の多数決に基づいてデジタル値を制御してもよい。
【００９４】
以上の実施の形態をまとめると、次の付記のとおりである。
【００９５】
（付記１）
デジタル値を変換して第１の電圧を出力するデジタルアナログ変換回路と、
前記第１の電圧と、定電圧である第２の電圧とを比較し、前記第１の電圧が前記第２の電圧より小さい場合に第１の値を、前記第１の電圧が前記第２の電圧より大きい場合に第２の値を乱数値として出力する比較回路と、
通常動作時に、前記比較回路が前記乱数値を複数回出力する度に、当該複数回分の乱数値の多数決が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力する制御回路とを有する乱数発生器。
【００９６】
（付記２）
付記１において、
前記比較回路は、前記第１の電圧と前記第２の電圧との電圧差がゼロの場合もしくは当該比較回路のオフセット電圧と等しい場合に、当該比較回路の熱ノイズに対応して前記第１、第２の値を等しい確率でランダムに出力する乱数発生器。
【００９７】
（付記３）
付記１または２において、
前記比較回路は、前記第１の電圧がゲートに供給される第１のトランジスタと、前記第２の電圧がゲートに供給される第２のトランジスタを有し、前記第１、２のトランジスタのソースに電流源が接続され、ドレインにそれぞれ負荷回路が接続され、前記第１、第２のトランジスタのいずれかのドレインが出力される乱数発生器。
【００９８】
（付記４）
付記１乃至３のいずれかにおいて、
前記制御回路は、初期動作時に、前記比較回路が前記乱数値を１回出力する度に、前記乱数値が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力し、前記デジタル値の制御方向の変化後、前記通常動作時の処理を行う乱数発生器。
【００９９】
（付記５）
付記１乃至４のいずれかにおいて、
前記第２の電圧は、熱ノイズの範囲内で一定である乱数発生器。
【０１００】
（付記６）
デジタル値を変換して第１の電圧を出力するデジタルアナログ変換工程と、
前記第１の電圧と、定電圧である第２の電圧とを比較し、前記第１の電圧が前記第２の電圧より小さい場合に第１の値を、前記第１の電圧が前記第２の電圧より大きい場合に第２の値を乱数値として出力する比較工程と、
通常動作時に、前記比較工程が前記乱数値を複数回出力する度に、当該複数回分の乱数値の多数決が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力する制御工程とを有する乱数発生方法。
【０１０１】
（付記７）
付記６において、
前記比較工程は、前記第１の電圧と前記第２の電圧との電圧差がゼロの場合もしくは当該比較回路のオフセット電圧と等しい場合に、当該比較回路の熱ノイズに対応して前記第１、第２の値を等しい確率でランダムに出力する乱数発生方法。
【０１０２】
（付記８）
付記６または７において、
前記制御工程は、初期動作時に、前記比較工程が前記乱数値を１回出力する度に、前記乱数値が前記第１の値の場合は前記第１の電圧が大きくなるように、前記第２の値の場合は前記第１の電圧が小さくなるように前記デジタル値を制御して、前記デジタルアナログ変換回路に出力し、前記デジタル値の制御方向の変化後、前記通常動作時の処理を行う乱数発生方法。
【符号の説明】
【０１０３】
１０：乱数発生器、１１：定電圧生成回路、１２：比較回路、１３：デジタルアナログ変換回路、１４：制御回路
【図１】
2012123474.tif 000003
【図２】
2012123474.tif 000004
【図３】
2012123474.tif 000005
【図４】
2012123474.tif 000006
【図５】
2012123474.tif 000007
【図６】
2012123474.tif 000008
【図７】
2012123474.tif 000009
【図８】
2012123474.tif 000010
【図９】
2012123474.tif 000011
【図１０】
2012123474.tif 000012
【図１１】
2012123474.tif 000013
【図１２】
2012123474.tif 000014
【図１３】
2012123474.tif 000015
【図１４】
2012123474.tif 000016
【図１５】
2012123474.tif 000017
【図１６】
2012123474.tif 000018
【図１７】
2012123474.tif 000019