(57)【要約】【課題】熱雑音による電流変化を利用したアナログ的な手段とディジタル的な手段の双方を用いて乱数を発生する時のランダム性を強化する。【解決手段】半導体デバイスの熱雑音による電流変化を利用してビット列を発生する第１の乱数発生部（１）と、第１の乱数発生部で発生されたビット列を入力し、帰還路付きのシフトレジスタを用いて乱数を発生する第２の乱数発生部（２）を有する。第１の乱数発生部は、前記電流変化に基いて発振周波数が変化される発振器を用いて第１のクロック信号（１０）を発生する第１のクロック発生部（１１）と、第１のクロック信号よりも周波数の低い第２のクロック信号（１２）を発生する第２のクロック発生部（１３）と、第２クロック信号に同期して第１クロック信号をラッチするサンプル部（１４）を有し、サンプル部からの出力に基いて前記ビット列（３）を発生する。【選択図】        図１
2005044090.tif 000002
【特許請求の範囲】
【請求項１】
半導体デバイスの熱雑音による電流変化を利用してビット列を発生する第１の乱数発生部と、前記第１の乱数発生部で発生されたビット列を入力し、帰還路付きのシフトレジスタを用いて乱数を発生する第２の乱数発生部を有し、
前記第１の乱数発生部は、前記電流変化に基いて発振周波数が変化される発振器を用いて第１のクロック信号を発生する第１のクロック発生部と、前記第１のクロック信号よりも周波数の低い第２のクロック信号を発生する第２のクロック発生部と、前記第２クロック信号に同期して前記第１クロック信号をラッチするサンプル部を有し、前記サンプル部からの出力に基いて前記ビット列を発生することを特徴とする乱数発生装置。
【請求項２】
前記第２のクロック発生部は、前記電流変化に基いて発振周波数が変化される発振器を有することを特徴とする請求項１記載の乱数発生装置。
【請求項３】
前記第１のクロック発生部は、前記電流変化を受ける第１の発振器と前記第１の発振器の発振出力を入力して発振する第２の発振器とを有することを特徴とする請求項１又は２記載の乱数発生装置。
【請求項４】
前記第１の発振器は前記電流変化を生ずる電流源を有することを特徴とする請求項３記載の乱数発生装置。
【請求項５】
前記電流源が動作電源系の同相のノイズ成分をキャンセルする差動アンプを出力段に有することを特徴とする請求項４記載の乱数発生装置。
【請求項６】
前記第１の乱数発生部は、前記サンプル部からの出力をｎビット単位でそのｎビットの論理値１と０の偏りに応じた論理値１又は０に変換して前記第２の乱数発生部に前記ビット列を出力するビットスムース部を有することを特徴とする請求項１記載の乱数発生装置。
【請求項７】
前記ｎビットを可変可能に指定する制御レジスタを有し、前記制御レジスタはバスに接続されることを特徴とする請求項６記載の乱数発生装置。
【請求項８】
前記第２の乱数発生部で発生される乱数を保持するデータレジスタを有し、前記データレジスタはバスに接続されることを特徴とする請求項６記載の乱数発生装置。
【請求項９】
半導体基板に請求項７又は８記載の乱数発生装置を有し、前記バスに接続された中央処理装置を有することを特徴とする半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は乱数発生装置に係り、例えば暗号演算等セキュリティ機能に必要なシステムに使用される組み込み型マイクロコントローラ若しくはデータプロセッサ等の半導体集積回路に適用して有効な技術に関する。
【０００２】
【従来の技術】
ＩＤや暗号キーの付与等に利用される乱数発生装置には高いランダム性が要求される。例えば公知のＭ（Ｍａｘｉｍｕｍ  Ｌｅｎｇｔｈ  Ｓｅｑｕｅｎｃｅ）系列疑似乱数発生回路はシフトレジスタを有しそのシフトレジスタの所定ノードをＸＯＲ（排他的論理和ゲート）を介してシフトレジスタの先頭に帰還させる構成を有し、疑似乱数ビット列を発生する。このＭ系列疑似乱数発生回路は、シフトレジスタの初期値とシフトクロック数がわかれば、出力のビットが分かり、また、シフトレジスタのビット数にて決まる周期で、乱数列が繰り返す再現性がある為、真の乱数列を発生することはできない。
【０００３】
従来、高いランダム性を実現するために、ノイズ発生源が発生するノイズを帯域制限増幅器により帯域制限して増幅し、これをサンプルホールド回路で標本化してディジタル信号に変換し、得られた信号をＭ系列符号発生回路においてソフトウェア処理で乱数を発生する乱数発生回路が提供されている（特許文献１）。また、熱雑音を増幅し、これを電圧制御発振器に入力しては低周波数信号を発生し、この低周波数信号に同期して高周波数信号を順次ラッチし、これをフォンノイマンコレクタで論理値１と０の配分をバランスさせて乱数を発生する技術が提供されている（非特許文献１の図１、図２、図３）。
【０００４】
【特許文献１】
特開２０００−６６８７９号公報
【非特許文献１】
Ｂｅｎｊａｍｉｎ  Ｊｕｎ  ａｎｄ  Ｐａｕｌ  Ｋｏｃｋｅｒ，  ”ＴＨＥ  ＩＮＴＥＬ  ＲＡＮＤＯＭ  ＮＵＭＢＥＲ  ＧＥＮＥＲＡＴＯＲ”，  ＣＲＹＰＴＯＧＲＡＰＨＹ  ＲＥＳＥＡＲＣＨ，  ＩＮＣ．  ＷＨＩＴＥ  ＰＡＰＥＲ  ＰＲＥＰＡＲＥＤ  ＦＯＲ  ＩＮＴＥＬ  ＣＯＲＰＯＲＡＴＩＯＮ，  ｐ．１−８，  Ａｐｒｉｌｌ  ２２，  １９９９．
【０００５】
【発明が解決しようとする課題】
上記従来技術はノイズによるランダム性に着目しているが、ノイズのランダム成分を取り出すための手段である、ノイズの帯域制限増幅器、熱雑音の増幅について具体的な記載がない。また、ノイズによるランダム性の強化をＭ系列符号発生回路やフォンノイマンコレクタというディジタル回路部分で行うだけである。アナログ回路部分に対してもランダム性を更に強化する余地のあることが本発明者によって見出された。更に、ディジタル回路部分に対してもＭ系列疑似乱数発生回路又はフォンノイマンコレクタ以外にランダム性を強化する余地がある。
【０００６】
本発明の目的は、熱雑音による電流変化を利用したアナログ的な手段とディジタル的な手段の双方を用いて乱数を発生する時のランダム性を強化することにある。
【０００７】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【０００８】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００９】
乱数発生装置は、半導体デバイスの熱雑音による電流変化を利用してビット列（３）を発生する第１の乱数発生部（１）と、前記第１の乱数発生部で発生されたビット列を入力し、帰還路付きのシフトレジスタを用いて乱数を発生する第２の乱数発生部（２）を有する。前記第１の乱数発生部は、前記電流変化に基いて発振周波数が変化される発振器を用いて第１のクロック信号（１０）を発生する第１のクロック発生部（１１）と、前記第１のクロック信号よりも周波数の低い第２のクロック信号（１２）を発生する第２のクロック発生部（１３）と、前記第２クロック信号に同期して前記第１クロック信号をラッチするサンプル部（１４）を有し、前記サンプル部からの出力信号（１６）に基いて前記ビット列を発生する。
【００１０】
Ｍ系列疑似乱数発生回路と類似の第２の乱数発生部には前段の第１の乱数発生部からのビット列を供給するので、Ｍ系列疑似乱数発生回路における乱数の周期性に対してランダム性を向上させることができる。このとき、第１の乱数発生部における第１のクロック発生部では半導体デバイスの熱雑音による電流変化に基いて発振周波数が変化される発振器を用いて第１のクロック信号を発生するから、制限帯域増幅による熱雑音の増幅に比べて熱雑音のランダム成分を容易に得ることができ、この点において、ランダム性の向上に資することができる。
【００１１】
本発明の具体的な形態として、前記第２のクロック発生部は、前記電流変化に基いて発振周波数が変化される発振器を有する。これにより、サンプル部におけるサンプリングされる同期信号の他にサンプリングする信号にもランダム性が付加され、乱数のランダム性強化に資することができる。
【００１２】
前記第１のクロック発生部は、前記電流変化を受ける第１の発振器（２０）と前記第１の発振器の発振出力を入力して発振する第２の発振器（２２）とを有する。第２の発振器は電圧制御発振器であり、第１の発振器は第２の発振器の制御電圧を生成する。直列２段の発振器を用いることにより熱雑音による電流変化から周波数変化のランダム性を大きく採ることが可能になり、乱数のランダム性強化につながる。
【００１３】
前記第１の発振器は例えば前記電流変化を生ずる電流源（４０）を有する。本発明の望ましい形態では、前記電流源が動作電源系の同相のノイズ成分をキャンセルする差動アンプ（５０）を出力段に有するのがよい。半導体デバイスの熱雑音に基板電流の影響が重畳されるような場合に熱雑音によるランダム成分を大きく取り出すことができるからでる。
【００１４】
本発明の望ましい形態では、前記第１の乱数発生部は、前記サンプル部からの出力をｎビット単位でそのｎビットの論理値１と０の偏りに応じた論理値１又は０に変換して前記第２の乱数発生部に前記ビット列を出力するビットスムース回路（ビットスムース部）（１５）を有する。アナログ的な乱数発生回路の出力に、製造バラツキ等によりビット列の０と１に偏りができた場合でも、偏りを補正して乱数のランダム性を向上させることができる。
【００１５】
前記ｎビットを可変可能に指定する制御レジスタ（９０）を有し、前記制御レジスタはバスに接続される。ビット列の０と１に偏りが大きければｎのビット数を大きくしてランダム性能を確保し、偏りが小さければｎのビット数を小さく乱数発生効率を向上させる選択が可能になる。
【００１６】
前記第２の乱数発生部で発生される乱数を保持するデータレジスタ（８３）を有し、前記データレジスタはバスに接続される。
【００１７】
本発明の具体的な形態として、半導体基板に上記乱数発生装置と、前記バスに接続された中央処理装置を搭載する。データレジスタの乱数に対する処理、制御レジスタに対する制御データの設定を中央処理装置の動作プログラムに従って行うことができる。
【００１８】
【発明の実施の形態】
《乱数発生装置の概要》
図１には本発明の一例に係る乱数発生装置５が示される。乱数発生装置５は、半導体デバイスの熱雑音による電流変化を利用してビット列３を発生する第１の乱数発生部（前段乱数発生部）１と、前記第１の乱数発生部１で発生されたビット列３を入力し、帰還路付きのシフトレジスタを用いて乱数４を発生する第２の乱数発生部（終段乱数発生部）２を有する。前記ビット列３は例えばビットシリアルなデータ列とされる。前記乱数４は例えば８ビットとされる。ここで、乱数発生装置５は、半導体集積回路にオンチップされ、半導体デバイスとは当該半導体集積回路上に形成されるポリシリコン抵抗や抵抗として機能されるＭＯＳトランジスタなどのデバイスを意味する。
【００１９】
前記第１の乱数発生部１は、前記電流変化に基いて発振周波数が変化される発振器を用いて第１のクロック信号（高速クロック信号）１０を発生する第１のクロック発生部（高速クロック発振器）１１と、前記第１のクロック信号１０よりも周波数の低い第２のクロック信号（低速クロック信号）１２を発生する第２のクロック発生部（低速クロック発振器）１３と、前記第２クロック信号１２に同期して前記第１クロック信号１０をラッチするサンプル部（サンプリング用ラッチ回路）１４を有する。図２に例示されるようにサンプリング用ラッチ回路１４は周期がランダムに変わる高速クロック信号１０を低速クロック信号１２の立ち上りエッジに同期してラッチしていく。また、ラッチのタイミングは立ち下がりエッジに同期しても良い。高速クロック信号１０の周期がランダムに変わるから低速クロック信号１２の周期が一定でもラッチされるデータの論理値はランダムに変化する。
【００２０】
Ｍ系列疑似乱数発生回路と類似の回路構成を有する終段乱数発生部２には前段乱数発生部１からのビット列３を供給するので、Ｍ系列疑似乱数発生回路が発生する乱数の周期性に対してランダム性を向上させることができる。このとき、前段乱数発生部１における高速クロック発振器１１では半導体デバイスの熱雑音による電流変化に基いて発振周波数が変化される発振器を用いて高速クロック信号１０を発生するから、熱雑音用ＭＯＳトランジスタに流れる電流の熱雑音によるゆらぎを制限帯域増幅によって増幅するような場合に比べて熱雑音のランダム成分（即ち熱雑音のゆらぎによるランダム成分）を容易に得ることができ、この点において、ランダム性の向上に資することができる。
【００２１】
ここでは、前記低速クロック発振器１３も、半導体デバイスの熱雑音による電流変化に基いて発振周波数が変化される発振器を有する。これにより、サンプリング用ラッチ回路１４におけるサンプリングされる信号である高速クロック信号１０の他にサンプリングする信号である低速クロック信号１２にもランダム性即ちジッタ成分が付加され、乱数のランダム性強化に資することができる。要するに、図２において、高速クロック信号１０と共に低速クロック信号１２もランダムなジッタを有することになり、低速クロック信号１２の立ち上りタイミングもランダムに変化するようになる。
【００２２】
前記高速クロック発振器１１は、前記半導体デバイスの熱雑音による電流変化を受ける第１の発振器（変調用発振器）２０と前記変調用発振器２０の発振出力（変調用クロック信号）２１を入力して発振する第２の発振器（電圧制御発振器）２２とを有する。変調用クロック信号２１は電圧制御発振器２２の制御電圧になる。直列２段の発振器２０、２２を用いることにより熱雑音による電流変化から周波数変化のランダム性を大きく採ることが可能になり、乱数のランダム性強化につながる。
【００２３】
この例では、前記サンプリング用ラッチ回路１４の次段にはビットスムース回路１５が配置される。ビットスムース回路１５は、前記サンプリング用ラッチ回路１４からの出力ビット列１６をｎビット単位でそのｎビットの論理値１と０の偏りに応じた論理値１又は０に変換し、変換結果を前記ビット列３として前記終段乱数発生部２に出力する。アナログ的な乱数発生回路である前段乱数発生部１の出力に、製造バラツキ等によりビット列の０と１に偏りができた場合でも、偏りを補正して乱数のランダム性を向上させることができる。
【００２４】
《終段乱数発生部》
図３には前記終段乱数発生部２の詳細が例示される。終段乱数発生部２はＭ系列疑似乱数発生回路と類似の回路構成を有する。この回路例はシフトレジスタ長が３１ビットの例である。３１ビットのシフトレジスタを構成する３１個のラッチ回路ＬＴ０〜ＬＴ３０を有する。ラッチ回路ＬＴ０〜ＬＴ３０は例えばＤラッチにより構成され、シフトクロック信号ＶＣの変化に同期してデータをラッチする。特に図示はしないが夫々のラッチ回路ＬＴ０〜ＬＴ３０は、マスタ段とスレーブ段を有し、シフトクロック信号ＶＣのサイクル毎に、マスタ段からスレーブ段への内部転送と、マスタ段の入力ラッチ動作とをノン・オーバラップで行うことによってシフトレジスタ動作を行う。
【００２５】
２８番目のラッチ回路ＬＴ２７の出力は前段乱数発生部１からのビット列３と共にＸＯＲゲート３０に供給されて初段ラッチ回路ＬＴ０に帰還される。３１ビットの既知のＭ系列疑似乱数発生回路ではシフトレジスタの最終出力段と２８番目のラッチ回路出力とのＸＯＲを初段データラッチに帰還させる。これ故に、既知のＭ系列疑似乱数発生回路では、シフトレジスタの初期値とシフトクロック数がわかれば、出力のビットが分かり、また、シフトレジスタのビット数にて決まる周期で、乱数列が繰り返す再現性があり、真の乱数列を発生することはできない。これに対し、前記終段乱数発生部２ではシフトレジスタの帰還系に配置されたＸＯＲゲート３０には前段乱数発生部１からのランダムなビット列３が供給されるので、乱数のランダム性が飛躍的に向上する。
【００２６】
終段側のラッチ回路ＬＴ２３〜ＬＴ３０の８ビットは出力ゲート３１を介して８ビット単位で乱数４を出力する。ＤＴは出力ゲート３１の制御信号である。尚、特に図示はしないが、１６ビットの乱数データが必要であれば、シフトレジスタの１６ビット分の出力を乱数として並列出力すればよい。
【００２７】
《高速クロック発振器》
図４には電圧制御発振器２２の一例が示される。電圧制御発振器２２は電流源回路３５、直列５段のリングオシレータ３６及び出力ドライバ３７を有する。リングオシレータ３６には、前記変調用クロック信号２１をゲートに受ける電流源ＭＯＳトランジスタＭ１に流れる電流がミラー電流として供給され、これがリングオシレータの動作電流となる。リングオシレータの終段は出力ドライバ３７で位相反転されて高速クロック信号１０となる。高速クロック信号１０は前記変調用クロック信号２１の周期のランダム性に依存して変調されジッタを持つことになる。
【００２８】
図５には電圧制御発振器２２の別の例が示される。図４の構成に対し、電流源回路３５のミラー回路に流れる電流を前記変調用クロック信号２１に同期して切り替える。即ち、発振周波数を決めるＭＯＳトランジスタＭ１に流れる電流Ｉが，前記変調用クロック信号２１の周期に同期して定電流源で決まる電流Ｉ１，Ｉ２とされ、これによって高速クロック信号１０はジッタを持つことになる。
【００２９】
図６には変調用発振器２０の一例が示される。変調用発振器２０は、熱雑音電流源４０、電流制御回路４１、リングオシレータ４２、１／Ｍ分周器４３、及び１／Ｎ分周器４４によって構成される。熱雑音電流源４０は半導体デバイスの熱雑音による電流変化を生ずる。この熱雑音電流源４０に流れる電流には熱雑音成分が重畳される。この熱雑音電流源４０の電流がカレントミラー負荷を介してリングオシレータ４２に動作電流として与えられる。その動作電流は熱雑音に呼応してランダムに歪み、それによって変調用クロック信号２１の周期がランダムに変動する。変調用クロック信号２１の１／Ｍ分周信号、１／Ｎ分周信号のランダムな周期の変動に従ってリングオシレータ４２の電流制御ＭＯＳトランジスタＭ２，Ｍ３のコンダクタンスをランダムに変化させる。それらランダムなコンダクタンス変化によっても変調用クロック信号２１の周期に対するランダム性が強化される。このように、熱雑音電流源４０によるランダムなジッタの生成、リングオシレータ４２の分周出力で動作電流をフィードバック制御することによる新たなジッタの生成を経ることにより、変調用クロック信号２１には常に新たなジッタが重畳され、変調用クロック信号２１の周期には高いランダム性が獲得されている。
【００３０】
図７には熱雑音電流源４０の一例が示される。熱雑音電流源４０は差動アンプ５０を有し、一対の差動入力ＭＯＳトランジスタＭ５，Ｍ６のゲートには、図示を省略する定電流源に流れる電流の電流ミラー回路で生成される電圧Ｖ１，Ｖ２が印加される。差動入力ＭＯＳトランジスタＭ５，Ｍ６のゲートに至る経路には比較的高抵抗のｎチャンネル型ＭＯＳトランジスタＭ７，Ｍ８が熱雑音を発生させるために挿入され、ゲートに電源電圧ＶＤＤが接続される。差動アンプ５０のパワースイッチＭＯＳトランジスタＭ９のゲートには同じく図示を省略する定電流源に流れる電流の電流ミラー回路で生成される電圧Ｖ３が印加される。ＭＯＳトランジスタＭ９のゲートに至る経路には比較的高抵抗のｐチャンネル型ＭＯＳトランジスタＭ１０が熱雑音を発生させるために挿入され、当該ＭＯＳトランジスタＭ１０のゲートに回路の接地電圧ＶＳＳが接続される。差動アンプ５０の一対の差動入力には同じＤＣ電圧Ｖ１，Ｖ２を発生する電流源が接続されるために、一対の差動入力に至る双方の回路におけるアンバランス成分は熱雑音成分である。従って、差動アンプ５０は電源系や基板電流によるノイズ等の同相ノイズをキャンセルして熱雑音成分のアンバランス分に応ずる熱雑音電流Ｉを生成する。要するに、熱雑音によるランダム成分に応ずる電流Ｉを容易に発生させることができる。
【００３１】
図８には熱雑音電流源４０の別の例が示される。同図に示される回路は図７のような同相成分のキャンセルについて考慮していない回路構成であり、定電流源５１に流れる電流の電流ミラー回路によって構成され、比較的高抵抗のｐチャンネル型ＭＯＳトランジスタＭ１１とｎチャンネル型ＭＯＳトランジスタＭ１２が熱雑音を発生させるために挿入されて構成され、回路構成は図７よりも簡素化されている。
【００３２】
《低速クロック発振器》
図９には低速クロック発振器１３の例が示される。低速クロック発振器１３は、熱雑音電流源回路５５、５６、ハイレベルでオンする充放電スイッチ回路６０、６１コンパレータ５７，５８、及びフリップフロップ５９によって構成される。熱雑音電流源回路５５には図７又は図８で説明した回路構成を持つ熱雑音電流源回路４０を利用してもよい。また、熱雑音電流源回路５６には図７又は図８で説明した回路構成のうち、ＮＭＯＳ及びＰＭＯＳを夫々ＰＭＯＳ及びＮＭＯＳに変更し、更に最終段のＧＮＤ接続のＮＭＯＳをＶＤＤ接続のＰＭＯＳへ変更した構成にすることで熱雑音電流源回路として用いることが可能となる。コンパレータ５７の反転入力端子（−）には相対的に高いレベルの参照電位用電源６２が与えられる、コンパレータ５８の非反転入力端子（＋）には相対的に低いレベルの参照電位電源６３が与えられる。フリップフロップ５９の出力端子Ｑ電圧がハイレベルのとき、反転出力端子ＱＮの出力電圧はローレベルにされ、このとき、充放電スイッチ回路６０がオン、充放電スイッチ回路６１がオフにされ、これによって充電容量６４に対する充電動作が行なわれている。コンパレータ５７の非反転入力端子（＋）とコンパレータ５８の反転入力端子（−）には充電容量６４の充電電圧が印加される。充電電圧が前記高レベル参照電位を超えるとコンパレータ５７の出力がハイレベルに反転し、フリップフロップ５９がリセットされ、出力端子Ｑがローレベルに反転され、出力端子ＱＮがハイレベルに反転される。出力端子Ｑのローレベル変化に同期してクロック信号１２が立ち上りエッジ変化される。出力端子ＱＮのハイレベル変化に同期して、今度は充放電スイッチ回路６０がオフ、充放電スイッチ回路６１がオンにされ、これによって充電容量６４に対する放電動作が行なわれている。充電容量６４の端子電圧が前記低レベル参照電位以下にされるとコンパレータ５８の出力がハイレベルに反転し、フリップフロップ５９がセットされ、出力端子Ｑがハイレベルに反転され、出力端子ＱＮがローレベルに反転される。出力端子Ｑのハイレベル変化に同期してクロック信号１２が立ち下がりエッジ変化される。以上の動作を繰返すことにより、充電容量６４に対する充放電動作によって現れる三角波を元にして矩形の低速クロック信号１２が形成される。熱雑音電流源回路５５、５６は熱雑音電流を発生するので、それが充放電時間に影響し、低速クロック信号１２の周期にはランダムなばらつきを生ずる。
【００３３】
図１０には低速クロック発振器１３の別の例が示される。低速クロック発振器１３は、電流源回路６５、リングオシレータ６６、出力ドライバ６７、三角波発生回路６８、及びインバータ６９によって構成される。電流源回路６５には図７又は図８で説明した回路構成を持つ熱雑音電流源７０を利用してもよい。低速クロック発振器１３の基本発振周波数はリングオシレータ６６の構成で決まるが、リングオシレータ６６は熱雑音電流源７０による電流を動作電流とするから、リングオシレータ６６で生成されるクロック信号にはランダムな揺らぎによりジッタが重畳される。三角波回路６８は出力ドライバ６７から出力される周期信号のハイレベル期間で容量素子７１の充電を行い、出力ドライバ６７から出力される周期信号のローレベル期間で容量素子７１の放電を行って三角波を形成する。三角波はインバータ６９の論理閾値電圧にしたがって矩波に整形される。三角波には前記三角波発生回路６８が保有する容量素子７１及び高抵抗素子７２の影響によってランダムなジッタが加わり、インバータ６９から出力される矩形波はジッタをもった低速クロック信号１２として後段に出力される。
【００３４】
図１１には低速クロック発振器１３の更に別の例が示される。同図に示される低速クロック発振回路１３は図１０の構成に対し、インバータの出力に３個の１／２分周器７４，７５，７６を直列接続し、分周器７５の出力をリングオシレータ６６に、分周器７４の出力を三角波発生回路６８にフィードバックすることにより、リングオシレータ６６と三角波発生回路６８の動作電流に更にランダムなノイズ成分を重畳し、分周器７６から出力する低速クロック信号１２のジッタのランダム性を強化したものである。
【００３５】
《ビットスムース回路》
図１２にはサンプリング用ラッチ回路１４とビットスムース回路１５が例示される。サンプリング用ラッチ回路１４は直列８段のラッチ回路ＬＴ０〜ＬＴ７によってシフトレジスタを構成し、初段ラッチ回路ＬＴ０のデータ入力端子には高速クロック信号１０が供給され、夫々のラッチ回路ＬＴ０〜ＬＴ７のクロック端子には低速クロック信号１２が並列に供給される。特に図示はしないが夫々のラッチ回路ＬＴ０〜ＬＴ７は、マスタ段とスレーブ段を有し、低速クロック信号１２のサイクル毎に、マスタ段からスレーブ段への内部転送と、マスタ段の入力ラッチ動作とをノン・オーバラップで行うことによってシフトレジスタ動作を行う。
【００３６】
ビットスムース回路１５は、先頭から順番に２個づつデータラッチ回路の出力を受ける２入力型ＸＯＲゲートＧ１，Ｇ２，Ｇ３，Ｇ４を有する。更に、ＸＯＲゲートＧ１，Ｇ２の出力を受ける２入力型のＸＯＲゲートＧ５と、ＸＯＲゲートＧ３，Ｇ５の出力を受ける２入力型のＸＯＲゲートＧ６と、ＸＯＲゲートＧ４，Ｇ６の出力を受ける２入力型のＸＯＲゲートＧ７を有する。セレクタＳＥＬはＸＯＲゲートＧ１，Ｇ５，Ｇ６，Ｇ７の出力を選択信号Ｓ１〜Ｓ４によって選択する。ＸＯＲゲートＧ１はデータラッチ回路ＬＴ０，ＬＴ１にラッチされた２ビットの論理値１の個数が奇数なら１を、偶数又は０個なら０を出力する。ＸＯＲゲートＧ５はデータラッチ回路ＬＴ０〜ＬＴ３にラッチされた４ビットの論理値１の個数が奇数なら１を、偶数又は０個なら０を出力する。以下同様にＸＯＲゲートＧ６、Ｇ７はその入力に関係するデータラッチ回路にラッチされた複数ビットの論理値１の個数が奇数なら１を、偶数又は０個なら０を出力する。これによってサンプリング用ラッチ回路１４の先頭２ビット、４ビット、６ビット、又は８ビットをその論理値１の個数の偶数奇数に従って論理値１又は０の１ビットに圧縮、換言すれば平均化する。２ビット毎の圧縮を利用する場合には前記信号Ｓ１でＸＯＲゲートＧ１の出力を選択して低速クロック信号１２の２サイクルに一度の割合でその選択出力を利用すればよい。４ビット毎の圧縮を利用する場合には前記信号Ｓ２でＸＯＲゲートＧ５の出力を選択して低速クロック信号１２の４サイクルに一度の割合でその選択出力を利用すればよい。６ビット毎の圧縮を利用する場合には前記信号Ｓ３でＸＯＲゲートＧ６の出力を選択して低速クロック信号１２の６サイクルに一度の割合でその選択出力を利用すればよい。８ビット毎の圧縮を利用する場合には前記信号Ｓ４でＸＯＲゲートＧ７の出力を選択して低速クロック信号１２の８サイクルに一度の割合でのそ選択出力を利用すればよい。これにより、サンプリング用ラッチ回路１４にサンプリングされるデータ列に論理値１，０の偏りがあっても、セレクタＳＥＬからはそのような偏りを平均化したビット列３を得ることができる。
【００３７】
サンプリング用ラッチ回路１４からの出力が完全にランダムならば，０／１の出現確率は，１：１である。しかしながら，回路素子バラツキ、動作条件等で、０／１の出現確率が１：１にならない場合がある。よって、サンプリング用ラッチ回路１４の次段に、ビットスムース回路１５が設けられることにより、０／１の出現に偏りの少ないランダムなビット列３を得ることができる。これは乱数のランダム性を向上させるのに資することができる。
【００３８】
《乱数発生装置の制御》
図１３には乱数発生装置５の全体が例示される。乱数発生装置５は乱数発生部８０と制御部８１から成る。乱数発生部８０は、前記変調用発振器２０、電圧制御発振器２２、低速クロック発振器１３、サンプリング用ラッチ回路１４、ビットスムース回路１５、終段乱数発生部２、乱数データレジスタ８３、低速クロックカウンタ（ＶＢカウンタ）８４、及びスムースビット数カウンタ（ＶＣカウンタ）８５を有し、前記乱数を８ビット単位で乱数データレジスタ８３に保持する。制御部８１は制御レジスタ９０、ビットスムース・カウンタ制御回路９１、乱数生成終了検出回路９２、及びフラグ制御回路９３を有し、乱数発生装置５のリセット、スタンバイ、動作クロック制御、レジスタ８３，９０のリード・ライト制御などを行う。
【００３９】
制御レジスタ９０はビットスムース回路１５におけるスムースビット数の指定ビットＳＭＴＨ１，ＳＭＴＨ２、乱数データレジスタ８３が保有する乱数の有効ビットＤＶＡＬＩＤ等を有する。ビットスムース・カウンタ制御回路９１はスムースビット数の指定ビットＳＭＴＨ１，ＳＭＴＨ２を入力し、指定されるスムースビット数に応じて選択信号Ｓ１〜Ｓ４の一つを選択レベルにする。これによってビットスムース回路１５のセレクタＳＥＬが選択動作され、ＶＢカウンタ８４ではシフトクロック信号ＶＣの１サイクルを規定する低速クロック信号１２のカウント数が決定される。例えばスムースビット数が８ビットであれば、選択信号Ｓ４が選択レベルにされ、ビットスムース回路１５はセレクタＳＥＬにてＸＯＲゲートＧ７の出力を選択し、ＶＢカウンタ８４は低速クロック信号１２の８サイクルを計数する毎にシフトクロック信号ＶＣを１サイクル変化させる。終段乱数発生回路２はシフトクロック信号ＶＣのサイクル毎にシフト動作を行ってビットムース回路１５から出力されるビット列をラッチしていく。ＶＣカウンタ８５はシフトクロック信号ＶＣのサイクル数を計数する。乱数生成終了検出回路９２はＶＣカウンタ８５の計数値から、最初の３１カウントと、その後の８カウント毎のカウントアップを検出する。最初の３１カウントのカウントアップを待てば、その後は８カウント毎にラッチ回路ＬＴ２４〜ＬＴ３０に乱数がシフト入力されることになる。カウントアップの検出信号ＤＴは終段乱数発生部２とフラグ制御回路９３に与えられる。終段乱数発生部２はカウントアップの検出毎に、ゲート回路３１から８ビットの乱数を乱数データレジスタ８３にロードする。フラグ検出回路９３は、カウントアップの検出毎に、信号ＲＳにてＶＣカウンタ８５の計数値を初期値に戻し、有効ビットＤＶＡＬＩＤを有効にセットし、また、割込み要求信号ｒｎｄｉを外部に出力する。これにより、割込み要求に応答する回路、例えば図示を省略する中央処理装置が乱数データレジスタ８３の乱数をデータバスＤＢからリードして、所定の処理を行う。乱数データレジスタ８３の指定は例えばアドレスバスＡＢから与えられるアドレス信号で行なわれる。また、有効ビットＤＶＡＬＩＤの監視を行う図示を省略する外部回路が有効ビットＤＶＡＬＩＤのセット状態に応答して乱数データレジスタ８３の乱数をリードするようにしてもよい。乱数データレジスタ８３に対する乱数リードを検出した後、前記有効ビットＤＶＡＬＩＤは無効にリセットされる。
【００４０】
《半導体集積回路》
図１４には乱数発生装置５を搭載した半導体集積回路、例えばマイクロプロセッサ１００が例示される。マイクロプロセッサ１００は、ＣＭＯＳなどの半導体集積回路製造技術により単結晶シリコンのような１個の半導体基板に形成される。
【００４１】
マイクロプロセッサ１００は、中央処理装置（ＣＰＵ）１０１、ＣＰＵ１０１の処理プログラムを保有するリード・オンリ・メモリ（ＲＯＭ）１０２、ＣＰＵ１０１のワーク領域に利用されるランダム・アクセス・メモリ（ＲＡＭ）１０３、乱数発生装置（ＲＮＧ）５、割込みコントローラ（ＩＲＣ）１０４、及び入出力回路（Ｉ／Ｏ）１０５を有し、それらはデータバスＤＢとアドレスバスＡＢ等で接続される。割込みコントローラ１０４は前記割込み要求信号ｒｎｄｉに代表される内外の割込み要求信号に対する優先制御及びマスク制御を行ってＣＰＵ１０１に割込み信号ＩＲＱを出力する。ＣＰＵ１０１は命令のフェッチと解読を行って当該命令を実行するための演算制御を行う。ＣＰＵ１０１は、割込み信号ＩＲＱによって割込みが指示されると、現在実行中の命令実行を中断し、割込み要因に応答する処理プログラムに命令実行シーケンスを変更し、その処理プログラムを実行した後、中断した元の処理プログラムの実行に復帰する。例えばＣＰＵ１０１は乱数データレジスタ８３から読み込んだ乱数を用いて所定の処理を行う。
【００４２】
以上説明した実施の形態によれば以下の作用効果を得る。
【００４３】
（１）Ｍ系列疑似乱数発生回路と類似の終段乱数発生部２には前段乱数発生部１からのビット列を供給するので、Ｍ系列疑似乱数発生回路における乱数の周期性に対してランダム性を向上させることができる。このとき、前段乱数発生部１における高速クロック発振器１１では半導体デバイスの熱雑音による電流変化に基いて発振周波数が変化される発振器を用いて高速クロック信号１０を発生するから、制限帯域増幅による熱雑音の増幅に比べて熱雑音のランダム成分を容易に得ることができ、この点において、ランダム性の向上に資することができる。即ち、高速クロック発振器１１は抵抗やＭＯＳトランジスタのチャネル抵抗の熱雑音による電流変化を利用したアナログ的な真性乱数発生器として位置付けることができる。アナログ的な真性乱数発生器の出力であるビット列には、周期的な再現性が無い為、後段のＭ系列疑似乱数発生回路としての終段乱数発生部２の出力ビット列の周期的なビット列の再現性を崩すことができ、また、Ｍ系列疑似乱数発生回路としての終段乱数発生部２は前段のアナログ的な真性乱数発生器としての前段乱数発生部１におけるプロセスバラツキなどによる偏りを分散させることができ、結果として、乱数発生装置５は、真の乱数発生が可能となる。換言すれば、アナログ的な乱数発生回路の出力に、製造バラツキ等により乱数ビット列の０と１に偏りができた場合でも、ディジタル的な乱数発生回路により、偏りを補正し、乱数性を向上させることが可能になる。
【００４４】
（２）アナログ的な乱数列を発生させる前段乱数発生部１として、２つの発振器１１，１３で発生される高速なクロック信号１０と低速なクロック信号１２を用い、それら高速クロック信号１０及び低速クロック信号１２はともに熱雑音を元にしたランダムなジッタを持ち、低速クロック信号１２により、高速クロック信号１０をサンプリング用ラッチ回路１４でサンプリングすることにより、サンプリングされたデータに論理値０，１のランダム性を得ることができる。
【００４５】
（３）ＸＯＲゲートを用いて複数ビット単位でその１，０の偏りを平均化するビットスムース回路１５を用いることにより、Ｍ系列疑似乱数発生回路に入力されるビット列に対するランダム性を更に強化することができる。
【００４６】
（４）ディジタル的な回路とアナログ的な回路を組み合わせることにより，コンパクトな回路で乱数発生を実現することが可能である。したがって、これをマイクロプロセッサなどの半導体集積回路の搭載して、暗号化処理などに用いることができる。
【００４７】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４８】
例えば、低速クロック発振器１３には熱雑音による電流変化が発振クロックに重畳される回路形式を積極的に採用しなくてもよい。終段乱数発生部２のシフトレジスタビット数は３１ビットに限定されず、例えばＭ系列疑似乱数発生回路の論理構成を流用して適宜変更可能である。また、以上で説明した各種発振器の回路構成は適宜変更可能である。本発明は暗号演算を専門に実施する暗号演算プロセッサ、乱数の必要なシステムに使用されるマイクロコントローラ、ランダムな自然現象をシミュレーションする装置、ＬＳＩテストで必要なランダムなテストパターンを発生する装置等に広く適用することができる。
【００４９】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００５０】
すなわち、本発明によれば、熱雑音による電流変化を利用したアナログ的な手段とシフトレジスタを用いたディジタル的な手段の双方を用いて乱数を発生する時のランダム性を強化することができる。
【図面の簡単な説明】
【図１】本発明の一例に係る乱数発生装置５のブロック図である。
【図２】夫々ランダムなジッタを有する低速クロック信号で高速クロック信号をラッチするタイミングを例示するタイミングチャートである。
【図３】終段乱数発生部の詳細を例示する論理回路図である。
【図４】電圧制御発振器の一例を示す回路図である。
【図５】電圧制御発振器の別の例を示す回路図である。
【図６】変調用発振器の一例を示す回路図である。
【図７】熱雑音電流源の一例を示す回路図である。
【図８】熱雑音電流源の別の例を示す回路図である。
【図９】低速クロック発振器の一例を示す回路図である。
【図１０】低速クロック発振器の別の例を示す回路図である。
【図１１】低速クロック発振器の更に別の例を示す回路図である。
【図１２】サンプリング用ラッチ回路とビットスムース回路を例示する論理回路図である。
【図１３】乱数発生装置の全体を例示するブロック図である。
【図１４】乱数発生装置を搭載した半導体集積回路の一例であるマイクロプロセッサのブロック図である。
【符号の説明】
１  前段乱数発生部（第１の乱数発生部）
２  終段乱数発生部（第２の乱数発生部）
３  ビット列
４  乱数
５  乱数発生装置
１０  高速クロック信号
１１  高速クロック発振器（第１のクロック発生部）
１２  低速クロック信号
１３  低速クロック発振器（第２のクロック発生部）
１４  サンプリング用ラッチ回路（サンプル部）
１５  ビットスムース回路
２０  変調用発振器（第１の発振部）
２２  電圧制御発振器（第２の発振部）
４０  熱雑音電流源
５０  差動アンプ
８３  乱数データレジスタ
９０  制御レジスタ
ＳＭＴＨ１，ＳＭＴＨ２  スムースビット数の指定ビット
ＤＢ  データバス
１００  マイクロプロセッサ（半導体集積回路）
１０１  中央処理装置
【図１】
2005044090.tif 000003
【図２】
2005044090.tif 000004
【図３】
2005044090.tif 000005
【図４】
2005044090.tif 000006
【図５】
2005044090.tif 000007
【図６】
2005044090.tif 000008
【図７】
2005044090.tif 000009
【図８】
2005044090.tif 000010
【図９】
2005044090.tif 000011
【図１０】
2005044090.tif 000012
【図１１】
2005044090.tif 000013
【図１２】
2005044090.tif 000014
【図１３】
2005044090.tif 000015
【図１４】
2005044090.tif 000016