以下に添付図面を参照して、この発明にかかる乱数発生装置および乱数発生方法の好適な実施の形態を詳細に説明する。なお、以下の説明においては、同様の構成には同一の符号を付して、重複する説明を省略する。
(実施の形態1)
図1は、実施の形態1の乱数発生装置の一例を示す図である。図1に示すように、乱数発生装置1は、中間電位生成部2とDフリップフロップ3を備えている。中間電位生成部2は、Dフリップフロップ3を構成する電界効果トランジスタの閾値にほぼ等しい中間電位VCCMを生成する。中間電位生成部2は、例えば電源端子VCCと接地端子VSSとの間に接続された抵抗ラダーを備えており、この抵抗ラダーにより電源電圧を抵抗分割することにより中間電位VCCMを生成する。
Dフリップフロップ3のデータ端子Dには、中間電位生成部2で生成された中間電位VCCMが印加される。Dフリップフロップ3は、そのクロック端子CKへのクロック信号CLKの入力がアクティブのときに、データ端子Dへの印加電位、すなわち中間電位生成部2で生成された中間電位VCCMに応じた値を取り込む。そして、Dフリップフロップ3は、その取り込んだ値をクロック信号CLKの入力が次にアクティブになるまで保持し、乱数データとして出力する。
例えば、Dフリップフロップ3へのクロック信号の入力がアクティブのとき、熱雑音により、中間電位VCCMの値が、Dフリップフロップ3のデータ端子Dに接続された電界効果トランジスタの閾値よりも低くなると、Dフリップフロップ3は"0"を保持する、従って、乱数データとして"0"を出力する。一方、クロック信号の入力がアクティブのとき、熱雑音により、中間電位VCCMの値がその電界効果トランジスタの閾値よりも高くなると、Dフリップフロップ3は"1"を保持し、乱数データとして"1"を出力する。
図2および図3に示すように、中間電位生成部2とDフリップフロップ3のデータ端子Dの間にゲートを設け、Dフリップフロップ3のデータ端子Dに、乱数を生成するときには中間電位生成部2から中間電位VCCMを供給し、乱数を生成しないときにはゲートにより固定電位を供給するようにしてもよい。図2に示す乱数発生装置4は、中間電位生成部2で生成された中間電位VCCMと、外部のCPUやロジック回路から供給される生成タイミング信号を入力とするANDゲート5を用いた例である。
生成タイミング信号として"0"がANDゲート5に入力されると、ANDゲート5の出力が"0"に固定されるので、Dフリップフロップ3のデータ端子Dの入力が"0"に固定される。生成タイミング信号が"1"のときには、Dフリップフロップ3のデータ端子Dには、中間電位生成部2で生成された中間電位VCCMが入力される。
図3に示す乱数発生装置6は、中間電位生成部2で生成された中間電位VCCMと外部から供給される生成タイミング信号を入力とするORゲート7を用いた例である。生成タイミング信号として"1"がORゲート7に入力されると、ORゲート7の出力が"1"に固定されるので、Dフリップフロップ3のデータ端子Dの入力が"1"に固定される。生成タイミング信号が"0"のときには、Dフリップフロップ3のデータ端子Dには、中間電位生成部2で生成された中間電位VCCMが入力される。
図1に示す構成の乱数発生装置1では、乱数を生成しないときでもDフリップフロップ3のデータ信号入力部で貫通電流が発生する。しかし、図2または図3に示すように、Dフリップフロップ3のデータ端子Dへの入力を固定するゲートを設けることによって、乱数を生成しないときには、Dフリップフロップ3のデータ信号入力部で貫通電流が発生しないので、低消費電力化を図ることができる。なお、Dフリップフロップ3のデータ端子Dへの入力を固定するゲートは、ANDゲート5やORゲート7に限らない。
(実施の形態2)
図4〜図6は、実施の形態2の乱数発生装置の一例を示す図である。図4に示すように、実施の形態2の乱数発生装置8は、実施の形態1の乱数発生装置1に、Dフリップフロップ3から出力される乱数データを監視する出力データ監視部9を付加したものである。図5に示す乱数発生装置10および図6に示す乱数発生装置11も同様であり、それぞれ図2に示す乱数発生装置4および図3に示す乱数発生装置6に出力データ監視部9を付加したものである。
出力データ監視部9は、Dフリップフロップ3から出力された乱数データに基づいて、中間電位生成部2に対して中間電位VCCMの変更を指示する中間電位生成変更信号を出力する。中間電位生成部2は、出力データ監視部9から中間電位生成変更信号を受け取ると、生成する中間電位VCCMを変更する。
図7は、中間電位生成部2の一例を示す図である。ここでは、特に数を限定しないが、例えば電源端子VCCと接地端子VSSの間に、R1、R2、R3、R4、R5およびR6の6個の抵抗が直列に接続されており、これら6個の抵抗R1,R2,R3,R4,R5,R6からなる抵抗ラダーにより中間電位VCCMを生成するものとする。なお、説明の便宜上、電源端子VCC側から順に、R1、R2、R3、R4、R5およびR6とする。
図7に示すように、抵抗R1の一端は電源端子VCCに接続されている。抵抗R1と抵抗R2、抵抗R2と抵抗R3、抵抗R3と抵抗R4、抵抗R4と抵抗R5、および抵抗R5と抵抗R6の接続ノードには、それぞれ抵抗ラダーの任意のノードを選択するためのトランスファーゲートTG1、TG2、TG3、TG4およびTG5が接続されている。トランスファーゲートTG1、TG2、TG3、TG4およびTG5には、それぞれ外部から制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELが供給される。
また、トランスファーゲートTG1、TG2、TG3、TG4およびTG5には、それぞれインバータIN1、IN2、IN3、IN4およびIN5を介して各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELの反転信号が供給される。トランスファーゲートTG1、TG2、TG3、TG4およびTG5の出力側は、中間電位生成部2の出力ライン13に共通接続されている。抵抗R6と接地端子VSSの間には、スイッチングトランジスタ12が接続されている。このスイッチングトランジスタ12は、そのゲート端子に外部から供給される制御信号VCCSELにより動作する。
制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELは、例えば外部に設けられた5ビットのレジスタから供給される。制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELにより、トランスファーゲートTG1、TG2、TG3、TG4およびTG5のうち、いずれか一つのみがオン状態となり、残りはオフ状態となる。あるいは、すべてのトランスファーゲートTG1、TG2、TG3、TG4およびTG5がオフ状態となる。
特に限定しないが、例えば電源電圧の1/2の電位を基準電位とする。初期状態では、出力ライン13に出力される中間電位VCCMが、Dフリップフロップ3を構成する電界効果トランジスタの閾値にほぼ等しくなるように、制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELが供給される。そして、出力データ監視部9から出力される中間電位生成変更信号に基づいて、5ビットのレジスタの値が変更され、トランスファーゲートTG1、TG2、TG3、TG4およびTG5のオン/オフの状態が適宜切り替えられる。
一例として、具体的な数値を挙げて説明する。例えば、抵抗R1およびR6の抵抗値が470kΩであり、抵抗R2、R3、R4およびR5の抵抗値が5kΩとする。この場合、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"0"、"0"、"1"、"0"および"0"であるときに、出力ライン13に、電源電圧の0.5倍(=1−(470+5+5)/(470+5+5+5+5+470)=1−(480/960)=1−1/2=1−0.5)の電位、すなわち基準電位が出力される。電源電圧が3.3Vのときには、基準電位は1.65Vである。
初期設定の際に、Dフリップフロップ3を構成する電界効果トランジスタの閾値が基準電位よりも高い場合には、中間電位VCCMを基準電位よりも高くするため、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"0"、"1"、"0"、"0"および"0"に変更される。それによって、出力ライン13には、電源電圧の0.505倍(=1−(470+5)/(470+5+5+5+5+470)=1−475/960=1−0.495)の中間電位VCCMが出力される。電源電圧が3.3Vのときには、中間電位VCCMは約1.67Vとなる。
電源電圧の0.505倍の電位でもDフリップフロップ3を構成する電界効果トランジスタの閾値よりも低い場合には、さらに中間電位VCCMを高くするため、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"1"、"0"、"0"、"0"および"0"に変更される。それによって、出力ライン13に出力される中間電位VCCMは、電源電圧の0.51倍(=1−470/(470+5+5+5+5+470)=1−470/960=1−0.49)となる。電源電圧が3.3Vのときには、中間電位VCCMは約1.68Vとなる。
一方、Dフリップフロップ3を構成する電界効果トランジスタの閾値が基準電位よりも低い場合には、中間電位VCCMを基準電位よりも低くするため、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"0"、"0"、"0"、"1"および"0"に変更される。それによって、出力ライン13に出力される中間電位VCCMは、電源電圧の0.495倍(=1−(470+5+5+5)/(470+5+5+5+5+470)=1−485/960=1−0.505)となる。電源電圧が3.3Vのときには、中間電位VCCMは約1.63Vとなる。
電源電圧の0.495倍の電位でもDフリップフロップ3を構成する電界効果トランジスタの閾値よりも高い場合には、さらに中間電位VCCMを低くするため、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"0"、"0"、"0"、"0"および"1"に変更される。それによって、出力ライン13に出力される中間電位VCCMは、電源電圧の0.49倍(=1−(470+5+5+5+5)/(470+5+5+5+5+470)=1−490/960=1−0.51)となる。電源電圧が3.3Vのときには、中間電位VCCMは約1.62Vとなる。
初期設定が済んだ後、出力データ監視部9でDフリップフロップ3から出力される乱数データを監視した結果、中間電位VCCMを上げる必要があるときには、その時点でオン状態となっているトランスファーゲートよりも電源端子VCC側のトランスファーゲートが順次、オン状態に切り替えられる。例えば、中間電位VCCMが基準電位であるときに、中間電位VCCMを上げる必要が生じた場合には、まず、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"0"、"1"、"0"、"0"および"0"に変更される。それによって、中間電位VCCMが電源電圧の0.505倍に変更される。
さらに中間電位VCCMを上げる必要があるときには、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"1"、"0"、"0"、"0"および"0"に変更される。それによって、中間電位VCCMは、電源電圧の0.51倍に変更される。
それに対して、例えば、中間電位VCCMが基準電位であるときに、中間電位VCCMを下げる必要が生じた場合には、まず、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"0"、"0"、"0"、"1"および"0"に変更される。それによって、中間電位VCCMが電源電圧の0.495倍に変更される。
さらに中間電位VCCMを下げる必要があるときには、各制御信号VCC0SEL、VCC1SEL、VCC2SEL、VCC3SELおよびVCC4SELがそれぞれ"0"、"0"、"0"、"0"および"1"に変更される。それによって、中間電位VCCMが電源電圧の0.49倍に変更される。
また、スイッチングトランジスタ12はNMOSトランジスタで構成されており、乱数データを生成する際の制御信号VCCSELは"1"となり、スイッチングトランジスタ12がオン状態となる。一方、乱数データを生成しないときには、制御信号VCCSELは"0"であり、スイッチングトランジスタ12はオフ状態となる。スイッチングトランジスタ12がオフ状態になることによって、抵抗ラダーに流れる電流が抑制されるので、消費電力を下げることができる。
ここで、中間電位VCCMを生成するアナログ回路および乱数データを生成するデジタル回路は、一般に半導体の製造バラツキの影響を受ける。その影響を吸収するため、Dフリップフロップ3の閾値よりも十分に狭いステップ間隔で中間電位VCCMの調整が可能であるとともに、アナログ回路のバラツキよりも十分に広い電圧範囲の調整ができるように、中間電位生成部2の抵抗ラダーを配置するのが望ましい。なお、抵抗ラダーの抵抗の段数は5段以下でもよいし、7段以上でもよい。
また、中間電位生成部2は、図8に示す構成でもよい。図8に示す構成では、抵抗ラダーに粗調整用の抵抗群14と微調整用の抵抗群15が設けられている。ここでは、特に数を限定しないが、粗調整用の抵抗群14は、R7、R8、R9、R10およびR11の5個の抵抗が直列に接続された抵抗ラダーにより構成されており、微調整用の抵抗群15は、R12、R13、R14、R15およびR16の5個の抵抗が直列に接続された抵抗ラダーにより構成されているものとする。
なお、説明の便宜上、粗調整用の抵抗群14では、電源端子VCC側から順に、R7、R8、R9、R10およびR11とし、微調整用の抵抗群15では、接地端子VSS側から順にR16、R15、R14、R13およびR12とする。微調整用の抵抗群15に属する抵抗R12、R13、R14およびR15の各抵抗値は、粗調整用の抵抗群14に属する抵抗R8、R9、R10およびR11の各抵抗値よりも小さい。
図8に示すように、抵抗R7の一端は電源端子VCCに接続されている。抵抗R7と抵抗R8、抵抗R8と抵抗R9、抵抗R9と抵抗R10、および抵抗R10と抵抗R11の接続ノードには、それぞれ抵抗ラダーの任意のノードを選択するためのトランスファーゲートTG6、TG7、TG8、TG9およびTG10が接続されている。トランスファーゲートTG6、TG7、TG8、TG9およびTG10には、それぞれ外部から制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SELおよびVCC14SELが供給される。
また、トランスファーゲートTG6、TG7、TG8、TG9およびTG10には、それぞれインバータIN6、IN7、IN8、IN9およびIN10を介して各制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SELおよびVCC14SELの反転信号が供給される。トランスファーゲートTG6、TG7、TG8、TG9およびTG10の出力側は、中間電位生成部2の内部信号ライン16に共通接続されている。内部信号ライン16は、トランスファーゲートTG11の入力側に接続されている。
抵抗R12の一端は内部信号ライン16に接続されている。抵抗R12と抵抗R13、抵抗R13と抵抗R14、抵抗R14と抵抗R15、および抵抗R15と抵抗R16の接続ノードには、それぞれ抵抗ラダーの任意のノードを選択するためのトランスファーゲートTG12、TG13、TG14およびTG15が接続されている。トランスファーゲートTG11、TG12、TG13、TG14およびTG15には、それぞれ外部から制御信号VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELが供給される。
また、トランスファーゲートTG11、TG12、TG13、TG14およびTG15には、それぞれインバータIN11、IN12、IN13、IN14およびIN15を介して各制御信号VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELの反転信号が供給される。トランスファーゲートTG11、TG12、TG13、TG14およびTG15の出力側は、中間電位VCCMを出力するための出力ライン13に共通接続されている。抵抗R16と接地端子VSSの間には、スイッチングトランジスタ12が接続されている。このスイッチングトランジスタ12は、そのゲート端子に外部から供給される制御信号VCCSELにより動作する。
制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SELおよびVCC14SELは、例えば外部に設けられた5ビットのレジスタから供給される。制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SELおよびVCC14SELにより、トランスファーゲートTG6、TG7、TG8、TG9およびTG10のうち、いずれか一つのみがオン状態となり、残りはオフ状態となる。
また、制御信号VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELは、例えば外部に設けられた別の5ビットのレジスタから供給される。制御信号VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELにより、トランスファーゲートTG11、TG12、TG13、TG14およびTG15のうち、いずれか一つのみがオン状態となり、残りはオフ状態となる。あるいは、すべてのトランスファーゲートTG6、TG7、TG8、TG9、TG10、TG11、TG12、TG13、TG14およびTG15がオフ状態となってもよい。
特に限定しないが、例えば、出力ライン13に出力される電源電圧の1/2の電位を基準電位とする。このときの制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SEL、VCC14SEL、VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELは、それぞれ"0"、"0"、"1"、"0"、"0"、"1"、"0"、"0"、"0"および"0"である。
換言すれば、このときに出力ライン13に電源電圧の1/2の電位が出力されるように、抵抗R7、R8、R9、R10、R11、R12、R13、R14、R15およびR16の各抵抗値が設定されている。つまり、抵抗R7、R8およびR9の各抵抗値の和が、抵抗R10、R11、R12、R13、R14、R15およびR16の各抵抗値の和に等しくなるように設定されている。
初期設定の際には、例えば、まず、中間電位VCCMの粗調整を行う。その際、内部信号ライン16を出力ライン13に接続するために、トランスファーゲートTG11がオン状態となる。その状態で、粗調整用の抵抗群14に接続されたトランスファーゲートTG6、TG7、TG8、TG9およびTG10がこの順で順次オン状態になるように、各制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SELおよびVCC14SELが変更されていく。
そして、Dフリップフロップ3の出力値が"0"よりも"1"に偏った状態で、かつ出力ライン13の電位が最も低くなるときの制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SELおよびVCC14SELの状態が粗調整終了時の状態として選択される。続いて、この状態で、中間電位VCCMの微調整を行う。
微調整時には、微調整用の抵抗群15に接続されたトランスファーゲートTG12、TG13、TG14およびTG15がこの順で順次オン状態になるように、各制御信号VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELが変更される。それによって、出力ライン13の電位が少しずつ低くなる。そして、出力ライン13の電位が、Dフリップフロップ3を構成する電界効果トランジスタの閾値に最も近くなるときの制御信号VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELの状態が微調整終了時、すなわち中間電位VCCMの調整終了時の状態として選択される。
初期設定が済んだ後、出力データ監視部9でDフリップフロップ3から出力される乱数データを監視した結果、中間電位VCCMを上げる必要があるときには、出力ライン13の電位が徐々に高くなって、Dフリップフロップ3を構成する電界効果トランジスタの閾値に最も近くなるように、各制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SEL、VCC14SEL、VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELが変更される。中間電位VCCMを下げる必要があるときには、出力ライン13の電位が徐々に低くなって、Dフリップフロップ3を構成する電界効果トランジスタの閾値に最も近くなるように、各制御信号VCC10SEL、VCC11SEL、VCC12SEL、VCC13SEL、VCC14SEL、VCC20SEL、VCC21SEL、VCC22SEL、VCC23SELおよびVCC24SELが変更される。
なお、乱数データを生成しないときに、制御信号VCCSELにより、スイッチングトランジスタ12がオフ状態とされることは、図7に示す中間電位生成部2の場合と同じである。図8に示す構成によれば、図7に示す構成よりも、中間電位VCCMの調整範囲が広がり、かつ中間電位VCCMをより細かい間隔で調整することができる。なお、粗調整用の抵抗群14の抵抗の段数は5段以下でもよいし、7段以上でもよい。微調整用の抵抗群15の抵抗の段数についても同様である。
また、中間電位生成部2は、図9に示す構成でもよい。図9に示す構成では、特に数を限定しないが、例えば電源端子VCCと接地端子VSSの間に、R17、R18、R19、R20、R21およびR22の6個の抵抗が直列に接続されており、これら6個の抵抗R17,R18,R19,R20,R21,R22からなる抵抗ラダーにより中間電位VCCMを生成するものとする。なお、説明の便宜上、電源端子VCC側から順に、R17、R18、R19、R20、R21およびR22とする。
図9に示すように、抵抗R17の一端は電源端子VCCに接続されている。抵抗R17と抵抗R18の接続ノードには、中間電位生成部2の出力ライン13が接続されている。また、抵抗R17と抵抗R18の接続ノードと、抵抗R18と抵抗R19の接続ノードの間には、抵抗R18を迂回するためのトランスファーゲートTG16が接続されている。抵抗R18と抵抗R19の接続ノードと、抵抗R19と抵抗R20の接続ノードの間には、抵抗R19を迂回するためのトランスファーゲートTG17が接続されている。
抵抗R19と抵抗R20の接続ノードと、抵抗R20と抵抗R21の接続ノードの間には、抵抗R20を迂回するためのトランスファーゲートTG18が接続されている。抵抗R20と抵抗R21の接続ノードと、抵抗R21と抵抗R22の接続ノードの間には、抵抗R21を迂回するためのトランスファーゲートTG19が接続されている。トランスファーゲートTG16、TG17、TG18およびTG19には、それぞれ外部から制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELが供給される。
また、トランスファーゲートTG16、TG17、TG18およびTG19には、それぞれインバータIN16、IN17、IN18およびIN19を介して各制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELの反転信号が供給される。抵抗R22と接地端子VSSの間には、スイッチングトランジスタ12が接続されている。このスイッチングトランジスタ12は、そのゲート端子に外部から供給される制御信号VCCSELにより動作する。
制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELは、例えば外部に設けられた4ビットのレジスタから供給される。各トランスファーゲートTG16、TG17、TG18およびTG19は、それぞれの制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELによって、他から独立してオン状態となったり、オフ状態になる。
特に限定しないが、例えば電源電圧の1/2の電位を基準電位とする。初期状態では、出力ライン13に出力される中間電位VCCMが、Dフリップフロップ3を構成する電界効果トランジスタの閾値にほぼ等しくなるように、制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELが供給される。そして、出力データ監視部9から出力される中間電位生成変更信号に基づいて、4ビットのレジスタの値が変更され、トランスファーゲートTG16、TG17、TG18およびTG19のオン/オフの状態が適宜切り替えられる。
一例として、具体的な数値を挙げて説明する。例えば、抵抗R17、R18、R19、R20、R21およびR22の抵抗値がそれぞれ470kΩ、2kΩ、4kΩ、8kΩ、16kΩおよび454kΩとする。この場合、各制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELがそれぞれ"1"、"1"、"1"および"0"であるときに、トランスファーゲートTG16、TG17およびTG18がオン状態となり、トランスファーゲートTG19がオフ状態となる。
それによって、電源端子VCCと出力ライン13間に抵抗R17(470kΩ)のみが接続されており、出力ライン13と接地端子VSS間に抵抗R21(16kΩ)と抵抗R22(454kΩ)が接続されていることになる。従って、出力ライン13に、電源電圧の0.5倍(=1−470/(470+16+454)=1−(470/940)=1−1/2=1−0.5)の電位、すなわち基準電位が出力される。
表1および表2に、各制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELの値("1"または"0")と、電源端子VCCと出力ライン13間および接地端子VSSと出力ライン13間の各抵抗値(kΩ)と、出力ライン13に出力される中間電位VCCMの電源電圧に対する倍率と、電源電圧が3.3Vのときの中間電位VCCMの値(V)をまとめて示す。
初期設定の際に、Dフリップフロップ3を構成する電界効果トランジスタの閾値が基準電位よりも高い場合には、制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELは、表2のいずれかの欄の組み合わせに変更される。一方、Dフリップフロップ3を構成する電界効果トランジスタの閾値が基準電位よりも低い場合には、制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELは、表1の右端欄を除くいずれかの欄の組み合わせに変更される。
初期設定が済んだ後、出力データ監視部9でDフリップフロップ3から出力される乱数データを監視した結果、中間電位VCCMを上げる必要があるときには、その時点の制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELが表1のいずれかの欄の組み合わせであれば、表1のそれよりも右側のいずれかの欄の組み合わせ、または表2のいずれかの欄の組み合わせに変更される。中間電位VCCMを上げる必要が生じたときの制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELが表2のいずれかの欄の組み合わせであれば、表2のそれよりも右側のいずれかの欄の組み合わせに変更される。
それに対して、中間電位VCCMを下げる必要があるときには、その時点の制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELが表1のいずれかの欄の組み合わせであれば、表1のそれよりも左側のいずれかの欄の組み合わせに変更される。中間電位VCCMを下げる必要が生じたときの制御信号VCC31SEL、VCC32SEL、VCC33SELおよびVCC34SELが表2のいずれかの欄の組み合わせであれば、表2のそれよりも左側のいずれかの欄の組み合わせ、または表1のいずれかの欄の組み合わせに変更される。
なお、乱数データを生成しないときに、制御信号VCCSELにより、スイッチングトランジスタ12がオフ状態とされることは、図7に示す中間電位生成部2の場合と同じである。図9に示す構成によれば、図7に示す構成よりも、中間電位VCCMの調整範囲が広がり、かつ中間電位VCCMをより細かい間隔で調整することができる。なお、抵抗ラダーの抵抗の段数は5段以下でもよいし、7段以上でもよい。抵抗ラダーの抵抗の段数に応じて中間電位VCCMの調整段階数が変わる。上記具体例は、中間電位VCCMを16段階で調整する場合の一構成例である。また、具体例では、抵抗R21、R20、R19およびR18の抵抗値の比を8:4:2:1としたが、これ以外の比でもよい。
次に、出力データ監視部9の構成について説明する。図10は、出力データ監視部9の一例を示す図である。図10に示す出力データ監視部9は、Dフリップフロップ3から出力された乱数データが"1"であるときにカウント値が1だけ進む第1のカウンタ17と、乱数データが"0"であるときにカウント値が1だけ進む第2のカウンタ18を備えている。第1のカウンタ17は、乱数データが"0"であるときにリセットされる。第2のカウンタ18は、乱数データが"1"であるときにリセットされる。
特に限定しないが、例えば全部で16個の乱数データを用意する場合には、第1のカウンタ17および第2のカウンタ18は4ビットのカウンタで構成される。そして、乱数データが16回連続して"1"であるときに、第1のカウンタ17から中間電位VCCMを下げるための中間電位生成変更信号が出力される。一方、乱数データが16回連続して"0"であるときに、第2のカウンタ18から中間電位VCCMを上げるための中間電位生成変更信号が出力される。なお、カウンタのビット数は、4ビットに限らない。
また、出力データ監視部9は、図11に示す構成でもよい。図11に示す構成では、特に限定しないが、例えば全部で16個の乱数データを用意する場合、第1のカウンタ17および第2のカウンタ18にそれぞれカウント値の初期値として8がロードされる。従って、乱数データの生成開始後、乱数データが8回連続して"1"であるときに、第1のカウンタ17から中間電位VCCMを下げるための中間電位生成変更信号が出力される。一方、乱数データが8回連続して"0"であるときに、第2のカウンタ18から中間電位VCCMを上げるための中間電位生成変更信号が出力される。
図11に示す構成は、例えばICカードなどにおいて用いられる鍵のビット数が少ない場合に有効である。なお、第1のカウンタ17および第2のカウンタ18にカウント値の初期値としてロードされる値は8に限らない。このロードされる値を、外部のレジスタ等を用いて任意に設定できるようにしてもよい。
さらに、出力データ監視部9は、図12に示す構成でもよい。図12に示す構成では、Dフリップフロップ3から出力された乱数データが"1"であるときにカウント値が1だけ進み、"0"であるときにカウント値が1だけ戻る第3のカウンタ19と、生成された乱数データの数をカウントする第4のカウンタ20と、NANDゲート21と、3個のANDゲート22,23,24を備えている。
特に限定しないが、例えば、第3のカウンタ19が5ビットのカウンタで構成されており、全部で16個の乱数データを用意する場合には、乱数データの生成開始時(乱数生成会信号入力時)に、第3のカウンタ19にカウント値の初期値として16がロードされる。そして、16個の乱数データが生成され、それによって増減した第3のカウンタ19のカウント値が所定の数よりも小さい場合には、NANDゲート21およびANDゲート22を介して、第3のカウンタ19から中間電位VCCMを上げるための中間電位生成変更信号が出力される。このときの所定の数は、乱数データの生成開始時にカウント値の初期値として設定された16に等しいか、またはそれよりも小さい数である。
一方、16個の乱数データの生成後、第3のカウンタ19のカウント値が所定の数よりも大きい場合には、NANDゲート21およびANDゲート22を介して、第3のカウンタ19から中間電位VCCMを下げるための中間電位生成変更信号が出力される。このときの所定の数は、乱数データの生成開始時にカウント値の初期値として設定された16に等しいか、またはそれよりも大きい数である。
図12に示す構成によれば、例えば生成された16個の乱数データが"0"に偏っている場合に、その次の16個の乱数データを生成する際に"1"が多くなるように調整することができる。逆の場合も同様である。従って、偏りの少ない平均化された乱数データが得られる。なお、第3のカウンタ19にカウント値の初期値としてロードされる値は16に限らない。このロードされる値を、外部のレジスタ等を用いて任意に設定できるようにしてもよい。
(実施の形態3)
図13は、実施の形態3の乱数発生装置の一例を示す図である。実施の形態3の乱数発生装置31は、実施の形態1の乱数発生装置1を複数用意し、それら複数の乱数発生装置1を複数の遅延回路32により異なるタイミングで動作させ、乱数データとしてXOR回路33から各乱数発生装置1の出力値の排他的論理和を出力するようにしたものである。なお、図1に示す乱数発生装置1の代わりに、図2に示す乱数発生装置4、または図3に示す乱数発生装置6を用いてもよい。
また、図14に示す乱数発生装置34のように、図13に示す乱数発生装置31に、XOR回路33から出力される乱数データを監視する出力データ監視部35を付加し、XOR回路33から出力された乱数データに基づいて中間電位VCCMを制御する構成としてもよい。なお、この出力データ監視部35は、実施の形態2において説明した出力データ監視部9と同じものであるので、重複する説明を省略する。
以上説明したように、上記各実施の形態によれば、中間電位生成部2がアナログ回路で構成されており、そのアナログ回路で生成した中間電位VCCMをDフリップフロップ3のデータ端子に印加することによって、Dフリップフロップ3のデータ信号入力部で貫通電流が発生しても、それ以外には消費電力を増大させ得る要因がないので、低消費電力化を図ることができる。また、乱数発生部(Dフリップフロップ3)がデジタル回路で構成されているので、回路規模の縮小と低消費電力化を図ることができる。
さらに、Dフリップフロップ3のデータ端子に固定電位を供給するためのゲート5,7を設けることによって、乱数を生成しないときにDフリップフロップ3のデータ信号入力部で貫通電流が発生しないようにすることができるので、より一層、低消費電力化を図ることができる。また、実施の形態2のように、生成された乱数データの監視結果をフィードバックして中間電位VCCMを制御する構成とし、乱数発生装置8(10,11)が自らの生成データをチェックすることによって、外部からの不正なアクセスに対する高い耐性が得られる。
また、実施の形態3のように、複数の乱数発生装置1(4,6)を異なるタイミングで動作させて、すべての出力値の排他的論理和を求めることによって、各乱数発生装置1(4,6)の出力値が"0"または"1"に偏っていても、その偏りがXOR回路33によって平均化されるので、乱数データの発生率が高くなる。この構成と、乱数発生装置1(4,6)が自らの生成データをチェックして中間電位VCCMを制御する構成するを組み合わせることにより、外部からの不正なアクセスに対する高い耐性が得られる。
具体的には、0.18μmのテクノロジで作製した乱数発生装置の動作時消費電流を比較したところ、アナログ回路のみで構成された従来の乱数発生装置の消費電流が約2mAであったのに対して、乱数発生部をデジタル回路で構成した実施の形態では、消費電流を約50μA以下にすることができた。すなわち、低消費電力化を図ることができた。また、実施の形態では、製造プロセスにおいて、アナログ専用プロセスが不要であった。従って、製造コストの削減を図ることができた。さらに、スクランブル回路を通過させなくても、FIPS−140−2試験に合格可能な程度の乱数の発生性を得ることができた。つまり、回路規模の削減と、対信頼性の向上を図ることができた。
以上において本説明は、上述した実施の形態に限らず、種々変更可能である。中間電位生成部2や出力データ監視部9の構成は、実施の形態において説明した構成に限らない。例えば、中間電位生成部2を、上述した各構成の抵抗分割式に代えて、容量分割式により中間電位VCCMを生成する構成としてもよい。
(付記1)クロック信号に基づいて、データ端子への印加電位に応じた値をサンプリングして出力するフリップフロップと、
前記フリップフロップを構成する電界効果トランジスタの閾値にほぼ等しい中間電位を生成して前記フリップフロップのデータ端子に供給する中間電位生成部と、
を備えることを特徴とする乱数発生装置。
(付記2)前記中間電位生成部と前記フリップフロップの間に、前記中間電位生成部で生成された中間電位にかかわらず、前記フリップフロップのデータ端子への供給電位を固定するゲートが設けられていることを特徴とする付記1に記載の乱数発生装置。
(付記3)前記ゲートは、前記中間電位生成部で生成された中間電位と、外部から供給される制御信号を入力とするANDゲートであることを特徴とする付記2に記載の乱数発生装置。
(付記4)前記ゲートは、前記中間電位生成部で生成された中間電位と、外部から供給される制御信号を入力とするORゲートであることを特徴とする付記2に記載の乱数発生装置。
(付記5)前記中間電位生成部は、電源電圧を抵抗分割する抵抗ラダーを備えており、該抵抗ラダーにより電源電圧を抵抗分割することにより中間電位を生成することを特徴とする付記1〜4のいずれか一つに記載の乱数発生装置。
(付記6)前記抵抗ラダーは、粗調整用の抵抗群と微調整用の抵抗群を備えていることを特徴とする付記5に記載の乱数発生装置。
(付記7)前記フリップフロップの出力値を監視し、該出力値が常に同じであるときに前記中間電位生成部に対して中間電位の変更を指示する出力データ監視部をさらに備えていることを特徴とする付記1〜6のいずれか一つに記載の乱数発生装置。
(付記8)前記フリップフロップの出力値を監視し、該出力値が連続して一定の数だけ同じであるときに前記中間電位生成部に対して中間電位の変更を指示する出力データ監視部をさらに備えていることを特徴とする付記1〜6のいずれか一つに記載の乱数発生装置。
(付記9)前記フリップフロップの出力値を監視し、該出力値の分布が一様でないときに前記中間電位生成部に対して中間電位の変更を指示する出力データ監視部をさらに備えていることを特徴とする付記1〜6のいずれか一つに記載の乱数発生装置。
(付記10)上記付記1〜6のいずれか一つに記載の複数の乱数発生装置と、
前記各乱数発生装置を異なるタイミングで動作させるための遅延回路と、
前記各乱数発生装置の出力値の排他的論理和を出力するXOR回路と、
を備えていることを特徴とする乱数発生装置。
(付記11)電界効果トランジスタの閾値にほぼ等しい中間電位を該電界効果トランジスタのゲートに印加し、該中間電位の熱雑音による変動に応じて前記電界効果トランジスタの出力値が切り替わることにより乱数を生成することを特徴とする乱数発生方法。
(付記12)前記電界効果トランジスタの出力値を監視し、該出力値が常に同じであるときに前記中間電位を変更することを特徴とする付記11に記載の乱数発生方法。
(付記13)前記電界効果トランジスタの出力値を監視し、該出力値が連続して一定の数だけ同じであるときに前記中間電位を変更することを特徴とする付記11に記載の乱数発生方法。
(付記14)前記電界効果トランジスタの出力値を監視し、該出力値の分布が一様でないときに前記中間電位を変更することを特徴とする付記11に記載の乱数発生方法。