(57)【要約】任意の標準論理合成ツールまたは同等な技法を用いて集積回路上へ組み込むための完全にディジタルなおよび／またはディジタルに合成可能な真性乱数発生器を提供するシステムおよび方法が提供される。これらのシステムおよび方法は、ビットを発生するための少なくとも１つのカウンタと、ビットをスクランブルするための少なくとも１つのシフタと、前記少なくとも１つのカウンタと協働するための少なくとも１つの第１発振器と、前記少なくとも１つのシフタと協働するための少なくとも１つの第２発振器とを含む。このシステムは、マイクロプロセッサを介して初期化されるディジタル入力信号に基づいて周波数摂動を提供するように構成される。
2006509286.tif 000002
【特許請求の範囲】
【請求項１】
第１の周波数で動作するマイクロプロセッサと、
ビットを発生するための少なくとも１つのカウンタと、
ビットをスクランブルするための少なくとも１つのシフタと、
前記少なくとも１つのカウンタと協働するための少なくとも一つの第１発振器と、
前記少なくとも１つのシフタと協働するための少なくとも一つの第２発振器とを備え、
前記発振器が、前記マイクロプロセッサを介して初期化されたディジタル入力信号に基づいて周波数摂動をもたらす、真性乱数発生システム。
【請求項２】
前記カウンタが初期設定ビット値を受け取るための初期設定レジスタを有する、請求項１に記載のシステム。
【請求項３】
前記初期設定ビット値が、前記マイクロプロセッサの初期設定書き込みの後縁にある、請求項２に記載のシステム。
【請求項４】
前記少なくとも１つの第１発振器が、第１の奇数のステージを有するリング発振器である、請求項３に記載のシステム。
【請求項５】
前記少なくとも１つの第１リング発振器が前記少なくとも１つのカウンタと協働して第２の周波数を提供する、請求項４に記載のシステム。
【請求項６】
前記少なくとも１つのシフタが、前記少なくとも１つの第２発振器によって第３の周波数で連続的に回転されるバレル・シフタである、請求項５に記載のシステム。
【請求項７】
前記少なくとも１つの第２発振器が、前記第１の奇数のステージと少なくとも２ステージだけ異なる第２の奇数のステージを有するリング発振器である、請求項６に記載のシステム。
【請求項８】
前記第３の周波数が前記第２の周波数と非同期である、請求項７に記載のシステム。
【請求項９】
前記第３の周波数が前記第１の周波数と非同期である、請求項８に記載のシステム。
【請求項１０】
前記第３の周波数が前記第１の周波数と非同期であり前記第１の周波数より速い、請求項８に記載のシステム。
【請求項１１】
前記カウンタが、前記第３の周波数と非同期な前記第２の周波数で調時または刻時される、請求項９に記載のシステム。
【請求項１２】
前記第２の周波数が前記第１の周波数と非同期である、請求項１１に記載のシステム。
【請求項１３】
前記マイクロプロセッサが乱数を読み取るとき、前記バレル・シフタが最新のカウンタ・ビット値を入力し、前記ビット値を最新のバレル・シフト・カウントだけシフトさせる、請求項１２に記載のシステム。
【請求項１４】
（ａ）第１の周波数で作動するマイクロプロセッサを準備するステップと、
（ｂ）少なくとも１つのカウンタを準備するステップと、
（ｃ）前記少なくとも１つのカウンタを第２の周波数で刻時する少なくとも１つの第１の発振器を準備するステップと、
（ｄ）少なくとも１つのシフタを準備するステップと、
（ｅ）前記少なくとも１つのシフタを第３の周波数で連続的に回転させるための少なくとも１つの第２発振器を準備するステップと,
を備える、真性乱数発生器を提供する方法。
【請求項１５】
前記少なくとも１つの第１発振器が第１の奇数のステージを有し、前記第２発振器が前記第１の奇数のステージと少なくとも２ステージだけ異なる第２の奇数のステージを有する、請求項１３に記載の方法。
【請求項１６】
前記第１の周波数と、前記前記第２の周波数と、前記前記第３の周波数とがそれぞれ互いに非同期である、請求項１３に記載の方法。
【請求項１７】
前記マイクロプロセッサが乱数を読み取るとき、前記シフタが最新のカウンタ・ビット値を入力し、前記ビット値を最新のシフト・カウントだけシフトさせる、請求項１５に記載の方法。
【請求項１８】
（ａ）第１の周波数で作動するマイクロプロセッサと、ビットを発生するための少なくとも１つのカウンタと、ビットをスクランブルするための少なくとも１つのシフタと、前記カウンタおよび前記シフタとそれぞれ協働するための第１および第２発振器とを準備するステップと、
（ｂ）前記マイクロプロセッサの前記少なくとも１つのカウンタの初期設定レジスタへの書き込みによって前記カウンタを初期化するステップと、
（ｃ）前記第１発振器を介して前記少なくとも１つのカウンタを第２の周波数で刻時するステップと、
（ｄ）前記第２発振器を介して前記少なくとも１つのシフタを第３の周波数で連続的に回転させるステップと、
（ｅ）前記マイクロプロセッサがランダムなビット数を読み取るとき、最新のカウンタ・ビット数を入力し、前記最新のビット値を最新のシフト・カウントだけシフトさせるステップと、
（ｆ）予測できないパターンのビット数を実現するために前記シフトされたビット値を前記マイクロプロセッサに戻すステップと、
を備える、真性乱数の発生方法。
【請求項１９】
前記少なくとも１つの第１発振器が第１の奇数のステージを有し、前記第２発振器が前記第１の奇数のステージと少なくとも２ステージだけ異なる第２の奇数のステージを有する、請求項１７に記載の方法。
【請求項２０】
前記第１の周波数と、前記前記第２の周波数と、前記前記第３の周波数とがそれぞれ互いに非同期である、請求項１７に記載の方法。
【請求項２１】
前記マイクロプロセッサが乱数を読み取るとき、前記シフタが最新のカウンタ・ビット値を入力し前記ビット値を最新のシフト・カウントだけシフトさせる、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は真性乱数発生器を提供する方法に関する。より具体的には、本発明は、任意の標準論理合成ツールまたは同等な技法を用いて、集積回路（ＩＣ）上に組み込むための完全にディジタルなおよび／またはディジタルに合成可能な真性乱数を提供するシステムおよび方法に関する。
【背景技術】
【０００２】
乱数発生は、たとえば、コンピュータの機密保護、暗号技術、オーディオ・システム検査、ビット誤り検査および暗号化された通信を含む多くの用途に使用される。乱数発生の分野における最近の取り組みは、一般的に、周波数変動を得るためのアナログ発振器や、予測できないパターンを実現するための準安定なフリップ・フロップや、熱雑音にフィルタをかけ増幅するためのアナログ回路や、またはそれぞれのいくつかの組合せを必要とする。したがって、上述したどんなアナログ構成部品および／または準安定な構成も必要としない真性乱数発生器（ＴＲＮＧ）の設計システムおよび／または設計方法を提供することが望まれる。任意の標準的な技法を用いてＩＣ上に組み込むためのＴＲＮＧを合成するのに役立つシステムおよび／または方法も望まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、真性乱数の発生システムおよび真性乱数の発生方法を提供することである。これらのシステムおよび方法は、少なくともカウンタと、シフタと、カウンタと協働するための第１発振器と、シフタと協働するための第２発振器と、上記の構成部品それぞれと協働するためのマイクロプロセッサとを提供することを含む。
【課題を解決するための手段】
【０００４】
本発明の発生クロックは、ディジタル（ハイまたはローの）入力信号に基づいて周波数が摂動するように設計され、これにより真のディジタル信号からランダムな周波数を発生させることが可能なディジタル制御されたリング発振器であるため、本発明のシステムおよび方法は、アナログ・クロックまたは準安定な構成を使用しない乱数発生を実現する。したがって、簡単なカウンタおよびシフタを用いて乱数を発生することができる。本発明のシステムおよび方法を用いて設計されたＴＲＮＧは、任意の標準論理合成ツールまたは同等な技法を用いてＩＣ上に組み込むように合成することができる。本発明のこれらおよび他の目的は本発明のシステムおよび方法によって実現される。
【０００５】
本発明は、以下で特定される図面と共に、以下の例示的実施形態の詳細な説明を参照することによってより完全に理解される。
【０００６】
従来の乱数発生システムは、乱数を発生するためにリング発振器などの発振器を使用する。これらのリング発振器は、通常、直列に接続されてリングを形成する奇数のゲートを有し、ある場合には、このようなリング発振器のゲートは、リング中の他のゲートの出力の組合せを入力とすることができる。これらのリング発振器をある時点でサンプリングして乱数または疑似乱数を提供することができる。
【０００７】
従来のＴＲＮＧは乱数および／または疑似乱数を提供することができるが、当業者は、これらのＴＲＮＧの多くは本質的に周期的であり、その結果、望むほどランダムではない数を発生する可能性があることに気付いている。さらに、乱数を発生するためにチップまたはＩＣ上に特別な構成部品を必要としないように、チップまたはＩＣ上にＴＲＮＧを効率的に組み込むことが望ましいので、比較的小型で電力消費量が小さいシステムが望ましい。
【０００８】
本発明のシステムおよび方法をある例示的な実施形態に関して以下に説明する。しかし、これらのシステムおよび方法を他の代替構成部品および／または他の同等な構成を用いて有効に作動させ得ることは当業者なら判るであろう。
【発明を実施するための最良の形態】
【０００９】
図面、具体的には図１を参照すると、参照番号１０で全体が示される、本発明の例示的な実施形態による真性乱数用のシステムの概略構成図が示されている。好ましくは、システム１０は、予測できない／非決定性の数の発生をもたらしながら、少なくとも２Ｍビット／秒（６２５００個／秒）の速度に適合でき、任意選択でシード値有りまたは無しで動作することができる。システム１０は、長く連続するディジタル０およびディジタル１に対してバイアスされることが好ましい。システム１０は、好ましくは、必要なパワー要件を低減させるスリープ・モードを有することもできる。
【００１０】
システム１０は、ビットを発生するための少なくとも１つのカウンタ２０と、ビットをスクランブルするための少なくとも１つのシフタ３０と、前記少なくとも１つのカウンタ２０と協働するための少なくとも１つの第１発振器４０と、前記少なくとも１つのシフタ３０と協働するための少なくとも１つの第２発振器５０と、ディジタル入力信号に基づいて周波数摂動をもたらすように前記構成部品それぞれと協働するためのマイクロプロセッサ６０とを有する。カウンタ２０は、初期設定ビット値５を受け取る初期設定レジスタを有することが好ましく、このビット値は、マイクロプロセッサ６０の初期設定書込みの後縁で挿入されることが好ましい。カウンタ２０は、３２ビットのアップ・カウンタであることが好ましい。しかし、カウンタ２０は、１６ビットのアップ・カウンタおよび１６ビットのダウン・カウンタおよび／または本発明の上記で特定された目的を実施するのに適する任意の他の同等なタイプのカウンタでもよい。１６ビット・カウンタを用いる場合、その出力をシフタ３０内に交互配置することができる。シフタ３０は、バレル・シフタ、より具体的には３２ビット・バレル・シフタであることが好ましい。シフタ３０は、本発明の上記で特定された目的を実施するのに適する任意の他の同等なタイプのシフタでもよい。第１発振器４０および第２発振器５０は、それぞれ奇数のステージを有するリング発振器であることが好ましく、第１発振器４０は５ステージの発振器であることが好ましく、第２発振器５０は７ステージの発振器であることが好ましい。しかし、第１発振器４０および第２発振器５０はそれぞれ、本発明の上記で特定された目的を実施するのに十分な任意の他の同等なタイプの発振器でもよいことに留意されたい。第１発振器４０および第２発振器５０は、好ましくは、インバータと、ＡＮＤゲートと、ＮＡＮＤゲートと、ＮＯＲゲートと、ＸＯＲゲートおよび／または他の任意の同様なタイプの構成部品の組合せとから構成することができる。本発明による、構成部品の例示的な組合せを用いるシステム１０の例示的な一実施形態については、一般に、図３を参照されたい。
【００１１】
図２を参照すると、システム１０は、好ましくは、シフタ３０とマイクロプロセッサ６０との間に白色化フィルタおよび／または線形フィードバック・シフト・レジスタ（「ＬＦＳＲ」）７０を備えることができる。この構成は、好ましくは、カウンタ値を用いてシフタ３０の出力を修正するのに役立つ。ＬＦＳＲ７０は、好ましくは、本発明の上記で特定された目的を実施するのに適する任意の数のステージを有することができる。システム１０は、第２発振器５０とシフタ３０との間にワン・ホット・シフト・セレクタ８０を備えることもできる。
【００１２】
システム１０がどのように作動するかを説明するためには、参照番号１００で全体が表わされる、本発明の例示的な実施形態による真性乱数を提供する一方法のフロー・チャートである図４を参照されたい。方法１００は、少なくともステップ１１０と、１２０と、１３０と、１４０とを含む。ステップ１１０では、ビットを発生するために少なくとも１つのカウンタ２０を使用する。好ましくは、カウンタ２０は、ある速度または周波数のマイクロプロセッサ６０からカウンタの初期設定レジスタへの書き込みによって初期化する。カウンタ２０は、好ましくは第１発振器を形成するために使用される構成部品の物理特性にチップ依存性がありマイクロプロセッサの速度又は周波数に非同期な速度又は周波数で第１発振器４０により刻時されることが好ましい。ステップ１２０では、ビットをスクランブルするための少なくとも１つのシフタ３０を使用する。シフタ３０はカウンタ２０と協働することが好ましく、カウンタ２０およびマイクロプロセッサ６０のものと非同期な速度または周波数で第２発振器５０によって連続的に回転される。このシフタの速度または周波数はマイクロプロセッサのものより速いことが好ましい。ステップ１３０では、カウンタ２０およびシフタ３０とそれぞれ同時に協働させるために発振器４０および５０を使用する。ステップ１４０では、カウンタ２０およびシフタ３０からの発振器４０および発振器５０用の非同期周波数制御ビットを相互結合する。したがって、マイクロプロセッサ６０が、たとえば３２ビットなどのあるビット数の乱数を読み込むとき、シフタ３０は、好ましくは、電流カウンタ２０の値を入力し電流シフト・カウント（たとえば、０〜３１）によりそれをシフトさせることが好ましい。好ましくは、各構成部品（すなわち、カウンタ、シフタ、およびマイクロプロセッサ）の周波数が互いに非同期であるので、予測できないパターンのビット数がマイクロプロセッサに戻ってくる。
【００１３】
このように、本発明をその好ましい形態を具体的に参照して説明してきたが、本明細書で規定された本発明の精神および範疇から逸脱することなく様々な変更および修正を加え得ることは明らかであろう。
【図面の簡単な説明】
【００１４】
【図１】本発明の例示的な実施形態によるシステムのブロック図である。
【図２】本発明の別の例示的な実施形態によるシステムのブロック図である。
【図３】本発明の例示的な実施形態による真性乱数発生回路の概略ブロック図である。
【図４】本発明による真性乱数を提供する一方法の流れ図である。
【図１】
2006509286.tif 000003
【図２】
2006509286.tif 000004
【図３】
2006509286.tif 000005
【図４】
2006509286.tif 000006
【国際調査報告】
2006509286.tif 000007
2006509286.tif 000008