JP2018112861A - 乱数生成装置、集積回路 - Google Patents

乱数生成装置、集積回路 Download PDF

Info

Publication number
JP2018112861A
JP2018112861A JP2017002512A JP2017002512A JP2018112861A JP 2018112861 A JP2018112861 A JP 2018112861A JP 2017002512 A JP2017002512 A JP 2017002512A JP 2017002512 A JP2017002512 A JP 2017002512A JP 2018112861 A JP2018112861 A JP 2018112861A
Authority
JP
Japan
Prior art keywords
clock
speed
random number
speed clock
clocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017002512A
Other languages
English (en)
Other versions
JP2018112861A5 (ja
Inventor
青柳 剛
Takeshi Aoyagi
剛 青柳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017002512A priority Critical patent/JP2018112861A/ja
Priority to US15/866,237 priority patent/US10452358B2/en
Publication of JP2018112861A publication Critical patent/JP2018112861A/ja
Publication of JP2018112861A5 publication Critical patent/JP2018112861A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/03Astable circuits
    • H03K3/0315Ring oscillators
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/84Generating pulses having a predetermined statistical distribution of a parameter, e.g. random pulse generators

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Manipulation Of Pulses (AREA)

Abstract

【課題】 論理回路に入力するクロックの周波数の組み合わせを動的に切り替えて、生成されるクロックの周期やジッタ値を選択してランダム性に優れたクロックを生成する。【解決手段】クロック生成手段を有する乱数生成装置において、クロック生成手段は、段数が異なる複数のリングオシレータが出力する周波数が高速のクロックの組み合わせを選択して論理回路の信号入力端子に出力し、該論理回路に入力される低速クロックによるジッタ値を可変してランダム性に優れたクロックを出力する構成を特徴とする。【選択図】 図4

Description

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

Claims (7)

  1. クロック生成装置を有する乱数生成装置であって、
    段数が異なる複数のリングオシレータと、
    前記段数が異なる複数のリングオシレータが出力する周波数が高速のクロックの組み合わせを選択し、該選択された組み合わせで周波数が高速の複数のクロックを論理回路のデータ入力端子に出力する制御手段と、を備えることを特徴とする乱数生成装置。
  2. 前記論理回路は、前記クロック生成手段から出力される周波数が高速の複数のクロックに論理演算を行い0または1の乱数を外部に出力することを特徴とする請求項1に記載の乱数生成装置。
  3. 段数の異なるリングオシレータは、同じ段数で動作能力が異なる高速および低速のリングオシレータをそれぞれ備えることを特徴とする請求項1に記載の乱数生成装置。
  4. 高速のクロックを生成するクロック生成手段と、低速の基準クロックを選択するクロック選択手段とを有する乱数生成装置であって、
    前記クロック生成手段は、
    段数が異なる複数のリングオシレータと、
    前記段数が異なる複数のリングオシレータが出力する周波数が高速のクロックを組み合わせ可能に選択し、該選択された組み合わせで周波数が高速の複数のクロックを論理回路のデータ入力端子に出力する第1の制御手段と、を備え、
    前記クロック選択手段は、
    同期しないいずれかの基準クロックを選択して、該選択された基準クロックを前記論理回路の基準クロック端子に出力する第2の制御手段を備えることを特徴とする乱数生成装置。
  5. 前記クロック選択手段は、
    さらに、前記同期しない基準クロックを反転する反転手段を備え、
    前記第2の制御手段は、同期しない反転した基準クロックまたは同期しない基準クロックを動的に選択することを特徴とする請求項4に記載の乱数生成装置。
  6. 前記論理回路は、排他的論理和ゲートであることを特徴とする請求項1〜5のいずれか1項に記載の乱数生成装置。
  7. 請求項1〜請求項6のいずれかの乱数生成装置を集積したことを特徴とする集積回路。
JP2017002512A 2017-01-11 2017-01-11 乱数生成装置、集積回路 Pending JP2018112861A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017002512A JP2018112861A (ja) 2017-01-11 2017-01-11 乱数生成装置、集積回路
US15/866,237 US10452358B2 (en) 2017-01-11 2018-01-09 Random number generating apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017002512A JP2018112861A (ja) 2017-01-11 2017-01-11 乱数生成装置、集積回路

Publications (2)

Publication Number Publication Date
JP2018112861A true JP2018112861A (ja) 2018-07-19
JP2018112861A5 JP2018112861A5 (ja) 2020-02-06

Family

ID=62783019

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017002512A Pending JP2018112861A (ja) 2017-01-11 2017-01-11 乱数生成装置、集積回路

Country Status (2)

Country Link
US (1) US10452358B2 (ja)
JP (1) JP2018112861A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10778451B2 (en) * 2018-07-30 2020-09-15 United States Of America As Represented By The Secretary Of The Navy Device and method for hardware timestamping with inherent security
US11561769B2 (en) 2018-11-20 2023-01-24 Samsung Electronics Co., Ltd. Random number generator including a plurality of ring oscillators
US10998910B1 (en) 2020-02-11 2021-05-04 Marvell Asia Pte, Ltd. Method and apparatus for controlling clock cycle time
WO2022027325A1 (zh) * 2020-08-05 2022-02-10 武汉飞思灵微电子技术有限公司 一种可重构随机数发生器及其实现方法
CN112015368B (zh) * 2020-08-28 2021-08-27 海光信息技术股份有限公司 一种真随机数发生器及电子设备

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02219117A (ja) * 1989-02-20 1990-08-31 Nec Corp マイクロプロセッサ制御回路
JPH03250328A (ja) * 1990-02-28 1991-11-08 Nec Corp 情報処理装置
JP2004054350A (ja) * 2002-07-16 2004-02-19 Sony Corp クロック切り替え回路
JP2005174206A (ja) * 2003-12-15 2005-06-30 Sony Corp 真性乱数生成装置または真性乱数生成方法
JP2007323135A (ja) * 2006-05-30 2007-12-13 Fdk Corp 物理乱数生成装置
JP2009205547A (ja) * 2008-02-28 2009-09-10 Toshiba Corp 乱数生成回路
JP2010117846A (ja) * 2008-11-12 2010-05-27 Nippon Telegr & Teleph Corp <Ntt> 乱数生成回路
WO2011039846A1 (ja) * 2009-09-29 2011-04-07 株式会社 東芝 乱数生成回路
JP2012129784A (ja) * 2010-12-15 2012-07-05 Nippon Telegr & Teleph Corp <Ntt> 乱数生成回路

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4799259A (en) * 1986-04-10 1989-01-17 Rockwell International Corporation Monolithic random digital noise generator
JP2001184255A (ja) 1999-12-27 2001-07-06 Casio Comput Co Ltd 電子機器、メモリ制御プログラムが記憶された記憶媒体
DE102004047425B4 (de) * 2004-09-28 2007-06-21 Micronas Gmbh Zufallszahlengenerator sowie Verfahren zur Erzeugung von Zufallszahlen
US9231567B2 (en) * 2012-09-06 2016-01-05 Lattice Semiconductor Corporation Test solution for a random number generator
US9361066B2 (en) * 2013-04-30 2016-06-07 The United States Of America As Represented By The Secretary Of The Air Force. Random number generator using ring oscillators with initial delay
CN104572014B (zh) * 2013-10-15 2019-02-22 恩智浦美国有限公司 具有重复激活的振荡器的真随机数生成器
JP6419614B2 (ja) * 2015-03-17 2018-11-07 株式会社東芝 データ生成装置および認証システム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02219117A (ja) * 1989-02-20 1990-08-31 Nec Corp マイクロプロセッサ制御回路
JPH03250328A (ja) * 1990-02-28 1991-11-08 Nec Corp 情報処理装置
JP2004054350A (ja) * 2002-07-16 2004-02-19 Sony Corp クロック切り替え回路
JP2005174206A (ja) * 2003-12-15 2005-06-30 Sony Corp 真性乱数生成装置または真性乱数生成方法
JP2007323135A (ja) * 2006-05-30 2007-12-13 Fdk Corp 物理乱数生成装置
JP2009205547A (ja) * 2008-02-28 2009-09-10 Toshiba Corp 乱数生成回路
JP2010117846A (ja) * 2008-11-12 2010-05-27 Nippon Telegr & Teleph Corp <Ntt> 乱数生成回路
WO2011039846A1 (ja) * 2009-09-29 2011-04-07 株式会社 東芝 乱数生成回路
JP2012129784A (ja) * 2010-12-15 2012-07-05 Nippon Telegr & Teleph Corp <Ntt> 乱数生成回路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
天木健彦 他3名: "「マルコフモデルによるオシレータサンプリング方式真性乱数生成器の乱数品質解析」", 第22回 回路とシステム軽井沢ワークショップ 論文集 [CD−ROM], JPN6020030387, 20 April 2009 (2009-04-20), pages 474 - 475, ISSN: 0004401148 *

Also Published As

Publication number Publication date
US10452358B2 (en) 2019-10-22
US20180196641A1 (en) 2018-07-12

Similar Documents

Publication Publication Date Title
JP2018112861A (ja) 乱数生成装置、集積回路
US6914460B1 (en) Counter-based clock doubler circuits and methods
JP5522050B2 (ja) クロック分周回路、クロック分配回路、クロック分周方法及びクロック分配方法
CN101378258B (zh) 一种模块化分频单元及分频器
TW201430699A (zh) 用於亂數產生器之延遲裝置及方法及其亂數產生器
CN111404550B (zh) 模数转换器及其时钟产生电路
JP2010158004A (ja) 遅延回路及び可変遅延回路
CN114968179A (zh) 一种基于时钟抖动和亚稳态的真随机数产生电路
KR20020049387A (ko) 고속 동작이 가능하고 순차적으로 2진 카운터 순서를 갖는카운터 회로 및 그 카운팅 방법
KR101923012B1 (ko) 고속 프로그래밍 가능 클록 분할기
US7012985B1 (en) Frequency division of an oscillating signal involving a divisor fraction
KR20050099714A (ko) 고집적 저전력 글리치리스 클럭 선택회로 및 이를구비하는 디지털 프로세싱 시스템
CN208999990U (zh) 真随机数发生器
JP6219118B2 (ja) 発振器
JP2004056717A (ja) 半導体装置、システムボードおよび多相クロック発生回路
US9966964B1 (en) Multi-phase divider
CN109787619B (zh) 多相位时钟产生电路
CN108781080A (zh) 分频电路、分路器电路、以及半导体集成电路
JP2003216268A (ja) クロック選択回路およびクロック選択方法
CN117277998B (zh) 一种应用于fpga的分频信号调整电路
JP6527567B2 (ja) 発振器
KR101068628B1 (ko) 클럭 발생 회로
KR20150090861A (ko) 클럭 분할기
US6701423B2 (en) High speed address sequencer
CN118041344A (zh) 一种输出占空比可调的时钟分频器

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191217

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201007

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20201203