(57)【要約】【課題】乱数の品質悪化を抑制する。【解決手段】出力回路１２ｂは奇数個のラッチ回路１２ａ１〜１２ａｎの全てが同じ値を出力する場合、その値を出力し、少なくとも１つが異なる値を出力する場合、第１の値と第２の値のうち、出力される数が少ない方の値を出力する。検出回路１２ｃは、ラッチ回路１２ａ１〜１２ａｎの全てが同じ値を出力するか否かを示す検出結果を出力する。制御回路１３は、その検出結果と出力回路１２ｂの出力値とに基づいて、サンプリングタイミングが、ラッチ回路１２ａ１〜１２ａｎが準安定状態となる期間内であるか否かを判定し、その判定結果に基づいて、調整部１１にてラッチ回路１２ａ１〜１２ａｎに供給されるデータ信号ｄｔとクロック信号ｃｌｋの位相を調整するために用いられる調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変えて、サンプリングタイミングをその期間内に調整する。【選択図】図１
2019053385.tif 000002
【特許請求の範囲】
【請求項１】
入力信号と調整信号とを受け、前記入力信号に基づいて、第１の信号と第２の信号とを出力するとともに、前記調整信号に基づいて、前記第１の信号または前記第２の信号の位相を調整する調整部と、
前記第１の信号と前記第２の信号とを受け、前記第２の信号によるサンプリングタイミングにおける前記第１の信号の信号レベルに基づいて、第１の値または第２の値をそれぞれ出力する、３つ以上の奇数個のラッチ回路と、
前記奇数個のラッチ回路のそれぞれが出力する前記第１の値または前記第２の値を受け、前記奇数個のラッチ回路の全てが同じ値を出力する場合、前記同じ値を出力し、前記奇数個のラッチ回路のうちの少なくとも１つが異なる値を出力する場合、前記第１の値と前記第２の値のうち、出力される数が少ない方の値を出力する出力回路と、
前記奇数個のラッチ回路のそれぞれが出力する前記第１の値または前記第２の値を受け、前記奇数個のラッチ回路の全てが前記同じ値を出力するか否かを示す検出結果を出力する検出回路と、
前記検出結果と前記出力回路の出力値とに基づいて、前記サンプリングタイミングが、前記奇数個のラッチ回路が準安定状態となる期間内であるか否かを判定し、前記サンプリングタイミングが前記期間内であるか否かの判定結果に基づいて、前記調整信号の値を変えて、前記サンプリングタイミングを前記期間内に調整する制御回路と、
を有する乱数生成回路。
【請求項２】
前記制御回路は、前記奇数個のラッチ回路の全てが前記同じ値を出力する状態において、前記調整信号の値を変えることで、前記第１の信号に対して前記第２の信号の位相を遅らせるか早めたときの、前記検出結果と前記出力回路の前記出力値の変化に基づいて、前記サンプリングタイミングが前記期間内であるか否かを判定する、
請求項１に記載の乱数生成回路。
【請求項３】
前記制御回路は、前記奇数個のラッチ回路の全てが前記第２の値を出力する状態になるまで、前記調整信号の値を変えた後、前記奇数個のラッチ回路の全てが前記第１の値を出力する状態になるまで、前記調整信号の値を変え、
前記制御回路は、前記奇数個のラッチ回路の全てが前記第２の値を出力する状態になった第１のタイミングにおける前記調整信号の値と、前記奇数個のラッチ回路の全てが前記第１の値を出力する状態になった第２のタイミングにおける前記調整信号の値とに基づいて、前記第１のタイミングと前記第２のタイミングの中間である前記期間内の第３のタイミングに前記サンプリングタイミングを調整する、
請求項１または２に記載の乱数生成回路。
【請求項４】
前記奇数個のラッチ回路と、前記出力回路と、前記検出回路と、前記出力回路の前記出力値と第１の入力値との排他的論理和の演算結果を出力する第１の排他的論理和回路と、をそれぞれが有する複数段直列に接続された複数の乱数生成部と、
前記複数の乱数生成部のそれぞれに供給される前記第２の信号の遅延量を異ならせる遅延回路と、を有し、
前記複数の乱数生成部のうちの初段の乱数生成部の、前記第１の排他的論理和回路に供給される前記第１の入力値は、前記制御回路が出力する前記第１の値または前記第２の値の一方であり、
前記複数の乱数生成部のうちの２段目以降の乱数生成部の、前記第１の排他的論理和回路に供給される前記第１の入力値は、前段の乱数生成部の前記第１の排他的論理和回路が出力する前記演算結果である、
請求項１乃至３の何れか一項に記載の乱数生成回路。
【請求項５】
前記入力信号に同期して第２の入力値を取り込む複数ビットのシフトレジスタを含む線形帰還シフトレジスタを、さらに有し、
前記線形帰還シフトレジスタは、前記出力回路の前記出力値または前記出力値に基づいた値と、前記複数ビットのうちの一部のビットの排他的論理和により生成されるフィードバック信号との排他的論理和である前記第２の入力値を出力する第２の排他的論理和回路を有する、
請求項１乃至４の何れか一項に記載の乱数生成回路。
【請求項６】
前記制御回路が出力する選択信号を受け、前記選択信号に基づいて決定される開始タイミングから、前記奇数個のラッチ回路において前記第１の信号が供給される端子の負荷容量を段階的に増加させる負荷容量可変回路を、さらに有する請求項１乃至５の何れか一項に記載の乱数生成回路。
【請求項７】
前記制御回路は、前記調整信号を、前記出力回路の前記出力値が前記第１の値から前記第２の値に変化したときの第５の値に固定した状態で、前記選択信号の値を変えて、前記開始タイミングを早めていき、前記出力値が前記第２の値から前記第１の値に変化したときの前記選択信号の第６の値により、前記開始タイミングを決定する、
請求項６に記載の乱数生成回路。
【請求項８】
乱数生成回路の制御方法において、
前記乱数生成回路が有する調整部が、入力信号と調整信号とを受け、前記入力信号に基づいて、第１の信号と第２の信号とを出力するとともに、前記調整信号に基づいて、前記第１の信号または前記第２の信号の位相を調整し、
前記乱数生成回路が有する３つ以上の奇数個のラッチ回路が、前記第１の信号と前記第２の信号とを受け、前記第２の信号によるサンプリングタイミングにおける前記第１の信号の信号レベルに基づいて、第１の値または第２の値をそれぞれ出力し、
前記乱数生成回路が有する出力回路が、前記奇数個のラッチ回路のそれぞれが出力する前記第１の値または前記第２の値を受け、前記奇数個のラッチ回路の全てが同じ値を出力する場合、前記同じ値を出力し、前記奇数個のラッチ回路のうちの少なくとも１つが異なる値を出力する場合、前記第１の値と前記第２の値のうち、出力される数が少ない方の値を出力し、
前記乱数生成回路が有する検出回路が、前記奇数個のラッチ回路のそれぞれが出力する前記第１の値または前記第２の値を受け、前記奇数個のラッチ回路の全てが前記同じ値を出力するか否かを示す検出結果を出力し、
前記乱数生成回路が有する制御回路が、前記検出結果と前記出力回路の出力値とに基づいて、前記サンプリングタイミングが、前記奇数個のラッチ回路が準安定状態となる期間内であるか否かを判定し、前記サンプリングタイミングが前記期間内であるか否かの判定結果に基づいて、前記調整信号の値を変えて、前記サンプリングタイミングを前記期間内に調整する、
乱数生成回路の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乱数生成回路及び乱数生成回路の制御方法に関する。
【背景技術】
【０００２】
ラッチ回路を用いて乱数を生成する手法の１つとして、ラッチ回路のメタスタビリティ（準安定性）を利用する手法がある。メタスタビリティは、ラッチ回路に入力されるデータ信号の論理レベルがＨ（High）レベルとＬ（Low）レベルの中間にあるときにクロック信号によるサンプリングが生じる場合、出力値が不確定になる特性である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１／１１７９２９号パンフレット
【特許文献２】特表２００５−５１０９２３号公報
【特許文献３】特開２０１２−１２９７８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、ラッチ回路のメタスタビリティを利用する手法では、サンプリングタイミングを、メタスタビリティが生じる期間（以下メタステーブル期間という）に合わせることが難しく、サンプリングタイミングがメタステーブル期間から外れる場合がある。サンプリングタイミングがメタステーブル期間から外れた場合、ラッチ回路の出力がＨレベルまたはＬレベルに偏り、生成される乱数の品質が悪化する可能性があった。
【０００５】
１つの側面では、本発明は、乱数の品質悪化を抑制することを目的とする。
【課題を解決するための手段】
【０００６】
１つの実施態様では、入力信号と調整信号とを受け、前記入力信号に基づいて、第１の信号と第２の信号とを出力するとともに、前記調整信号に基づいて、前記第１の信号または前記第２の信号の位相を調整する調整部と、前記第１の信号と前記第２の信号とを受け、前記第２の信号によるサンプリングタイミングにおける前記第１の信号の信号レベルに基づいて、第１の値または第２の値をそれぞれ出力する、３つ以上の奇数個のラッチ回路と、前記奇数個のラッチ回路のそれぞれが出力する前記第１の値または前記第２の値を受け、前記奇数個のラッチ回路の全てが同じ値を出力する場合、前記同じ値を出力し、前記奇数個のラッチ回路のうちの少なくとも１つが異なる値を出力する場合、前記第１の値と前記第２の値のうち、出力される数が少ない方の値を出力する出力回路と、前記奇数個のラッチ回路のそれぞれが出力する前記第１の値または前記第２の値を受け、前記奇数個のラッチ回路の全てが前記同じ値を出力するか否かを示す検出結果を出力する検出回路と、前記検出結果と前記出力回路の出力値とに基づいて、前記サンプリングタイミングが、前記奇数個のラッチ回路が準安定状態となる期間内であるか否かを判定し、前記サンプリングタイミングが前記期間内であるか否かの判定結果に基づいて、前記調整信号の値を変えて、前記サンプリングタイミングを前記期間内に調整する制御回路と、を有する乱数生成回路が提供される。
【０００７】
また、１つの実施態様では、乱数生成回路の制御方法が提供される。
【発明の効果】
【０００８】
１つの側面では、乱数の品質悪化を抑制でき、生成された乱数の生成要因も知ることができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態の乱数生成回路の一例を示す図である。
【図２】第２の実施の形態の乱数生成回路の一例を示す図である。
【図３】各ラッチ回路の出力値と検出結果ｍａｔｃｈと出力値ＲＮＤとの一例の関係を示す図である。
【図４】サンプリングタイミングの調整例を示す図である。
【図５】サンプリングタイミングの調整処理の一例の流れを示すフローチャートである。
【図６】図５の各処理についての一例を示すフローチャートである。
【図７】乱数生成回路の乱数生成時の各信号の時間変化の一例を示すタイミングチャートである。
【図８】第３の実施の形態の乱数生成回路の一例を示す図である。
【図９】第４の実施の形態の乱数生成回路の一例を示す図である。
【図１０】ＬＦＳＲの一例を示す図である。
【図１１】第５の実施の形態の乱数生成回路の一例を示す図である。
【図１２】遅延選択回路と容量回路の一例を示す図である。
【図１３】サンプリングタイミングの設定例と負荷容量可変回路による負荷容量の設定例とを示す図である。
【図１４】負荷容量の追加開始タイミングを図１３のように決定したときのメタステーブル期間を示す図である。
【図１５】サンプリングタイミングと負荷容量の追加開始タイミングの設定処理の一例の流れを示すフローチャートである。
【図１６】図１５の各処理についての一例を示すフローチャートである（その１）。
【図１７】図１５の各処理についての一例を示すフローチャートである（その２）。
【図１８】第６の実施の形態の乱数生成回路の一例を示す図である。
【図１９】第７の実施の形態の乱数生成回路の一例を示す図である。
【図２０】第８の実施の形態の乱数生成回路の一例を示す図である。
【図２１】第９の実施の形態の乱数生成回路の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
（第１の実施の形態）
図１は、第１の実施の形態の乱数生成回路の一例を示す図である。
【００１１】
乱数生成回路１０は、調整回路１１ａ，１１ｂを有する調整部１１と、３つ以上の奇数個のラッチ回路１２ａ１，１２ａ２，…，１２ａｎ、出力回路１２ｂ、検出回路１２ｃを有する乱数生成部１２と、制御回路１３と、を有する。
【００１２】
調整部１１は、入力信号と調整信号とを受ける。以下では、入力信号は、クロック信号ＣＬＫであるものとして説明するが、クロック信号ＣＬＫに限定されるものではない。ただし、乱数の発生レートを上げるため、状態遷移（ＨレベルとＬレベルの間での遷移）が頻繁に発生する信号を用いることが望ましい。
【００１３】
クロック信号ＣＬＫは、たとえば、乱数生成回路１０の外部の図示しないクロック信号発生回路から供給される。
調整部１１は、クロック信号ＣＬＫに基づいて、２つの信号（以下データ信号ｄｔとクロック信号ｃｌｋという）を出力するとともに、調整信号に基づいて、データ信号ｄｔまたはクロック信号ｃｌｋの位相を調整する。
【００１４】
図１の例では、調整部１１は、調整回路１１ａ，１１ｂを有する。調整回路１１ａは、調整信号ｔｓｅｌ１に基づいてクロック信号ＣＬＫの位相を調整したデータ信号ｄｔを出力する。調整回路１１ｂは、調整信号ｔｓｅｌ２に基づいてクロック信号ＣＬＫの位相を調整したクロック信号ｃｌｋを出力する。調整回路１１ａ，１１ｂは、たとえば、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値に基づいて遅延量を変えることができる可変遅延回路である。たとえば、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値が増加すると、遅延量が増加する。
【００１５】
ラッチ回路１２ａ１〜１２ａｎは、それぞれ、データ信号ｄｔとクロック信号ｃｌｋとを受け、クロック信号ｃｌｋによるサンプリングタイミングにおけるデータ信号ｄｔの信号レベルに基づいて、ＨレベルまたはＬレベルの値を出力する。Ｈレベルは、たとえば、電源電圧に相当し、Ｌレベルは、基準電位（たとえば、０Ｖ）に相当する。
【００１６】
出力回路１２ｂは、ラッチ回路１２ａ１〜１２ａｎのそれぞれが出力するＨレベルの値またはＬレベルの値を受ける。そして、出力回路１２ｂは、ラッチ回路１２ａ１〜１２ａｎの全てが同じ値を出力する場合、その値を出力する。ラッチ回路１２ａ１〜１２ａｎのうちの少なくとも１つが異なる値を出力する場合、出力回路１２ｂは、ラッチ回路１２ａ１〜１２ａｎが出力するＨレベルの値とＬレベルの値のうち、出力される数が少ない方の値を出力する。
【００１７】
たとえば、ラッチ回路１２ａ１〜１２ａｎにおいて、Ｌレベルの値よりもＨレベルの値が多く出力されている場合には、出力回路１２ｂは、Ｌレベルの出力値ＲＮＤを出力する。逆にＨレベルの値よりもＬレベルの値が多く出力されている場合には、出力回路１２ｂは、Ｈレベルの出力値ＲＮＤを出力する。
【００１８】
出力される数が少ない方の値は、出力される数が多い方の値よりも、乱数である可能性（または乱数としての適格性）が高いためである。出力される数が多い方の値は、メタスタビリティの影響ではなく、スキューの影響により出力された値である可能性が高い。スキューの影響により出力された値を乱数として採用する場合、値に偏りが生じ、乱数としての品質が低い。
【００１９】
検出回路１２ｃは、ラッチ回路１２ａ１〜１２ａｎのそれぞれが出力するＨレベルの値またはＬレベルの値を受ける。そして、検出回路１２ｃは、ラッチ回路１２ａ１〜１２ａｎの全てが同じ値を出力するか否かを示す検出結果ｍａｔｃｈを出力する。以下の説明では、ラッチ回路１２ａ１〜１２ａｎの全てが同じ値を出力する場合、Ｈレベルの検出結果ｍａｔｃｈが出力され、ラッチ回路１２ａ１〜１２ａｎのうちの少なくとも１つが異なる値を出力する場合、Ｌレベルの検出結果ｍａｔｃｈが出力されるものとする。
【００２０】
出力回路１２ｂや、検出回路１２ｃの回路例については後述する。
制御回路１３は、たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路である。また、制御回路１３は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などの演算処理装置としてのプロセッサであってもよい。プロセッサは、ＲＡＭ（Random Access Memory）などのメモリに記憶されたプログラムを実行する。なお、制御回路１３は、複数のプロセッサの集合であってもよい。
【００２１】
制御回路１３は、検出結果ｍａｔｃｈと、出力値ＲＮＤとに基づいて、クロック信号ｃｌｋによるサンプリングタイミングが、ラッチ回路１２ａ１〜１２ｎがメタスタビリティ状態（準安定状態）となる期間内（メタステーブル期間内）であるか否かを判定する。そして、制御回路１３は、その判定結果に基づいて、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変えて、サンプリングタイミングをメタステーブル期間内に調整する。
【００２２】
図１には、データ信号ｄｔがＬレベルからＨレベルに遷移するときの、クロック信号ｃｌｋによるサンプリングタイミングの調整の一例が示されている。
サンプリングタイミングがタイミングｔ１のとき、ラッチ回路１２ａ１〜１２ａｎは、全てＬレベルの値を出力するため、出力回路１２ｂは、Ｌレベルの出力値ＲＮＤを出力し、検出回路１２ｃは、Ｈレベルの検出結果ｍａｔｃｈを出力する。このとき、制御回路１３は、サンプリングタイミングがメタステーブル期間内ではないと判定し、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせるように、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変える。たとえば、制御回路１３は、調整信号ｔｓｅｌ１の値を固定し、調整信号ｔｓｅｌ２の値を増やし、調整回路１１ｂでのクロック信号ｃｌｋの遅延量を増加させることでクロック信号ｃｌｋの位相を遅らせる。
【００２３】
クロック信号ｃｌｋの位相を遅らせたことで、サンプリングタイミングが、たとえば、タイミングｔ２になったとする。タイミングｔ２では、データ信号ｄｔの信号レベルがＬレベルの場合より上がっており、ラッチ回路１２ａ１〜１２ａｎのうち少なくとも１つがＨレベルの値を出力したとする。このとき、検出回路１２ｃから、Ｌレベルの検出結果ｍａｔｃｈが出力される。ただ、まだラッチ回路１２ａ１〜１２ａｎは、Ｈレベルの値よりもＬレベルの値を多く出力するため、出力回路１２ｂは、Ｈレベルの出力値ＲＮＤを出力する。このときも、制御回路１３は、サンプリングタイミングがメタステーブル期間内ではないと判定し、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせるように、調整信号ｔｓｅｌ１，ｔｓｅｌ２を変える。
【００２４】
クロック信号ｃｌｋの位相をさらに遅らせたことで、サンプリングタイミングが、たとえば、タイミングｔ３になったとする。タイミングｔ３では、データ信号ｄｔの信号レベルがＬレベルとＨレベルの中間付近となり、ラッチ回路１２ａ１〜１２ａｎのうち、Ｌレベルの値を出力するものと、Ｈレベルの値を出力するものとがほぼ均等に分かれる。このため、出力回路１２ｂは、Ｌレベルの出力値ＲＮＤとＨレベルの出力値ＲＮＤとを、ほぼ同じ確率で出力する。また、検出回路１２ｃは、Ｌレベルの検出結果ｍａｔｃｈを出力する。
【００２５】
上記のように、制御回路１３がタイミングｔ１，ｔ２，ｔ３の順で、サンプリングタイミングを変化させていったとき、タイミングｔ３では、タイミングｔ２と同様の、出力値ＲＮＤと検出結果ｍａｔｃｈが得られる場合がある。その場合、制御回路１３は、さらにクロック信号ｃｌｋの位相を遅らせ、出力値ＲＮＤがＨレベルからＬレベルに変化したとき（たとえば、タイミングｔ４）、その１つ前のタイミング（すなわちタイミングｔ３）が、メタステーブル期間内であると判定する。そして、制御回路１３は、タイミングｔ３における調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を固定する。
【００２６】
一方、サンプリングタイミングがタイミングｔ５のとき、ラッチ回路１２ａ１〜１２ａｎは、全てＨレベルの値を出力するため、出力回路１２ｂは、Ｈレベルの出力値ＲＮＤ、検出回路１２ｃは、Ｈレベルの検出結果ｍａｔｃｈを出力する。このとき、制御回路１３は、サンプリングタイミングがメタステーブル期間内ではないと判定し、データ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませるように、調整信号ｔｓｅｌ１，ｔｓｅｌ２を変える。たとえば、制御回路１３は、調整信号ｔｓｅｌ１の値を固定し、調整信号ｔｓｅｌ２の値を減らし、調整回路１１ｂでのクロック信号ｃｌｋの遅延量を減少させることでクロック信号ｃｌｋの位相を進める。
【００２７】
クロック信号ｃｌｋの位相を進めたことでサンプリングタイミングが、たとえば、タイミングｔ４となったとする。タイミングｔ４ではデータ信号ｄｔの信号レベルがＨレベルの場合よりも下がっており、ラッチ回路１２ａ１〜１２ａｎのうち少なくとも１つがＬレベルの値を出力したとする。このとき、検出回路１２ｃは、Ｌレベルの検出結果ｍａｔｃｈを出力する。ただ、まだラッチ回路１２ａ１〜１２ａｎは、Ｌレベルの値よりもＨレベルの値を多く出力するため、出力回路１２ｂは、Ｌレベルの出力値ＲＮＤを出力する。このときも、制御回路１３は、サンプリングタイミングがメタステーブル期間内ではないと判定し、データ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませるように、調整信号ｔｓｅｌ１，ｔｓｅｌ２を変える。
【００２８】
クロック信号ｃｌｋの位相を進めたことでサンプリングタイミングが、たとえば、タイミングｔ３となったとする。タイミングｔ３では前述のように、出力回路１２ｂは、Ｌレベルの出力値ＲＮＤとＨレベルの出力値ＲＮＤとを、ほぼ同じ確率で出力する。また、検出回路１２ｃは、Ｌレベルの検出結果ｍａｔｃｈを出力する。
【００２９】
制御回路１３がタイミングｔ５，ｔ４，ｔ３の順で、サンプリングタイミングを変化させていったとき、タイミングｔ３では、タイミングｔ４と同様の、出力値ＲＮＤと検出結果ｍａｔｃｈが得られる場合がある。その場合、制御回路１３は、たとえば、さらにクロック信号ｃｌｋの位相を進ませ、出力値ＲＮＤがＬレベルからＨレベルに変化したとき（タイミングｔ２）、その１つ前のタイミング（すなわちタイミングｔ３）が、メタステーブル期間内であると判定する。そして、制御回路１３は、タイミングｔ３における調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を固定する。
【００３０】
そして、制御回路１３は、以後は、固定した調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、調整部１１に供給して、乱数生成部１２に、メタスタビリティによる乱数を生成させる。
サンプリングタイミングの他の調整方法の例については、後述する。
【００３１】
以上のように、第１の実施の形態の乱数生成回路１０及びその制御方法では、ラッチ回路１２ａ１〜１２ａｎの出力から得られる出力値ＲＮＤ、検出結果ｍａｔｃｈに基づいて、サンプリングタイミングがメタステーブル期間内であるか否かを判定できる。つまり、制御回路１３は、ラッチ回路１２ａ１〜１２ａｎがメタスタビリティ状態であるか否かを判定できる。そして、制御回路１３は、その判定結果に基づいて、データ信号ｄｔまたはクロック信号ｃｌｋの位相を調整して、サンプリングタイミングをメタステーブル期間に合わせることができる。
【００３２】
メタステーブル期間では上記のように、Ｈレベルの出力値ＲＮＤとＬレベルの出力値ＲＮＤとがほぼ同じ確率で出力され、出力値ＲＮＤは、品質のよい乱数となる。つまり、出力値ＲＮＤの値の偏りが低減され、乱数の品質悪化を抑制できる。
【００３３】
なお、ラッチ回路を用いて乱数を生成する方法として、リングオシレータの出力パルスをラッチ回路のデータ端子に入力し、クロック信号をクロック端子に入力し、出力パルスのジッタから乱数を生成する手法がある。しかしこの手法では、サンプリング時の乱数が、直前のサンプリング値に対して依存関係をもつため、生成される乱数に周期性が含まれてしまう。メタスタビリティを利用した本実施の形態の乱数生成回路１０では、乱数に周期性が含まれることもない。
【００３４】
（第２の実施の形態）
図２は、第２の実施の形態の乱数生成回路の一例を示す図である。
乱数生成回路２０は、調整回路２１ａ，２１ｂと、乱数生成部２２と、制御回路２３とを有する。
【００３５】
調整回路２１ａ，２１ｂは、第１の実施の形態の乱数生成回路１０における調整回路１１ａ，１１ｂと同様の機能を有する。
乱数生成部２２は、ラッチ回路２２ａ１，２２ａ２，２２ａ３、インバータ回路２２ｂ１，２２ｂ２，２２ｂ３、ＡＮＤ（論理積）回路２２ｃ１，２２ｃ２，２２ｃ３，２２ｃ４，２２ｃ５、ＯＲ（論理和）回路２２ｄ１，２２ｄ２を有する。
【００３６】
ラッチ回路２２ａ１〜２２ａ３は、それぞれ、データ信号ｄｔを受けるデータ端子（“Ｄ”と表記されている）、クロック信号ｃｌｋを受けるクロック端子（“ＣＫ”と表記されている）、出力端子（“Ｑ”と表記されている）を有する。ラッチ回路２２ａ１〜２２ａ３は、第１の実施の形態の乱数生成回路１０におけるラッチ回路１２ａ１〜１２ａｎと同様の機能を有する。
【００３７】
第２の実施の形態の乱数生成回路２０では、インバータ回路２２ｂ１〜２２ｂ３、ＡＮＤ回路２２ｃ１〜２２ｃ５、ＯＲ回路２２ｄ１，２２ｄ２により、第１の実施の形態の乱数生成回路１０における出力回路１２ｂ及び検出回路１２ｃと同様の機能が実現される。
【００３８】
インバータ回路２２ｂ１は、ラッチ回路２２ａ１の出力値の論理レベルを反転し、インバータ回路２２ｂ２は、ラッチ回路２２ａ２の出力値の論理レベルを反転し、インバータ回路２２ｂ３は、ラッチ回路２２ａ３の出力値の論理レベルを反転する。
【００３９】
ＡＮＤ回路２２ｃ１は、ラッチ回路２２ａ１の出力値と、インバータ回路２２ｂ２の出力値と、インバータ回路２２ｂ３の出力値との論理積の演算結果を出力する。ＡＮＤ回路２２ｃ２は、ラッチ回路２２ａ２の出力値と、インバータ回路２２ｂ１の出力値と、インバータ回路２２ｂ３の出力値との論理積の演算結果を出力する。ＡＮＤ回路２２ｃ３は、ラッチ回路２２ａ３の出力値と、インバータ回路２２ｂ１の出力値と、インバータ回路２２ｂ２の出力値との論理積の演算結果を出力する。ＡＮＤ回路２２ｃ４は、ラッチ回路２２ａ１〜２２ａ３の出力値の論理積の演算結果を出力する。ＡＮＤ回路２２ｃ５は、インバータ回路２２ｂ１〜２２ｂ３の出力値の論理積の演算結果を出力する。
【００４０】
ＯＲ回路２２ｄ１は、ＡＮＤ回路２２ｃ１〜２２ｃ４の出力値の論理和の演算結果を出力する。ＯＲ回路２２ｄ２は、ＡＮＤ回路２２ｃ４，２２ｃ５の出力値の論理和の演算結果を出力する。
【００４１】
ＯＲ回路２２ｄ１の出力値が乱数生成部２２の出力値ＲＮＤであり、ＯＲ回路２２ｄ２の出力値が、ラッチ回路２２ａ１〜２２ａ３の全てが同じ値を出力するか否かを示す検出結果ｍａｔｃｈである。
【００４２】
制御回路２３は、第１の実施の形態の乱数生成回路１０における制御回路１３と同様の機能を有する。なお、制御回路２３は、制御信号ＣＴＲＬによって乱数生成回路２０の外部から制御されてもよい。また、制御回路２３は、出力値ＲＮＤがクロック信号ＣＬＫの所定サイクル数、同じ値である場合には、異常状態であることを示す信号ＥＲＲを出力してもよい。
【００４３】
図３は、各ラッチ回路の出力値と検出結果ｍａｔｃｈと出力値ＲＮＤとの一例の関係を示す図である。
図３には、ラッチ回路２２ａ１〜２２ａ３の出力値と、ＯＲ回路２２ｄ１の出力値ＲＮＤと、ＯＲ回路２２ｄ２が出力する検出結果ｍａｔｃｈとの関係が示されている。
【００４４】
ラッチ回路２２ａ１〜２２ａ３の出力値が全てＬレベルである場合、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルになる。ラッチ回路２２ａ１〜２２ａ３の出力値のうち、２つがＬレベル、１つがＨレベルである場合、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＨレベルになる。ラッチ回路２２ａ１〜２２ａ３の出力値のうち、２つがＨレベル、１つがＬレベルである場合、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＬレベルになる。ラッチ回路２２ａ１〜２２ａ３の出力値が全てＨレベルである場合、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルになる。
【００４５】
制御回路２３は、これらの検出結果ｍａｔｃｈと出力値ＲＮＤとの組み合わせに基づいて、出力値ＲＮＤによる乱数の生成要因を判別できる。以下では、データ信号ｄｔがＬレベルからＨレベルに遷移する際のメタステーブル期間内にサンプリングタイミングを調整する場合について説明する。
【００４６】
検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルである場合、スキューによりデータ信号ｄｔに対してクロック信号ｃｌｋの位相が進んでおり、サンプリングタイミングがメタステーブル期間内ではないことを示す。そのため、乱数生成要因は、メタスタビリティではなくスキューである。スキューは、電圧変化や温度変化によるノイズなどによって生じる遅延時間のばらつきである。サンプリングタイミングごとに、上記のような出力値ＲＮＤが得られる場合、出力値ＲＮＤは、Ｌレベルの値に偏り、品質の悪い乱数が得られる。そのため、制御回路２３は、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせるように調整信号ｔｓｅｌ１，ｔｓｅｌ２（どちらか一方でもよい）の値を変える。
【００４７】
検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルである場合、スキューによりデータ信号ｄｔに対してクロック信号ｃｌｋの位相が遅れており、サンプリングタイミングがメタステーブル期間内ではないことを示す。そのため、乱数生成要因は、メタスタビリティではなくスキューである。サンプリングタイミングごとに、上記のような出力値ＲＮＤが得られる場合、出力値ＲＮＤは、Ｈレベルの値に偏り、品質の悪い乱数が得られる。そのため、制御回路２３は、クロック信号ｃｌｋの位相を進めるように調整信号ｔｓｅｌ１，ｔｓｅｌ２（どちらか一方でもよい）の値を変える。
【００４８】
検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＬレベルまたはＨレベルである場合、出力値ＲＮＤは、スキューの影響またはメタスタビリティの影響を受けている。つまり、乱数生成要因は、スキューまたはメタスタビリティとなる。
【００４９】
乱数生成要因をメタスタビリティとするために、制御回路２３は、たとえば、以下のようにサンプリングタイミングの調整を行う。
図４は、サンプリングタイミングの調整例を示す図である。
【００５０】
図４には、データ信号ｄｔがＬレベルからＨレベルに遷移するときの、サンプリングタイミングの調整例が４つ示されている。また、図４の例では、データ信号ｄｔの信号レベルが電圧Ｖ１以下となる期間ｔａ、データ信号ｄｔの信号レベルが電圧Ｖ１より大きく、電圧Ｖ２未満となる期間ｔｂ、データ信号ｄｔの信号レベルが電圧Ｖ２以上、電圧Ｖ３以下となる期間ｔｃが示されている。さらに、データ信号ｄｔの信号レベルが電圧Ｖ３より大きく、電圧Ｖ４未満となる期間ｔｄ、データ信号ｄｔの信号レベルが電圧Ｖ４以上となる期間ｔｅが示されている。電圧Ｖ１〜Ｖ４は、たとえば、ラッチ回路２２ａ１〜２２ａ３の特性に応じて決まる。期間ｔａ〜ｔｅは、たとえば、電圧Ｖ１〜Ｖ４と、ラッチ回路２２ａ１〜２２ａ３のデータ端子の負荷容量に応じて決まる。
【００５１】
期間ｔａ内にサンプリングタイミングが位置する場合、ラッチ回路２２ａ１〜２２ａ３の出力値は、全てＬレベルとなる。期間ｔｂ内にサンプリングタイミングが位置する場合、ラッチ回路２２ａ１〜２２ａ３の出力値は、Ｌレベルになる可能性が高いが、メタスタビリティによって、ラッチ回路２２ａ１〜２２ａ３の少なくとも１つの出力値がＨレベルになる場合がある。期間ｔｃ内にサンプリングタイミングが位置する場合、ラッチ回路２２ａ１〜２２ａ３は、メタスタビリティによって、Ｈレベルの出力値とＬレベルの出力値をほぼ同じ確率で出力する。期間ｔｄ内にサンプリングタイミングが位置する場合、ラッチ回路２２ａ１〜２２ａ３の出力値は、Ｈレベルになる可能性が高いが、メタスタビリティによって、ラッチ回路２２ａ１〜２２ａ３の少なくとも１つの出力値がＬレベルになる場合がある。期間ｔｅ内にサンプリングタイミングが位置する場合、ラッチ回路２２ａ１〜２２ａ３の出力値は、全てＨレベルとなる。
【００５２】
期間ｔａ〜ｔｃのうち、品質のよい乱数生成に適している期間は、ラッチ回路２２ａ１〜２２ａ３がメタスタビリティ状態となる期間ｔｃである。そのため、制御回路２３は、期間ｔｃを、サンプリングタイミングを設定する目標の期間（設定目標期間）とし、たとえば、以下に示すような４つのタイミング設定方法でサンプリングタイミングを調整する。
【００５３】
（方法１）サンプリングタイミングが期間ｔａ内である場合、検出結果ｍａｔｃｈはＨレベル、出力値ＲＮＤはＬレベルとなる。その場合、制御回路２３は、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変え、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせていくタイミング設定を行う。
【００５４】
一度のタイミング設定で変える位相の量は、より小さくすることが、設定目標期間にサンプリングタイミングを適切に合わせる上で望ましいが、あまり小さくし過ぎると、調整時間が長くなる。
【００５５】
なお、制御回路２３は、少なくとも１つ前のタイミング設定で用いた調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、図示しない記憶部（たとえば、レジスタなど）に記憶させておく。
【００５６】
クロック信号ｃｌｋの位相を遅らせていくことで、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＨレベルに変わると、制御回路２３は、さらに、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変え、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせる。検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＨレベルの場合、サンプリングタイミングは設定目標期間である期間ｔｃ内である可能性もあるが、期間ｔｂ内である可能性もあるためである。
【００５７】
クロック信号ｃｌｋの位相を遅らせていくことで、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＬレベルに変わると、サンプリングタイミングが期間ｔｃ内または期間ｔｄ内であることを意味する。このため、制御回路２３は、今回行ったタイミング設定に対して１つ前に行ったタイミング設定で用いた、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を以後用いることで、以後の各サンプリングタイミングを精度よく設定目標期間に合わせることができる。
【００５８】
（方法２）方法２は、たとえば、方法１において、クロック信号ｃｌｋの位相を遅らせていくことで、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＬレベルに変わらずに、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルに変わった場合に行われる。
【００５９】
制御回路２３は、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルに変わったときの調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を記憶部に記憶させておく。そして、制御回路２３は、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変え、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルに変わるまで、データ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませる。制御回路２３は、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルに変わったときの、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を記憶部に記憶させる。
【００６０】
制御回路２３は、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルとなったタイミングと、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルとなったタイミングの調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を記憶部から取得する。そして制御回路２３は、取得した値に基づいて、サンプリングタイミングを両タイミングの中間のタイミングに調整する調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を求める。たとえば、制御回路２３は、両タイミングでの調整信号ｔｓｅｌ１，ｔｓｅｌ２の値の平均を求めることで、両タイミングの中間のタイミングにサンプリングタイミングを合わせる調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を求める。
【００６１】
そして、制御回路２３は、求めた調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、以後、調整回路２１ａ，２１ｂに供給することで、以後の各サンプリングタイミングは期間ｔｂ〜ｔｄのほぼ中央のタイミングとなる。つまり、サンプリングタイミングを、メタステーブル期間である設定目標期間内に合わせることができる。
【００６２】
（方法３）初期状態におけるサンプリングタイミングが期間ｔｅ内である場合、検出結果ｍａｔｃｈはＨレベル、出力値ＲＮＤはＨレベルとなる。その場合、制御回路２３は、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変え、データ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませていくタイミング設定を行う。
【００６３】
クロック信号ｃｌｋの位相を進ませていくことで、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＬレベルに変わると、制御回路２３は、さらに、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変え、データ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませる。検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＬレベルの場合、サンプリングタイミングは設定目標期間である期間ｔｃ内である可能性もあるが、期間ｔｄ内である可能性もあるためである。
【００６４】
クロック信号ｃｌｋの位相を進ませていくことで、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＨレベルに変わると、サンプリングタイミングが期間ｔｃ内または期間ｔｂ内であることを意味する。このため、制御回路２３は、今回行ったタイミング設定に対して１つ前に行ったタイミング設定で用いた、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を以後用いることで、以後の各サンプリングタイミングを精度よく設定目標期間に合わせることができる。
【００６５】
（方法４）方法４は、たとえば、方法３において、クロック信号ｃｌｋの位相を進めていくことで、検出結果ｍａｔｃｈがＬレベル、出力値ＲＮＤがＨレベルに変わらずに、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルに変わった場合に行われる。
【００６６】
制御回路２３は、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルに変わったときの調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を記憶部に記憶させておく。そして、制御回路２３は、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変え、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルに変わるまで、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせる。制御回路２３は、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルに変わったときの、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を記憶部に記憶させる。
【００６７】
制御回路２３は、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＨレベルとなったタイミングと、検出結果ｍａｔｃｈがＨレベル、出力値ＲＮＤがＬレベルとなったタイミングの調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を記憶部から取得する。そして制御回路２３は、取得した値に基づいて、サンプリングタイミングを両タイミングの中間のタイミングに調整する調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を求める。たとえば、制御回路２３は、両タイミングでの調整信号ｔｓｅｌ１，ｔｓｅｌ２の値の平均を求めることで、両タイミングの中間のタイミングにサンプリングタイミングを合わせる調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を求める。
【００６８】
そして、制御回路２３は、求めた調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、以後、調整回路２１ａ，２１ｂに供給することで、以後の各サンプリングタイミングは期間ｔｂ〜ｔｄのほぼ中央のタイミングとなる。つまり、サンプリングタイミングを、メタステーブル期間である設定目標期間内に合わせることができる。
【００６９】
以下、上記４つの方法を用いてサンプリングタイミングを調整する処理の流れをフローチャートで説明する。
図５は、サンプリングタイミングの調整処理の一例の流れを示すフローチャートである。
【００７０】
制御回路２３は、調整信号ｔｓｅｌ１，ｔｓｅｌ２の初期値を調整回路２１ａ，２１ｂに供給して調整回路２１ａ，２１ｂを初期化する（ステップＳ１）。
その後、制御回路２３は、初期状態における調整回路２１ａ，２１ｂから出力されるデータ信号ｄｔ及びクロック信号ｃｌｋを用いて乱数生成部２２から出力される検出結果ｍａｔｃｈ及び出力値ＲＮＤを検出する。そして制御回路２３は、検出結果ｍａｔｃｈ及び出力値ＲＮＤからサンプリングタイミングを含む期間を判定する（ステップＳ２）。
【００７１】
そして、制御回路２３は、判定した期間に応じて、図４に示した方法１または方法３によるタイミング設定を行う（ステップＳ３）。
制御回路２３は、方法１または方法３によるタイミング設定により、サンプリングタイミングをメタステーブル期間内に設定が可能であるか否かを判定する（ステップＳ４）。制御回路２３は、上記設定が可能であると判定した場合、調整処理を終了する。
【００７２】
制御回路２３は、上記設定が可能ではないと判定した場合、図４に示した方法２または方法４によるタイミング設定を行い（ステップＳ５）、調整処理を終了する。
図６は、図５の各処理についての一例を示すフローチャートである。
【００７３】
図５のステップＳ１の初期化処理の例として、制御回路２３は、調整信号ｔｓｅｌ１，ｔｓｅｌ２の初期値を調整回路２１ａ，２１ｂに供給して調整回路２１ａ，２１ｂにオフセット遅延を設定する（ステップＳ１０）。これにより、データ信号ｄｔ及びクロック信号ｃｌｋは、クロック信号ＣＬＫに対してオフセット遅延分、遅延した信号になる。
【００７４】
図５のステップＳ２の処理の例として、以下の処理が行われる。
調整回路２１ａ，２１ｂはクロック信号ＣＬＫを受け、ラッチ回路２２ａ１〜２２ａ３は、調整回路２１ａが出力するデータ信号ｄｔを、調整回路２１ｂが出力するクロック信号ｃｌｋによるサンプリングタイミングで取り込む（ステップＳ１１）。
【００７５】
制御回路２３は、乱数生成部２２が出力する検出結果ｍａｔｃｈと出力値ＲＮＤとから、サンプリングタイミングを含む期間を判定する（ステップＳ１２）。検出結果ｍａｔｃｈがＨレベル、且つ、出力値ＲＮＤがＬレベルである場合、制御回路２３は、サンプリングタイミングが図４に示した期間ｔａ内であると判定し、ステップＳ１４の処理を行う。
【００７６】
検出結果ｍａｔｃｈがＬレベル、且つ、出力値ＲＮＤがＬレベルまたはＨレベルである場合、制御回路２３は、サンプリングタイミングが図４に示した期間ｔｂ〜ｔｄ内であると判定する。その場合、制御回路２３は、サンプリングタイミングが期間ｔａ内に移動するように、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変えてサンプリングタイミングを調整する（ステップＳ１３）。
【００７７】
検出結果ｍａｔｃｈがＨレベル、且つ、出力値ＲＮＤがＨレベルである場合、制御回路２３は、サンプリングタイミングが図４に示した期間ｔｅ内であると判定する。その場合、図４に示した方法３または方法４によるタイミング設定が行われるが、図６では図示が省略されている。
【００７８】
図５のステップＳ３，Ｓ４の処理の例として、以下の処理が行われる。
制御回路２３は、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせるように調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変える（ステップＳ１４）。
【００７９】
そして、調整回路２１ａ，２１ｂはクロック信号ＣＬＫを受け、ラッチ回路２２ａ１〜２２ａ３は、調整回路２１ａが出力するデータ信号ｄｔを、調整回路２１ｂが出力するクロック信号ｃｌｋによるサンプリングタイミングで取り込む（ステップＳ１５）。
【００８０】
そして、制御回路２３は、検出結果ｍａｔｃｈがＬレベルで、且つ、出力値ＲＮＤがＬレベルであるか否かを判定する（ステップＳ１６）。
検出結果ｍａｔｃｈがＬレベルで、且つ、出力値ＲＮＤがＬレベルである場合、図４の方法１のタイミング設定でサンプリングタイミングをメタステーブル期間内に設定可能である。この場合、制御回路２３は、前回のタイミング設定で用いた調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を設定し（ステップＳ１７）、調整処理を終了する。ステップＳ１７の処理で設定される調整信号ｔｓｅｌ１，ｔｓｅｌ２の値は、たとえば、記憶部に記憶され、以後は記憶された値が調整回路２１ａ，２１ｂに設定され続ける。
【００８１】
ステップＳ１６の処理で、検出結果ｍａｔｃｈと出力値ＲＮＤの少なくとも一方がＨレベルであると判定した場合、制御回路２３は、検出結果ｍａｔｃｈがＨレベルで、且つ、出力値ＲＮＤがＨレベルであるか否かを判定する（ステップＳ１８）。検出結果ｍａｔｃｈと出力値ＲＮＤの少なくとも一方がＬレベルである場合、ステップＳ１４からの処理が繰り返される。
【００８２】
ステップＳ１８の処理で、検出結果ｍａｔｃｈと出力値ＲＮＤの両方がＨレベルであると判定された場合、図４の方法１のタイミング設定でサンプリングタイミングをメタステーブル期間内に設定不可能である。その場合、図５のステップＳ５の処理の例として、以下の処理が行われる。
【００８３】
制御回路２３は、検出結果ｍａｔｃｈと出力値ＲＮＤの両方がＨレベルとなったときのタイミング設定に用いた調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、記憶部に記憶させる（ステップＳ１９）。
【００８４】
その後、制御回路２３は、データ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませるように調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変える（ステップＳ２０）。
そして、調整回路２１ａ，２１ｂはクロック信号ＣＬＫを受け、ラッチ回路２２ａ１〜２２ａ３は、調整回路２１ａが出力するデータ信号ｄｔを、調整回路２１ｂが出力するクロック信号ｃｌｋによるサンプリングタイミングで取り込む（ステップＳ２１）。
【００８５】
そして、制御回路２３は、検出結果ｍａｔｃｈがＨレベルで、且つ、出力値ＲＮＤがＬレベルであるか否かを判定する（ステップＳ２２）。検出結果ｍａｔｃｈがＬレベルか、出力値ＲＮＤがＨレベルである場合、ステップＳ２０からの処理が繰り返される。
【００８６】
検出結果ｍａｔｃｈがＨレベルで、且つ、出力値ＲＮＤがＬレベルである場合、制御回路２３は、そのときのタイミング設定に用いた調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、記憶部に記憶させる（ステップＳ２３）。
【００８７】
そして、制御回路２３は、ステップＳ１９，Ｓ２３の処理で記憶した調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を記憶部から取得する。そして取得した値に基づいて、ステップＳ１８，Ｓ２２の判定処理が“ＹＥＳ”となる各タイミングの中間にサンプリングタイミングを合わせる調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を求める。そして、制御回路２３は、求めた調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を調整回路２１ａ，２１ｂに設定する（ステップＳ２４）。そして、制御回路２３は、調整処理を終了する。ステップＳ２４の処理で設定される調整信号ｔｓｅｌ１，ｔｓｅｌ２の値は、たとえば、記憶部に記憶され、以後は記憶された値が調整回路２１ａ，２１ｂに設定され続ける。
【００８８】
図６では図示が省略されているが、ステップＳ１２の処理で、サンプリングタイミングを含む期間が期間ｔｅと判定された場合、ステップＳ１４〜Ｓ２４のうち、ステップＳ１４，Ｓ１６，Ｓ１８，Ｓ２０，Ｓ２２を以下のように変更した処理が行われる。
【００８９】
まず、制御回路２３は、ステップＳ１４の処理の代わりに、データ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませるように調整信号ｔｓｅｌ１，ｔｓｅｌ２を変更する処理を行う。
【００９０】
また、制御回路２３は、ステップＳ１６の処理の代わりに、検出結果ｍａｔｃｈがＬレベルで、且つ、出力値ＲＮＤがＨレベルであるか否かを判定する処理を行う。制御回路２３は、検出結果ｍａｔｃｈがＬレベルで、且つ、出力値ＲＮＤがＨレベルである場合にはステップＳ１７の処理を行う。
【００９１】
制御回路２３は、検出結果ｍａｔｃｈがＨレベルまたは、出力値ＲＮＤがＬレベルである場合、ステップＳ１８の処理の代わりに、検出結果ｍａｔｃｈがＨレベルで、且つ、出力値ＲＮＤがＬレベルであるか否かを判定する処理を行う。制御回路２３は、検出結果ｍａｔｃｈがＨレベルで、且つ、出力値ＲＮＤがＬレベルである場合、ステップＳ１９の処理を行う。
【００９２】
制御回路２３は、検出結果ｍａｔｃｈがＬレベルまたは、出力値ＲＮＤがＨレベルである場合、上記のデータ信号ｄｔに対してクロック信号ｃｌｋの位相を進ませるように調整信号ｔｓｅｌ１，ｔｓｅｌ２を変更する処理を繰り返す。
【００９３】
また、制御回路２３は、ステップＳ２０の処理の代わりに、データ信号ｄｔに対してクロック信号ｃｌｋの位相を遅らせるように調整信号ｔｓｅｌ１，ｔｓｅｌ２を変更する処理を行う。
【００９４】
また、制御回路２３は、ステップＳ２２の処理の代わりに、検出結果ｍａｔｃｈ及び出力値ＲＮＤが両方Ｈレベルであるか否かを判定する。制御回路２３は、検出結果ｍａｔｃｈ及び出力値ＲＮＤが両方Ｈレベルである場合、ステップＳ２３の処理を行う。制御回路２３は、検出結果ｍａｔｃｈ及び出力値ＲＮＤの少なくとも一方がＬレベルである場合、上記のクロック信号ｃｌｋの位相を遅らせるように調整信号ｔｓｅｌ１，ｔｓｅｌ２を変更する処理を繰り返す。
【００９５】
図７は、乱数生成回路の乱数生成時の各信号の時間変化の一例を示すタイミングチャートである。
図７には、クロック信号ＣＬＫ，ｃｌｋ、データ信号ｄｔ、ラッチ回路２２ａ１〜２２ａ３の出力値、検出結果ｍａｔｃｈ、出力値ＲＮＤ、乱数生成要因、制御信号ＣＴＲＬ、調整信号ｔｓｅｌ１，ｔｓｅｌ２、信号ＥＲＲの時間変化の例が示されている。なお、図７では、ラッチ回路２２ａ１〜２２ａ３の出力値は、まとめて模式的に示されている。
【００９６】
クロック信号ＣＬＫの位相が調整回路２１ａ，２１ｂにて調整されることで、クロック信号ｃｌｋとデータ信号ｄｔが生成される。そして、図４〜図６に示した方法でクロック信号ｃｌｋによるサンプリングタイミングが、メタステーブル期間内に調整されることで、ラッチ回路２２ａ１〜２２ａ３の出力値は、不定となる期間を経た後、ＨレベルまたはＬレベルの値となる。
【００９７】
検出結果ｍａｔｃｈ、出力値ＲＮＤも、ラッチ回路２２ａ１〜２２ａ３の出力値の変化に応じて、不定となる期間を経た後、ＨレベルまたはＬレベルの値となる。乱数生成要因は、前述したようにクロック信号ｃｌｋによるサンプリングタイミングが、メタステーブル期間内に調整されることで、メタスタビリティとなる。
【００９８】
制御信号ＣＴＲＬは、乱数生成時には変化しない。また、図７では、サンプリングタイミングの調整中の調整信号ｔｓｅｌ１，ｔｓｅｌ２の変化は図示が省略されているが、制御回路２３は、サンプリングタイミングの調整後は、調整信号ｔｓｅｌ１，ｔｓｅｌ２を変化しない。また、制御回路２３は、乱数生成要因がメタスタビリティである場合には、信号ＥＲＲをＬレベルにし、乱数生成要因がスキューである場合には、信号ＥＲＲをＨレベルにする。
【００９９】
なお、制御回路２３は、出力値ＲＮＤがクロック信号ＣＬＫの所定サイクル数、同じ値である場合には、信号ＥＲＲをＨレベルとして、異常状態であることを外部に通知するようにしてもよい。
【０１００】
上記のように制御回路２３は、検出結果ｍａｔｃｈ及び出力値ＲＮＤに基づいて、サンプリングタイミングをメタステーブル期間である期間ｔｃ内に調整することで、乱数生成要因をメタスタビリティとすることができる。このため、図７に示されている出力値ＲＮＤは、値の偏りなどが低減された品質のよい乱数となる。
【０１０１】
（第３の実施の形態）
図８は、第３の実施の形態の乱数生成回路の一例を示す図である。図８において、図２に示した第２の実施の形態の乱数生成回路２０と同じ要素については同一符号が付されている。
【０１０２】
第３の実施の形態の乱数生成回路３０は、乱数生成部３０ａ０，３０ａ１，…，３０ａｉ，…，３０ａｎと、乱数生成部３０ａ０〜３０ａｎのそれぞれに供給されるクロック信号ｃｌｋの遅延量を異ならせる遅延回路３０ｂ１，３０ｂ２，…，３０ｂｎを有する。
【０１０３】
乱数生成部３０ａ０は、第２の実施の形態の乱数生成回路２０の乱数生成部２２に含まれる要素の他に、ＥｘＯＲ（排他的論理和）回路３１ａ０を有する。ＥｘＯＲ回路３１ａ０は、ＯＲ回路２２ｄ１の出力値と、制御回路３０ｃから供給される入力値Ｒ０との排他的論理和の演算結果を出力する。ＥｘＯＲ回路３１ａ０の出力値は、後段の乱数生成部３０ａ１のＥｘＯＲ回路３１ａ１に入力値Ｒ０の代わりに供給される。
【０１０４】
なお、乱数生成時には、入力値Ｒ０は、ＨレベルまたはＬレベルの一方に固定される。乱数生成回路３０の試験時には、入力値Ｒ０は変更されてもよい。
他の乱数生成部３０ａ１〜３０ａｎも乱数生成部３０ａ０と同様の回路である。
【０１０５】
このような乱数生成回路３０では、最後段の乱数生成部３０ａｎのＥｘＯＲ回路３１ａｎの出力値が、出力値ＲＮＤとなる。また、乱数生成部３０ａ０〜３０ａｎのそれぞれは、第２の実施の形態の乱数生成回路２０の乱数生成部２２が出力する検出結果ｍａｔｃｈ、出力値ＲＮＤに対応する検出結果及び出力値を制御回路３０ｃに供給する。たとえば、乱数生成部３０ａ０は、検出結果ｍａｔｃｈ０と出力値ＲＮＤ０を制御回路３０ｃに供給する。
【０１０６】
制御回路３０ｃは、たとえば、クロック信号ｃｌｋに対する遅延が乱数生成部３０ａ０〜３０ａｎのうちで中間の値となる乱数生成部３０ａｉから供給される検出結果ｍａｔｃｈｉと出力値ＲＮＤｉに基づいて、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を決定する。調整信号ｔｓｅｌ１，ｔｓｅｌ２の値は、図４〜図６に示した方法により、乱数生成部３０ａｉに到達するクロック信号ｃｌｋによるサンプリングタイミングがメタステーブル期間内になるように決定される。
【０１０７】
乱数生成回路３０では、遅延回路３０ｂ１〜３０ｂｎによる遅延時間を適宜設定することで、動作条件の変化などでスキューが発生しても、乱数生成部３０ａ０〜３０ａｎの何れかにおけるサンプリングタイミングがメタステーブル期間内になる可能性が高まる。つまり、メタスタビリティによる乱数の発生確率を上げることができる。
【０１０８】
（第４の実施の形態）
図９は、第４の実施の形態の乱数生成回路の一例を示す図である。図９において、図８に示した第３の実施の形態の乱数生成回路３０と同じ要素については同一符号が付されている。
【０１０９】
第４の実施の形態の乱数生成回路４０は、入力端子ｉｎとクロック端子ｃｋと出力端子ｏｕｔとを備えたＬＦＳＲ（Linear Feedback Shift Register）４１を有する。
クロック端子ｃｋには、クロック信号ＣＬＫが供給され、入力端子ｉｎには乱数生成部３０ａｎのＥｘＯＲ回路３１ａｎの出力値が供給される。出力端子ｏｕｔから乱数または擬似乱数である出力値ＲＮＤが出力される。
【０１１０】
図１０は、ＬＦＳＲの一例を示す図である。
ＬＦＳＲ４１は、１６ビットシフトレジスタ４１ａ、ＥｘＯＲ回路４１ｂ，４１ｃ，４１ｄ，４１ｅを有する。
【０１１１】
１６ビットシフトレジスタ４１ａは、ＥｘＯＲ回路４１ｂの出力値を、クロック端子ｃｋに供給されるクロック信号ＣＬＫに同期したタイミングで取り込む。そして、１６ビットシフトレジスタ４１ａは、“ｂｉｔ０”から“ｂｉｔ１５”方向に、クロック信号ＣＬＫに同期したタイミングで１ビットずつシフトしていく。“ｂｉｔ０”〜“ｂｉｔ１５”のそれぞれはレジスタを表している。
【０１１２】
ＥｘＯＲ回路４１ｂは、入力端子ｉｎに供給される出力値ＲＮＤｎとＥｘＯＲ回路４１ｅの出力値（フィードバック信号）との排他的論理和の演算結果を出力する。ＥｘＯＲ回路４１ｃは、“ｂｉｔ１３”で表されるレジスタの出力値と、“ｂｉｔ１５”で表されるレジスタの出力値との排他的論理和の演算結果を出力する。ＥｘＯＲ回路４１ｄは、“ｂｉｔ１２”で表されるレジスタの出力値と、ＥｘＯＲ回路４１ｃの出力値との排他的論理和の演算結果を出力する。ＥｘＯＲ回路４１ｅは、“ｂｉｔ１０”で表されるレジスタの出力値と、ＥｘＯＲ回路４１ｄの出力値との排他的論理和の演算結果をフィードバック信号としてＥｘＯＲ回路４１ｂに供給する。
【０１１３】
ところで、ＥｘＯＲ回路４１ｂを有さずに、ＥｘＯＲ回路４１ｅの出力値を１６ビットシフトレジスタ４１ａに入力するＬＦＳＲは、周期性をもつ擬似乱数を出力する。
これに対して、図１０に示したＬＦＳＲ４１では、ＥｘＯＲ回路４１ｂの一方の入力端子には、乱数生成部３０ａｎのＥｘＯＲ回路３１ａｎの出力値が供給される。擬似乱数の周期の間に、その出力値がメタスタビリティによる乱数となることで、ＬＦＳＲ４１が出力する出力値ＲＮＤは、周期性をもたない乱数となる。つまり、出力値ＲＮＤが擬似乱数となることを回避できる。このため、品質のよい乱数を出力できる。
【０１１４】
また、第３の実施の形態の乱数生成回路３０では、クロック信号ＣＬＫの各周期でメタスタビリティによる乱数が出力しない可能性があるが、上記のようなＬＦＳＲ４１を有する乱数生成回路４０は、クロック信号ＣＬＫの各周期で乱数を出力できる。つまり、乱数の発生レートを向上できる。
【０１１５】
なお、制御回路３０ｃは、ＬＦＳＲ４１が出力する出力値ＲＮＤがクロック信号ＣＬＫの所定サイクル数、同じ値である場合には、信号ＥＲＲをＨレベルとして、異常状態であることを外部に通知してもよい。また、制御回路３０ｃは、ＬＦＳＲ４１の入力端子ｉｎに供給される乱数生成部３０ａｎの出力値が変化するか否かを検出し、その出力値がクロック信号ＣＬＫの所定サイクル数、同じ値である場合には、信号ＥＲＲをＨレベルとしてもよい。
【０１１６】
また、第２の実施の形態の乱数生成回路２０とＬＦＳＲ４１を組み合わせて、乱数生成部２２の出力値をＬＦＳＲ４１の入力端子ｉｎに供給するようにしてもよい。
また、上記のＬＦＳＲ４１は一例であり、図１０の回路構成に限定されない。たとえば、１６ビットシフトレジスタ４１ａの代わりに、３２ビットシフトレジスタを用いるなど、種々の変形が可能である。
【０１１７】
（第５の実施の形態）
ところで、メタステーブル期間は、長いほど、サンプリングタイミングを合わせることが容易になる。また、温度や、電圧ノイズなどによって、クロック信号ｃｌｋとデータ信号ｄｔにスキューが生じたとしても、メタステーブル期間が長ければ、サンプリングタイミングをメタステーブル期間内に維持できる可能性が高まる。
【０１１８】
以下では、メタステーブル期間を拡大可能な乱数生成回路を説明する。なお、以下に示す第５の実施の形態の乱数生成回路は、前述の第１乃至第４の実施の形態の乱数生成回路１０，２０，３０，４０とも組み合わせることができるが、組み合わせる例については後述する。
【０１１９】
図１１は、第５の実施の形態の乱数生成回路の一例を示す図である。
乱数生成回路５０は、調整回路５１ａ，５１ｂを有する調整部５１と、負荷容量可変回路５２、ラッチ回路５３、制御回路５４を有する。
【０１２０】
調整部５１は、第１の実施の形態の乱数生成回路１０における調整部１１と同様の機能をする。なお、以下でも、入力信号は、クロック信号ＣＬＫであるものとして説明するが、クロック信号ＣＬＫに限定されるものではない。
【０１２１】
調整部５１は、クロック信号ＣＬＫに基づいて、データ信号ｄｔとクロック信号ｃｌｋとを出力するとともに、調整信号ｔｓｅｌ１，ｔｓｅｌ２に基づいて、データ信号ｄｔとクロック信号ｃｌｋの少なくとも一方の位相を調整する。
【０１２２】
負荷容量可変回路５２は、制御回路５４から供給される選択信号ｃｓｅｌに基づいて決定される開始タイミングから、ラッチ回路５３においてデータ信号ｄｔｏが供給される端子の負荷容量を段階的に増加させる。負荷容量可変回路５２は、バッファ５２ａ、遅延選択回路５２ｂ、容量回路５２ｃ１〜５２ｃｎを有する。
【０１２３】
バッファ５２ａは、データ信号ｄｔの波形を鈍らせ、データ信号ｄｔを遅延させたデータ信号ｄｔｏを出力する。
遅延選択回路５２ｂは、データ信号ｄｔと選択信号ｃｓｅｌとに基づいたタイミングで、容量回路５２ｃ１〜５２ｃｎを有効にして負荷容量を追加する。
【０１２４】
容量回路５２ｃ１〜５２ｃｎは、データ信号ｄｔｏが伝搬する配線に接続されており、遅延選択回路５２ｂによって、有効化または無効化される。
ラッチ回路５３は、データ信号ｄｔｏとクロック信号ｃｌｋとを受け、クロック信号ｃｌｋによるサンプリングタイミングにおけるデータ信号ｄｔｏの信号レベルに基づいて、ＨレベルまたはＬレベルの出力値ＲＮＤを出力する。
【０１２５】
制御回路５４は、たとえば、ＡＳＩＣやＦＰＧＡなどの特定用途の電子回路である。また、制御回路５４は、ＣＰＵやＤＳＰなどの演算処理装置としてのプロセッサであってもよい。プロセッサは、ＲＡＭなどのメモリに記憶されたプログラムを実行する。なお、制御回路５４は、複数のプロセッサの集合であってもよい。
【０１２６】
制御回路５４は、出力値ＲＮＤに基づいて、調整信号ｔｓｅｌ１，ｔｓｅｌ２や、選択信号ｃｓｅｌを出力する。また、制御回路５４は、制御信号ＣＴＲＬによって乱数生成回路５０の外部から制御されてもよい。また、制御回路５４は、出力値ＲＮＤがクロック信号ＣＬＫの所定サイクル数、同じ値である場合には、異常状態であることを示す信号ＥＲＲを出力してもよい。
【０１２７】
図１２は、遅延選択回路と容量回路の一例を示す図である。
遅延選択回路５２ｂは、遅延回路６０ａ１，６０ａ２，…，６０ａｍ、選択回路６０ｂ、遅延回路６０ｃ１〜６０ｃ（ｎ−１）、ＯＲ回路６０ｄ１，６０ｄ２，…，６０ｄｎ、ＡＮＤ回路６０ｅ１，６０ｅ２，…，６０ｅｎを有する。
【０１２８】
遅延回路６０ａ１〜６０ａｍは、直列に接続されており、先頭の遅延回路６０ａ１には、データ信号ｄｔが供給される。遅延回路６０ａ１〜６０ａｍのそれぞれで遅延されたデータ信号ｄｔが、データ信号ｄｔ１〜ｄｔｍとして選択回路６０ｂに供給される。
【０１２９】
選択回路６０ｂは、データ信号ｄｔ，ｄｔ１〜ｄｔｍの何れかを、信号ｃｔ０，ｃｔ１，…，ｃｔｍに基づいて選択して、データ信号ｄｔｓとして出力する。信号ｃｔ０〜ｃｔｍは、選択信号ｃｓｅｌに含まれる信号である。
【０１３０】
遅延回路６０ｃ１〜６０ｃ（ｎ−１）は、直列に接続されており、先頭の遅延回路６０ｃ１には、データ信号ｄｔｓが供給される。遅延回路６０ｃ１〜６０ｃ（ｎ−１）のそれぞれで遅延されたデータ信号ｄｔｓが、ＯＲ回路６０ｄ２〜６０ｄｎの一方の入力端子に供給される。
【０１３１】
ＯＲ回路６０ｄ１の一方の入力端子にはデータ信号ｄｔｓが供給される。ＯＲ回路６０ｄ１〜６０ｄｎの他方の入力端子には、信号ｃｔｏｎが供給される。ＯＲ回路６０ｄ１〜６０ｄｎの出力信号は、ＡＮＤ回路６０ｅ１〜６０ｅｎの一方の入力端子に供給される。
【０１３２】
ＡＮＤ回路６０ｅ１〜６０ｅｎの他方の入力端子には、信号ｃｔｏｆｆが供給される。ＡＮＤ回路６０ｅ１〜６０ｅｎの出力信号は、容量回路５２ｃ１〜５２ｃｎに供給される。信号ｃｔｏｎ，ｃｔｏｆｆは、選択信号ｃｓｅｌに含まれる信号である。
【０１３３】
容量回路５２ｃ１は、インバータ回路６１、トランジスタ６２，６３，６４、キャパシタ６５を有する。トランジスタ６２，６３は、ｎチャネル型ＭＯＳＦＥＴ（Metal-Oxide-Semiconductor Field-Effect Transistor）であり、トランジスタ６４は、ｐチャネル型ＭＯＳＦＥＴである。
【０１３４】
インバータ回路６１の入力端子は、ＡＮＤ回路６０ｅ１の出力端子に接続されており、インバータ回路６１の出力端子は、トランジスタ６２，６４のゲート端子に接続されている。トランジスタ６２のソース端子は接地されており、トランジスタ６２のドレイン端子は、トランジスタ６３のソース端子、トランジスタ６４のドレイン端子及びキャパシタ６５の一方の端子に接続されている。トランジスタ６３のドレイン端子及びトランジスタ６４のソース端子は、データ信号ｄｔｏが伝搬する配線に接続されている。キャパシタ６５の他方の端子は接地されている。
【０１３５】
容量回路５２ｃ２〜５２ｃｎも、容量回路５２ｃ１と同様の回路である。
信号ｃｔｏｎ，ｃｔｏｆｆが共にＨレベルの場合、ＡＮＤ回路６０ｅ１〜６０ｅｎの出力値もＨレベルとなる。ＡＮＤ回路６０ｅ１〜６０ｅｎの出力値がＨレベルとなるとき、トランジスタ６２がオフ状態、トランジスタ６３，６４がオン状態となるため、キャパシタ６５は、データ信号ｄｔｏが伝搬する配線に電気的に接続される。つまり、容量回路５２ｃ１〜５２ｃｎは有効になる。
【０１３６】
信号ｃｔｏｆｆがＬレベルの場合、信号ｃｔｏｎの値にかかわらず、ＡＮＤ回路６０ｅ１〜６０ｅｎの出力値もＬレベルとなる。ＡＮＤ回路６０ｅ１〜６０ｅｎの出力値がＬレベルとなるとき、トランジスタ６２がオン状態、トランジスタ６３，６４がオフ状態となるため、キャパシタ６５は、データ信号ｄｔｏが伝搬する配線から電気的に切断される。つまり、容量回路５２ｃ１〜５２ｃｎは無効になる。
【０１３７】
信号ｃｔｏｎがＬレベルで、信号ｃｔｏｆｆがＨレベルの場合、データ信号ｄｔｓがＨレベルに遷移するときに、ＡＮＤ回路６０ｅ１〜６０ｅｎの出力値が順番にＨレベルとなる。これにより、容量回路５２ｃ１〜５２ｃｎは容量回路５２ｃ１から順番に有効になる。
【０１３８】
図１３は、サンプリングタイミングの設定例と負荷容量可変回路による負荷容量の設定例とを示す図である。電圧範囲Ｖｍｅｔは、ラッチ回路５３がメタスタビリティ状態となるデータ信号ｄｔｏの電圧範囲である。
【０１３９】
まず、制御回路５４は、図１２に示した信号ｃｔｏｆｆをＬレベルにして、容量回路５２ｃ１〜５２ｃｎを無効にして、負荷容量の追加をしない状態にする。そして、制御回路５４は、たとえば、調整信号ｔｓｅｌ１，ｔｓｅｌ２を変えて、クロック信号ｃｌｋの位相をデータ信号ｄｔｏよりも進ませた状態から、クロック信号ｃｌｋの位相を遅らせていく。制御回路５４は、出力値ＲＮＤを検出し、出力値ＲＮＤがＬレベルから、Ｈレベルに変化するタイミングｔ１０における調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、図示しない記憶部に記憶させる。
【０１４０】
その後、制御回路５４は、図１２に示した信号ｃｔｏｆｆ，ｃｔｏｎを共にＨレベルにして、容量回路５２ｃ１〜５２ｃｎを有効にして、負荷容量を追加する。そして、制御回路５４は、上記と同様に、たとえば、調整信号ｔｓｅｌ１，ｔｓｅｌ２を変えて、クロック信号ｃｌｋの位相をデータ信号ｄｔｏよりも進ませた状態から、クロック信号ｃｌｋの位相を遅らせていく。制御回路５４は、出力値ＲＮＤを検出し、出力値ＲＮＤがＬレベルから、Ｈレベルに変化するタイミングｔ１２における調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、図示しない記憶部に記憶させる。
【０１４１】
そして、制御回路５４は、記憶された調整信号ｔｓｅｌ１，ｔｓｅｌ２の値に基づいて、タイミングｔ１０，ｔ１２の中間（タイミングｔ１１）にサンプリングタイミングを合わせるための調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を算出する。たとえば、制御回路５４は、タイミングｔ１０，ｔ１２での調整信号ｔｓｅｌ１，ｔｓｅｌ２の値の平均を求めることで、タイミングｔ１１にサンプリングタイミングを合わせる調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を求める。求めた値は、たとえば、記憶部に記憶される。
【０１４２】
なお、クロック信号ｃｌｋの位相をデータ信号ｄｔｏよりも遅らせた状態から、クロック信号ｃｌｋの位相を進めていき、出力値ＲＮＤが変化するタイミングの調整信号ｔｓｅｌ１，ｔｓｅｌ２を用いて、サンプリングタイミングｔ１１を決定してもよい。
【０１４３】
次に、制御回路５４は、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変えて、再びサンプリングタイミングをタイミングｔ１０に合わせる。そして、制御回路５４は、図１３に示すように、信号ｃｔｏｆｆをＨレベルにし、信号ｃｔｏｎをＬレベルにした状態で、信号ｃｔ０〜ｃｔｍを変化させて、負荷容量の追加を開始するタイミングを、早めていく。波形６６ａは、負荷容量の追加開始タイミングを最も遅らせた場合のデータ信号ｄｔｏの変化を示し、波形６６ｂは、負荷容量の追加開始タイミングを最も早くした場合のデータ信号ｄｔｏの変化を示す。負荷容量は、遅延回路６０ｃ１〜６０ｃ（ｎ−１）によって、段階的に増加する。
【０１４４】
制御回路５４は、出力値ＲＮＤを検出し、出力値ＲＮＤがＨレベルから、Ｌレベルに変化するときの信号ｃｔ０〜ｃｔｍの値により、追加開始タイミングを決定する。制御回路５４は、このときの信号ｃｔ０〜ｃｔｍの値を、記憶部に記憶させる。たとえば、波形６６ｃは、記憶部に記憶された信号ｃｔ０〜ｃｔｍの値による追加開始タイミングで負荷容量が追加されたときの、データ信号ｄｔｏの変化を示している。
【０１４５】
以後の乱数生成時には、制御回路５４は、上記の方法で求めた、タイミングｔ１１にサンプリングタイミングを合わせるための調整信号ｔｓｅｌ１，ｔｓｅｌ２の値と、決定した追加開始タイミングにおける信号ｃｔ０〜ｃｔｍの値を用いる。
【０１４６】
図１４は、負荷容量の追加開始タイミングを図１３のように決定したときのメタステーブル期間を示す図である。なお、図１４には、図１３に示した波形６６ｃのメタステーブル期間ｔｍ１の他に、図１３に示した負荷容量の追加がない場合のメタステーブル期間ｔｍ２と、常に負荷容量を追加した場合のメタステーブル期間ｔｍ３についても図示されている。
【０１４７】
常に容量回路５２ｃ１〜５２ｃｎによる負荷容量が追加されている場合、データ信号ｄｔｏの立ち上がりが緩やかになり、負荷容量の追加がない場合と比べて、電圧範囲Ｖｍｅｔとなるメタステーブル期間ｔｍ３が長くなる。しかしながら、データ信号ｄｔｏの立ち上がりが開始してから電圧範囲Ｖｍｅｔに入るまでの期間が比較的長くなる。
【０１４８】
これに対して、負荷容量の追加開始タイミングを図１３のように決定して得られる波形６６ｃでは、データ信号ｄｔｏの立ち上がりが開始してから電圧範囲Ｖｍｅｔに入るまでの期間が常に負荷容量を追加している場合と比べて短くなる。この結果、メタステーブル期間ｔｍ１を、同じ負荷容量を常に追加する場合のメタステーブル期間ｔｍ３よりも長くすることができる。
【０１４９】
なお、図１２に示した遅延回路６０ａ１〜６０ａｍ，６０ｃ１〜６０ｃ（ｎ−１）の数や遅延時間、容量回路５２ｃ１〜５２ｃｎの数や容量値などのパラメータは、たとえば、回路シミュレーションなどで計算された結果に基づいて決定される。たとえば、回路シミュレーションの際には、調整精度や設定するメタステーブル期間をどれだけ長くするかに応じて上記のパラメータが決定される。
【０１５０】
以下、サンプリングタイミングと負荷容量の追加開始タイミングの設定処理の流れをフローチャートで説明する。
図１５は、サンプリングタイミングと負荷容量の追加開始タイミングの設定処理の一例の流れを示すフローチャートである。
【０１５１】
制御回路５４は、負荷容量を追加しない状態で、クロック信号ｃｌｋの位相をデータ信号ｄｔｏよりも進んだ状態にする調整信号ｔｓｅｌ１，ｔｓｅｌ２の初期値を出力し、調整回路５１ａ，５１ｂを初期化する（ステップＳ３０）。
【０１５２】
その後、制御回路５４は、調整信号ｔｓｅｌ１，ｔｓｅｌ２を変えて、クロック信号ｃｌｋの位相を遅らせていく（サンプリングタイミングを変える）。そして、制御回路５４は、出力値ＲＮＤを検出し、出力値ＲＮＤがＬレベルからＨレベルに変化するタイミングに設定した調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、記憶部に記憶させる（ステップＳ３１）。
【０１５３】
また、制御回路５４は、負荷容量の追加がある状態で、クロック信号ｃｌｋの位相をデータ信号ｄｔｏよりも進んだ状態にする調整信号ｔｓｅｌ１，ｔｓｅｌ２の初期値を出力し、調整回路５１ａ，５１ｂを初期化する（ステップＳ３２）。
【０１５４】
その後、再び、制御回路５４は、ステップＳ３１と同じ処理を行う（ステップＳ３３）。
次に、制御回路５４は、ステップＳ３１，Ｓ３３の処理で記憶された調整信号ｔｓｅｌ１，ｔｓｅｌ２の値に基づいて、サンプリングタイミングを、両タイミングの中間のタイミングとする調整信号の値を決定する（ステップＳ３４）。
【０１５５】
その後、制御回路５４は、入力負荷の追加開始タイミングを設定する（ステップＳ３５）。
図１６及び図１７は、図１５の各処理についての一例を示すフローチャートである。
【０１５６】
図１５のステップＳ３０の初期化処理の例として、図１６に示すように、制御回路５４は、まず、信号ｃｔ０〜ｃｔｍ＝“Ｘ”、信号ｃｔｏｎ＝“Ｘ”、信号ｃｔｏｆｆ＝“Ｌ”（Ｌレベル）に設定する（ステップＳ４０）。“Ｘ”は、ＨレベルでもＬレベルでもよいことを表す。また、制御回路５４は、クロック信号ｃｌｋの位相をデータ信号ｄｔｏよりも進ませる調整信号ｔｓｅｌ１，ｔｓｅｌ２の初期値を調整回路５１ａ，５１ｂに設定する（ステップＳ４１）。
【０１５７】
次に、図１５のステップＳ３１の処理の例として、図１６のステップＳ４２〜Ｓ４５の処理が行われる。
調整回路５１ａ，５１ｂはクロック信号ＣＬＫを受け、データ信号ｄｔとクロック信号ｃｌｋを出力する。データ信号ｄｔは、負荷容量可変回路５２に供給される。ラッチ回路５３は、負荷容量可変回路５２が出力するデータ信号ｄｔｏを、クロック信号ｃｌｋによるサンプリングタイミングで取り込む（ステップＳ４２）。
【０１５８】
そして、制御回路５４は、出力値ＲＮＤがＨレベルであるか否かを判定する（ステップＳ４３）。
出力値ＲＮＤがＨレベルではない場合、制御回路５４は、データ信号ｄｔｏに対してクロック信号ｃｌｋの位相を遅らせるように調整信号ｔｓｅｌ１，ｔｓｅｌ２を変える（ステップＳ４４）。ステップＳ４４の処理後は、ステップＳ４２の処理が再び行われる。
【０１５９】
出力値ＲＮＤがＨレベルである場合、制御回路５４は、現在のサンプリングタイミング（たとえば、図１３のタイミングｔ１０）に設定した調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を、記憶部に記憶させる（ステップＳ４５）。
【０１６０】
次に、図１５のステップＳ３２の初期化処理の例として、図１６に示すように、制御回路５４は、信号ｃｔ０〜ｃｔｍ＝“Ｘ”、信号ｃｔｏｎ＝“Ｈ”（Ｈレベル）、信号ｃｔｏｆｆ＝“Ｈ”に設定する（ステップＳ４６）。また、制御回路５４は、クロック信号ｃｌｋの位相をデータ信号ｄｔｏよりも進ませる調整信号ｔｓｅｌ１，ｔｓｅｌ２の初期値を調整回路５１ａ，５１ｂに設定する（ステップＳ４７）。
【０１６１】
そして、図１５のステップＳ３３の処理の例として、図１６のステップＳ４８〜Ｓ５１の処理が行われる。ステップＳ４８〜Ｓ５１の処理は、ステップＳ４２〜Ｓ４５の処理と同じである。ただ、出力値ＲＮＤがＨレベルになるサンプリングタイミング（たとえば、図１３のタイミングｔ１２）が、負荷容量を追加しない場合と異なる。
【０１６２】
その後、図１５のステップＳ３４の処理の例として、以下の処理が行われる。
制御回路５４は、サンプリングタイミングを、ステップＳ４３，Ｓ４９の処理で出力値ＲＮＤがＨレベルになる各サンプリングタイミングの中間とする調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を決定し、記憶部に記憶させる（ステップＳ５２）。ステップＳ５２の処理では、制御回路５４は、ステップＳ４５，Ｓ５１の処理で記憶された調整信号ｔｓｅｌ１，ｔｓｅｌ２の値に基づいて、サンプリングタイミングを、たとえば、図１３の、タイミングｔ１１とする調整信号ｔｓｅｌ１，ｔｓｅｌ２を決定する。そして、制御回路５４は、決定した調整信号ｔｓｅｌ１，ｔｓｅｌ２を記憶部に記憶させる。
【０１６３】
次に、図１５のステップＳ３５の処理の例として、図１７のステップＳ５３〜Ｓ５８の処理が行われる。
制御回路５４は、信号ｃｔ０〜ｃｔｍ＝“Ｌ”、信号ｃｔｏｎ＝“Ｌ”、信号ｃｔｏｆｆ＝“Ｈ”に設定する（ステップＳ５３）。さらに、制御回路５４は、ステップＳ４５の処理で記憶した調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を用いて、サンプリングタイミングを、タイミングｔ１０に設定する（ステップＳ５４）。
【０１６４】
その後、調整回路５１ａ，５１ｂはクロック信号ＣＬＫを受け、データ信号ｄｔとクロック信号ｃｌｋを出力する。データ信号ｄｔは、負荷容量可変回路５２に供給される。ラッチ回路５３は、負荷容量可変回路５２が出力するデータ信号ｄｔｏを、クロック信号ｃｌｋによるサンプリングタイミングで取り込む（ステップＳ５５）。
【０１６５】
そして、制御回路５４は、出力値ＲＮＤがＬレベルであるか否かを判定する（ステップＳ５６）。出力値ＲＮＤがＬレベルではない場合、制御回路５４は、信号ｃｔ０〜ｃｔｍを、信号ｃｔｍから順にＨレベルに設定する（ステップＳ５７）。ステップＳ５７の処理後は、ステップＳ５６の処理が再び行われる。
【０１６６】
たとえば、信号ｃｔ０〜ｃｔｍの値が全てＬレベルの場合、図１２の選択回路６０ｂは、データ信号ｄｔ〜ｄｔｍのうち、一番遅延時間が大きいデータ信号ｄｔｍを選択してデータ信号ｄｔｓとして出力する。出力値ＲＮＤがＨレベルのままである場合、制御回路５４は、信号ｃｔｍの値をＨレベルに変える。これにより、選択回路６０ｂは、データ信号ｄｔ〜ｄｔｍのうち、遅延時間が２番目に大きいデータ信号を選択してデータ信号ｄｔｓとして出力する。これでも出力値ＲＮＤがＨレベルのままである場合、制御回路５４は、信号ｃｔ（ｍ−１）（図１２では図示を省略している）の値をさらにＨレベルに変える。これにより、選択回路６０ｂは、データ信号ｄｔ〜ｄｔｍのうち、遅延時間が３番目に大きいデータ信号を選択してデータ信号ｄｔｓとして出力する。制御回路５４は、このような処理を、出力値ＲＮＤがＬレベルに変わるまで繰り返す。
【０１６７】
これによって、負荷容量の追加開始タイミングが早まっていく。出力値ＲＮＤがＬレベルである場合、制御回路５４は、現在の信号ｃｔ０〜ｃｔｍの値を、記憶部に記憶させ（ステップＳ５８）、設定処理を終了する。
【０１６８】
なお、上記の図１５〜図１７の処理の順序は一例であり、処理の順序を適宜変更してもよい。たとえば、ステップＳ３１の処理後に、ステップＳ３５の負荷容量の追加開始タイミングを設定してもよい。
【０１６９】
上記のような第５の実施の形態の乱数生成回路５０及びその制御方法によれば、メタステーブル期間を拡大できるため、サンプリングタイミングを合わせることが容易になり、メタスタビリティによる品質のよい乱数を生成できる。
【０１７０】
（第６の実施の形態）
図１８は、第６の実施の形態の乱数生成回路の一例を示す図である。図１８において、図１１に示した第５の実施の形態の乱数生成回路５０と同じ要素については同一符号が付されている。
【０１７１】
第６の実施の形態の乱数生成回路７０は、ラッチ回路７１ａ０，７１ａ１，７１ａ２，…，７１ａｎ、遅延回路７１ｂ１，７１ｂ２，…，７１ｂｎ、ＥｘＯＲ回路７１ｃ０，７１ｃ１，７１ｃ２，…，７１ｃｎ、制御回路７１ｄを有する。
【０１７２】
ラッチ回路７１ａ０〜７１ａｎのデータ端子には、負荷容量可変回路５２が出力したデータ信号ｄｔｏが供給される。また、ラッチ回路７１ａ１〜７１ａｎのそれぞれのクロック端子には、直列に接続された遅延回路７１ｂ１〜７１ｂｎによって異なる遅延時間分、遅延されたクロック信号ｃｌｋが供給される。
【０１７３】
また、ＥｘＯＲ回路７１ｃ０〜７１ｃｎは直列に接続されており、ＥｘＯＲ回路７１ｃ０〜７１ｃｎのそれぞれの一方の入力端子には、ラッチ回路７１ａ０〜７１ａｎのうち対応するラッチ回路の出力値が供給される。ＥｘＯＲ回路７１ｃ１〜７１ｃｎのそれぞれの他方の入力端子には、前段のＥｘＯＲ回路の出力値が供給される。初段のＥｘＯＲ回路７１ｃ０の他方の入力端子には、入力値Ｒ０が供給される。
【０１７４】
なお、乱数生成時には、入力値Ｒ０は、ＨレベルまたはＬレベルの一方に固定される。乱数生成回路７０の試験時には、入力値Ｒ０は変更されてもよい。最後段のＥｘＯＲ回路７１ｃｎの出力値が、出力値ＲＮＤとなる。また、ラッチ回路７１ａ０〜７１ａｎの出力値は、制御回路７１ｄに供給される。
【０１７５】
制御回路７１ｄは、たとえば、クロック信号ｃｌｋに対する遅延がラッチ回路７１ａ０〜７１ａｎのうちで中間の値となるラッチ回路から供給される出力値に基づいて、図１５に示した処理で、調整信号ｔｓｅｌ１，ｔｓｅｌ２や選択信号ｃｓｅｌの値を決定する。
【０１７６】
乱数生成回路７０では、遅延回路７１ｂ１〜７１ｂｎによる遅延時間を適宜設定することで、動作条件の変化などでスキューが発生してもラッチ回路７１ａ０〜７１ａｎの何れかにおけるサンプリングタイミングがメタステーブル期間内になる可能性を高められる。つまり、メタスタビリティによる乱数の発生確率を上げることができる。
【０１７７】
（第７の実施の形態）
図１９は、第７の実施の形態の乱数生成回路の一例を示す図である。図１９において、図１８に示した第６の実施の形態の乱数生成回路７０と同じ要素については同一符号が付されている。
【０１７８】
第７の実施の形態の乱数生成回路８０は、入力端子ｉｎとクロック端子ｃｋと出力端子ｏｕｔとを備えたＬＦＳＲ８１を有する。
クロック端子ｃｋには、クロック信号ＣＬＫが供給され、入力端子ｉｎには最後段のＥｘＯＲ回路７１ｃｎの出力値が供給される。出力端子ｏｕｔから乱数または擬似乱数である出力値ＲＮＤが出力される。
【０１７９】
ＬＦＳＲ８１は、たとえば、図１０に示したＬＦＳＲ４１と同じ回路で実現できる。擬似乱数の周期の間に、ＥｘＯＲ回路７１ｃｎの出力値がメタスタビリティによる乱数となることで、ＬＦＳＲ８１が出力する出力値ＲＮＤは、周期性をもたない乱数となる。つまり、出力値ＲＮＤが擬似乱数となることを回避できる。このため、品質のよい乱数を出力できる。
【０１８０】
また、第６の実施の形態の乱数生成回路７０では、クロック信号ＣＬＫの各周期でメタスタビリティによる乱数が出力しない可能性があるが、上記のようなＬＦＳＲ８１を有する乱数生成回路８０は、クロック信号ＣＬＫの各周期で乱数を出力できる。つまり、乱数の発生レートを向上できる。
【０１８１】
なお、制御回路７１ｄは、ＬＦＳＲ８１が出力する出力値ＲＮＤがクロック信号ＣＬＫの所定サイクル数、同じ値である場合には、信号ＥＲＲをＨレベルとして、異常状態であることを外部に通知してもよい。また、制御回路７１ｄは、ＬＦＳＲ８１の入力端子ｉｎに供給されるＥｘＯＲ回路７１ｃｎの出力値が変化するか否かを検出し、その出力値がクロック信号ＣＬＫの所定サイクル数、同じ値である場合には、信号ＥＲＲをＨレベルとしてもよい。
【０１８２】
また、第５の実施の形態の乱数生成回路５０とＬＦＳＲ８１を組み合わせて、ラッチ回路５３の出力値をＬＦＳＲ８１の入力端子ｉｎに供給するようにしてもよい。
（第８の実施の形態）
図２０は、第８の実施の形態の乱数生成回路の一例を示す図である。図２０において、図８に示した第３の実施の形態の乱数生成回路３０及び、図１１に示した第５の実施の形態の乱数生成回路５０と同じ要素については同一符号が付されている。
【０１８３】
第８の実施の形態の乱数生成回路９０は、第３の実施の形態の乱数生成回路３０に、負荷容量可変回路５２を適用した回路である。
乱数生成部３０ａ０〜３０ａｎには、データ信号ｄｔではなく、負荷容量可変回路５２が出力するデータ信号ｄｔｏが供給されることが、乱数生成回路３０と異なっている。
【０１８４】
制御回路９１は、たとえば、クロック信号ｃｌｋに対する遅延が乱数生成部３０ａ０〜３０ａｎのうちで中間の値となる乱数生成部３０ａｉから供給される出力値ＲＮＤｉに基づいて、まず、負荷容量の追加開始タイミングを決定する。たとえば、制御回路９１は、選択信号ｃｓｅｌにより、まず、負荷容量を追加しない状態に、負荷容量可変回路５２を設定し、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を変更して、出力値ＲＮＤｉがＬレベルからＨレベルに変化するタイミングを検出する。そして、制御回路９１は、そのタイミングにおける調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を用いて、選択信号ｃｓｅｌにより、負荷容量の追加開始タイミングを早めていき、出力値ＲＮＤｉがＬレベルに変化したときの選択信号ｃｓｅｌの値を記憶する。
【０１８５】
その後、制御回路９１は、記憶した選択信号ｃｓｅｌの値を負荷容量可変回路５２に供給し、その値によって決まる追加開始タイミングで負荷容量を段階的に増加させる。そして、制御回路９１は、検出結果ｍａｔｃｈｉと出力値ＲＮＤｉに基づいて、調整信号ｔｓｅｌ１，ｔｓｅｌ２の値を決定する。調整信号ｔｓｅｌ１，ｔｓｅｌ２の値は、図４〜図６に示した方法により、乱数生成部３０ａｉに到達するクロック信号ｃｌｋによるサンプリングタイミングがメタステーブル期間内になるように決定される。
【０１８６】
第８の実施の形態の乱数生成回路９０は、第３の実施の形態の乱数生成回路３０によって得られる効果を有する。さらに、乱数生成回路９０は、負荷容量可変回路５２を有することで、メタステーブル期間を拡大できるため、サンプリングタイミングをメタステーブル期間内に維持できる可能性が高まる。これによって、より品質のよい乱数を生成できる。
【０１８７】
なお、乱数生成回路９０は、サンプリングタイミングを、たとえば、検出結果ｍａｔｃｈｉと出力値ＲＮＤｉに基づいて決定する。そのため、図１２の負荷容量可変回路５２において、サンプリングタイミングを決める際に、容量回路５２ｃ１〜５２ｃｎを同時に有効にするために設けられている、ＯＲ回路６０ｄ１〜６０ｄｎはなくてもよい。
【０１８８】
（第９の実施の形態）
図２１は、第９の実施の形態の乱数生成回路の一例を示す図である。図２１において、図９に示した第４の実施の形態の乱数生成回路４０及び、図２０に示した第８の実施の形態の乱数生成回路９０と同じ要素については同一符号が付されている。
【０１８９】
第９の実施の形態の乱数生成回路１００は、第８の実施の形態の乱数生成回路９０に、ＬＦＳＲ４１を適用した回路である。
第９の実施の形態の乱数生成回路１００は、第８の実施の形態の乱数生成回路９０と同様の効果が得られるとともに、第４の実施の形態の乱数生成回路４０と同様の効果も得られる。
【０１９０】
なお、説明を省略するが、負荷容量可変回路５２は、第１の実施の形態の乱数生成回路１０や、第２の実施の形態の乱数生成回路２０に適用できることは、いうまでもない。
以上説明した第１乃至第９の実施の形態の乱数生成回路１０，２０，３０，４０，５０，７０，８０，９０，１００は、乱数を用いる様々な集積回路、システム及び機器などに適用可能である。たとえば、セキュリティ分野における乱数を用いた暗号キーの生成、ＡＩ（Artificial Intelligence）分野における乱数を用いたディープラーニングでの過学習を防ぐドロップアウト処理などに利用可能である。さらに、乱数が利用されるビッグデータ解析にも利用可能である。
【０１９１】
以上、実施の形態に基づき、本発明の乱数生成回路及びその制御方法の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【０１９２】
１０  乱数生成回路
１１  調整部
１１ａ，１１ｂ  調整回路
１２  乱数生成部
１２ａ１〜１２ａｎ  ラッチ回路
１２ｂ  出力回路
１２ｃ  検出回路
１３  制御回路
ＣＬＫ，ｃｌｋ  クロック信号
ｄｔ  データ信号
ｍａｔｃｈ  検出結果
ｔｓｅｌ１，ｔｓｅｌ２  調整信号
ＲＮＤ  出力値
【図１】
2019053385.tif 000003
【図２】
2019053385.tif 000004
【図３】
2019053385.tif 000005
【図４】
2019053385.tif 000006
【図５】
2019053385.tif 000007
【図６】
2019053385.tif 000008
【図７】
2019053385.tif 000009
【図８】
2019053385.tif 000010
【図９】
2019053385.tif 000011
【図１０】
2019053385.tif 000012
【図１１】
2019053385.tif 000013
【図１２】
2019053385.tif 000014
【図１３】
2019053385.tif 000015
【図１４】
2019053385.tif 000016
【図１５】
2019053385.tif 000017
【図１６】
2019053385.tif 000018
【図１７】
2019053385.tif 000019
【図１８】
2019053385.tif 000020
【図１９】
2019053385.tif 000021
【図２０】
2019053385.tif 000022
【図２１】
2019053385.tif 000023