(57)【特許請求の範囲】
【請求項１】
複数の巡回符号を生成する複数の巡回符号生成手段と、
前記複数の巡回符号生成手段にそれぞれ対応するように設けられ、それぞれが、対応する巡回符号生成手段により生成された複数の巡回符号のそれぞれ異なるビット位置から所定数のビットを抽出することによって複数の一様乱数を生成する複数の一様乱数生成手段と、
初期値を格納する単一の初期値格納手段と、
前記初期値格納手段に格納されている初期値を用いて、前記複数の巡回符号生成手段をそれぞれ初期化させる初期化手段と
を備えることを特徴とする乱数生成装置。
【請求項２】
前記一様乱数生成手段のそれぞれは、対応する巡回符号生成手段により生成された複数の巡回符号の不連続なビット位置から所定数のビットを抽出することによって複数の一様乱数を生成することを特徴とする請求項１記載の乱数生成装置。
【請求項３】
前記初期化手段は、前記複数の巡回符号生成手段のうち、特定の１つの巡回符号生成手段に対しては、前記初期値格納手段に格納されている初期値を設定し、他の巡回符号生成手段に対しては、前記特定の１つの巡回符号生成手段により生成された巡回符号を初期値として設定することにより、前記複数の巡回符号生成手段をそれぞれ初期化させることを特徴とする請求項１記載の乱数生成装置。
【請求項４】
前記初期化手段は、前記複数の巡回符号生成手段のうち、特定の１つの巡回符号生成手段に対しては、前記初期値格納手段に格納されている初期値を設定し、他の巡回符号生成手段に対しては、該他の巡回符号生成手段が前記初期値格納手段に格納されている初期値を用いて生成する初期値を設定することにより、前記複数の巡回符号生成手段をそれぞれ初期化させることを特徴とする請求項１記載の乱数生成装置。
【請求項５】
前記初期化手段は、前記初期値格納手段に、前記複数の巡回符号生成手段にそれぞれ対応する初期値を時系列に格納し、対応する初期値を対応する巡回符号生成手段にそれぞれ時系列に設定することにより、前記複数の巡回符号生成手段をそれぞれ初期化させることを特徴とする請求項１記載の乱数生成装置。
【請求項６】
前記巡回符号生成手段のそれぞれに対する初期値は、互いに異なる値であることを特徴とする請求項１ないし５のいずれか１つに記載の乱数生成装置。
【請求項７】
複数の巡回符号を生成する複数の巡回符号生成手段と、前記複数の巡回符号生成手段にそれぞれ対応するように設けられ、それぞれが、対応する巡回符号生成手段により生成された複数の巡回符号のそれぞれ異なるビット位置から所定数のビットを抽出することによって複数の一様乱数を生成する複数の一様乱数生成手段とを用いる乱数生成方法であって、
初期値を単一の初期値格納手段に格納する初期値格納工程と、
前記初期値格納手段に格納されている初期値を用いて、前記複数の巡回符号生成手段をそれぞれ初期化させる初期化工程と
を有することを特徴とする乱数生成方法。
【請求項８】
前記一様乱数生成手段のそれぞれは、対応する巡回符号生成手段により生成された複数の巡回符号の不連続なビット位置から所定数のビットを抽出することによって複数の一様乱数を生成することを特徴とする請求項７記載の乱数生成方法。
【請求項９】
前記初期化工程では、前記複数の巡回符号生成手段のうち、特定の１つの巡回符号生成手段に対しては、前記初期値格納手段に格納されている初期値を設定し、他の巡回符号生成手段に対しては、前記特定の１つの巡回符号生成手段により生成された巡回符号を初期値として設定することにより、前記複数の巡回符号生成手段をそれぞれ初期化させることを特徴とする請求項７記載の乱数生成方法。
【請求項１０】
前記初期化工程では、前記複数の巡回符号生成手段のうち、特定の１つの巡回符号生成手段に対しては、前記初期値格納手段に格納されている初期値を設定し、他の巡回符号生成手段に対しては、該他の巡回符号生成手段が前記初期値格納手段に格納されている初期値を用いて生成する初期値を設定することにより、前記複数の巡回符号生成手段をそれぞれ初期化させることを特徴とする請求項７記載の乱数生成方法。
【請求項１１】
前記初期値格納工程では、前記初期値格納手段に、前記複数の巡回符号生成手段にそれぞれ対応する初期値を時系列に格納し、
前記初期化工程では、前記初期値格納手段に時系列に格納された初期値を時系列に読み出し、対応する巡回符号生成手段にそれぞれ設定することにより、前記複数の巡回符号生成手段をそれぞれ初期化させることを特徴とする請求項７記載の乱数生成方法。
【請求項１２】
前記巡回符号生成手段のそれぞれに対する初期値は、互いに異なる値であることを特徴とする請求項７ないし１１のいずれか１つに記載の乱数生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一様分布特性を有するノイズ信号を生成するための乱数生成装置および乱数生成方法に関する。
【背景技術】
【０００２】
カラー複写機、カラープリンタなどの画像形成装置においては、カラーイメージスキャナなどの画像読取装置またはコンピュータから入力された画像信号に対して種々の処理が行なわれる。例えば、Ｌｏｇ変換、ＣＭＹＫへの色空間変換、プリンタエンジンの特性に合わせたガンマ変換などの処理が施された後、誤差拡散処理などの擬似中間調処理が行われる。通常、擬似中間調処理においては、量子化雑音によるモアレを目立ち難くするために、意図的に画像データに一様乱数値、正規乱数値などを小雑音として加算する乱数加算処理が行われる。
【０００３】
また、上記正規乱数値を生成するためには、通常、複数の一様乱数を加算して正規乱数を生成するという、中心極限定理が用いられる。例えば１２個の１２ビット一様乱数を用いる場合、一様乱数をｕｋ（ｋ＝０〜１１）とすると、正規乱数ｘは、次の（１）式で算出される。
【０００４】
【数１】
0004585949.tif 000002
【０００５】
この正規乱数を生成するために用いられる一様乱数は、通常Ｍ系列の巡回符号生成器が用いられる（例えば、特許文献１参照）。
【０００６】
１２個の１２ビット一様乱数を出力可能な様乱数生成装置について図７を参照しながら説明する。図７は従来の一様乱数を出力可能な乱数生成装置の構成を示すブロック図である。
【０００７】
１２個の１２ビット一様乱数を出力可能な様乱数生成装置は、図７に示すように、ＣＰＵバス７０１を介してＣＰＵ（図示せず）と接続される複数のシードレジスタ７０２〜７０７を有する。各シードレジスタ７０２〜７０７は、それぞれ、対応する２８ビットＭ系列巡回符号生成器７０８〜７１３に初期値（以下、シード値という）を設定する。ここで、シードレジスタ７０２〜７０７は、２８ビットＭ系列巡回符号生成器７０８〜７１３と同等のビット長である２８ビットを有する。２８ビット長Ｍ系列巡回符号生成器７０８〜７１３は、一様乱数のもととなる２８ビットの巡回符号を発生する。この巡回符号は、次の（２）式の原始多項式で表される。
【０００８】
ｘ２８＋ｘ３＋１                                                    …（２）
ここで、２８ビット長Ｍ系列巡回符号生成器７０８〜７１３のビット長は、所望の画素数内で正規乱数の相関が出ないようなビット長すなわち２８ビットに決定されている。この２８ビットは、Ａ３の用紙サイズに対して１インチあたり１２００画素の解像度の画像に対して、１画素間隔で乱数を加算する場合、相関が出ないように正規乱数を発生するために必要なビット長である。
【０００９】
２８ビット長Ｍ系列巡回符号生成器７０８〜７１３のそれぞれは、２つの一様乱数を出力する。２８ビット長Ｍ系列巡回符号生成器７０８から出力される一様乱数ｕ０［１１：０］，ｕ１［１１：０］は、１２ビットの一様乱数であり、次の（３）式および（４）式により表される。
【００１０】
ｕ０［１１：０］
＝［２２，７，１１，２，１８，１，３，１４，２３，９，２１，１０］…（３）
ｕ１［１１：０］
＝［５，２０，８，１６，１９，０，１２，１７，４，６，１３，１５］…（４）
ここで、上記（３）式の右辺の数字は、２８ビット長M系列巡回符号生成器７０８のビット番号であり、所望のビットを抽出することにより一様乱数が生成される。また、ビットの抽出は、乱数としての特性を良くするために、連続したビット位置にならないよう不連続なビット位置から行われる。上記（４）式で表されるｕ１［１１：０］についても同様である。ここで、ｕ０［１１：０］とｕ１［１１：０］は、互いの相関を無くすために、２８ビット長Ｍ系列巡回符号生成器７０８から抽出するビット位置が重ならないようにされている。
【００１１】
２８ビット長Ｍ系列巡回符号生成器７０９から出力される１２ビットの一様乱数ｕ２［１１：０］，ｕ３［１１：０］は、次の（５）式および（６）式により表される。
【００１２】
ｕ２［１１：０］
＝［７，１１，２，１８，１，３，１４，２３，９，２１，１０，２２］…（５）
ｕ３［１１：０］
＝［２０，８，１６，１９，０，１２，１７，４，６，１３，１５，５］…（６）
ここで、上記（５）および（６）式の表記は、上記（３）式と同様である。但し、２８ビット長Ｍ系列巡回符号生成器７０９が抽出するビット位置に関して、ｕ２［１１：０］は、ｕ０［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ０［１１：０］でＭＳＢであるビット番号「２２」がＬＳＢに割り当てられている。同様に、ｕ３［１１：０］は、ｕ１［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ１［１１：０］でＭＳＢだったビット番号「５」をＬＳＢに割り当てている。このように一様乱数間でＭ系列巡回符号生成器からの抽出位置を変更することにより、抽出位置の依存性による、一様乱数間の相関を小さくすることができる。
【００１３】
２８ビット長Ｍ系列巡回符号生成器７１０から出力される１２ビットの一様乱数ｕ４［１１：０]，ｕ５［１１：０］は、次の（７）および（８）式により表される。
【００１４】
ｕ４［１１：０］
＝［１１，２，１８，１，３，１４，２３，９，２１，１０，２２，７］…（７）
ｕ５［１１：０］
＝［８，１６，１９，０，１２，１７，４，６，１３，１５，５，２０］…（８）
ここで、上記（７）および（８）式の表記は、上記（３）式と同様である。但し、２８ビット長Ｍ系列巡回符号生成器７１０が抽出するビット位置に関して、ｕ４［１１：０］はｕ２［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ２［１１：０］でＭＳＢであるビット番号「７」がＬＳＢに割り当てられている。同様に、ｕ５［１１：０］は、ｕ３［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ３［１１：０］でＭＳＢであるビット番号「２０」がＬＳＢに割り当てられている。
【００１５】
２８ビット長Ｍ系列巡回符号生成器７１１から出力される１２ビットの一様乱数ｕ６［１１：０］、ｕ７［１１：０］は、次の（９）および（１０）式により表される。
【００１６】
ｕ６［１１：０］
＝［２，１８，１，３，１４，２３，９，２１，１０，２２，７，１１］…（９）
ｕ７［１１：０］
＝［１６，１９，０，１２，１７，４，６，１３，１５，５，２０，８］…（１０）
ここで、上記（９）および（１０）式の表記は、上記（３）式と同様である。但し、２８ビット長Ｍ系列巡回符号生成器７１１が抽出するビット位置に関して、ｕ６［１１：０］は、ｕ４［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ４［１１：０］でＭＳＢであるビット番号「１１」がＬＳＢに割り当てられている。同様に、ｕ７［１１：０］は、ｕ５［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ５［１１：０］でＭＳＢであるビット番号「８」がＬＳＢに割り当てられている。
【００１７】
２８ビット長Ｍ系列巡回符号生成器７１２から出力される１２ビットの一様乱数ｕ８［１１：０］、ｕ９［１１：０］は、次の（１１）および（１２）式により表される。
【００１８】
ｕ８［１１：０］
＝［１８，１，３，１４，２３，９，２１，１０，２２，７，１１，２]…（１１）
ｕ９［１１：０］
＝［１９，０，１２，１７，４，６，１３，１５，５，２０，８，１６］…(１２)
ここで、上記（１１）および（１２）式の表記は、上記（３）式と同様である。但し、２８ビット長M系列巡回符号生成器７１２が抽出するビット位置に関して、ｕ８［１１：０］は、ｕ６［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ６［１１：０］でＭＳＢであるビット番号「２」がＬＳＢに割り当てられている。同様に、ｕ９［１１：０］は、ｕ７［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ７［１１：０］でＭＳＢであるビット番号「１６」がＬＳＢに割り当てられている。
【００１９】
２８ビット長Ｍ系列巡回符号生成器７１３から出力される１２ビットの一様乱数ｕ１０［１１：０］，ｕ１１［１１：０］は、次の（１３）および（１４）式により表される。
【００２０】
ｕ１０［１１：０］
＝［１，３，１４，２３，９，２１，１０，２２，７，１１，２，１８］…（１３）
ｕ１１［１１：０］
＝［０，１２，１７，４，６，１３，１５，５，２０，８，１６，１９］…（１４）
上記（１３）および（１４）式の表記は、上記（３）式と同様である。但し、２８ビット長Ｍ系列巡回符号生成器７１３が抽出するビット位置に関して、ｕ１０［１１：０］はｕ８［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ８［１１：０］でＭＳＢであるビット番号「１８」がＬＳＢに割り当てられている。同様に、ｕ１１［１１：０］は、ｕ９［１１：０］に対してＭＳＢ側に１ビットシフトし、ｕ９［１１：０］でＭＳＢであるビット番号「１９」がＬＳＢに割り当てられている。
【００２１】
次に、処理の手順について説明する。まず、ＣＰＵバス７０１を介して各シードレジスタ７０２〜７０７に対してシード値が書き込まれる。各シードレジスタ７０２〜７０７に対しては、各８ビット長Ｍ系列巡回符号生成器７０８〜７１３がそれぞれ異なる巡回符号を発生するように、それぞれ異なる値が書き込まれる。これにより、一様乱数ｕ０［１１：０］〜ｕ１１［１１：０］間の相関が無くされる。そして、２８ビット長Ｍ系列巡回符号生成器７０８〜７１３は、シードレジスタ７０２〜７０７の値に基づいて１画素毎に巡回符号を発生し、発生された巡回符号から１２ビットの一様乱数ｕ０［１１：０］〜ｕ１１［１１：０］を抽出して出力する。
【特許文献１】特開２０００−１９６５５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、従来の構成においては、複数のＭ系列巡回符号生成器に対して異なるシード値をＣＰＵなどから設定する必要がある。それととともに、それらの設定値を格納するためのレジスタとして、巡回符号生成器のビット長と同等なビット長を有するレジスタを設ける必要がある。その結果、ハードウエアの規模が大きくなる。例えば図７に示す構成の場合、２８ｘ６＝１６８ビット長のレジスタが必要となり、ハードウエアの規模が増大する。
【００２３】
本発明の目的は、中心極限定理を用いて正規乱数を生成する場合に、ハードウエアの規模を増大させることなく、複数の一様乱数を生成することができる乱数生成装置および乱数生成方法を提供することにある。
【課題を解決するための手段】
【００２４】
本発明は、上記目的を達成するため、複数の巡回符号を生成する複数の巡回符号生成手段と、前記複数の巡回符号生成手段にそれぞれ対応するように設けられ、それぞれが、対応する巡回符号生成手段により生成された複数の巡回符号のそれぞれ異なるビット位置から所定数のビットを抽出することによって複数の一様乱数を生成する複数の一様乱数生成手段と、初期値を格納する単一の初期値格納手段と、前記初期値格納手段に格納されている初期値を用いて、前記複数の巡回符号生成手段をそれぞれ初期化させる初期化手段とを備えることを特徴とする乱数生成装置を提供する。
【００２５】
本発明は、上記目的を達成するため、複数の巡回符号を生成する複数の巡回符号生成手段と、前記複数の巡回符号生成手段にそれぞれ対応するように設けられ、それぞれが、対応する巡回符号生成手段により生成された複数の巡回符号のそれぞれ異なるビット位置から所定数のビットを抽出することによって複数の一様乱数を生成する複数の一様乱数生成手段とを用いる乱数生成方法であって、初期値を単一の初期値格納手段に格納する初期値格納工程と、前記初期値格納手段に格納されている初期値を用いて、前記複数の巡回符号生成手段をそれぞれ初期化させる初期化工程とを有することを特徴とする乱数生成方法を提供する。
【発明の効果】
【００２６】
本発明によれば、中心極限定理を用いて正規乱数を生成する場合に、ハードウエアの規模を増大させることなく、複数の一様乱数を生成することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００２８】
（第１の実施の形態）
図１は本発明の第１の実施の形態に係る乱数生成装置の主要部構成を示すブロック図である。
【００２９】
乱数生成装置は、図１に示すように、ＣＰＵ（図示せず）とＣＰＵ１０１バスを介して接続されるシードレジスタ１０２、複数の２８ビット長Ｍ系列巡回符号生成器１０３〜１０８、および２８ビット長Ｍ系列巡回符号生成器１０３に対応付けて設けられているＯＲゲート回路１１２を有する。
【００３０】
シードレジスタ１０２は、２８ビット長Ｍ系列巡回符号生成器１０３に対してシード値を設定するためのレジスタである。ここで、シードレジスタ１０２は、２８ビット長Ｍ系列巡回符号生成器１０３と同等のビット長である２８ビットのレジスタである。
【００３１】
２８ビット長Ｍ系列巡回符号生成器１０３〜１０８は、図７に示す２８ビット長Ｍ系列巡回符号生成器と同等の構成および機能を有する。
【００３２】
ＯＲゲート回路１１２は、入力されるシード発生期間信号ｉｎｉｔと巡回符号生成イネーブル信号ｅｎａｂｌｅとの論理和を演算し、この演算結果を出力する。ＯＲゲート回路１１２の出力は、２８ビット長Ｍ系列巡回符号生成器１０３に入力される。ここで、シード発生期間信号ｉｎｉｔは、その値が「０」であるとき、２８ビット長Ｍ系列巡回符号生成器１０３に対して２８ビット長Ｍ系列巡回符号生成器１０４〜１０８のシード値を生成するように指示するための信号である。巡回符号生成イネーブル信号ｅｎａｂｌｅは、その値が「１」であるときに、２８ビット長Ｍ系列巡回符号生成器１０３〜１０８に対して巡回符号生成動作を行うように指示するための信号である。ここで、シード発生期間信号ｉｎｉｔまたは巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「０」であるとき、２８ビット長Ｍ系列巡回符号生成器１０３に対して、２８ビット長Ｍ系列巡回符号生成器１０４〜１０８のシード値を生成するように指示が行われる。これに対し、シード発生期間信号ｉｎｉｔまたは巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「１」であるとき、２８ビット長Ｍ系列巡回符号生成器１０３に対して、巡回符号生成動作を行うように指示が行われる。
【００３３】
２８ビット長Ｍ系列巡回符号生成器１０３には、ロード信号ｌｏａｄ０が入力される。このロード信号ｌｏａｄ０は、２８ビット長Ｍ系列巡回符号生成器１０３にシード値をロードするための信号であり、その値が「１」であるときに、２８ビット長Ｍ系列巡回符号生成器１０３にシード値がロードされる。また、２８ビット長Ｍ系列巡回符号生成器１０３は、上述したように、ＯＲゲート回路１１２の出力に応じて、２８ビット長Ｍ系列巡回符号生成器１０４〜１０８のシード値を生成し、または巡回符号生成動作を行う。
【００３４】
２８ビット長Ｍ系列巡回符号生成器１０４には、シード値をロードするためのロード信号ｌｏａｄ１が入力され、ロード信号ｌｏａｄ１の値が「１」であるきに、２８ビット長Ｍ系列巡回符号生成器１０３により生成されたシード値がロードされる。また、２８ビット長Ｍ系列巡回符号生成器１０４に「１」の巡回符号生成イネーブル信号ｅｎａｂｌｅが入力されると、２８ビット長Ｍ系列巡回符号生成器１０４は、巡回符号生成動作を行う。
【００３５】
同様に、２８ビット長Ｍ系列巡回符号生成器１０５〜１０８には、シード値をロードするためのロード信号ｌｏａｄ２〜ｌｏａｄ５および巡回符号生成イネーブル信号ｅｎａｂｌｅが入力される。２８ビット長Ｍ系列巡回符号生成器１０５〜１０８は、入力された信号の値に応じて、２８ビット長Ｍ系列巡回符号生成器１０３により生成されたシード値をロードし、または巡回符号生成動作を行う。
【００３６】
各２８ビット長Ｍ系列巡回符号生成器１０３〜１０８は、それぞれ、１２ビットの一様乱数ｕ０「１１：０」〜ｕ１１「１１：０」を出力する。これらの出力は、図７で説明したものと同等のものであるので、ここでの説明は省略する。
【００３７】
次に、本実施の形態の乱数生成装置の動作について図２を参照しながら説明する。図２は図１の乱数生成装置の動作タイミングを示すタイミングチャートである。ここでは、図２に示す各ブロックの動作タイミングは、システムクロック（図示せず）の立ち上がりに同期するものとして説明する。
【００３８】
時刻ｔ０までにシードレジスタ１０２に対してシード値が設定されるとすると、このシード値は、処理期間中はシートレジスタ１０２に保持され続ける。シード値の設定後、時刻ｔ１〜ｔ２の期間において、ロード信号ｌｏａｄ０の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器１０３に対して、シートレジスタ１０２に保持されているシード値が設定される。
【００３９】
次いで、時刻ｔ２〜ｔ１１の期間においては、シード発生期間信号ｉｎｉｔの値が「１」に設定され、２８ビット長Ｍ系列巡回符号生成器１０３は、２８ビット長Ｍ系列巡回符号生成器１０４〜１０８のそれぞれに対するシード値を生成する。
【００４０】
具体的には、時刻ｔ２〜ｔ３の期間中に、２８ビット長M系列巡回符号生成器１０４に対するシード値の生成が行われる。ここで、時刻ｔ２〜ｔ３の期間中においては、シードレジスタ１０２に与えられたシード値との相関が小さくなるように、Ｍ系列巡回符号生成器のビット数より多くの数の巡回符号の発生が行われる。本実施の形態においては、例えば３０個の巡回符号が発生される。その後、時刻ｔ３〜ｔ４の期間にロード信号ｌｏａｄ１の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器１０３に保持されている値が、シード値として２８ビット長Ｍ系列巡回符号生成器１０４にロードされる。２８ビット長Ｍ系列巡回符号生成器１０４にロードされたシード値は、乱数加算処理が行われる時刻ｔ１５まで保持される。
【００４１】
次いで、時刻ｔ４〜ｔ５の期間中において、２８ビット長Ｍ系列巡回符号生成器１０５に対するシード値の発生が行われる。ここで、時刻ｔ４〜ｔ５の期間中においては、時刻ｔ２〜ｔ３の期間中に２８ビット長Ｍ系列巡回符号生成器１０４に与えられるためのシード値の生成と同様に行われる。すなわち、２８ビット長M系列巡回符号生成器１０４に与えられたシード値との相関が小さくなるように、Ｍ系列巡回符号生成器のビット数より多く数の巡回符号の発生が行われる。その後、時刻ｔ５〜ｔ６の期間中にロード信号ｌｏａｄ２の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器１０３に保持されている値が、シード値として２８ビット長Ｍ系列巡回符号生成器１０５にロードされる。２８ビット長Ｍ系列巡回符号生成器１０５にロードされたシード値は、乱数加算処理が行われる時刻ｔ１５まで保持される。
【００４２】
次いで、時刻ｔ６〜ｔ７の期間中に２８ビット長Ｍ系列巡回符号生成器１０６に対するシード値の発生が行われ、このシード値は、２８ビット長Ｍ系列巡回符号生成器１０５に与えられたシード値との相関が小さい値である。その後、時刻ｔ７〜ｔ８の期間中にロード信号ｌｏａｄ３の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器１０３に保持されている値が、シード値として２８ビット長Ｍ系列巡回符号生成器１０６にロードされる。２８ビット長Ｍ系列巡回符号生成器１０６にロードされたシード値は、乱数加算処理が行われる時刻ｔ１５まで保持される。
【００４３】
次いで、時刻ｔ８〜ｔ９の期間中に２８ビット長Ｍ系列巡回符号生成器１０７に対するシード値の発生が行われ、このシード値は、２８ビット長Ｍ系列巡回符号生成器１０６に与えられたシード値との相関が小さい値である。その後、時刻ｔ９〜ｔ１０の期間中にロード信号ｌｏａｄ４の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器１０３に保持されている値が、シード値として２８ビット長Ｍ系列巡回符号生成器１０７にロードされる。２８ビット長Ｍ系列巡回符号生成器１０７にロードされたシード値は、乱数加算処理が行われる時刻ｔ１５まで保持される。
【００４４】
次いで、時刻ｔ１０〜ｔ１１の期間中に２８ビット長Ｍ系列巡回符号生成器１０８に対するシード値の発生が行われ、このシード値は、２８ビット長Ｍ系列巡回符号生成器１０７に与えられたシード値との相関が小さい値である。その後、時刻ｔ１１〜ｔ１２の期間中にロード信号ｌｏａｄ５の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器１０３に保持されている値が、シード値として２８ビット長Ｍ系列巡回符号生成器１０８にロードされる。２８ビット長Ｍ系列巡回符号生成器１０８にロードされたシード値は、乱数加算処理が行われる時刻ｔ１５まで保持される。
【００４５】
このようにして、２８ビット長Ｍ系列巡回符号生成器１０３により、２８ビット長Ｍ系列巡回符号生成器１０４〜１０８のそれぞれに対するシード値が生成され、設定される。
【００４６】
次いで、時刻ｔ１３〜ｔ１４の期間中にロード信号ｌｏａｄ０の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器１０３に対してシード値が再設定される。そして、時刻ｔ１５以降において、巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「１」となり、各２８ビット長Ｍ系列巡回符号生成器１０３〜１０８から巡回符号が発生され、一様乱数ｕ０「１１：０」〜ｕ１１「１１：０」が出力される。
【００４７】
以上より、本実施の形態によれば、２８ビット長Ｍ系列巡回符号生成器１０３により、シードレジスタ１０２に設定されたシード値に基づいて、２８ビット長Ｍ系列巡回符号生成器１０４〜１０８に対するシード値が生成される。これにより、中心極限定理を用いて正規乱数を生成する場合に、ハードウエアの規模を増大させることなく、複数の一様乱数を生成することができる。
【００４８】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図３および図４を参照しながら説明する。図３は本発明の第２の実施の形態に係る乱数生成装置の構成を示すブロック図、図４は図３の乱数生成装置の動作タイミングを示すタイミングチャートである。
【００４９】
乱数生成装置は、図３に示すように、ＣＰＵ（図示せず）とＣＰＵ３０１バスを介して接続されるシードレジスタ３０２、複数の２８ビット長Ｍ系列巡回符号生成器３０３〜３０８、および２８ビット長Ｍ系列巡回符号生成器３０４〜３０８にそれぞれ対応付けて設けられているＯＲゲート回路３１５〜３１９を有する。
【００５０】
シードレジスタ３０２は、各２８ビット長Ｍ系列巡回符号生成器３０３〜３０８に対してシード値を設定するためのレジスタである。ここで、シードレジスタ３０２は、２８ビット長Ｍ系列巡回符号生成器３０３〜３０８と同等のビット長である２８ビットのレジスタである。
【００５１】
各２８ビット長Ｍ系列巡回符号生成器３０３〜３０８には、それぞれ、シード値をロードするためのロード信号ｌｏａｄが入力される。ロード信号ｌｏａｄの値が「１」であるとき、各２８ビット長Ｍ系列巡回符号生成器３０３〜３０８にシード値がロードされる。また、２８ビット長Ｍ系列巡回符号生成器３０３には、巡回符号生成イネーブル信号ｅｎａｂｌｅが入力される。この巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「１」であるときには、２８ビット長Ｍ系列巡回符号生成器３０３は、巡回符号生成動作を行う。
【００５２】
ＯＲゲート回路３１５〜３１９は、それぞれ、入力される巡回符号生成イネーブル信号ｅｎａｂｌｅとシード発生期間信号ｉｎｉｔ０〜ｉｎｉｔ４との論理演算を行い、その演算結果を出力する。ここで、シード発生期間信号ｉｎｉｔ０〜ｉｎｉｔ４は、その値が「１」であるときに、２８ビット長Ｍ系列巡回符号生成器３０４〜３０８のそれぞれに対してシード値を生成するように指示する信号である。
【００５３】
ＯＲゲート回路３１５〜３１９の出力は、それぞれ対応する２８ビット長Ｍ系列巡回符号生成器３０４〜３０８に入力される。ここで、シード発生期間信号ｉｎｉｔ０〜ｉｎｉｔ４または巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「０」であるとき、各２８ビット長Ｍ系列巡回符号生成器３０４〜３０８は、シード値を生成する。これに対し、シード発生期間信号ｉｎｉｔ０〜ｉｎｉｔ４または巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「１」であるとき、各２８ビット長Ｍ系列巡回符号生成器３０４〜３０８は、巡回符号生成動作を行う。そして、各２８ビット長Ｍ系列巡回符号生成器３０４〜３０８は、１２ビットの一様乱数ｕ０［１１：０］〜ｕ１１［１１：０］を出力する。
【００５４】
次に、本実施の形態の乱数生成装置の動作について図４を参照しながら説明する。ここでは、図４に示す各ブロックの動作タイミングは、システムクロック（図示せず）の立ち上がりに同期するものとして説明する。
【００５５】
時刻ｔ０までにシードレジスタ３０２に対してシード値が設定され、このシード値は、処理期間中はシードレジスタ３０２に保持され続ける。その後、時刻ｔ１〜ｔ２の期間中において、ロード信号ｌｏａｄの値が「１」となり、各２８ビット長Ｍ系列巡回符号生成器３０３〜３０８に対してシード値が設定される。２８ビット長Ｍ系列巡回符号生成器３０３は、時刻ｔ２〜ｔ８の期間中、シード値を保持する。
【００５６】
次いで、時刻ｔ２〜ｔ３の期間中においては、シード発生期間信号ｉｎｉｔ０の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器３０４は、シード値の生成を行う。ここで、このシード値の生成においては、生成するシード値がシードレジスタ３０２に与えられた値との相関が小さくなるように、Ｍ系列巡回符号生成器のビット数より多くの数の巡回符号の発生が行われる。例えば３０個の巡回符号が発生される。その後、２８ビット長Ｍ系列巡回符号生成器３０４は、時刻ｔ３〜ｔ８の期間中、シード値を保持する。
【００５７】
また、時刻ｔ２〜ｔ４の期間中において、シード発生期間信号ｉｎｉｔ１の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器３０５は、シード値の生成を行う。ここで、シード値の生成においては、生成するシード値と時刻ｔ２〜ｔ３の期間中に２８ビット長Ｍ系列巡回符号生成器３０４が生成したシード値との相関が小さくなるようにする。そのために、時刻ｔ２〜ｔ３の期間よりＭ系列巡回符号生成器のビット長以上余分に、巡回符号の発生が行われる。その後、２８ビット長Ｍ系列巡回符号生成器３０５は、時刻ｔ４〜ｔ８の期間中、シード値を保持する。
【００５８】
また、時刻ｔ２〜ｔ５の期間中、シード発生期間信号ｉｎｉｔ２の値が「１」となり、２８ビット長M系列巡回符号生成器３０６は、シード値の生成を行う。ここで、シード値の生成は、生成するシード値と時刻ｔ２〜ｔ４の期間中において２８ビット長Ｍ系列巡回符号生成器３０５が生成するシード値との相関が小さくなるようにする。そのために、時刻ｔ２〜ｔ４の期間よりＭ系列巡回符号生成器のビット長以上余分に、巡回符号の発生が行われる。その後、２８ビット長Ｍ系列巡回符号生成器３０６は、時刻ｔ５〜ｔ８の期間中、シード値を保持する。
【００５９】
また、時刻ｔ２〜ｔ６の期間中、シード発生期間信ｉｎｉｔ３の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器３０７は、シード値の生成を行う。ここで、シード値の生成においては、生成するシード値と時刻ｔ２〜ｔ５の期間中において２８ビット長Ｍ系列巡回符号生成器３０６が生成したシード値との相関が小さくなるようにする。そのために、時刻ｔ２〜ｔ５の期間よりＭ系列巡回符号生成器のビット長以上余分に、巡回符号の発生が行われる。その後、２８ビット長Ｍ系列巡回符号生成器３０７は、時刻ｔ６〜ｔ８の期間中、シード値を保持する。
【００６０】
また、時刻ｔ２〜ｔ７の期間中、シード発生期間信ｉｎｉｔ４の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器３０８は、シード値の生成を行う。ここで、シード値の生成においては、生成するシード値と時刻ｔ２〜ｔ６の期間中において２８ビット長Ｍ系列巡回符号生成器３６が生成したシード値との相関が小さくなるようにする。そのために、時刻ｔ２〜ｔ６の期間よりＭ系列巡回符号生成器のビット長以上余分に、巡回符号の発生が行われる。その後、２８ビット長Ｍ系列巡回符号生成器３０７は、時刻ｔ７〜ｔ８の期間中、シード値を保持する。
【００６１】
そして、時刻ｔ８以降においては、巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「１」となり、各２８ビット長Ｍ系列巡回符号生成器３０３〜３０８は、巡回符号を発生し、一様乱数ｕ０［１１：０］〜ｕ１１［１１：０］を出力する。
【００６２】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図５および図６を参照しながら説明する。図５は本発明の第３の実施の形態に係る乱数生成装置の構成を示すブロック図、図６は図５の乱数生成装置の動作タイミングを示すタイミングチャートである。
【００６３】
乱数生成装置は、図５に示すように、ＣＰＵ（図示せず）とＣＰＵ５０１バスを介して接続されるシードレジスタ５０２、および複数の２８ビット長Ｍ系列巡回符号生成器５０３〜５０８を有する。
【００６４】
シードレジスタ５０２は、各２８ビット長Ｍ系列巡回符号生成器５０３〜５０８に対してシード値を設定するためのレジスタである。ここで、シードレジスタ５０２は、２８ビット長Ｍ系列巡回符号生成器５０３〜５０８と同等のビット長である２８ビットのレジスタである。
【００６５】
各２８ビット長Ｍ系列巡回符号生成器５０３〜５０８には、それぞれ、対応するロード信号ｌｏａｄ０〜ｌｏａｄ５が入力される。ｌｏａｄ０〜ｌｏａｄ５は、シード値をロードするための信号であり、その値が「１」であるとき、対応する２８ビット長Ｍ系列巡回符号生成器５０３〜５０８には、レジスタ５０２に保持されている値がシード値としてロードされる。また、各２８ビット長Ｍ系列巡回符号生成器５０３〜５０８には、ぞれぞれ、巡回符号生成イネーブル信号ｅｎａｂｌｅが入力される。この巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「１」であるときには、各２８ビット長Ｍ系列巡回符号生成器５０３〜５０８は、それぞれ、巡回符号生成動作を行い、１２ビットの一様乱数ｕ０［１１：０］〜ｕ１１［１１：０］を出力する。
【００６６】
次に、本実施の形態の乱数生成装置の動作について図６を参照しながら説明する。ここでは、図６に示す各ブロックの動作タイミングは、システムクロック（図示せず）の立ち上がりに同期するものとして説明する。
【００６７】
時刻ｔ０において、シードレジスタ５０２に対して２８ビット長M系列巡回符号生成器５０３のシード値が設定される。その後、時刻ｔ１〜ｔ２の期間中、ロード信号ｌｏａｄ０の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器５０３には、シートレジスタ５０２からシード値がロードされる。このロードされたシード値は、時刻ｔ１８まで保持される。
【００６８】
時刻ｔ３において、シードレジスタ５０２に対して２８ビット長Ｍ系列巡回符号生成器５０４のシード値が設定される。その後、時刻ｔ４〜ｔ５の期間中においては、ロード信号ｌｏａｄ１の値が「１」となり、２８ビット長M系列巡回符号生成器５０４には、レジスタ５０２からシード値がロードされる。２８ビット長Ｍ系列巡回符号生成器５０４は、ロードされたシード値を、時刻ｔ１８まで保持する。
【００６９】
時刻ｔ６において、シードレジスタ５０２に対して２８ビット長Ｍ系列巡回符号生成器５０５のシード値が設定される。その後、時刻ｔ７〜ｔ８の期間中においては、ロード信号ｌｏａｄ２の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器５０５には、レジスタ５０２に設定されたシード値がロードされる。２８ビット長Ｍ系列巡回符号生成器５０５は、ロードされたシード値を、時刻ｔ１８まで保持する。
【００７０】
時刻ｔ９において、シードレジスタ５０２に対して２８ビット長Ｍ系列巡回符号生成器５０６のシード値が設定される。その後、時刻ｔ１０〜ｔ１１の期間中においては、ロード信号ｌｏａｄ３の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器５０６には、シードレジスタ５０２に設定されたシード値がロードされる。２８ビット長Ｍ系列巡回符号生成器５０６は、ロードされたシード値を、時刻ｔ１８まで保持する。
【００７１】
時刻ｔ１２において、シードレジスタ５０２に対して２８ビット長Ｍ系列巡回符号生成器５０７のシード値が設定される。その後、時刻ｔ１３〜ｔ１４の期間中においては、ロード信号ｌｏａｄ４の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器５０７には、シードレジスタ５０２に設定されたシード値がロードされる。２８ビット長Ｍ系列巡回符号生成器５０７は、ロードされたシード値を、時刻ｔ１８まで保持する。
【００７２】
時刻ｔ１５において、シードレジスタ５０２に対して２８ビット長Ｍ系列巡回符号生成器５０８のシード値が設定される。その後、時刻ｔ１６〜ｔ１７の期間中においては、ロード信号ｌｏａｄ５の値が「１」となり、２８ビット長Ｍ系列巡回符号生成器５０８にシード値がロードされる。２８ビット長Ｍ系列巡回符号生成器５０８は、ロードされたシード値を、時刻ｔ１８まで保持する。
【００７３】
そして、時刻ｔ１８以降においては、巡回符号生成イネーブル信号ｅｎａｂｌｅの値が「１」となり、各２８ビット長Ｍ系列巡回符号生成器５０３〜５０８は、それぞれ、巡回符号を発生し、一様乱数ｕ０［１１：０］〜ｕ１１［１１：０］を出力する。
【００７４】
このように、本実施の形態は、ＣＰＵなどにより各２８ビット長Ｍ系列巡回符号生成器５０３〜５０８のそれぞれに対して演算されたシード値が１つのシードレジスタ５０２を介して、対応する２８ビット長Ｍ系列巡回符号生成器５０３〜５０８にロードされるように構成されている。
【００７５】
上述した各実施の形態によれば、６つのＭ系列巡回符号生成器に対して、１つのシードレジスタのみを用いて、シード値の設定を行うことが可能なように構成されているので、シードレジスタのハードウエア規模を１／６に抑えることが可能となる。
【００７６】
なお、本実施の形態において、２８ビット長Ｍ系列巡回符号生成器に関して説明したが、所望の画像領域での乱数の自己相関が問題にならないようなビット長を選択すれば、２８ビット以外のビット長のものに対しても本発明を適用することができる。
【図面の簡単な説明】
【００７７】
【図１】本発明の第１の実施の形態に係る乱数生成装置の主要部構成を示すブロック図である。
【図２】図１の乱数生成装置の動作タイミングを示すタイミングチャートである。
【図３】本発明の第２の実施の形態に係る乱数生成装置の構成を示すブロック図である。
【図４】図３の乱数生成装置の動作タイミングを示すタイミングチャートである。
【図５】本発明の第３の実施の形態に係る乱数生成装置の構成を示すブロック図である。
【図６】図５の乱数生成装置の動作タイミングを示すタイミングチャートである。
【図７】従来の一様乱数を出力可能な乱数生成装置の構成を示すブロック図である。
【符号の説明】
【００７８】
１０１，３０１，５０１  ＣＰＵバス
１０２，３０２，５０２  シードレジスタ
１０３〜１０８，３０３〜３０８，５０３〜５０８  ２８ビット長Ｍ系列巡回符号生成器
１１２，３１５〜３１９  ＯＲゲート回路
【図１】
0004585949.tif 000003
【図２】
0004585949.tif 000004
【図３】
0004585949.tif 000005
【図４】
0004585949.tif 000006
【図５】
0004585949.tif 000007
【図６】
0004585949.tif 000008
【図７】
0004585949.tif 000009