(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-21
(45)【発行日】2023-11-30
(54)【発明の名称】擬似乱数生成回路装置
(51)【国際特許分類】
G06F 7/58 20060101AFI20231122BHJP
G09C 1/00 20060101ALI20231122BHJP
H03K 3/84 20060101ALI20231122BHJP
【FI】
G06F7/58 640
G09C1/00 650B
H03K3/84 Z
(21)【出願番号】P 2020042578
(22)【出願日】2020-03-12
【審査請求日】2022-11-17
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100094525
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】村田 誠治
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開平11-045173(JP,A)
【文献】特開平05-315905(JP,A)
【文献】実開平04-061927(JP,U)
【文献】特開平11-184678(JP,A)
【文献】特開2016-126517(JP,A)
【文献】特開2006-072891(JP,A)
【文献】特開2006-215825(JP,A)
【文献】特開2000-242470(JP,A)
【文献】米国特許出願公開第2016/0179472(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 7/58
G09C 1/00
H03K 3/84
(57)【特許請求の範囲】
【請求項1】
ルールデータに基づいて構成された論理回路が現在の乱数値から次の乱数値を生成する擬似乱数生成部と、
前記擬似乱数生成部が生成した乱数の周期終了をシードに基づいて検出する周期検出部と、
前記周期検出部が前記乱数の周期終了を検出したことを第1のトリガにして、新たなルールデータを生成し、前記新たなルールデータを前記擬似乱数生成部に出力するルールデータ生成部とを有し、
前記周期検出部は、前記新たなルールデータに基づいて構成された新たな論理回路が生成した乱数値を前記シードとして記憶する、擬似乱数生成回路装置。
【請求項2】
前記周期検出部は、前記新たなルールデータに基づいて構成された新たな論理回路が最初に生成した乱数値を前記シードとして記憶し、前記擬似乱数生成部が生成した乱数値と前記シードとが一致した場合に前記乱数の周期終了を検出する、請求項1に記載の擬似乱数生成回路装置。
【請求項3】
前記擬似乱数生成部は、
前記論理回路と、
前記論理回路が生成する次の乱数値を反転信号に基づいて反転する反転回路と、
前記論理回路が生成する次の乱数値または前記反転回路によって反転された反転乱数値をラッチするラッチ回路とを有し、
前記周期検出部は、前記次の乱数値が全ビット0か否かを検出するオールゼロチェック部を有し、
前記ルールデータ生成部は、前記オールゼロチェック部が前記次の乱数値が全ビット0であることを検出したことを第2のトリガとして、前記新たなルールデータを生成し、前記新たなルールデータを前記擬似乱数生成部に出力し、
前記周期検出部は、前記第2のトリガが生成されたとき、前記反転信号をアクティブ状態で前記擬似乱数生成部に出力する、請求項1に記載の擬似乱数生成回路装置。
【請求項4】
前記擬似乱数生成部は、
前記論理回路と、
前記論理回路が生成する次の乱数値を反転信号に基づいて反転する反転回路と、
前記論理回路が生成する次の乱数値または前記反転回路によって反転された反転乱数値をラッチするラッチ回路とを有し、
前記周期検出部は、前記次の乱数値が同じ数に収束したか否かを検出する収束チェック部を有し、
前記ルールデータ生成部は、前記収束チェック部が前記次の乱数値が同じ数に収束したことを検出したことを第3のトリガとして、前記新たなルールデータを生成し、前記新たなルールデータを前記擬似乱数生成部に出力し、
前記周期検出部は、前記第3のトリガが生成されたとき、前記反転信号をアクティブ状態で前記擬似乱数生成部に出力する、請求項1に記載の擬似乱数生成回路装置。
【請求項5】
前記擬似乱数生成部は、
前記論理回路と、
前記論理回路が生成する次の乱数値を反転信号に基づいて反転する反転回路と、
前記論理回路が生成する次の乱数値または前記反転回路によって反転された反転乱数値をラッチするラッチ回路とを有し、
前記周期検出部は、前記第1のトリガが生成されたとき、前記反転信号をアクティブ状態で前記擬似乱数生成部に出力する、請求項1に記載の擬似乱数生成回路装置。
【請求項6】
前記擬似乱数生成部は、
前記論理回路と、
前記ラッチ回路とをそれぞれ有するN(Nは複数)個のセルを有し、
前記N個のセルのうち一部のセルが、前記反転回路を有し、
前記N個のセルがそれぞれ1ビットの乱数を生成し、
前記反転回路は、前記反転信号と前記次の乱数値を入力とする排他的論理和回路と、前記反転信号と前記次の乱数値を入力とする論理和回路のいずれか一方であり、前記反転回路の少なくとも1つは前記論理和回路である、請求項3乃至4のいずれかに記載の擬似乱数生成回路装置。
【請求項7】
前記ルールデータ生成部は、
前記第1のトリガが生成されるたびに発振周波数が変更されるリング発振器と、前記リング発振器が出力する時系列ビットを前記ルールデータとして記憶するルールデータ記憶装置とを有する、請求項1に記載の擬似乱数生成回路装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、擬似乱数生成回路装置に関する。
【背景技術】
【0002】
マイクロプロセッサなどの半導体装置には、命令デコーダ、論理演算回路、キャッシュメモリなどと共に、擬似乱数生成回路が組み込まれる。擬似乱数生成回路が生成する擬似乱数(以下、単に乱数と称する。)は、暗号鍵など様々な用途を有する。
【0003】
暗号鍵に乱数を利用する場合、暗号化の際に毎回異なる乱数を暗号鍵として利用する。したがって、擬似乱数生成回路は、予測困難な乱数列を生成することが要求される。
【0004】
擬似乱数生成回路の一つとして、有限体上の原始多項式を一次元線形セル・オートマトン上に実現した擬似乱数生成回路がある。このような擬似乱数生成回路は、簡単な構成のデジタル回路で実現できるので、マイクロプロセッサに広く実装される。擬似乱数生成回路について、以下の特許文献に記載されている。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2006-72891号公報
【文献】特開2006-215825号公報
【文献】特開2000-242470号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
一次元線形セル・オートマトンによる擬似乱数生成回路が生成する乱数は一見してランダムに見えるものの、所定のアルゴリズムに従ってプログラミングされた擬似乱数のため、原始多項式ごとに乱数生成シーケンスが決まり、その乱数生成シーケンスは周期毎に繰り返す。このように、擬似乱数生成回路は、原始多項式に対応した同じシーケンスで乱数の生成を繰り返すため、原始多項式と初期値が判明すると将来生成される乱数が予測できる場合がある。そのため、乱数を暗号鍵として利用する場合、セキュリティ上の問題がある。
【0007】
そこで、本実施の形態の第1の側面の目的は、乱数の予測困難性を高くした擬似乱数生成回路装置を提供することにある。
【課題を解決するための手段】
【0008】
本実施の形態の第1の側面は、ルールデータに基づいて構成された論理回路が現在の乱数値から次の乱数値を生成する擬似乱数生成部と、前記擬似乱数生成部が生成した乱数の周期終了をシードに基づいて検出する周期検出部と、前記周期検出部が前記乱数の周期終了を検出したことを第1のトリガにして、新たなルールデータを生成し、前記新たなルールデータを前記擬似乱数生成部に出力するルールデータ生成部とを有し、前記周期検出部は、前記新たなルールデータに基づいて構成された新たな論理回路が生成した乱数値を前記シードとして記憶する、擬似乱数生成回路装置である。
【発明の効果】
【0009】
第1の側面によれば、擬似乱数生成回路装置が生成する乱数の予測困難性が高くなる。
【図面の簡単な説明】
【0010】
【
図1】一次元線形セル・オートマトンによる擬似乱数生成回路の一例を示す図である。
【
図2】式1に示した4次多項式に対応した乱数列の乱数生成パターンの例を示す図である。
【
図3】第1の実施の形態における擬似乱数生成回路装置の構成例を示す図である。
【
図4】第1の実施の形態における擬似乱数生成回路装置の動作の概略を示すフローチャート図である。
【
図5】第1の実施の形態における擬似乱数生成部P_RDM_GENの構成例を示す図である。
【
図6】周期検出部CYC_DETの構成例を示す図である。
【
図7】ルールデータ生成部RLD_GENの構成例を示す図である。
【
図8】擬似乱数生成回路装置の乱数の周期の終わりを検出したときのタイミングチャートを示す図である。
【
図9】第2の実施の形態における擬似乱数生成部P_RDM_GENの構成例を示す図である。
【
図10】第2の実施の形態における周期検出部CYC_DETの構成例を示す図である。
【
図11】第2の実施の形態における擬似乱数生成回路装置の動作フローチャートを示す図である。
【
図12】第2の実施の形態における擬似乱数生成回路装置において、乱数の周期の終了を検出した場合のタイミングチャートを示す図である。
【
図13】第2の実施の形態における擬似乱数生成回路装置において、乱数値の収束を検出した場合のタイミングチャートを示す図である。
【
図14】第2の実施の形態における擬似乱数生成回路装置において、乱数値がオールゼロになるのを検出した場合のタイミングチャートを示す図である。
【
図15】第3の実施の形態におけるルールデータ生成部RLD_GENの構成例を示す図である。
【
図16】第3の実施の形態のルールデータ生成部を有する擬似乱数生成回路装置のタイミングチャートを示す図である。
【発明を実施するための形態】
【0011】
図1は、一次元線形セル・オートマトンによる擬似乱数生成回路の一例を示す図である。擬似乱数生成回路は、n個のセルCELL1~CELLnを有し、各セルは、自己のセルとその両隣の2つのセルを含めた3つのセルの状態から自己のセルの次の状態を決定する。隣接するセルがない左右端のセルには、例えば“0”が入力される。各セルは、次の状態を決定する論理回路rule90、rule150と、論理回路が出力する次の乱数値h
1~h
nを保持するフリップフロップFF1~FFnなどの記憶装置とを有する。次の乱数値h
1~h
nを決定する論理回路は、ルールによって構成が異なり、256種類のルールが存在する。
【0012】
図1に示した擬似乱数生成回路は、ルール90とルール150と呼ばれる2つのルールを組み合わせて使用する。つまり、ルール90の論理回路rule90とルール150の論理回路rule150との組み合わせであり、
図1の例では、n個のセルが、論理回路rule90と論理回路rule150とが交互に有する。
【0013】
擬似乱数生成回路が、4つのセルを有し、4つのセルがルール90、ルール150、ルール90、ルール150という順序で組み合わされると、以下の4次の原始多項式f(x)に対応した乱数列を生成する。
f(x)= x4 + x + 1 (式1)
【0014】
図1の擬似乱数生成回路は、各セルのフリップフロップFF1~FFnに初期のシードが格納されると、クロックCKに同期して各セルの論理回路が次の乱数値h
1~h
nを生成、フリップフロップが次の乱数値を保持する。各論理回路では、論理回路rule90は、両隣のセルのフリップフロップの出力の現在の乱数値q
1~q
nから次の乱数値h
1~h
nを出力し、論理回路rule150は、自己のセルと両隣のセルのフリップフロップが出力する現在の乱数値q
1~q
nから次の乱数値h
1~h
nを出力する。フリップフロップが保持した次の乱数値h
1~h
nは、現在の乱数値q
1~q
nとして出力される。
【0015】
図2は、式1に示した4次多項式に対応した乱数列の乱数生成パターンの例を示す図である。
図2の(a)周期最長の例は、4つの論理回路のルールの組み合わせがルール150、ルール90、ルール150、ルール90の擬似乱数生成回路の乱数生成パターンを示す。この乱数生成パターンでは、初期値が6(2進数で0110)に設定され、4ビットの乱数の生成パターンは0以外の異なる値であり、15ステップ目の乱数値は初期値6である。したがって、乱数の周期が最も長い例であり、15ステップの周期で乱数が生成される。
【0016】
図2の(b)周期最長より短いときの例は、以下の4次多項式に対応し、4つの論理回路のルールの組み合わせがルール90、ルール90、ルール90、ルール150の擬似乱数生成回路の乱数生成パターンを示す。この乱数生成パターンでは、初期値が6(2進数で0110)に設定され、7ステップ目の乱数が初期値6になる。この場合、6ステップの周期で乱数が生成される。また、3、4、7などの一部の値が生成されない。
【数1】
【0017】
図2の(c)乱数値が収束するときの例は、以下の4次多項式に対応し、ルール90、ルール90、ルール150、ルール150の擬似乱数生成回路の乱数生成パターンを示す。初期値が6に設定され、ステップ1から乱数値が11で固定している。この場合、乱数値が11に収束する例である。
【数2】
【0018】
そして、
図2の(d)乱数値が「0」に収束するときの例は、以下の4次多項式に対応し、ルール150、ルール90、ルール90、ルール150の擬似乱数生成回路の乱数生成パターンを示す。初期値が6に設定され、ステップ2から乱数値が0に固定している。この場合、乱数値が0に収束する例である。この場合、一旦乱数値が0に収束すると、論理回路のルールを変更しても乱数値が0を繰返すことが判明した。
【数3】
【0019】
図2から判明した課題は、擬似乱数生成回路が、論理回路に設定するルールの組み合わせによって、(1)様々な周期で乱数の生成が繰り返される、(2)所定の乱数値に収束する、(3)0に収束する、などの乱数生成パターンを生成することである。このような乱数生成パターンになると、将来の乱数を予測することができ、乱数を暗号鍵に用いることはセキュリティの低下を招く。
【0020】
[第1の実施の形態]
図3は、第1の実施の形態における擬似乱数生成回路装置の構成例を示す図である。擬似乱数生成回路装置は、擬似乱数生成部P_RDM_GENと、乱数の周期の終わりを検出する周期検出部CYC_DETと、周期検出部が周期終了検出時に生成するルールデータ制御信号CNT_RLDに応答して、新たなルールデータRLDを生成するルールデータ生成部RLD_GENとを有する。擬似乱数生成回路装置には、システムクロックCKと、イネーブル信号ENが与えられる。
【0021】
図4は、第1の実施の形態における擬似乱数生成回路装置の動作の概略を示すフローチャート図である。初期設定として、擬似乱数生成回路装置は、擬似乱数生成部P_RDM_GENにシードを設定し(S1)、更に、ルールデータ生成部RLD_GENにルールデータを生成させ、擬似乱数生成部にルールデータを設定する(S2)。初期設定後、イネーブル信号ENをイネーブル状態にしてクロックCKを供給すると、擬似乱数生成部が乱数の生成を開始する(S3)。周期検出部は、生成される乱数値をチェックする(S4)。周期検出部は、乱数の周期が終了したことを検出したら(S4のYES)、ルールデータ制御信号CNT_RLDを出力し、これに応答してルールデータ生成部が新たなルールデータを生成し、擬似乱数生成部の論理回路のルールを変更する(S5)。そして、周期検出部は、ステップS3で生成された乱数値とステップS5で変更されたルールとに基づいて擬似乱数生成部が生成する新たな乱数値を新たなシードとして記憶する(S6)。これによりシードが変更される。その後、新たなルールデータと新たなシードに基づいて、擬似乱数生成部が新たに乱数の生成シーケンスを開始する(S3)。上記のステップS3~S6の処理が繰り返される。
【0022】
以下、擬似乱数生成回路装置の動作をより具体的に説明する。まず、ルールデータ生成部RLD_GENは、ルールデータをランダムに生成し、生成したルールデータRLDを擬似乱数生成部P_RDM_GENに出力する(S2、S5)。擬似乱数生成部では、入力したルールデータRLDに基づいて各セル内の論理回路の構成が変更される。そして、擬似乱数生成部P_RDM_GENでは、ルールデータに基づいて構成された論理回路が、前述したとおり現在の乱数値C_RDMから次の乱数値N_RDMを生成する(S3)。また、周期検出部CYC_DETは、擬似乱数生成部が生成する次の乱数値N_RDMを監視し、乱数の周期が終了したことを検出し、その検出をトリガにしてルールデータ制御信号CNT_RLDをルールデータ生成部に出力する(S4)。そして、ルールデータ生成部RLD_GENは、ルールデータ制御信号CNT_RLDに応答して、新たなルールデータRLDを生成し、擬似乱数生成部P_RDM_GENに出力し、新たなルールデータに基づいて各セルの論理回路の構成を変更する(S5)。擬似乱数生成部は、新たなルールデータで論理回路の構成が変更され、新たに次の乱数値N_RDMを生成し、その新たに生成した次の乱数値N_RDMが周期検出部CYC_DETに新たなシードとして記憶される(S6)。その後、周期検出部は、記憶されたシードとその後生成される次の乱数値とのマッチングを判定し、マッチしたとき周期の終了を検出する(S4)。
【0023】
擬似乱数生成回路装置が生成する乱数が予測可能なのは、擬似乱数生成部の原始多項式が一種類に固定されているため乱数生成シーケンスが周期的に生成されることが一つの原因である。そこで、本実施の形態では、擬似乱数生成部のルールデータを変更設定可能にして、乱数生成シーケンスや周期が異なる複数の多項式に変更可能にする。更に、ルールデータを外部から設定することなく、擬似乱数生成回路装置が自律的に且つ非決定的にルールデータを適時切り替える。これにより乱数予測が困難になる。本実施の形態では、乱数生成の周期が終わったことを検出すると、新たな乱数生成ルールを生成して擬似乱数生成部の論理回路の構成を切り替えるとともに、そのときの乱数値(現在の乱数値)から生成した新たな乱数値(次の乱数値)を新たなシードとし、新たな乱数列を生成し続ける。
【0024】
図5は、第1の実施の形態における擬似乱数生成部P_RDM_GENの構成例を示す図である。擬似乱数生成部は、
図1と同様に、n個のセルを有しnビットの乱数を生成する。n個のセルCELL1~CELLnそれぞれは、自己のセルが保持する現在の乱数値q
1~q
nと両隣の2つのセルが保持する現在の乱数値q
1~q
nを入力する3入力の論理回路HB_Rと、論理回路HB_Rが出力する次の乱数値h
1~h
nをクロックCKに同期して保持するフリップフロップFF1~FFnを有する。クロックCKは、イネーブル信号ENが「1」のときアンドゲートA1からクロックA1_outとして出力され、各フリップフロップのクロック端子に供給される。また、最上位ビットのセルCELLnのフリップフロップFFnは、乱数出力ビットRDM_outを出力する。
【0025】
n個の論理回路HB_Rそれぞれは、ルールデータ生成部が生成するルールデータd1~dnをそれぞれ入力し、入力されたルールデータの値に応じてルール90の論理回路とルール150の論理回路のいずれかにその構成が変更されるハイブリッドルール論理回路である。
【0026】
図5の下部に示されるハイブリッドルール論理回路HB_Rは、kビット目のセルの論理回路である。論理回路HB_Rは、ルールデータd
kと自己のセルの現在の乱数値q
k(t)とを入力するアンドゲートA0と、アンドゲートA0の出力と両隣のセルの現在の乱数値q
k-1(t)、q
k+1(t)を入力する3入力排他的論理和回路XORを有する。
【0027】
ルールデータdkが「1」の場合、アンドゲートA0は自己の現在の乱数値qk(t)をそのまま排他的論理和回路XORに入力する。これにより、論理回路HB_Rは、3入力の排他的論理和回路となり、ルール150の論理回路に構成される。また、ルールデータdkが「0」の場合、アンドゲートA0の出力は「0」となる。これにより、論理回路HB_Rは、両隣の現在の乱数値を入力する2入力の排他的論理和回路となり、ルール90の論理回路に構成される。論理回路HB_Rは、現在の乱数値を入力し、次の乱数値hk(t)を出力する。このように、擬似乱数生成部は、ルールデータd1~dnを変更することで乱数を生成する論理回路HB_Rの構成を変更することができる。
【0028】
図6は、周期検出部CYC_DETの構成例を示す図である。周期検出部は、擬似乱数生成部が生成する現在の乱数値q
1~q
nを初期シードs
1~s
nとして格納する初期シード記憶装置SEED_MEMを有する。また、周期検出部は、次の乱数値h
1~h
nと初期シードs
1~s
nのマッチングをチェックし、マッチしたときに乱数周期の終わりを検出する周期チェック部CYC_CHを有する。また、周期検出部は、周期チェック部が出力する周期終了トリガ信号TRG_Cを、クロックCKの反転クロック/CKに同期して格納するフリップフロップFFa、FFbを有する。インバータIVはクロックCKの位相を180°反転して反転クロック/CKを出力する。
【0029】
擬似乱数生成部がクロックCKに同期して現在の乱数値q1~qn及び次の乱数値h1~hnを順次生成中に、周期チェック部CYC_CHが次の乱数値h1~hnと初期シードs1~snのマッチを検出して周期終了トリガ信号TRG_C「1」を出力する。すると、その半クロック後にフリップフロップFFaが周期終了トリガ信号TRG_Cをラッチし、ルールデータ制御信号CNT_RLDを「1」に変更する。また、次のクロックCKの半クロック後にフリップフロップFFbがルールデータ制御信号CNT_RLDをラッチし、シード制御信号CNT_SDを「1」に変更する。これに応答して、アンドゲートA2がクロックCKをシードラッチクロックA2_outとして出力し、初期シード記憶装置SEED_MEMが、マッチした次の乱数値h1~hnの1クロック後に生成された次の乱数値であり、擬似乱数生成部でラッチされた現在の乱数値q1~qnを、初期シードs1~snとして格納する。
【0030】
図7は、ルールデータ生成部RLD_GENの構成例を示す図である。ルールデータ生成部は、ルールデータ生成回路10と、ルールデータ記憶装置12とを有する。ルールデータ生成回路10は、複数のリングオシレータR_OSCと、その出力を入力する排他的論理和回路XORと、XORの出力をクロックCKに同期して転送するシフトレジスタ11とを有する。リングオシレータは、ルールデータを生成するためのシードとなる。ルールデータ記憶装置12は、ルールデータ制御信号CNT_RLDが「1」のとき、ルールデータ生成回路10がシフトレジスタ11に保持するルールデータd1~dnを、クロックCKに同期して、複数のフリップフロップにコピーしてルールデータを変更する。ルールデータ記憶装置12は、次にルールデータ制御信号CNT_RLDが「1」になるまで、コピーしたルールデータを保持し続ける。保持されたルールデータd1~dnは、前述したとおり、擬似乱数生成部内の論理回路に出力されて論理回路の構成を決定する。
【0031】
図8は、擬似乱数生成回路装置の乱数の周期の終わりを検出したときのタイミングチャートを示す図である。以下、乱数の周期の終わりを検出したときの動作を説明する。
【0032】
前提として、擬似乱数生成部P_RDM_GENでは、クロックCKに同期して、フリップフロップFF1~FFnが、論理回路が出力していた次の乱数値h1~hnを格納し、そのクロックサイクル中に、論理回路が、フリップフロップが出力する現在の乱数値q1~qnに基づいて次の乱数値h1~hnを出力する。以下、クロックサイクルCK1~CK3での動作を順番に説明する。
【0033】
クロックCK1(周期検出)
クロックCK1に同期して、擬似乱数生成部が、次の乱数値h
1~h
nをフリップフロップに格納して現在の乱数値q
1~q
nを変更し、クロックCK1の前半サイクル中に、論理回路が現在の乱数値q
1~q
nに基づいて次の乱数値h
1~h
nを新たに生成する。そこで、
図8では、周期検出部の周期チェック部CYC_CHが次の乱数値h
1~h
n(
0xE)が初期シードs
1~s
n(
0xE)とマッチしたことを検出し、周期終了トリガ信号TRG_Cを「1」にする。そして、クロックCK1の反転クロック/CK1に同期して、ルールデータ制御信号CNT_RLDが「1」になる。
【0034】
クロックCK2(ルールデータ切り替えと新たなルールデータによる次の乱数値の生成)
クロックCK2に同期して、ルールデータ生成部RLD_GENでは、ルールデータ記憶装置12が、CNT_RLD=1によりアンドゲートA4が出力するクロックA4_outに同期して、ルールデータ生成回路10が生成したルールデータをフリップフロップにコピーし、新たなルールデータd1~dn(0x1)を出力する。そして、擬似乱数生成部P_RDM_GENでは、新たなルールデータd1~dn (0x1)で構成が変更された論理回路が、現在の乱数値q1~qn(0xE)から次の乱数値h1~hn(0xB)を出力する。また、クロックCK2の反転クロック/CK2に同期して周期検出部CYC_DETのフリップフロップFFbが、ルールデータ制御信号CNT_RLDの「1」をラッチしてシード制御信号CNT_SDを「1」にする。
【0035】
クロックCK3(CK2で新たなルールデータで構成された論理回路が生成した次の乱数値h
1
~h
n
でシード更新)
クロックCK3に同期して、擬似乱数生成部は、クロックCK2で新たなルールデータで構成された論理回路が生成した次の乱数値h1~hn(0xB)を、現在の乱数値q1~qn(0xB)として出力する。一方、周期検出部CYC_DETでは、アンドゲートA2がシード制御信号CNT_SDの「1」によりクロックCKをシードラッチクロックA2_outとして出力し、初期シード記憶装置SEED_MEMがシードラッチクロックA2_outに同期して現在の乱数値q1~qn(0xB)を新たなシードs1~snとして記憶する。つまり、記憶された新たなシードs1~snは、クロックCK2で論理回路が生成した次の乱数値h1~hnである。
【0036】
クロックCK4以降(新たなルールデータとシードにより乱数の生成)
クロックCK1~CK3それぞれで、順番に、周期の終わりが検出され、ルールデータが切り替えられ、シードが更新される。そして、クロックCK4以降、新たなルールデータとシードにより擬似乱数生成回路が乱数の生成を継続する。
【0037】
以上、第1の実施の形態において、クロックCK1で次の乱数値が初期シードとマッチしたことで乱数の周期の終わりを検出すると、次のクロックCK2で新たなルールデータに変更し、次のクロックCK3で、CK2での新たなルールデータにより構成された論理回路が生成した最初の次の乱数値を、新たなシードとして記憶する。
【0038】
したがって、(1)同じ乱数の周期が繰り返されることが防止される。(2)更新したルールデータに基づいて論理回路が生成した次の乱数値をシードとして記憶するので、擬似乱数生成部が生成しない乱数値をシードとして記憶することがない。これにより、
図2の(b)のように乱数の周期内に生成しない乱数値をシードとして記憶して、次の周期の終わりを検出できなくなるのを回避できる。また、(3)シードを生成する回路を別途設ける必要がなく、回路規模の拡大を回避できる。(4)擬似乱数生成部の動作を止めることなくシードを生成することができ、シームレスに乱数を生成することができる。
【0039】
[第2の実施の形態]
図9は、第2の実施の形態における擬似乱数生成部P_RDM_GENの構成例を示す図である。
図9の擬似乱数生成部は、
図5と同様に、n個のセルを有しnビットの乱数を生成する。n個のセルCELL1~CELLnそれぞれは、自己のセルが保持する現在の乱数値q
1~q
nと両隣の2つのセルが保持する現在の乱数値q
1~q
nを入力する3入力の論理回路HB_Rと、論理回路HB_Rが出力する次の乱数値h
1~h
nをクロックCKに同期して保持するフリップフロップFF1~FFnを有する。ハイブリッドルール論理回路HB_R、アンドゲートA1などは、
図5と同様である。
【0040】
但し、
図9の擬似乱数生成部P_RDM_GENは、一部のセルに、反転信号INVが「1」のとき次の乱数値h
1~h
nを反転する排他的論理和回路XOR1、または反転信号INVが「1」のとき次の乱数値h
1~h
nを強制的に「1」にする論理和回路OR1、を有する。この構成は、第1の実施の形態の
図5とは異なる。反転信号INVは、乱数の周期の終わりが検出されたとき、乱数値が収束したとき、乱数値の全ビットが「0」に収束したときに、「1」になる。
【0041】
図10は、第2の実施の形態における周期検出部CYC_DETの構成例を示す図である。
図10の周期検出部は、
図6に示した周期チェック部CYC_CH、初期シード記憶装置SEED_MEM、フリップフロップFFa、FFbを有し、更に、収束チェック部CNV_CHと、オールゼロチェック部ALZ_CHと、反転信号INVを出力するフリップフロップFFcを有する。
【0042】
収束チェック部CNV_CHは、周期チェック部CYC_CHと同様にマッチ回路であり、次の乱数値h1~hnと現在の乱数値q1~qnとがマッチしたか否かチェックし、マッチしたとき収束トリガ信号TRG_CNVを「1」にする。次の乱数値h1~hnと現在の乱数値q1~qnとがマッチしたことは、擬似乱数生成部が出力する乱数値が連続して同じになったことを意味する。したがって、その場合は、乱数値が収束したことを意味する。
【0043】
オールゼロチェック部ALZ_CHは、NOR回路で構成され、次の乱数値h1~hnの全ビットが「0」になると、オールゼロトリガ信号TRG_Zを「1」にする。
【0044】
図10の周期検出部CYC_DETは、収束トリガ信号TRG_CNVまたはオールゼロトリガ信号TRG_Zが「1」になると、論理和回路OR2を経由して、次の遅延クロック/CKに同期してフリップフロップFFcが反転信号INVを「1」にする。また、周期チェック部CYC_CHが周期終了トリガ信号TRG_Cを「1」にする場合にも、論理和回路OR2を経由して、フリップフロップFFcが反転信号INVを「1」にしても良い。周期検出部CYC_DETは、周期チェック部CYC_CH、収束チェック部CNV_CH、オールゼロチェック部ALZ_CHのいずれかのトリガ信号が「1」になったときに、次の遅延クロック/CKに同期してフリップフロップFFaがトリガ信号をラッチし、ルールデータ制御信号CNT_RLDを「1」にし、フリップフロップFFcが反転信号INVを「1」にする。
【0045】
第2の実施の形態におけるルールデータ生成部RLD_GENは、
図7に記載したとおりである。
【0046】
図11は、第2の実施の形態における擬似乱数生成回路装置の動作フローチャートを示す図である。まず、イネーブル信号ENをオン(EN=1)にする(S11)。そして、ルールデータ生成部のシフトレジスタを初期化する(S12)。また、擬似乱数生成部と周期検出部にシードを設定する(S12)。ルールデータの初期化とシードの設定は、シフトレジスタや擬似乱数生成部のフリップフロップをリセットし、また周期検出部の初期シード記憶装置をリセットする等により行われる。
【0047】
初期化後、システムクロックCKの印加を開始すると(S13)、ルールデータ生成部がルールデータを出力し、このルールデータが擬似乱数生成部に設定され、擬似乱数生成部が乱数の生成を開始する(S14)。そして、イネーブル信号がオフ(EN=0)になるまで(S15のYES)、擬似乱数生成回路装置は以下の動作を行う。
【0048】
周期検出部CYC_DETの周期チェック部CYC_CHが、次の乱数値h1~hnが初期シードs1~snとマッチするか否かを毎クロックサイクルでチェックする(S17)。これにより、周期チェック部は、乱数の周期が終了したことを検出する。周期チェック部は、設定されるルールデータが異なると乱数生成周期が異なるので、毎クロックサイクルでチェックする。
【0049】
更に、周期検出部の収束チェック部CNV_CHが、次の乱数値h
1~h
nが現在の乱数値q
1~q
nとマッチするか否かを毎クロックサイクルでチェックする(S18)。
図2の(c)に示すように乱数値が任意の値に収束した場合、将来の乱数を予測できるので、乱数値の収束をチェックする。
【0050】
また、周期検出部のオールゼロチェック部ALZ_CHが、次の乱数値h
1~h
nの全ビットがゼロか否かを毎クロックサイクルチェックする(S19)。
図2の(d)に示すように乱数値がオールゼロになると、その後の乱数値もゼロが続くことになり将来の乱数を予測できるので、乱数値がオールゼロになったか否かをチェックする。
【0051】
上記の乱数の周期の終わりの検出(S17)、収束の検出(S18)、オールゼロの検出(S19)のいずれにも該当しない場合、擬似乱数生成部は乱数の生成を継続する。
【0052】
クロックCK1
一方、クロックCK1で周期の終了、収束、オールゼロのいずれかに該当すると、半クロック後、周期検出部は、ルールデータ制御信号CNT_RLDと反転信号INVを共にオン(「1」)にする(S20)。反転信号INVがオンになると、そのクロックサイクルで擬似乱数生成部が次の乱数値の一部のビットを反転しまたは強制的に1にする(S21)。
【0053】
クロックCK2
また、ルールデータ制御信号CNT_RLDがオンになると、次のクロックサイクルCK2で、ルールデータ生成部がルールデータを変更し、変更後のルールデータを擬似乱数生成部に設定する(S22)。これにより、そのクロックサイクルCK2で、新ルールデータで構成が変更された論理回路が、反転信号で一部のビットが反転された次の乱数値h1~hnを保持したフリップフロップ内の現在の乱数値q1~qnから、次の乱数値h1~hnを生成する。
【0054】
クロックCK3
また、周期検出部が、次のクロックサイクルCK3で、前のクロックサイクルCK2で生成された次の乱数値を新たなシードとして記憶する(S23)。
【0055】
図12は、第2の実施の形態における擬似乱数生成回路装置において、乱数の周期の終了を検出した場合のタイミングチャートを示す図である。第1の実施の形態の
図8と異なるところは、反転信号INVが追加されていること、反転クロック/CK1に同期して擬似乱数生成部が次の乱数値h
1~h
nの一部のビットを反転及び一部のビットを強制的に1に変更することである。これに伴い、クロックCK1の反転クロック/CK1に同期して、次の乱数値h
1~h
n (0x8)が一部変更され、次のクロックCK2に同期して、現在の乱数値q
1~q
n(0x3)が生成される。それ以外の動作は、
図8で説明したとおりである。
【0056】
図13は、第2の実施の形態における擬似乱数生成回路装置において、乱数値の収束を検出した場合のタイミングチャートを示す図である。
図12と異なり、クロックCK1で次の乱数値h
1~h
n(0xF)と現在の乱数値q
1~q
n(0xF)がマッチして収束トリガ信号TRG_CNVが「1」になり、それに応答して、反転クロック/CK1でルールデータ制御信号CNT_RLDと反転信号INVが「1」になることが追加されている。その後、
図12と同様に、反転クロック/CK1に同期して擬似乱数生成部が次の乱数値h
1~h
nの一部のビットを反転及び一部のビットを強制的に1に変更し、クロックCK2でルールデータ生成部がルールデータを切り替えると共に、擬似乱数生成部が新たなシードとなる次の乱数値h
1~h
nを生成し、クロックCK3でシードが更新される。
【0057】
図14は、第2の実施の形態における擬似乱数生成回路装置において、乱数値がオールゼロになるのを検出した場合のタイミングチャートを示す図である。
図12と異り、クロックCK1で次の乱数値h
1~h
n(0xF)の全ビットがオールゼロとなりオールゼロトリガ信号TRG_ALZが「1」になり、それに応答して、反転クロック/CK1でルールデータ制御信号CNT_RLDと反転信号INVが「1」になる。その後、
図12と同様に、反転クロック/CK1に同期して擬似乱数生成部が次の乱数値h
1~h
nの一部のビットを反転及び一部のビットを強制的に1に変更し、クロックCK2でルールデータ生成部がルールデータを切り替えると共に、擬似乱数生成部が新たなシードとなる次の乱数値h
1~h
nを生成し、クロックCK3でシードが更新される。
【0058】
第2の実施の形態によれば、擬似乱数生成部が生成する乱数値が収束した場合、ルールデータを更新し、更新ルールデータで構成された論理回路が生成する乱数値を新たなシードに更新する。これにより、将来の擬似乱数が予測されることを抑制できる。更新ルールデータで構成された論理回路が最初に生成する乱数値を新たなシードに更新するので、その後、乱数の周期終了時にシードと同じ乱数値が生成されるので、乱数の周期の終了を確実に検出できる。また、擬似乱数生成部の動作を停止する必要がなく、シームレスに乱数の生成を継続できる。
【0059】
また、第2の実施の形態によれば、擬似乱数生成部が生成する乱数値の全ビットがオールゼロになった場合、ルールデータを更新し、次の乱数値の一部のビットを反転及び強制的に1にする。これにより、更新ルールデータで構成された論理回路が、オールゼロ以外の現在の乱数値から次の乱数値を生成するので、その後、オールゼロの乱数値が生成されることを回避できる。
【0060】
[第3の実施の形態]
第3の実施の形態では、ルールデータ生成部RLD_GENの構成を一部変更し、ルールデータ制御信号CNT_RLDが「1」になるときに、リングオシレータR_OSCの発振周波数が変更されるようにする。擬似乱数生成部と周期検出部の構成は、第1の実施の形態または第2の実施の形態と同じである。
【0061】
図15は、第3の実施の形態におけるルールデータ生成部RLD_GENの構成例を示す図である。
図15のルールデータ生成部は、
図7のルールデータ生成部の構成に加えて、リングオシレータR_OSCの前段にトグル回路TGLを有する。トグル回路TGLは、ルールデータ制御信号CNT_RLDが「1」のときにアンドゲートA4が出力するクロックA4_outに同期して選択信号SELを「0」「1」の間でトグルする。トグル回路TGLは、フリップフロップとその入出力間に設けたインバータとで構成される。
【0062】
更に、
図15のルールデータ生成部のリングオシレータR_OSCは、
図15の下部に示すとおり、選択信号SELに応じてリングオシレータのインバータチェーンの長さを切り替えるマルチプレクサMPLを有する。選択信号SELが「1」の場合、インバータチェーンの長さが短くなり、リングオシレータの周波数が高く設定される。一方、選択信号SELが「0」の場合、インバータチェーンの長さが長くなり、リングオシレータの周波数が低く設定される。
【0063】
図16は、第3の実施の形態のルールデータ生成部を有する擬似乱数生成回路装置のタイミングチャートを示す図である。このタイミングチャートは、擬似乱数生成回路装置が乱数の周期の終わりを検出した場合のタイミングチャート(
図8)に、選択信号SELを追加したものである。
【0064】
このタイミングチャートにおいて、クロックCK1で周期検出部の周期チェック部CYC_CHが、乱数の周期の終わりを検出して周期終了トリガ信号TRG_Cを「1」にし、その半クロック後の/CK1でルールデータ制御信号CNT_RLDが「1」になる。そして、ルールデータ生成部RLD_GENにおいて、アンドゲートA4が出力するクロックA4_outに同期して、選択信号SELが「0」から「1」に変化し、ルールデータ生成回路10のリングオシレータが高い周波数に切り替えられる。それ以外の動作は、
図8や
図12~
図14と同等である。
図16では、クロックCK1での次の乱数値h
1~h
nと現在の乱数値q
1~q
nが
図8と同じになっているが、その後の次の乱数値と現在の乱数値は第2の実施の形態の反転信号INVにより一部のビットが反転される例になっている。
【0065】
第3の実施の形態によれば、乱数の周期の終わり、乱数値の収束、乱数値がオールゼロになったことのいずれかを検出したとき、ルールデータ生成部のリングオシレータの構成を変更する。従って、ルールデータの乱数性を高めることができ、ルールデータにより構成される論理回路の構成のランダム性が高くなる。それにより、生成される乱数の予測困難性を高くできる。
【0066】
以上のとおり、本実施の形態によれば、擬似乱数生成回路装置が生成する乱数の予測困難性を高くすることができる。
【符号の説明】
【0067】
P_RDM_GEN:擬似乱数生成部
CELL:セル
HB_R:論理回路、ハイブリッドルール論理回路
h1~hn:次の乱数値
q1~qn:現在の乱数値
d1~dn:ルールデータ
s1~sn:シード
CK:クロック
EN:イネーブル信号
CYC_DET:周期検出部
CYC_CH:周期チェック部
CNV_CH:収束チェック部
ALZ_CH:オールゼロチェック部
SEED_MEM:初期シード記憶装置
RLD_GEN:ルールデータ生成部
10:ルールデータ生成回路
11:シフトレジスタ
12:ルールデータ記憶装置