(57)【要約】【課題】  論理回路に入力するクロックの周波数の組み合わせを動的に切り替えて、生成されるクロックの周期やジッタ値を選択してランダム性に優れたクロックを生成する。【解決手段】    クロック生成手段を有する乱数生成装置において、クロック生成手段は、段数が異なる複数のリングオシレータが出力する周波数が高速のクロックの組み合わせを選択して論理回路の信号入力端子に出力し、該論理回路に入力される低速クロックによるジッタ値を可変してランダム性に優れたクロックを出力する構成を特徴とする。【選択図】  図４
2018112861.tif 000002
【特許請求の範囲】
【請求項１】
クロック生成装置を有する乱数生成装置であって、
段数が異なる複数のリングオシレータと、
前記段数が異なる複数のリングオシレータが出力する周波数が高速のクロックの組み合わせを選択し、該選択された組み合わせで周波数が高速の複数のクロックを論理回路のデータ入力端子に出力する制御手段と、を備えることを特徴とする乱数生成装置。
【請求項２】
前記論理回路は、前記クロック生成手段から出力される周波数が高速の複数のクロックに論理演算を行い０または１の乱数を外部に出力することを特徴とする請求項１に記載の乱数生成装置。
【請求項３】
段数の異なるリングオシレータは、同じ段数で動作能力が異なる高速および低速のリングオシレータをそれぞれ備えることを特徴とする請求項１に記載の乱数生成装置。
【請求項４】
高速のクロックを生成するクロック生成手段と、低速の基準クロックを選択するクロック選択手段とを有する乱数生成装置であって、
前記クロック生成手段は、
段数が異なる複数のリングオシレータと、
前記段数が異なる複数のリングオシレータが出力する周波数が高速のクロックを組み合わせ可能に選択し、該選択された組み合わせで周波数が高速の複数のクロックを論理回路のデータ入力端子に出力する第１の制御手段と、を備え、
前記クロック選択手段は、
同期しないいずれかの基準クロックを選択して、該選択された基準クロックを前記論理回路の基準クロック端子に出力する第２の制御手段を備えることを特徴とする乱数生成装置。
【請求項５】
前記クロック選択手段は、
さらに、前記同期しない基準クロックを反転する反転手段を備え、
前記第２の制御手段は、同期しない反転した基準クロックまたは同期しない基準クロックを動的に選択することを特徴とする請求項４に記載の乱数生成装置。
【請求項６】
前記論理回路は、排他的論理和ゲートであることを特徴とする請求項１〜５のいずれか1項に記載の乱数生成装置。
【請求項７】
請求項１〜請求項６のいずれかの乱数生成装置を集積したことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数生成装置、集積回路に関するものである。
【背景技術】
【０００２】
情報セキュリティ分野においては乱数の使用が不可欠であり、近年、一様性（乱数の確率値および出現率に差異が生じないこと）を有し、かつ乱数出現の規則性や前後の相関性、周期性などを有しない真正乱数を発生する高性能な乱数発生装置の需要が高まっている。
一般的に、リングオシレータから出力される高速で動作するクロックを使用する乱数生成装置が知られており、以下のような構成となっている。
【０００３】
リングオシレータから出力される高速で動作するクロックを、フリップフロップ回路（以降 FFとする）のデータ入力端子に接続する。前記リングオシレータからの出力クロックとは非同期で、周波数が遅く、ジッタ成分の大きなクロックを 前記FFのクロック端子に接続して FFを動作させる。
それにより、リングオシレータからの高速クロックのジッタ成分及び、FFの同期用に入力している低速クロックのジッタ成分の影響により、FFの出力から乱数が生成できる。
【０００４】
また、複数のリングオシレータの出力のXORをとり、FFのデータ入力端子に入力される信号のトグル回数を増やすことや、遅延時間の異なるリングオシレータを複数用意しておき、生成されるクロックの周期やジッタ値を選択することでランダム性の高い構成を選択することを可能としている技術も提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１―１８４２５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、ASICのようなデータ処理用チップでは、乱数生成装置を組み込んで、チップとして製造した後に、想定していたランダム性が得られないことが判明した場合、回路変更が出来ない。よって再設計を行いチップの作り直しを行う必要が生じることがある。
【０００７】
本発明は、上記の課題を解決するためになされたもので、本発明の目的は、論理回路に入力するクロックの周波数の組み合わせを動的に切り替えて、生成されるクロックの周期やジッタ値を選択する事で、ランダム性に優れた乱数生成装置を提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成する本発明の乱数生成装置は以下に示す構成を備える。
クロック生成手段を有する乱数生成装置であって、段数が異なる複数のリングオシレータと、該段数が異なる複数のリングオシレータが出力する周波数が高速のクロックの組み合わせを選択し、該選択された組み合わせで周波数が高速の複数のクロックを前記論理回路の信号入力端子に出力する制御手段と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、論理回路に入力するクロックの周波数の組み合わせを動的に切り替えて、生成されるクロックの周期やジッタ値を選択してランダム性に優れたクロックを生成できる。
【図面の簡単な説明】
【００１０】
【図１】乱数生成装置の基本的な構成を示す図である。
【図２】乱数生成装置の各信号の動作時の波形を示す図である。
【図３】乱数生成の仕組みを示す図である。
【図４】乱数生成装置を説明するブロック図である。
【図５】３入力XOR回路の動作を説明する真理表である。
【図６】３入力XOR回路の入出力信号の波形を示す特性図である。
【図７】高速クロック生成部の動作を説明するため真理表である。
【図８】入出力信号の波形を示す特性図である。
【図９】３入力XOR回路の動作を説明するため真理表である。
【図１０】３入力XOR回路の動作を説明する特性図である。
【図１１】３入力XOR回路の動作を説明するため真理表である。
【図１２】３入力XOR回路の動作を説明する特性図である。
【図１３】乱数生成装置の構成を示すブロック図である。
【図１４】図１３に示した回路の入出力クロック状態を示す図である。
【図１５】図１３に示す回路の動作を説明する特性図である。
【図１６】乱数生成装置の構成を示すブロック図である。
【図１７】図１６に示した乱数生成装置の動作を説明する特性図である。
【発明を実施するための形態】
【００１１】
次に本発明を実施するための最良の形態について図面を参照して説明する。
＜システム構成の説明＞
〔第１実施形態〕
【００１２】
図１は、集積回路に適用するリングオシレータを使用した乱数生成装置の基本的な構成を示す図である。ここで、集積回路とは、ＡＳＩＣが好適である。
図１において、リングオシレータ部201は乱数生成に使用するための高速クロックを生成するために、奇数個のインバータがリング状に接続されている。本実施形態では、３個のインバータ203、204、205がシリアルに接続されている。リングオシレータ部201のAND回路202にRESET_L信号が「Low」（以降「L」とする）に固定されている場合、リングオシレータ部201の信号はAND回路202によって、「L」固定とされる。このため、叩きだし用FF206のデータ入力端子（DI）の信号は「H」のままの状態となる。また、叩きだし用FF206のデータ入力端子（DI）と接続されているAND回路202の入力端子にも「H」が入力される。
【００１３】
リングオシレータ部201のAND回路202へ入力されているRESET_L信号が「High」（以降「H」とする）へと切り替わった場合、インバータ203への入力信号は、「L」から「H」に切り替わる。すると、インバータ203の出力信号は、「H」から「L」へ、インバータ204の出力信号は、「L」から「H」へ、インバータ205の出力信号は、「H」から「L」に切り替わる。
すると、叩きだし用FF206のデータ入力端子（DI）の信号に関しても「H」から「L」に切り替わる。
また、叩きだし用FF206のデータ入力端子（DI）と接続されているAND回路202の入力端子に関しても「H」から「L」に切り替わる。すると、インバータ203の出力信号は、「L」から「H」へ、インバータ204の出力信号は、「H」から「L」へ、インバータ205の出力信号は、「L」から「H」に切り替わる。すると、叩きだし用FF206のデータ入力端子（DI）の信号に関しても「L」から「H」に切り替わる。
【００１４】
以上のように、各インバータを通過する遅延時間と、各インバータ間を接続した配線の遅延時間を経た後、論理の反転の繰り返しを、インバータ205の出力信号から引き出し、叩きだし用のFF206のデータ入力端子（DI）へと入力する。
また、叩きだし用のFF206のクロック入力端子（CLK）には、前記リングオシレータから出力されてくる高速クロックに対して周波数の低い低速クロック（CLK_IN）が入力される。
【００１５】
叩きだし用のFF206によって、高速クロックが低速クロックによって叩かれて、データ出力端子（DO）へと信号が出力される。  前記叩き出し用FF206の出力が「H」になるか「L」になるかが、ランダムになることを利用し、必要とするビット分の乱数を生成する。
【００１６】
図２は、図１の乱数生成装置の各信号の動作時の波形を示す図である。
図において、RESET_L信号が「H」となった所で、リングオシレータ201からの高速クロック出力が開始されることとなる（図２の時点(1)）。
高速クロックの周期と低速クロックの周期が、図２のような関係にあった場合、時点(2)で、叩きだし用FF206のクロック入力端子（CLK）に入力された低速クロックが立ち上がる。この立ち上がりエッジにより、高速クロックが叩きだされ、出力端子（DO）からの信号出力は「L」から「H」へと変化する。
同様に、時点(3)で、CLKに入力された低速クロックの立ち上がりエッジにより、高速クロックが叩きだされ、出力端子（DO）からの信号出力は「H」から「L」へと変化する。そして、時点(4)で再び出力端子（DO）からの信号出力は「L」から「H」へと変化する。
【００１７】
図２に示すように高速クロック、低速クロックの周期が一定の場合、各クロックのジッタを考慮しないと、乱数が発生することにはならないが、実際には高速クロックに関しては、各インバータの動作のばらつきや、温度や電圧などが変化することで生じるジッタが発生する。
また、低速クロックに関しても、低速クロックの源振となるPLLの動作時のジッタがあり、PLLから出力されたクロックを低速クロックにするために分周を行った場合、PLLで発生したジッタは更に大きなジッタとなって伝搬する。
【００１８】
図３は、各クロックのジッタを考慮した場合の乱数生成の仕組みを示す図である。
図３において、リングオシレータ201から生成される高速クロックに関しては、各インバータ203、204、205やAND回路202の回路生成時のプロセスばらつきや動作電圧、周囲温度等の影響により、ジッタが発生する。  そのため、図３の波DI形に、斜線で示したようなジッタを持つこととなり、斜線で示す部分のどの部分に立ち上がりエッジ、立ち下がりのエッジがくるかは特定できない。
【００１９】
また、低速クロックに関しては、もともとはPLL等から生成された周波数の高いクロックに対して、分周を行うことにより生成する。
一般的に、クロックに対してN分周を行うと、そのジッタはN倍もしくはルートN倍となると言われており、1000MHzのクロックをPLLから出力した時のジッタが0.25nsecであった場合、25分周した40MHzのクロックに関して、５倍からの２５倍ジッタが発生する。
つまり、40MHzつまり、25nsecの周期のクロックに対して、1.25nsecから6.25nsecのジッタが含まれる。
また、高速クロックの場合と同様に、低速クロックに関してもジッタの範囲内のどこに立ち上がりエッジ、立ち下がりのエッジが来るかは特定できない。
【００２０】
よって、図３において、高速クロックの周波数が1GHzであった場合、高速クロックの周期は1nsecとなる。低速クロックのジッタがその周期よりも大きな1.25nsecから6.25nsecであった場合、叩きだし用FF206で使用する低速クロックの立ち上がりエッジは、高速クロックの「H」、「L」のどちらを叩くこととなるかは決まらない状態となる。つまりランダムな「H」、「L」がDOから出力されるのである。以上が、リングオシレータと叩きだし用FFを使用した乱数生成の説明となる。
【００２１】
しかしながら、リングオシレータの出力クロックのジッタや、クロックを分周した際のジッタ値は、チップの温度や電圧が大きく変わることで、大きなジッタ値を得るが、実際にはチップ使用中の電圧や温度はそれほど大きく変わることはない。
そのため、従来技術のような回路構成で実際にASICなどのチップを製造した際の動作時に、想定していた 通りのランダム性が得られないということがおこる可能性もある。
【００２２】
FPGA等の回路の再構成が可能なチップを使用している場合には、インバータ セルの個数を変更することや、FFへ入力するクロックの周波数や配線長、クロック バッファの数等を変更して、回路を再構成することで、ランダム性を上げるための調整することが可能となる。しかし、ASICのように製造後に回路変更が出来ない場合は、ASICの作り直しとなり、多大なコストの開発期間の延長ということとなる。そのため、以降の実施形態にあげるように、ASIC製造後にも使用する環境で、出来る限り高いランダム性を確保できるような構成を持っておく必要がある。
【００２３】
図４は、本実施形態を示す乱数生成装置（100）を説明するブロック図である。本例は、段数が３、５、７のリングオシレータを備える乱数生成装置の例である。
図４において、高速クロック112生成用のリングオシレータ101は、本実施形態においては３個のインバータを使用したリングオシレータとして構成されている例を示す。なお、図１において説明したように、リセット信号115で動作を停止することが可能な構成とする。
高速クロック113、114生成用のリングオシレータ102、103は、リングオシレータ101と同様な構成で、それぞれ５個、７個のインバータを使用しているものとなる。
【００２４】
高速クロック選択部104は、リングオシレータ101、102、103 から出力された高速クロック112、113、114の入力と、高速クロック選択信号116、117、118の入力を行い、乱数生成に使用する高速クロックの選択を行う部分である。
本実施形態では、各高速クロックと高速クロック選択信号とのANDを取ることで、乱数生成に使用しないクロックに関しては、高速クロック選択信号を「L」とすることで、高速クロックを「L」固定とすることとしている。
【００２５】
論理回路である３入力XOR回路（排他的論理和ゲート）105は、高速クロック選択部104からの各高速クロックの入力を行い、図５の真理値表に従い、出力する論理演算を実行する。
図６は、図１に示した３入力XOR回路105の入出力信号の波形を示す特性図である。
図６において、波形Aは３入力XOR回路105の入力端子Aへの高速クロック112の波形を示す。波形Bは３入力XOR回路105の入力端子Bへの高速クロック113の波形を示す。波形Cは３入力XOR回路105の入力端子Cの高速クロック114の波形を示す。波形Qは３入力XOR回路105の出力端子Qから出力される信号の波形を示す。
３入力XOR回路105に、位相や周波数の異なる複数の高速クロックを通すことにより、図６に示すように、叩きだし用FF106のデータ入力端子におけるデータのトグル数が多くなる。これにより、乱数生成時のランダム性を高くすることができる。叩きだし用FF106の信号入力端子には、３入力XOR回路105からの出力信号である高速のクロックが入力される。また、基準クロック端子には、基準クロックが入力される。
【００２６】
そして、リングオシレータ101、102、103 から出力された高速クロックに対して、十分に低速でジッタの大きなクロックであるCLK_IN119を、クロック入力とすることで、ランダム性の高い「H」「L」の出力を行うこととなる。
【００２７】
高速クロック制御部107は各リングオシレータ101〜103の動作を停止させるリセット信号115の出力を選択する処理を行う。高速クロック制御部107は各高速クロックのうち、どのクロックを乱数生成に使用するかを選択するための、高速クロック選択信号116、117、118の出力を行う。
高速クロック制御部107の内部には、詳細な図示による説明はここでは行わないが、リセット生成用レジスタ回路108、各高速クロック選択信号用のレジスタ回路109、110、111を持つ。
そして、本乱数生成装置100の制御を行っているCPUからのアクセスにより各出力信号の制御を行うこととする。
【００２８】
図５に示す真理値表値は、３入力XOR回路105に入力される全ての高速クロックが有効になっている場合の真理値表である。
図５の真理値表に従った場合の、３入力XOR回路105の入力信号の波形と、その時の出力信号の波形が図６に示す特性図に対応する。
各高速クロックA、B、Cの入力に対して、XORを行うことで、最も高速にトグルを行っているクロックAよりも、更に細かい周期での信号のトグルが可能となる。
ただし、高速クロックの周波数によっては、図６の時点(1)〜(4)に示すように、高速クロックにトグルがあった時でも、３入力XOR回路105の出力信号ではトグルが行われない場合もある。
【００２９】
よって、高速クロックの周波数の組み合わせや、低速クロックとの周波数やジッタとの組み合わせにより、叩き出し用FF106から出力される信号のランダム性が変わってくるため、全ての高速クロックのXORを取ることによって最大のランダム性を実現するとは必ずしも言えない。
【００３０】
図７は、図１に示した高速クロック生成部１００の動作を説明するため真理表である。本例は、３入力XOR回路105に入力される高速クロックのうちのB、つまり高速クロック113が高速クロック選択信号117の制御により、「L」に固定されている場合の真理値表である。
図７の真理値表に従った場合の、３入力XOR回路105の入力信号の波形と、その時の出力信号の波形が、図８に示す特性図となる。
各高速クロックA、Cの入力に対して、XORを行うことで、最も高速にトグルを行っているクロックAよりも、更に細かい周期での信号のトグルが可能となる。  但し、高速クロックの周波数によっては、図８の時点(1)に示すように、高速クロックにトグルがあった時でも、３入力XOR回路105の出力信号ではトグルが行われない場合もある。
【００３１】
よって、高速クロックの周波数の組み併せや、低速クロックとの周波数やジッタとの組み合わせにより、ランダム性が変わってくることとなり、２つの高速クロックのXORを取ることによって最大のランダム性を実現するとは必ずしも言えない。
【００３２】
図９は、３入力XOR回路105に入力される高速クロックのうちのC、つまり高速クロック114が高速クロック選択信号118の制御により、「L」に固定されている場合の真理値表となる。
図９の真理値表に従った場合の、３入力XOR回路105の入力信号の波形と、その時の出力信号の波形は図１０に示す特性図に対応する。
各高速クロックA、Bの入力に対して、XORを行うことで、最も高速にトグルを行っているクロックAよりも、更に細かい周期での信号のトグルが可能となる。  但し、高速クロックの周波数によっては、図１０の(1)〜(3)に示すように、高速クロックにトグルがあった時でも、３入力XOR回路105の出力信号ではトグルが行われない場合もある。
【００３３】
よって、高速クロックの周波数の組み併せや、低速クロックとの周波数やジッタとの組み合わせにより、ランダム性が変わってくることとなり、２つの高速クロックのXORを取ることによって最大のランダム性を実現するとは必ずしも言えないこととなる。
【００３４】
図１１は、３入力XOR回路105に入力される高速クロックのうちのA、つまり高速クロック112が高速クロック選択信号116の制御により、「L」に固定されている場合の真理値表となる。
図１１の真理値表に従った場合の、３入力XOR回路105の入力信号の波形と、その時の出力信号の波形が、図１２に示す特性図に対応する。
各高速クロックB、Cの入力に対して、XORを行うことで、最も高速にトグルを行っているクロックAよりも、トグルの回数は少なくなる。
しかし、高速クロックB、Cとも高速クロックAよりも周波数が遅いクロックであるため、クロック生成時のジッタが大きくなっていることを考慮すると、この場合でも、低速クロックとの周波数やジッタとの組み合わせにより、ランダム性が変わってくることとなり、ランダム性が高くなることも考えられる。
【００３５】
全ての高速クロックを使用する場合と、どれかのクロックを停止させる場合と、どの場合が最もランダム性が高い出力となるかは、高速クロックの周波数及びジッタ、低速クロックの周波数及びジッタの組み合わせや、動作時の電圧、温度等により異なる状態となる。
【００３６】
よって、本乱数生成装置を製品に組み込み、その製品を動作させる状態に近い環境で、高速クロック制御部107からの設定を様々に変化させることで、その環境にあった最もランダム性の高い乱数を生成することが可能となる。
ランダム性の確認に関しては様々な方法があるが、本実施形態においては以下のように確認することとする。
【００３７】
各高速クロック選択信号用のレジスタ回路109、110、111の設定の組み合わせを、全ての組み合わせに関して変化させ、それぞれの設定について、叩き出し用FF106から出力される信号に関して、低速クロックの特定のサイクル分データを取る。
そのデータの「0」の個数が特定のサイクルの２分の１に最も近い値となった場合の設定が、最もランダム性が高い設定とする。
【００３８】
例えば、叩き出し用FF106から出力される信号に関して、低速クロックの100000サイクル分のデータを取得したとする。高速クロック112、113、114 の全ての高速クロックをXORに使用する設定として、100000サイクル分のデータを取得した時に、500200回の「0」、499800回の「H」となったとする。
高速クロック112を「L」固定とし、113、114 の高速クロックをXORに使用する設定として、100000サイクル分のデータを取得した時に、500250回の「0」、499750回の「H」となったとする。
高速クロック113を「L」固定とし、112、114の高速クロックをXORに使用する設定として、100000サイクル分のデータを取得した時に、500150回の「0」、499850回の「H」となったとする。
高速クロック114を「L」固定とし、112、113 の高速クロックをXORに使用する設定として、100000サイクル分のデータを取得した時に、500230回の「0」、499770回の「H」となったとする。この場合、高速クロック113を「L」固定とし、112、114 の高速クロックをXORに使用する設定が、最もランダム性の高い設定として採用される。
【００３９】
本乱数生成装置を製品に組み込み、その製品を動作させる状態に近い環境で最も高いランダム性を持つと判断された設定値の確認を行うことで、製品使用時に、最もランダム性が高い乱数の生成が可能となる。
【００４０】
〔第２実施形態〕
第１実施形態においては、叩き出し用のFF106のデータ入力端子（DI）に入力される信号を、遅延時間の異なる複数のリングオシレータから出力される高速クロックの、XORに使用する組み合わせを変化させることで、ランダム性の高い乱数を生成する乱数生成装置の例を説明した。
本実施形態では、叩き出し用のFF106のクロック入力端子（CLK）に入力する低速クロックを変化させることで、ランダム性の高い乱数を生成する乱数生成装置の例をあげる。
図１３は、本実施形態を示す乱数生成装置の構成を示すブロック図である。本実施形態は、第１実施形態に加えて、非同期の基準クロックを動的に選択するクロック選択部を備えることを特徴とする。
なお、本実施形態における高速クロック生成部100は、第１実施形態と同じ構成をとるため、図１と同じ番号を付けることにより、詳細な説明は省くこととする。ここでは、第２実施形態における特徴となる低速クロック生成部1300に関して、詳細な説明を行う。
【００４１】
図１３において、低速クロック生成部1300は、低速クロック選択部1301と低速クロック制御部1306からなる。低速クロック生成部1300には、周波数の異なる２種類の低速クロックCLK_A及び、CLK_Bが入力されることとする。
入力された各低速クロックは低速クロック選択部1301内のインバータにより反転クロックが生成される。CLK_Aからは、インバータ1302によって、反転クロックCLK_A_INVが生成される。
また、CLK_Bからは、インバータ1303によって、反転クロックCLK_B_INVが生成される。
【００４２】
低速クロック選択部1301に入力された２種類の低速クロックCLK_A及び、CLK_B、またそれぞれのクロックの反転クロックであるCLK_A_INVとCLK_B_INVは、クロック停止制御部1304によって、リセット信号が「L」の時にトグルが停止するように各低速クロックとリセット信号が、ANDゲートに入力される構成となっている。そして、クロック停止部1304から出力される各低速クロックは、セレクタ1305に入力される。
【００４３】
セレクタ1305では、低速クロック制御部1306からのクロック選択信号1312により、入力された低速クロックのうち1種類のクロックを選択して、出力を行う。第２実施形態においては、図１４に示すようにクロック選択信号1312は2ビットの信号とする。
CLK_SEL[0]が「L」及びCLK_SEL[1]が「L」の時にはCLK_Aを出力、CLK_SEL[0]が「H」及びCLK_SEL[1]が「L」の時にはCLK_A_INVを出力する。
また、CLK_SEL[0]が「L」及びCLK_SEL[1]が「H」の時にはCLK_Bを出力、CLK_SEL[0]が「H」及びCLK_SEL[1]が「H」の時にはCLK_B_INVを出力することとする。
【００４４】
低速クロック制御部1306の内部には、詳細な図示による説明はここでは行わないが、低速クロックの選択信号1312生成用のレジスタ回路1307が含まれており、本乱数生成装置の制御を行っているCPUからのアクセスによリ、クロック選択信号1312の制御を行う。
以上のように、低速クロック制御部1306により選択されて出力された低速クロックが、叩き出し用FF106の入カクロック端子（CLK）へと入力する。
【００４５】
図１５は、図１３に示す回路の動作を説明する特性図である。
図１５に示す例は、叩き出し用FF106への入カデータ端子（DI）へ入力されたXORからの出力信号と、低速クロック生成部1300に入力された２種類の低速クロックCLK_A及び、CLK_B、またそれぞれのクロックの反転クロックであるCLK_A_INVとCLK_B_INVの各クロックが出力クロックとして選択された場合の、叩き出し用FF106からの出力信号を表している。
【００４６】
CLK_Aを叩き出し用FF106のクロックとして選択した時の叩き出し用FF106の出力端子の信号の遷移を表した波形は、外部に出力するDO（CLK_A）となる。
また、CLK_A_INVを叩き出し用FF106のクロックとして選択した時の叩き出し用FF106の出力端子の信号の遷移を表した波形は、DO（CLK_A_INV）となる。
【００４７】
また、CLK_Bを叩き出し用FF106のクロックとして選択した時の叩き出し用FF106の出力端子の信号の遷移を表した波形は、DO（CLK_B）となり、CLK_B_INVを叩き出し用FF106のクロックとして選択した時の叩き出し用FF106の出力端子の信号の遷移を表した波形は、DO（CLK_B_INV）となる。
【００４８】
図１５に示したように、低速クロック生成部1300から出力される各低速クロックの周波数やエッジの立ち上がり、立下りの違いにより、それぞれ違った出力乱数が出力される。
また、各低速クロックのジッタの大きさも各クロックによって異なるため、どの低速クロックを選択するかによって、高速クロックのトグルの変化やジッタの違いとの組み合わせが変わり、ランダム性が高くなることも考えられる。
第２実施形態によれば、叩き出し用のFF106のクロック入力端子（CLK）に入力する低速クロックを変化させることで、ランダム性の高い乱数を生成する乱数生成装置の例をあげた。
図１３に示すように、高速クロックの選択と、低速クロックの選択を合わせて行うことにより、より多くの組み合わせを試行することが可能となる。
【００４９】
どのような高速クロックと低速クロックを組み合わせた場合に、最もランダム性が高い出力となるかは、高速クロックの周波数及びジッタ、低速クロックの周波数及びジッタの組み合わせや、動作時の電圧、温度等により異なる状態となる。
【００５０】
よって、本乱数生成装置を製品に組み込み、その製品を動作させる状態に近い環境で、高速クロック制御部107及び、低速クロック制御部1306からの設定を様々に変化させることで、その環境にあった最もランダム性の高い乱数を生成することが可能となる。
【００５１】
〔第３実施形態〕
第１実施形態においては、叩き出し用のFF106のデータ入力端子に入力される信号を、インバータの個数の異なるリングオシレータから出力される高速クロックをXORし、トグル数を多くすることで、ランダム性の高い乱数を生成する乱数生成装置の例をあげた。
【００５２】
本実施形態では、リングオシレータ内のインバータの数は同じでも、各インバータの駆動能力を異なる組み合わせにすることによって、複数の周波数及び、ジッタのリングオシレータを構成し、それらのXORをとることで、ランダム性の高い乱数を生成する乱数生成装置の例をあげる。
【００５３】
図１６は、本実施形態を示す乱数生成装置の構成を示すブロック図である。
図１６において、高速クロック生成用のリングオシレータ1601は、高速動作可能なつまり、ドライブ能力の高い３個のインバータ1603、1604、1605を使用したリングオシレータとしている。また、高速クロック生成用のリングオシレータ1601は、AND回路1602によって、リセット信号が「L」である時、クロック生成の動作を停止することが可能な構成としている。
【００５４】
高速クロック生成用のリングオシレータで1606は、本実施形態においては低速で動作するつまり、ドライブ能力の低い３個のインバータ1608、1609、1610を使用したリングオシレータとしている。高速クロック生成用のリングオシレータで1606は、AND回路1607によって、リセット信号が「L」である時、クロック生成の動作を停止することが可能な構成としている。
【００５５】
高速クロック生成用のリングオシレータで1611は、本実施形態においては高速動作可能なつまり、ドライブ能力の高い５個のインバータ1613、1614、1615、1616、1617を使用したリングオシレータとしている。また、高速クロック生成用のリングオシレータで1611は、AND回路1612によって、リセット信号が「L」である時、クロック生成の動作を停止することが可能な構成としている。
【００５６】
高速クロック生成用のリングオシレータ1618は、本実施形態においては低速で動作するつまり、ドライブ能力の低い５個のインバータ1620、1621、1622、1623、1624を使用したリングオシレータとしている。また、高速クロック生成用のリングオシレータ1618は、AND回路1619によって、リセット信号が「L」である時、クロック生成の動作を停止することが可能な構成としている。
【００５７】
高速クロック制御部1625は、リングオシレータ1601、1606、1611、1618から出力された高速クロックの入力と、高速クロック選択信号の入力を行い、乱数生成に使用する高速クロックの制御を行う部分となる。
本実施形態では、各高速クロックと高速クロック選択信号とのAND取ることで、乱数生成に使用しないクロックに関しては、「L」固定とする。
XOR部1626は、高速クロック制御部1625からの各高速クロックの入力を行う。
XOR部1626内には、図示されているように、２段のXORを使用し、４系統の入力に対するXOR処理を行い、その結果の信号を叩き出し用FF1633へと出力を行うこととする。XOR回路1626に複数の高速クロックを通すことにより、叩きだし用FF1633のデータ入力端子におけるデータのトグル数が多くなる。これにより、乱数生成時のランダム性を高くすることが可能となる。
【００５８】
叩きだし用FF1633は、XOR回路1626からの出力信号をデータ入力とし、リングオシレータ1601、1606、1611、1618 から出力された高速クロックに対して、十分に低速でジッタの大きなクロックであるCLK_INを、クロック入力とすることで、ランダム性の高い「H」「L」の出力を行う。
【００５９】
高速クロック制御部・B1627は、各リングオシレータの動作を停止させるリセット信号の出力や、各高速クロックのうち、どのクロックを乱数生成に使用するかを選択するための、高速クロック選択信号の出力を行う部分となる。
高速クロック制御部・B1627の内部には、詳細な図示による説明はここでは行わないが、リセット生成用レジスタ回路1628、各高速クロック選択信号用のレジスタ回路1629、1630、1631、1632を持つ。
レジスタ回路1629 は、高速動作可能なインバータ３個によるリングオシレータ1601のクロック制御を行う。レジスタ回路1630 は、低速動作を行うインバータ３個によるリングオシレータ1606のクロック制御を行う。
レジスタ回路1631は、高速動作可能なインバータ５個によるリングオシレータ1611のクロック制御を行う。レジスタ回路1632は、高速動作可能なインバータ５個によるリングオシレータ1618のクロック制御を行う。高速クロック制御部・B1627内の各レジスタは、本乱数生成装置の制御を行っているCPUからのアクセスにより各出力信号の制御を行うこととする。
【００６０】
図１７は、図１６に示した乱数生成装置の動作を説明する特性図である。
本例は、リングオシレータの出力信号のインバータセルのドライブ能力の違いとクロックの周波数および、ジッタを示している。
図１６において、高速動作可能なインバータつまり、ドライブ能力の高いインバータを使用した場合、インバータ1603から入力された信号が、インバータ1603、1604、1605の各インバータを通過する時間が短いため、リングオシレータ1601から出力されるクロックの周波数は高くなる。
これにより、叩き出し用のFF1633に入力されるデータ信号のトグル数が大きくなるため、低速クロックのジッタの範囲内でのトグル数も多くなり、ランダム性が増す。
【００６１】
図１７の例においては、低速クロックCLK_INのジッタ範囲内におけるトグル数は、リングオシレータ1601からのトグル数は６回、リングオシレータ1606からのトグル数は５回となることで、トグル数の観点でみると、リングオシレータ1601からのランダム性が高くなることと考えられる。
【００６２】
低速動作を行うインバータつまり、ドライブ能力の低いインバータを使用した場合、インバータ168から入力された信号が、インバータ1608、1609、1610の各インバータを通過する時間が長いため、リングオシレータ1606から出力されるクロックの周波数は低くなる。
【００６３】
しかし、低速で動作を行う場合、各インバータで発生するジッタは高速動作を行うインバータに比較して大きなものとなる。  低速で動作を行うインバータを複数段通過することにより、生成されるクロックのジッタは、より大きなものとなって行く。
これにより、叩き出し用のFFに入力されるデータ信号のジッタが大きくなるため、低速クロックのジッタとの組み合わせにより、ランダム性が増すこととなる。
【００６４】
図１７の例においては、低速クロックCLK_INのジッタ範囲内におけるトグル数は、リングオシレータ1606からのトグル数の方が、リングオシレータ1601からのトグル数よりも少ない回数となるが、トグルを行う際のジッタは大きくなる。トグルを行う際のジッタは大きくなるということは、低速クロックで叩きだされる時のH／Lの状態が定まらない時間が長くなるということで、ランダム性が増すこととなる。
【００６５】
第３実施形態によれば、叩き出し用のFF106のデータ入力端子に入力する高速クロックを生成するにあたり、リングオシレータを構成するインバータの駆動能力を変えることにより、周波数やジッタの大きさを変えることができる。
【００６６】
リングオシレータを使用した乱数生成は、低速クロックのジッタ範囲内における高速クロックのトグル数が多い方がランダム性が高くなるのか、それとも高速クロックのジッタが大きい方がランダム性が高くなるのかは、高速クロックの周波数やジッタ、叩きだしに使用する低速クロックの周波数やジッタ等の組み合わせによって変化する。
つまり、使用する場所の温度や使用する時の電圧等により、変化する。
【００６７】
そのために、高速クロックの特性として、周波数を早くする場合と、ジッタを大きくする場合の選択を可能として置くことにより、より多くの組み合わせを試行することが可能となる。この結果、実際に動作させる状態に近い環境で、高速クロック制御部・B1627からの設定を様々に変化させることで、その環境にあった最もランダム性の高い乱数を生成することができる。
〔第4実施形態〕
また、第１実施形態の乱数生成装置において、同段数ではあるが動作能力が低速と高速のリングオシレータを選択可能な構成として、さらに低速と高速のリングオシレータがそれぞれ段数の異なるリングオシレータとするように構成としてもよい。
これにより、ランダム性の高い状態へ回路調整を自在に行うことが期待できる。
【００６８】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えばASIC）によっても実現可能である。
【符号の説明】
【００６９】
201  リングオシレータ部
202  AND回路
203、204、205  インバータ
206  叩きだし用FF
【図１】
2018112861.tif 000003
【図２】
2018112861.tif 000004
【図３】
2018112861.tif 000005
【図４】
2018112861.tif 000006
【図５】
2018112861.tif 000007
【図６】
2018112861.tif 000008
【図７】
2018112861.tif 000009
【図８】
2018112861.tif 000010
【図９】
2018112861.tif 000011
【図１０】
2018112861.tif 000012
【図１１】
2018112861.tif 000013
【図１２】
2018112861.tif 000014
【図１３】
2018112861.tif 000015
【図１４】
2018112861.tif 000016
【図１５】
2018112861.tif 000017
【図１６】
2018112861.tif 000018
【図１７】
2018112861.tif 000019