(57)【要約】  一特徴は、ランダムデジタル出力値を生成するためにビットセルの整定時間をエントロピー源として利用する真の乱数生成器に関する。ビットセルは、スタティックランダムアクセスメモリビットセルであってよい。ビットセルの整定時間は、アナログデジタル変換器を使用してデジタル出力に変換されてよい。複数のビットセルが、リング構成で互いに直列に結合されてよい。次いで、ビットセルリングは、複数のビットセルの各ビットセルが整定値を達成し、その整定値が今度はリング内の後続のビットセルを活性化してそのビットセルを整定値に到達させ、以下同様に繰り返すように、イネーブルされ得る。次いで、リング内のビットセルのうちの1つのビットセルの出力ノードは、ランダムビットの連続ストリームを生成するために、フリップフロップを使用してサンプリングされ得る。
2018507468.tif 000002
【特許請求の範囲】
【請求項１】
ランダム整定時間を有するビットセルと、
前記ランダム整定時間を受信し、前記ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成されたアナログデジタル変換器(ADC)とを備える、乱数生成器。
【請求項２】
前記ビットセルが、
6トランジスタ(6T)相補型金属酸化物半導体(CMOS)スタティックランダムアクセスメモリ(SRAM)セル部分を含む、請求項1に記載の乱数生成器。
【請求項３】
前記ビットセルが、前記ビットセルの差動出力ノードを初期化電圧値に初期化するように構成された少なくとも2つのプリチャージトランジスタを含む、請求項1に記載の乱数生成器。
【請求項４】
前記2つのプリチャージトランジスタが、前記差動出力ノードが前記初期化電圧値からプリチャージ電圧値VPCに遷移することを生じさせるために、オフに切り替えられるように構成される、請求項3に記載の乱数生成器。
【請求項５】
前記初期化電圧値が正の電源線電圧VDDまたは負の電源線電圧VSSのいずれかに近似しており、前記プリチャージ電圧値VPCが0.5*VDD±0.15*VDDである、請求項4に記載の乱数生成器。
【請求項６】
前記差動出力ノードがVPCに遷移した後、それらが、互いに異なり、逆の整定値で整定する、請求項4に記載の乱数生成器。
【請求項７】
ランダム整定時間を各々が有する複数のビットセルをさらに備え、前記複数のビットセルが、前記複数のビットセルの最後のビットセルが別のビットセルに結合されない出力を有することを除いて、前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合されるように、直列に配列される、請求項1に記載の乱数生成器。
【請求項８】
総ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記ADCが、前記総ランダム整定時間を受信し、前記総ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するように構成される、請求項7に記載の乱数生成器。
【請求項９】
ランダム整定時間を各々が有する複数のビットセルをさらに備え、前記複数のビットセルが、前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合されるように、リング内に配列される、請求項1に記載の乱数生成器。
【請求項１０】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記ADCが、前記周期性ランダム整定時間を受信し、前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するように構成される、請求項9に記載の乱数生成器。
【請求項１１】
前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力が、複数のランダムデジタル出力値を生成するために、あるサンプリングレートでサンプリングされる、請求項10に記載の乱数生成器。
【請求項１２】
前記複数のビットセルのうちの1つのビットセルの出力に結合された入力を有するフリップフロップをさらに備え、前記フリップフロップの出力が複数のランダムデジタル出力値を生成するように構成され、前記フリップフロップがビットセルリング発振器エントロピー源の出力に結合されたクロック入力を有する、請求項10に記載の乱数生成器。
【請求項１３】
サンプリングされている前記ビットセルの前記出力に結合された入力を有するフリップフロップをさらに備え、前記フリップフロップが、前記サンプリングレートにおけるクロック入力を有し、前記複数のランダムデジタル出力値を生成するように構成される、請求項11に記載の乱数生成器。
【請求項１４】
乱数を生成する方法であって、
ビットセルのランダム整定時間を決定するステップと、
アナログデジタル変換器(ADC)を使用して前記ビットセルの前記ランダム整定時間に基づいてランダムデジタル出力値を生成するステップとを含む、方法。
【請求項１５】
前記ビットセルの前記ランダム整定時間を決定するステップが、
前記ビットセルの出力を初期化電圧値にならしめるために前記ビットセルを初期化するステップと、
前記ビットセルの前記出力が前記初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するように前記ビットセルを活性化するステップとを含む、請求項14に記載の方法。
【請求項１６】
前記ビットセルの前記ランダム整定時間が、前記ビットセルが活性化されたときから前記ビットセルの前記出力が前記整定電圧値に到達するときまでに経過する期間である、請求項15に記載の方法。
【請求項１７】
複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合され、前記複数のビットセルの各ビットセルがランダム整定時間を有するように、リング構成に前記複数のビットセルを結合するステップをさらに含む、請求項14に記載の方法。
【請求項１８】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記方法が、
前記ADCを使用して前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するステップをさらに含む、請求項17に記載の方法。
【請求項１９】
複数のランダムデジタル出力値を生成するために、前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力を、あるサンプリングレートでサンプリングするステップをさらに含む、請求項18に記載の方法。
【請求項２０】
フリップフロップの入力を前記複数のビットセルのうちの1つのビットセルの出力に結合するステップと、
前記フリップフロップのクロック入力をビットセルリング発振器の出力に結合するステップと、
複数のランダムデジタル出力値を前記フリップフロップの出力において生成するステップとをさらに含む、請求項18に記載の方法。
【請求項２１】
フリップフロップの入力をサンプリングされている前記ビットセルの前記出力に結合するステップと、
前記サンプリングレートを有するクロック信号を前記フリップフロップに供給するステップと、
前記複数のランダムデジタル出力値を前記フリップフロップの出力において生成するステップとをさらに含む、請求項19に記載の方法。
【請求項２２】
メモリ回路と、
前記メモリ回路に通信可能に結合された乱数生成器とを備え、前記乱数生成器が、
ランダム整定時間を有するビットセルと、
前記ランダム整定時間を受信し、前記ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成されたアナログデジタル変換器(ADC)とを含み、前記ランダムデジタル出力値が前記メモリ回路において記憶される、コンピューティングデバイス。
【請求項２３】
前記ビットセルが、
6トランジスタ(6T)相補型金属酸化物半導体(CMOS)スタティックランダムアクセスメモリ(SRAM)セル部分を含む、請求項22に記載のコンピューティングデバイス。
【請求項２４】
前記ビットセルが、前記ビットセルの差動出力ノードを初期化電圧値に初期化するように構成された少なくとも2つのプリチャージトランジスタを含む、請求項22に記載のコンピューティングデバイス。
【請求項２５】
前記2つのプリチャージトランジスタが、前記差動出力ノードが前記初期化電圧値からプリチャージ電圧値VPCに遷移することを生じさせるために、オフに切り替えられるように構成される、請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記乱数生成器が、
ランダム整定時間を各々が有する複数のビットセルをさらに含み、前記複数のビットセルが、前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合されるように、リング内に配列される、請求項22に記載のコンピューティングデバイス。
【請求項２７】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記ADCが、前記周期性ランダム整定時間を受信し、前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するように構成される、請求項26に記載のコンピューティングデバイス。
【請求項２８】
前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力が、複数のランダムデジタル出力値を生成するために、あるサンプリングレートでサンプリングされる、請求項27に記載のコンピューティングデバイス。
【請求項２９】
前記乱数生成器が、
前記複数のビットセルのうちの1つのビットセルの出力に結合された入力を有するフリップフロップをさらに含み、前記フリップフロップの出力が複数のランダムデジタル出力値を生成するように構成され、前記フリップフロップがビットセルリング発振器エントロピー源の出力に結合されたクロック入力を有し、前記複数のランダムデジタル出力値が前記メモリ回路において記憶される、請求項27に記載のコンピューティングデバイス。
【請求項３０】
前記乱数生成器が、
サンプリングされている前記出力に結合された入力を有するフリップフロップをさらに含み、前記フリップフロップが前記サンプリングレートにおけるクロック入力を有し、前記複数のランダムデジタル出力値を生成するように構成され、前記複数のランダムデジタル出力値が前記メモリ回路において記憶される、請求項28に記載のコンピューティングデバイス。
【請求項３１】
ビットセルのランダム整定時間を決定するための手段と、
前記ビットセルの前記ランダム整定時間に基づいてランダムデジタル出力値を生成するための手段とを含む、コンピューティングデバイス。
【請求項３２】
前記ビットセルの前記ランダム整定時間を決定するための前記手段が、
前記ビットセルの出力を初期化電圧値にならしめるために前記ビットセルを初期化するための手段と、
前記ビットセルの前記出力が前記初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するように前記ビットセルを活性化するための手段とを含む、請求項31に記載のコンピューティングデバイス。
【請求項３３】
複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合され、前記複数のビットセルの各ビットセルがランダム整定時間を有するように、リング構成に結合された前記複数のビットセルをさらに備える、請求項31に記載のコンピューティングデバイス。
【請求項３４】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記コンピューティングデバイスが、
前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するための手段をさらに含む、請求項33に記載のコンピューティングデバイス。
【請求項３５】
複数のランダムデジタル出力値を生成するために、前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力を、あるサンプリングレートでサンプリングするための手段をさらに含む、請求項34に記載のコンピューティングデバイス。
【請求項３６】
リング構成に配列された複数のビットセルを含むビットセルリング発振器と、
複数のランダムビットを生成するために前記複数のビットセルのうちの1つのビットセルの出力ノードをサンプリングするための手段とを含む、乱数生成器。
【請求項３７】
前記ビットセルリング発振器の前記複数のビットセルの各々の少なくとも1つの出力ノードが、初期化値から整定値に遷移するように構成され、先行するビットセルの整定値が、後続のビットセルの前記出力ノードが初期化値から整定値に遷移することを生じさせる、請求項36に記載の乱数生成器。
【請求項３８】
前記ビットセルリング発振器の前記複数のビットセルの各々の少なくとも1つの出力ノードが、整定値から初期化値に遷移するように構成され、先行するビットセルの整定値が、後続のビットセルの前記出力ノードが整定値から初期化値に遷移することを生じさせる、請求項36に記載の乱数生成器。
【請求項３９】
前記ビットセルリング発振器が、前記複数のビットセルの各々の整定時間tsettleに基づくランダムな周期性整定時間tsettle_periodを有し、前記複数のランダムビットが、前記ランダムな周期性整定時間tsettle_periodに部分的に基づいてランダムに生成される、請求項36に記載の乱数生成器。
【請求項４０】
前記複数のビットセルが、初期化と活性化のフェーズの間で順に入れ替わるように構成される、請求項36に記載の乱数生成器。
【請求項４１】
サンプリングするための前記手段が、前記ビットセルの前記出力ノードに通信可能に結合された入力と、前記入力におけるビット値をフリップフロップの出力にラッチすることによって前記複数のランダムビットを生成する出力とを有するフリップフロップであり、前記フリップフロップが、クロックによって前記フリップフロップに供給されるクロック信号に基づいて前記ビットセルの前記出力ノードをサンプリングする、請求項36に記載の乱数生成器。
【請求項４２】
前記ビットセルリング発振器の前記複数のビットセルが、第1のビットセルと最後のビットセルとを含み、前記最後のビットセルの出力が前記第1のビットセルの入力に通信可能に結合され、前記第1のビットセルの前記入力に、あるビット値を入力することで、前記最後のビットセルの前記出力において、前記第1のビットセルの前記入力に入力された前記ビット値と反対の出力ビット値が生成される、請求項36に記載の乱数生成器。
【請求項４３】
前記乱数生成器が、4*n-2個のビットセルを含み、nが1以上の正の整数である、請求項36に記載の乱数生成器。
【請求項４４】
前記複数のビットセルのうちの少なくとも1つのビットセルが、pチャネル金属酸化物半導体電界効果トランジスタ(PMOS)イネーブルトランジスタと、交差結合インバータペアと、2つのnチャネル金属酸化物半導体電界効果トランジスタ(NMOS)プリチャージトランジスタとを含むpタイプビットセルであり、前記交差結合インバータペアが、XORゲートおよび/またはXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、前記XORゲートおよび/または前記XNORゲートの出力が、サンプリングするための前記手段によってサンプリングされる前記ビットセルの前記出力ノードである、請求項36に記載の乱数生成器。
【請求項４５】
前記複数のビットセルのうちの少なくとも1つのビットセルが、NMOSイネーブルトランジスタと、交差結合インバータペアと、2つのPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記交差結合インバータペアが、XORゲートおよび/またはXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、前記XORゲートおよび/または前記XNORゲートの出力が、サンプリングするための前記手段によってサンプリングされる前記ビットセルの前記出力ノードである、請求項36に記載の乱数生成器。
【請求項４６】
前記複数のビットセルのうちの第1のビットセルが、PMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つのNMOSプリチャージトランジスタとを含むpタイプビットセルであり、前記第1の交差結合インバータペアが、第1のXORゲートおよび/または第1のXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記複数のビットセルのうちの第2のビットセルが、NMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つのPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記第2の交差結合インバータペアが、第2のXORゲートおよび/または第2のXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記第1のXORゲートおよび/または前記第1のXNORゲートの出力が、前記NMOSイネーブルトランジスタのゲートおよび前記2つのPMOSプリチャージトランジスタのゲートに通信可能に結合される、請求項36に記載の乱数生成器。
【請求項４７】
遅延要素が、前記第1のXORゲートおよび/または前記第1のXNORゲートの、前記2つのPMOSプリチャージトランジスタの前記ゲートへの前記出力を、前記NMOSイネーブルトランジスタの前記ゲートに対して遅延させる、請求項46に記載の乱数生成器。
【請求項４８】
前記複数のビットセルのうちの第1のビットセルが、第1のPMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つの第1のNMOSプリチャージトランジスタとを含むpタイプビットセルであり、前記第1の交差結合インバータペアが、XORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記複数のビットセルのうちの第2のビットセルが、第2のPMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つの第2のNMOSプリチャージトランジスタとを含むpタイプビットセルであり、前記第2の交差結合インバータペアが、XNORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記XORゲートの出力が、前記第2のPMOSイネーブルトランジスタのゲートおよび前記2つの第2のNMOSプリチャージトランジスタのゲートに通信可能に結合される、請求項36に記載の乱数生成器。
【請求項４９】
前記複数のビットセルのうちの第1のビットセルが、第1のNMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つの第1のPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記第1の交差結合インバータペアが、XORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記複数のビットセルのうちの第2のビットセルが、第2のNMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つの第2のPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記第2の交差結合インバータペアが、XNORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記XORゲートの出力が、前記第2のNMOSイネーブルトランジスタのゲートおよび前記2つの第2のPMOSプリチャージトランジスタのゲートに通信可能に結合される、請求項36に記載の乱数生成器。
【請求項５０】
リング構成に配列された複数のビットセルを各々が含む複数のビットセルリング発振器をさらに備え、前記複数のビットセルリング発振器がそれぞれ、ゲート段に入力される出力を有し、前記ゲート段が複数のゲートを有し、前記ゲート段が前記複数のランダムビットを生成するためにサンプリングされるゲート段出力を有する、請求項36に記載の乱数生成器。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、内容全体が参照により本明細書に組み込まれる、2015年1月14日に米国特許商標庁に出願された、米国非仮特許出願第14/597,146号の優先権および利益を主張する。
【０００２】
様々な特徴は、一般に、乱数生成器に関し、より詳細には、1つまたは複数のビットセルの整定時間をエントロピー源として利用する乱数生成器に関する。
【背景技術】
【０００３】
携帯電話デバイス、ラップトップ、タブレット、集積回路(IC)カードなどのモバイル電子デバイスは急速に普及しつつあるので、小型の電子回路内のデータを保護する高レベルのロバストな暗号セキュリティシステムの需要が増大している。そのような暗号セキュリティシステムは、概して、公開鍵暗号方式と対称鍵暗号方式とに分けられ得る。公開鍵暗号方式では、情報の暗号化および復号に異なる鍵が使用される。そのようなシステムでは、暗号化された情報を復号するために使用される1つの鍵(たとえば、秘密鍵)を受信者において秘密にしながら、送信者が受信者に情報を送信する前に公開鍵を使用して情報を暗号化することができるように、別の鍵(たとえば、公開鍵)が公表されることによってセキュリティが確保される。対照的に、対称鍵暗号方式では、単一の鍵が、情報の暗号化および復号に使用される。そのようなシステムでは、セキュリティは、鍵の秘密を第三者(すなわち、受信者および送信者以外の関係者)に漏らさないことによって確保される。
【０００４】
したがって、公開鍵と対称鍵の両暗号システムにおいて、セキュリティは、少なくとも一方の秘密鍵の機密性に依存する。秘密鍵が、何らかの方法で第三者によってアクセス可能であるかまたは計算可能であれば、暗号システムのセキュリティは破綻する場合がある。したがって、秘密鍵生成は、第三者が秘密鍵を推測または計算することを事実上実現不可能にするアルゴリズムを使用して実行されるべきである。そのようなアルゴリズムは、一般に、秘密鍵を生成するために、第三者に知られていない乱数を使用する。
【０００５】
乱数は、それらがどのように生成されるかに応じて、概して2つのグループ、すなわち擬似乱数と真の乱数とに分割される。
【０００６】
擬似乱数は、決定論的計算によって生成される一連の数の一部を指し、シードを初期値として擬似乱数生成アルゴリズムに供給することによって生成される。擬似乱数は、それの生成方法(すなわち、擬似乱数生成アルゴリズム)が知られている限り、論理的に予測可能である。さらに、シードが知られているならば、同じ擬似乱数列をあらかじめ生成することが可能になる。この理由で、擬似乱数が暗号システムの秘密鍵を生成するために使用されるとき、暗号化された情報の安全性が脅かされる場合がある。
【０００７】
対照的に、真の乱数は、本質的にランダムな特性を有する物理現象を利用することによって生成される。たとえば、そのような物理現象の例として、電子デバイス中の熱雑音、放射性崩壊、ネットワークデータの到着タイミング、電気的雑音などが挙げられる。擬似乱数とは違って、真の乱数には再現性がなく、したがって、そのような乱数は予測することができない。このために、秘密鍵を生成するために真の乱数を利用する暗号システムは、擬似乱数を利用する暗号システムよりも安全である。
【０００８】
真の乱数生成に対するエントロピーの1つの発生源は、スタティックランダムアクセスメモリ(SRAM)セルの初期状態(すなわち、起動状態)であり、それは、理論的に等確率で論理1または論理0のいずれかであり得る。メモリセルは、それらが集積回路上に極めて遍在しているので、エントロピーを与えるための便利で経済的な手段を提供する。しかしながら、SRAMセル内で不可避のデバイス不整合(たとえば、一方のインバータが他方のインバータより多くのプル/ゲインを有する)に起因して、そのようなメモリセルは、始動時に特定の論理値(たとえば、0または1)にバイアスされる自然な傾向を有し、したがってそのようなメモリセルが与えるエントロピーは小さくなる。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
小さくて安価であり、高いエントロピーおよびランダム性を与えるオンチップのエントロピー源が必要とされている。そのようなエントロピー源は、限定はしないが、暗号セキュリティアルゴリズム(たとえば、暗号鍵生成アルゴリズム)、ギャンブル、統計的サンプリング、コンピュータシミュレーション、完全にランダム化された設計、モンテカルロ法シミュレーション、および予測できない値を利用する任意の他のアプリケーションを含む多様なアプリケーションにおいて使用するために真の乱数を生成するための乱数生成器によって使用され得る。
【課題を解決するための手段】
【００１０】
1つの特徴は、ランダム整定時間を有するビットセルを備える乱数生成器と、ランダム整定時間を受信し、ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成されたアナログデジタル変換器(ADC)とを提供する。一態様によれば、ビットセルは、6トランジスタ(6T)相補型金属酸化物半導体(CMOS)スタティックランダムアクセスメモリ(SRAM)セル部分を含む。別の態様によれば、ビットセルは、ビットセルの差動出力ノードを初期化電圧値に初期化するように構成された少なくとも2つのプリチャージトランジスタを含む。また別の態様によれば、2つのプリチャージトランジスタは、差動出力ノードが初期化電圧値からプリチャージ電圧値VPCに遷移することを生じさせるために、オフに切り替えられるように構成される。
【００１１】
一態様によれば、初期化電圧値は、正の電源線電圧VDDまたは負の電源線電圧VSSのいずれかに近似しており、プリチャージ電圧値VPCは0.5*VDD±0.15*VDDである。別の態様によれば、差動出力ノードがVPCに遷移した後、それらは、互いに異なり、逆の整定値で整定する。また別の態様によれば、ADCは、時間デジタル変換器(TDC)である。
【００１２】
一態様によれば、乱数生成器は、ランダム整定時間を各々が有する複数のビットセルをさらに備え、複数のビットセルは、複数のビットセルの最後のビットセルが別のビットセルに結合されない出力を有することを除いて、複数のビットセルの各ビットセルの出力が複数のビットセルの後続のビットセルの入力に結合されるように直列に配列される。別の態様によれば、総ランダム整定時間は、複数のビットセルのランダム整定時間の各々の合計に等しく、ADCは、総ランダム整定時間を受信し、総ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成される。また別の態様によれば、乱数生成器は、ランダム整定時間を各々が有する複数のビットセルをさらに備え、複数のビットセルは、複数のビットセルの各ビットセルの出力が複数のビットセルの後続のビットセルの入力に結合されるようにリング内に配列される。
【００１３】
一態様によれば、周期性ランダム整定時間は、複数のビットセルのランダム整定時間の各々の合計に等しく、ADCは、周期性ランダム整定時間を受信し、周期性ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成される。別の態様によれば、複数のビットセルのうちの1つのビットセルの少なくとも1つの出力が、複数のランダムデジタル出力値を生成するために、あるサンプリングレートでサンプリングされる。また別の態様によれば、乱数生成器は、サンプリングされている出力に結合された入力を有するフリップフロップをさらに備え、フリップフロップは、サンプリングレートにおけるクロック入力を有し、複数のランダムデジタル出力値を生成するように構成される。また別の態様によれば、乱数生成器は、複数のビットセルのうちの1つのビットセルの出力に結合された入力を有するフリップフロップをさらに備え、フリップフロップの出力は、複数のランダムデジタル出力値を生成するように構成され、フリップフロップは、ビットセルリング発振器エントロピー源の出力に結合されたクロック入力を有する。
【００１４】
別の特徴は、リング構成に配列された複数のビットセルを含むビットセルリング発振器を備える乱数生成器と、複数のランダムビットを生成するために複数のビットセルのうちの1つのビットセルの出力ノードをサンプリングするための手段とを提供する。一態様によれば、ビットセルリング発振器のビットセルの各々の少なくとも1つの出力ノードは、初期化値から整定値に遷移するように構成され、先行するビットセルの整定値は、後続のビットセルの出力ノードが初期化値から整定値に遷移することを生じさせる。別の態様によれば、ビットセルリング発振器のビットセルの各々の少なくとも1つの出力ノードは、整定値から初期化値に遷移するように構成され、先行するビットセルの整定値は、後続のビットセルの出力ノードが整定値から初期化値に遷移することを生じさせる。また別の態様によれば、ビットセルリング発振器は、複数のビットセルの各々の整定時間tsettleに基づくランダムな周期性整定時間tsettle_periodを有し、複数のランダムビットは、ランダムな周期性整定時間tsettle_periodに部分的に基づいてランダムに生成される。
【００１５】
一態様によれば、複数のビットセルは、初期化と活性化のフェーズの間で順に入れ替わるように構成される。別の態様によれば、サンプリングするための手段は、ビットセルの出力ノードに通信可能に結合された入力と、入力におけるビット値をフリップフロップの出力にラッチすることによってランダムビットを生成する出力とを有するフリップフロップであり、フリップフロップは、クロックによってフリップフロップに供給されるクロック信号に基づいてビットセルの出力ノードをサンプリングする。また別の態様によれば、ビットセルリング発振器の複数のビットセルは、第1のビットセルと最後のビットセルとを含み、最後のビットセルの出力は、第1のビットセルの入力に通信可能に結合され、あるビット値を第1のビットセルの入力に入力することで、最後のビットセルの出力において、第1のビットセルの入力に入力されたビット値と反対の出力ビット値が生成される。
【００１６】
一態様によれば、乱数生成器は4*n-2個のビットセルを含み、nは1以上の正の整数である。別の態様によれば、複数のビットセルのうちの少なくとも1つのビットセルは、pチャネル金属酸化物半導体電界効果トランジスタ(PMOS)イネーブルトランジスタと、交差結合インバータペアと、2つのnチャネル金属酸化物半導体電界効果トランジスタ(NMOS)プリチャージトランジスタとを含むpタイプビットセルであり、交差結合インバータペアは、XORゲートおよび/またはXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、XORゲートおよび/またはXNORゲートの出力は、サンプリングするための手段によってサンプリングされるビットセルの出力ノードである。また別の態様によれば、複数のビットセルのうちの少なくとも1つのビットセルは、NMOSイネーブルトランジスタと、交差結合インバータペアと、2つのPMOSプリチャージトランジスタとを含むnタイプビットセルであり、交差結合インバータペアは、XORゲートおよび/またはXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、XORゲートおよび/またはXNORゲートの出力は、サンプリングするための手段によってサンプリングされるビットセルの出力ノードである。
【００１７】
一態様によれば、複数のビットセルのうちの第1のビットセルは、PMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つのNMOSプリチャージトランジスタとを含むpタイプビットセルであり、第1の交差結合インバータペアは、第1のXORゲートおよび/または第1のXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、複数のビットセルのうちの第2のビットセルは、NMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つのPMOSプリチャージトランジスタとを含むnタイプビットセルであり、第2の交差結合インバータペアは、第2のXORゲートおよび/または第2のXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、第1のXORゲートおよび/または第1のXNORゲートの出力は、NMOSイネーブルトランジスタのゲートおよび2つのPMOSプリチャージトランジスタのゲートに通信可能に結合される。別の態様によれば、遅延要素は、第1のXORゲートおよび/または第1のXNORゲートの、2つのPMOSプリチャージトランジスタのゲートへの出力を、NMOSイネーブルトランジスタのゲートに対して遅延させる。
【００１８】
一態様によれば、複数のビットセルのうちの第1のビットセルは、第1のPMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つの第1のNMOSプリチャージトランジスタとを含むpタイプビットセルであり、第1の交差結合インバータペアは、XORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、複数のビットセルのうちの第2のビットセルは、第2のPMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つの第2のNMOSプリチャージトランジスタとを含むpタイプビットセルであり、第2の交差結合インバータペアは、XNORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、XORゲートの出力は、第2のPMOSイネーブルトランジスタのゲートおよび2つの第2のNMOSプリチャージトランジスタのゲートに通信可能に結合される。
【００１９】
別の態様によれば、複数のビットセルのうちの第1のビットセルは、第1のNMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つの第1のPMOSプリチャージトランジスタとを含むnタイプビットセルであり、第1の交差結合インバータペアは、XORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、複数のビットセルのうちの第2のビットセルは、第2のNMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つの第2のPMOSプリチャージトランジスタとを含むnタイプビットセルであり、第2の交差結合インバータペアは、XNORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、XORゲートの出力は、第2のNMOSイネーブルトランジスタのゲートおよび2つの第2のPMOSプリチャージトランジスタのゲートに通信可能に結合される。また別の態様によれば、乱数生成器は、各々がリング構成に配列された複数のビットセルを含む複数のビットセルリング発振器をさらに備え、複数のビットセルリング発振器はそれぞれ、ゲート段に入力される出力を有し、ゲート段は複数のゲートを有し、ゲート段は、複数のランダムビットを生成するためにサンプリングされるゲート段出力を有する。
【００２０】
別の特徴は、ビットセルのランダム整定時間を決定するステップと、アナログデジタル変換器(ADC)を使用してビットセルのランダム整定時間に基づいてランダムデジタル出力値を生成するステップとを含む乱数を生成する方法を提供する。一態様によれば、ビットセルのランダム整定時間を決定するステップは、ビットセルの出力を初期化電圧値にならしめるようにビットセルを初期化するステップと、ビットセルの出力が初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するようにビットセルを活性化するステップとを含む。別の態様によれば、ビットセルのランダム整定時間は、ビットセルが活性化されたときからビットセルの出力が整定値に到達するときまでに経過する期間である。
【００２１】
一態様によれば、方法は、複数のビットセルの各ビットセルの出力が複数のビットセルの後続のビットセルの入力に結合され、複数のビットセルの各ビットセルがランダム整定時間を有するように、リング構成に複数のビットセルを結合するステップをさらに含む。別の態様によれば、周期性ランダム整定時間は、複数のビットセルのランダム整定時間の各々の合計に等しく、方法は、ADCを使用して周期性ランダム整定時間に基づいてランダムデジタル出力値を生成するステップをさらに含む。また別の態様によれば、方法は、複数のランダムデジタル出力値を生成するために、複数のビットセルのうちの1つのビットセルの少なくとも1つの出力を、あるサンプリングレートでサンプリングするステップをさらに含む。
【００２２】
一態様によれば、方法は、フリップフロップの1つの入力を複数のビットセルのうちの1つのビットセルの出力に結合するステップと、フリップフロップのクロック入力をビットセルリング発振器の出力に結合するステップと、フリップフロップの出力において複数のランダムデジタル出力値を生成するステップとをさらに含む。別の態様によれば、方法は、フリップフロップの入力をサンプリングされているビットセルの出力に結合するステップと、サンプリングレートを有するクロック信号をフリップフロップに供給するステップと、フリップフロップの出力において複数のランダムデジタル出力値を生成するステップとをさらに含む。
【００２３】
別の特徴は、メモリ回路と、メモリ回路に通信可能に結合された乱数生成器とを備えるコンピューティングデバイスを提供し、乱数生成器はランダム整定時間を有するビットセルを含み、アナログデジタル変換器(ADC)はランダム整定時間を受信し、ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成され、ランダムデジタル出力値はメモリ回路において記憶される。一態様によれば、コンピューティングデバイスの乱数生成器は、ランダム整定時間を各々が有する複数のビットセルをさらに含み、複数のビットセルは、複数のビットセルの各ビットセルの出力が複数のビットセルの後続のビットセルの入力に結合されるようにリング内に配列される。別の態様によれば、コンピューティングデバイスの乱数生成器は、複数のビットセルのうちの1つのビットセルの出力に結合された入力を有するフリップフロップをさらに含み、フリップフロップの出力は、複数のランダムデジタル出力値を生成するように構成され、フリップフロップは、ビットセルリング発振器エントロピー源の出力に結合されたクロック入力を有し、複数のランダムデジタル出力値はメモリ回路において記憶される。
【００２４】
別の特徴は、ビットセルのランダム整定時間を決定するための手段と、ビットセルのランダム整定時間に基づいてランダムデジタル出力値を生成するための手段とを含むコンピューティングデバイスを提供する。一態様によれば、ビットセルのランダム整定時間を決定するための手段は、ビットセルの出力を初期化電圧値にならしめるようにビットセルを初期化するための手段と、ビットセルの出力が初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するようにビットセルを活性化するための手段とを含む。別の態様によれば、コンピューティングデバイスは、複数のビットセルの各ビットセルの出力が複数のビットセルの後続のビットセルの入力に結合され、複数のビットセルの各ビットセルがランダム整定時間を有するように、リング構成に結合された複数のビットセルをさらに備える。
【００２５】
一態様によれば、周期性ランダム整定時間は、複数のビットセルのランダム整定時間の各々の合計に等しく、コンピューティングデバイスは、周期性ランダム整定時間に基づいてランダムデジタル出力値を生成するための手段をさらに含む。別の態様によれば、コンピューティングデバイスは、複数のランダムデジタル出力値を生成するために、複数のビットセルのうちの1つのビットセルの少なくとも1つの出力を、あるサンプリングレートでサンプリングするための手段をさらに含む。
【図面の簡単な説明】
【００２６】
【図１】真の乱数生成器の高レベルの概略ブロック図である。
【図２】真の乱数生成器のエントロピー源である第1の例示的なビットセルを示す図である。
【図３】真の乱数生成器のエントロピー源である第2の例示的なビットセルを示す図である。
【図４】pタイプビットセルのタイミング図である。
【図５】nタイプビットセルのタイミング図である。
【図６】4トランジスタ(4T)CMOS SRAM設計に基づく第1の例示的なビットセルを示す図である。
【図７】4トランジスタ(4T)CMOS SRAM設計に基づく第2の例示的なビットセルを示す図である。
【図８】真の乱数生成器の第1の例示的な高レベルブロック図である。
【図９】真の乱数生成器の第2の例示的な高レベルブロック図である。
【図１０】真の乱数生成器の第3の例示的な高レベルブロック図である。
【図１１】真の乱数生成器の第4の例示的な高レベルブロック図である。
【図１２】第1の例示的なビットセルリング発振器エントロピー源を含む真の乱数生成器のブロック図である。
【図１３】第2の例示的なビットセルリング発振器エントロピー源を含む真の乱数生成器のブロック図である。
【図１４】第3の例示的なビットセルリング発振器エントロピー源を含む真の乱数生成器のブロック図である。
【図１５】第4の例示的なビットセルリング発振器エントロピー源を含む真の乱数生成器のブロック図である。
【図１６】真の乱数生成器の高レベルブロック図である。
【図１７】複数のビットセルリング発振器エントロピー源を特徴とする真の乱数生成器の高レベルブロック図である。
【図１８】乱数を生成するための方法の流れ図である。
【図１９】乱数生成器回路を特徴とする第1の例示的なコンピューティングデバイスのブロック図である。
【図２０】第2の例示的なコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【００２７】
以下の説明では、本開示の様々な態様を完全に理解できるように、具体的な詳細が与えられる。しかしながら、各態様がこれらの具体的な詳細なしに実施されてもよいことが、当業者には理解されよう。たとえば、回路および構造は、不必要な詳細で態様を不明瞭にすることを避けるために、ブロック図で示されることがある。他の事例では、周知の回路、構造、および技法は、本開示の態様を不明瞭にしないために、詳細には示されないことがある。「例示的」という単語は、本明細書において、例、事例、または例示として機能することを意味するために使用される。「例示的」として本明細書において説明される任意の実装形態または態様は、必ずしも本開示の他の態様よりも好ましいか、または有利であると解釈されるべきではない。本明細書で使用する「ビットセル」は、単一のビットが記憶された集積回路(IC)の部分を指す。
【００２８】
概観
本明細書で説明する方法および装置は、乱数を生成するためにビットセルの整定時間をエントロピー源として利用する真の乱数生成器および真の乱数生成技法に関する。ビットセルは、スタティックランダムアクセスメモリ(SRAM)ビットセルであってよい。次いで、ビットセルの整定時間は、アナログデジタル変換器(ADC)および/または時間デジタル変換器(TDC)を使用してデジタル出力に変換されてよい。複数のビットセルは、第1のビットセルの出力が第2のビットセルの入力に結合され、以下同様に最後のビットセルの出力が第1のビットセルの入力に結合されるまで、リング構成に互いに直列に結合されてよい。次いで、ビットセルリングは、複数のビットセルの各ビットセルが整定値を達成し、その整定値がリング内の後続のビットセルを活性化して、今度はそのビットセルを整定値に到達させ、以下同様に繰り返すように、イネーブルされ得る。次いで、リング内のビットセルのうちの1つのビットセルの出力ノードは、ランダムビットの連続ストリームを生成するために、フリップフロップを使用してサンプリングされ得る。
【００２９】
真の乱数生成のための例示的な装置および方法
図1に、本開示の一態様による、真の乱数生成器100の高レベルの概略ブロック図を示す。乱数生成器100はオンチップビットセルエントロピー源102を含み、調整アルゴリズム(conditioning algorithm)回路(たとえば、決定論的乱数生成器)103および/または正常性検査(health test)回路105を随意に含む場合がある。乱数生成器100は、たとえば、識別可能なパターンのない真にランダムな論理ビットストリングであり得るランダムデジタル出力値104(本明細書では、「乱数ビットストリング」、「真の乱数」、「真のランダムビット」、「複数のランダムビット」などと呼ばれる場合もある)を生成する。ランダムデジタル出力値104は、限定はしないが、暗号セキュリティアルゴリズム(たとえば、暗号鍵生成アルゴリズム)108、ギャンブル、統計的サンプリング、コンピュータシミュレーション110、完全にランダム化された設計、モンテカルロ法シミュレーション、および予測できない値を利用する任意の他のアプリケーションを含む多様なアプリケーション106によって利用され得る。たとえば、高度暗号化規格(AES)、データ暗号化規格(DES)、Riverst, Shamir, Adleman(RSA)、およびデジタル信号アルゴリズム(DSA)などの暗号セキュリティアルゴリズム108によって利用されるとき、ランダムデジタル出力値104は、1つまたは複数のセキュリティ鍵112を生成するために使用されてよい。
【００３０】
以下でより詳細に説明するように、エントロピー源102は、非常に高度のエントロピーを与える物理ハードウェア要素に基づく。具体的には、エントロピー源102は、1つまたは複数のビットセルの整定時間に基づく。随意の調整アルゴリズム回路103は、エントロピー源102内に存在する場合があるバイアスを低減および/または除去するのを助ける1つまたは複数のアルゴリズムからなる。調整アルゴリズム回路103は、一般に、ランダムデジタル出力値104のエントロピーを増大させる。そのような調整アルゴリズム103は、当業者に知られている。正常性検査105はまた、エントロピー源102および/または真の乱数生成器100が十分なエントロピーを有するビットストリングを出力しているかどうかを決定するために、真の乱数生成器100において実行されてよい。
【００３１】
図2は、本開示の一態様による、真の乱数生成器100のエントロピー源102である第1の例示的なビットセル200を示す。ビットセル200は、任意のスタティックランダムアクセスメモリ(SRAM)ビットセル設計に基づいてよい。図示の例では、図示のビットセル200は、6トランジスタ(6T)相補型金属酸化物半導体(CMOS)SRAMビットセル設計に基づく6トランジスタセル部分202を含む。6トランジスタ部分202は、第1のプリチャージトランジスタ204と、第2のプリチャージトランジスタ206と、第1のCMOSインバータペア208と、第2のCMOSインバータペア210とを含む。ビットセル200はまた、イネーブルトランジスタ212を含む。第1および第2のインバータペア208、210はそれぞれ、pチャネル金属酸化物半導体電界効果トランジスタ(PMOS)トランジスタ209a、209bおよびnチャネル金属酸化物半導体電界効果トランジスタ(NMOS)トランジスタ211a、211bを含む。図2に示す例では、イネーブルトランジスタ212はPMOSである(およびプリチャージトランジスタはNMOSである)。したがって、そのような設計は、本明細書では「pタイプビットセル」と呼ばれる。
【００３２】
ビットセル200ベースのエントロピー源は、ビットセル200のランダム整定時間をそれのエントロピーの発生源として利用する。ビットセル200の活性化またはビットセル200のプリチャージの後、ビットセル200の出力値214、216が安定な論理値に整定するのにかかる時間量が、エントロピーを乱数生成器100に与える。整定時間は、ビットセル200の熱雑音および電気的雑音によってランダムになる。
【００３３】
図3は、本開示の一態様による、真の乱数生成器100のエントロピー源102である第2の例示的なビットセル300を示す。図示のビットセル300はまた、6T CMOS SRAMビットセル設計に基づく6トランジスタセル部分302を含む。6トランジスタ部分302は、第1のプリチャージトランジスタ304と、第2のプリチャージトランジスタ306と、第1のCMOSインバータペア308と、第2のCMOSインバータペア310とを含む。ビットセル300はまた、イネーブルトランジスタ312を含む。第1および第2のインバータペア308、310はそれぞれ、PMOSトランジスタ309a、309bおよびNMOSトランジスタ311a、311bを含む。図3に示す例では、イネーブルトランジスタ312はNMOSである(およびプリチャージトランジスタはPMOSである)。したがって、そのような設計は、本明細書では「nタイプビットセル」と呼ばれる。
【００３４】
ビットセル300ベースのエントロピー源は、ビットセル300のランダム整定時間をそれのエントロピーの発生源として利用する。ビットセル300の活性化またはビットセル300のプリチャージの後、ビットセル300の出力値314、316が安定な論理値に整定するのにかかる時間量が、エントロピーを乱数生成器100に与える。整定時間は、ビットセル300の熱雑音および電気的雑音によってランダムになる。
【００３５】
図2および図3に示すビットセル200、300は、6トランジスタCMOS SRAMビットセルに基づく。しかしながら、限定はしないが、図6および図7に示す4トランジスタ(4T)CMOS SRAMビットセルを含む、他のタイプのビットセルが使用されてもよい。
【００３６】
図4は、一態様によるpタイプビットセル200のタイミング図400を示す。ビットセル200がプリチャージングおよび活性化を含む異なるフェーズを経るときの時間に対する、出力A 214の電圧値を第1の線402が表し、同じく、相補出力
【数１】
2018507468.tif 000003
216の電圧値を第2の線404(破線)が表す。
【００３７】
図2および図4を参照すると、初期化フェーズの間(たとえば、時間t0において)、プリチャージトランジスタ204、206は、たとえば正の電源線電圧(たとえば、VDD)をプリチャージ入力218、220に印加することによってオンに切り替えられ、イネーブルトランジスタ212は、負の電源線電圧VSSをイネーブル入力222に印加することによってオンに切り替えられる。このフェーズにおいて、出力A電圧レベル402および出力
【数２】
2018507468.tif 000004
電圧レベル404はともにそれらの初期化値におけるレベルであり、初期化値は、図示の場合、出力ノード214、216が負の電源線電圧VSSに結合されているので、ほぼ、負の電源線電圧VSS(たとえば、接地)である。
【００３８】
次いで、プリチャージフェーズの間、ビットセル200は活性化され、プリチャージトランジスタ204、206は、たとえば負の電源線電圧VSSをプリチャージ入力218、220に印加することによって(たとえば、時間t1において)オフに切り替えられる。これらのトランジスタ204、206をオフに切り替えることで、出力ノードの電圧レベル402、404が、時間t1における初期化値(たとえば、負の電源線電圧VSSからの立上り)から時間t2におけるプリチャージ電圧値VPCに遷移することがもたらされる。プリチャージ電圧値VPCは、インバータ208、210が、それらのPMOSトランジスタ209a、209bとNMOSトランジスタ211a、211bの両方が飽和領域にある高利得状態を達成し、出力ノード214、216の電圧値が分岐し始める前まで、出力ノード214、216が一緒に到達することになる電圧値を表す。いくつかの非限定的で非排他的な例によれば、プリチャージ電圧値VPCは、ほぼ、0.5*VDD±0.05*VDD、0.5*VDD±0.10*VDD、または0.5*VDD±0.15*VDDであり得る。出力ノードの電圧値402、404がVPCまでプリチャージするのにかかる時間(すなわち、プリチャージフェーズの期間)が、tD1(すなわち、t2-t1)によって表される。
【００３９】
次に、決定フェーズの間、ビットセル200内の任意のインバータ208、210のバイアスとともに、熱雑音および/または電気的雑音は、出力電圧レベル402、404がVPCから離れて相反する方向にドリフトし始めることを生じさせる。ある時点t3において、出力電圧レベル402、404は、それらがコースを反転することはほとんど起こりそうにない程度に互いに離れてドリフトしている。出力ノードの電圧レベル402、404がVPCを達成した後でこの時点に到達するのにかかる時間(すなわち、決定フェーズの期間)が、tD2(たとえば、t3-t2)によって表される。
【００４０】
次いで、増幅フェーズの間、出力電圧レベル402、404は、ビットセル200のインバータ208、210が整定値(たとえば、ほぼフルスイング)まで出力電圧レベル402、404を増幅するので、互いに分岐することを継続する。図示の例では、出力Aの電圧レベル402はほぼVDDまで増幅され、出力
【数３】
2018507468.tif 000005
の電圧レベル404はほぼ負の電源線電圧VSSまで増幅される。増幅フェーズが完了するのにかかる時間は、tD3(たとえば、t4-t3)によって表される。図4に示す例は、VDDまで増幅された出力A 402(すなわち、出力Aは論理1)と負の電源線電圧VSSまで増幅された出力
【数４】
2018507468.tif 000006
404(すなわち、出力
【数５】
2018507468.tif 000007
は論理0)とを示すが、2つの出力402、404は、出力A 402が負の電源線電圧VSSまで増幅され(すなわち、出力Aは論理0)、出力
【数６】
2018507468.tif 000008
404がVDDまで増幅される(すなわち、出力
【数７】
2018507468.tif 000009
は論理1)ように反転されてもよい。
【００４１】
一態様によれば、プリチャージトランジスタ204、206がオフに切り替えられる瞬間(すなわち、時間t1)から、出力ノードAおよび
【数８】
2018507468.tif 000010
の電圧値402、404が、フルスイング(すなわち、VDDおよびVSS)値またはフルスイング値の数パーセント内(たとえば、0.8VDDおよび0.2VDD、0.9VDDおよび0.1VDD、0.95VDDおよび0.05VDDなど)のような整定値に到達した時点(すなわち、時間t4)までに経過する時間は、ビットセル200のランダム整定時間tsettleであってよく、式(1)、tsettle=tD1+tD2+tD3  (1)で与えられる。
【００４２】
別の態様によれば、ランダム整定時間tsettleは、ビットセルの出力ノード124、216がVPCにあるとき(すなわち、時間t2)から、出力ノードAおよび
【数９】
2018507468.tif 000011
の電圧値402、404が、フルスイング値またはフルスイング値の数パーセント内など、それらの整定値に到達した時点(すなわち、時間t4)までに経過した時間であってよい。すなわち、tsettleは式(2)、
tsettle=tD2+tD3   (2)
によって与えられてよい。
【００４３】
ビットセル200が活性化される(すなわち、プリチャージトランジスタ204、206がオフに切り替えられてビットセルがプリチャージし始める)ときはいつも、ランダム整定時間値tsettleはランダムであり、わずかではあるが異なっている。なぜならば、ビットセル200が決定段および増幅段において費やす時間量(すなわち、tD2およびtD3)は、活性化イベントごとにランダムに変化するからである。その上、ビットセルの整定時間tsettleのランダム性は、トランジスタの不整合および/またはインバータ208、210のバイアスによって小さくなることはない。したがって、ビットセル200が特定の論理値(たとえば、0または1)において整定するようにバイアスされるかどうかにかかわらず、その論理値に到達するのにかかる整定時間値tsettleはランダムである。したがって、ビットセル200の整定時間値tsettleは、乱数生成器100に対して優れたエントロピー源を提供する。
【００４４】
図5は、一態様によるnタイプビットセル300のタイミング図500を示す。ビットセル300がプリチャージングおよびイネーブリングを含む異なるフェーズを経るときの時間に対する出力A 314の電圧値を第1の線502が表し、同じく、相補出力
【数１０】
2018507468.tif 000012
316の電圧値を第2の線504(破線)が表す。
【００４５】
図3および図5を参照すると、初期化フェーズの間(たとえば、時間t0において)、プリチャージトランジスタ304、306は、たとえば負の電源線電圧(VSS)をプリチャージ入力318、320に印加することによってオンに切り替えられ、イネーブルトランジスタ312は、正の電源線電圧VDDをイネーブル入力322に印加することによってオンに切り替えられる。このフェーズにおいて、出力A電圧レベル502および出力
【数１１】
2018507468.tif 000013
電圧レベル504はともにそれらの初期化値におけるレベルであり、初期化値は、図示の場合、出力ノード314、316が正の電源線電圧VDDに結合されているので、ほぼ、正の電源線電圧VDDである。
【００４６】
次いで、プリチャージフェーズの間、ビットセル300は活性化され、プリチャージトランジスタ304、306は、たとえば負の電源線電圧VSSをプリチャージ入力318、320に印加することによって(たとえば、時間t1において)オフに切り替えられる。これらのトランジスタ304、306をオフに切り替えることで、出力ノードの電圧レベル502、504が、時間t1における初期化値(たとえば、正の電源線電圧VDDからの立下り)から時間t2におけるプリチャージ電圧値VPCに遷移することがもたらされる。プリチャージ電圧値VPCは、インバータ308、310が、それらのPMOSトランジスタ309a、309bとNMOSトランジスタ311a、311bの両方が飽和領域にある高利得状態を達成し、出力ノード314、316の電圧値が分岐し始める前まで、出力ノード314、316が一緒に到達することになる電圧値を表す。いくつかの非限定的で非排他的な例によれば、プリチャージ電圧値VPCは、ほぼ、0.5*VDD±0.05*VDD、0.5*VDD±0.10*VDD、または0.5*VDD±0.15*VDDであり得る。出力ノードの電圧レベル502、504がVPCまでプリチャージするのにかかる時間(すなわち、プリチャージフェーズの期間)が、tD1(すなわち、t2-t1)によって表される。
【００４７】
次に、決定フェーズの間、ビットセル300内の任意のインバータ308、310のバイアスとともに、熱雑音および/または電気的雑音は、出力電圧レベル502、504がVPCから離れて相反する方向にドリフトし始めることを生じさせる。ある時点t3において、出力電圧レベル502、504は、それらがコースを反転することはほとんど起こりそうにない程度に互いに離れてドリフトしている。出力ノードの電圧レベル502、504がVPCを達成した後でこの時点に到達するのにかかる時間(すなわち、決定フェーズの期間)が、tD2(たとえば、t3-t2)によって表される。
【００４８】
次いで、増幅フェーズの間、出力電圧レベル502、504は、ビットセル300のインバータ308、310がそれらの整定値(たとえば、ほぼフルスイング電圧)まで出力電圧レベル502、504を増幅するので、互いに分岐することを継続する。図示の例では、出力Aの電圧レベル502はほぼVDDまで増幅され、出力
【数１２】
2018507468.tif 000014
の電圧レベル504はほぼ負の電源線電圧VSSまで増幅される。増幅フェーズが完了するのにかかる時間は、tD3(たとえば、t4-t3)によって表される。図5に示す例は、VDDまで増幅された出力A 502(すなわち、出力Aは論理1)と負の電源線電圧VSSまで増幅された出力
【数１３】
2018507468.tif 000015
504(すなわち、出力
【数１４】
2018507468.tif 000016
は論理0)とを示すが、2つの出力502、504は、出力A 502が負の電源線電圧VSSまで増幅され(すなわち、出力Aは論理0)、出力
【数１５】
2018507468.tif 000017
504がVDDまで増幅される(すなわち、出力
【数１６】
2018507468.tif 000018
は論理1)ように反転されてもよい。
【００４９】
一態様によれば、プリチャージトランジスタ304、306がオフに切り替えられる瞬間(すなわち、時間t1)から、出力ノードAおよび
【数１７】
2018507468.tif 000019
の電圧値502、504が、フルスイング値またはフルスイング値の数パーセント内(たとえば、0.8VDDおよび0.2VDD、0.9VDDおよび0.1VDD、0.95VDDおよび0.05VDDなど)のようなそれらの整定時間に到達した点(すなわち、時間t4)までに経過する時間は、ビットセル300のランダム整定時間tsettleであってよく、式(3)、tsettle=tD1+tD2+tD3  (3)で与えられる。
【００５０】
別の態様によれば、ランダム整定時間tsettleは、ビットセルの出力ノード314、316がVPCにあるとき(すなわち、時間t2)から、出力ノードAおよび
【数１８】
2018507468.tif 000020
の電圧値502、504が、フルスイング値またはフルスイング値の数パーセント内など、それらの整定値に到達した時点(すなわち、時間t4)までに経過した時間であってよい。すなわち、tsettleは式(4)、
tsettle=tD2+tD3  (4)
によって与えられてよい。
【００５１】
ビットセル300が活性化される(すなわち、プリチャージトランジスタ304、306がオフに切り替えられてビットセルがプリチャージし始める)ときはいつも、ランダム整定時間値tsettleはランダムであり、わずかではあるが異なっている。なぜならば、ビットセル300が決定段および増幅段において費やす時間量は、活性化イベントごとにランダムに変化するからである。その上、ビットセルの整定時間tsettleのランダム性は、トランジスタの不整合および/またはインバータ308、310のバイアスによって小さくなることはない。したがって、ビットセル300が特定の論理値(たとえば、0または1)において整定するようにバイアスされるかどうかにかかわらず、その論理値に到達するのにかかる整定時間値tsettleはランダムである。したがって、ビットセル300の整定時間値tsettleは、乱数生成器100に対して優れたエントロピー源を提供する。
【００５２】
上述のように、図6および図7は、4トランジスタ(4T)CMOS SRAM設計に基づくビットセル600、700を示す。具体的には、図6に示すビットセル600はpタイプビットセルであり、図7に示すビットセル700はnタイプビットセルである。図6を参照すると、pタイプ4Tビットセル600は、第1のプリチャージNMOSトランジスタ604と、第2のプリチャージNMOSトランジスタ606と、第1のプルアップ抵抗609aおよび第1のNMOSトランジスタ611aを備える第1のインバータと、第2のプルアップ抵抗609bおよび第2のNMOSトランジスタ611bを備える第2のインバータと、イネーブルPMOSトランジスタ612とを含む。
【００５３】
図7を参照すると、nタイプ4Tビットセル700は、第1のプリチャージPMOSトランジスタ704と、第2のプリチャージPMOSトランジスタ706と、第1のPMOSトランジスタ709aおよび第1のプルダウン抵抗711aを備える第1のインバータと、第2のPMOSトランジスタ709bおよび第2のプルダウン抵抗711bを備える第2のインバータと、イネーブルNMOSトランジスタ712とを含む。
【００５４】
乱数生成器100は、図2および図3に示すビットセル200、300と概して同じ方法で、図6および図7に示すビットセル600、700を利用してよく、図6および図7のビットセル600、700の整定時間がエントロピー源102として使用され得る。
【００５５】
これらのビットセル200、300、600、700は、それらの整定時間がエントロピー源として使用され得るSRAMベースのビットセルのいくつかの例にすぎない。異なるトランジスタ構成を有する他のSRAMベースのビットセルが、乱数生成器に対するエントロピー源として使用され得るランダム整定時間を与えるために使用されてもよい。一態様では、SRAMビットセルに限らない他のタイプのメモリのビットセルが、乱数生成器に対するエントロピー源として使用され得るランダム整定時間を与えるために使用されてもよい。
【００５６】
図8に、一態様による真の乱数生成器800の高レベルのブロック図を示す。真の乱数生成器800は、ビットセルベースのエントロピー源102(たとえば、図1〜図7で説明した)およびアナログデジタル変換器(ADC)804を含む。ADC804は、ランダム整定時間tsettle802をランダムデジタル出力値104に変換する。(図1に関して上記で説明した1つまたは複数の調整アルゴリズムが、ランダムデジタル出力値104のエントロピーを増大させるために使用されてもよい。)整定時間tsettle802はランダムであるため、出力値104もまたランダムである。一態様では、ADC804は、整定時間tsettle802をランダムデジタル出力値104に変換するように構成された時間デジタル変換器(TDC)806である。一例によれば、図2、図3、図4、図5および図8を参照すると、これは、ビットセルのプリチャージトランジスタ204、206、304、306が時間t1においてオフに切り替えられたときにTDC806を開始すること(すなわち、開始信号)およびビットセル200、300が時間t4において整定したときにTDC806を停止すること(すなわち、停止信号)によって実行され得る。
【００５７】
TDC806は、限定はしないが、タップ付き遅延線TDCであってよい。他のタイプのTDCを用いることもできる。一態様では、TDCは、高周波数において動作する高分解能TDCである。他の態様では、TDCは、高分解能を与えるために補間回路とともに使用されてよい。いずれの場合にも、TDCは、ピコ秒またはそれより小さい程度の分解能を与えるように設計されてよい。
【００５８】
図9に、一態様による真の乱数生成器900の高レベルのブロック図を示す。図示の例では、乱数生成器900は、ビットセルエントロピー源チェーン902(本明細書では「ビットセルチェーン」とも呼ばれる)を含む。ビットセルチェーン902は、第1のビットセル102aの出力が第2のビットセル102bの入力に結合され、第2のビットセル102bの出力が次のビットセルの入力に結合され、以下同様に直列に結合された複数のnの数のビットセルエントロピー源102a、102b、...102nを含む。ビットセル102a、102b、...102nは、本明細書ならびに図1、図2、図3、図4、図5、図6および/または図7に関して示し、説明したビットセルエントロピー源102および/またはビットセル200、300、600、700と実質的に同様である。
【００５９】
図2〜図5に関して上記で説明したプロセスと同様に、第1のビットセル102aは初期化され、次いで活性化されて、それの両出力ノードが互いに一致して進み、最初に一緒にVPCに到達し、次いで互いに分岐することがもたらされ、最終的に時間tsettle_1後にそれらの最終電圧値(たとえば、フルスイング電圧値またはフルスイングの数パーセント)に整定する。第1のビットセル102aの整定しつつあるまたは整定した出力ノードは第2のビットセル102bを活性化し、それの両プリチャージ出力ノードが時間tsettle_2後にそれらのそれぞれの最終電圧値に整定することを生じさせる。同様に、第2のビットセル102bの整定しつつあるまたは整定した出力ノードはチェーン902内の次のビットセルを活性化し、それの両プリチャージ出力ノードがそれらのそれぞれの最終電圧値に整定することを生じさせ、以下、チェーン902内の最後のビットセル102nもまた、時間tsettle_n後にそれの最終の両電圧値に整定するまで、同様に繰り返す。
【００６０】
ビットセルチェーン902の総整定時間tsettle_sumは、チェーン902の第1のビットセル102aの活性化から最後のビットセル102nの最終の整定までにかかる時間量(tsettle_sum≒tsettle_1+tsettle_2+…+tsettle_n)を表す。個別の整定時間tsettle_1+tsettle_2+…+tsettle_nはランダムであるので、総整定時間tsettle_sumもまたランダムである。したがって、整定時間tsettle_sumは、ADC804および/またはTDC806によって乱数ビットストリングに変換され得る。
【００６１】
チェーン902の整定時間tsettle_sumは、個別のビットセル102a、102b、...102nの整定時間tsettle_1、tsettle_2、… tsettle_nよりはるかに長い。ビットセルチェーン902の比較的長い整定時間tsettle_sumは、ADC804および/またはTDC806の設計制約をゆるくすることを可能にする。たとえば、ADC804および/またはTDC806は、それが単一のビットセルの整定時間を正確かつ精密に測定するために使用される場合に通常有する必要がある精度より低い精度を有することができる。ビットセルチェーン902を構成するビットセル102a、102b、...102nの数nは、総整定時間tsettle_sumが高度の精度を有する必要のないADC804および/またはTDC806を使用して容易に測定され得るように選択されてよい。単なる非限定的で非排他的な一例として、単一のビットセル102a、102b、...102nの整定時間は1ns程度であり、総整定時間tsettle_sumは100ns〜1μs程度であり得る。したがって、チェーン902は、100個〜1000個程度のビットセル102a、102b、...102nを含んでよい。他の例によれば、チェーン902は、より多いまたはより少ないビットセルを含む場合がある。
【００６２】
図10に、一態様による真の乱数生成器1000の高レベルのブロック図を示す。図示の例では、乱数生成器1000は、ビットセルエントロピー源リング1002(本明細書では「ビットセルリング」および「ビットセルリング発振器」と呼ばれる場合もある)を含む。ビットセルリング1002は、リング構成に結合された複数のnの数のビットセルエントロピー源102a、102b、...102nを含み、第1のビットセル102aの出力が第2のビットセル102bの入力に結合され、第2のビットセル102bの出力が次のビットセルの入力に結合され、以下、リング1002内の最後のビットセル102nの出力が第1のビットセル102aの入力に結合されるまで、同様に繰り返す。ビットセル102a、102b、...102nは、本明細書ならびに図1、図2、図3、図4、図5、図6および/または図7に関して示し、説明したビットセルエントロピー源102および/またはビットセル200、300、600、700と実質的に同様である。
【００６３】
図2〜図5に関して上記で説明したプロセスと同様に、第1のビットセル102aは初期化され、次いで活性化されて、それの両出力ノードが互いに一致して進み、最初に一緒にVPCに到達し、次いで互いに分岐することがもたらされ、最終的に時間tsettle_1後にそれらの最終電圧値(たとえば、フルスイング電圧値またはフルスイングの数パーセント)に整定する。第1のビットセル102aの整定しつつあるまたは整定した出力ノードは第2のビットセル102bを活性化し、それの両プリチャージ出力ノードが時間tsettle_2後にそれらのそれぞれの最終電圧値に整定することを生じさせる。同様に、第2のビットセル102bの整定しつつあるまたは整定した出力ノードはリング1002内の次のビットセルを活性化し、それの両プリチャージ出力ノードがそれらのそれぞれの最終電圧値に整定することを生じさせ、以下、リング1002内の最後のビットセル102nもまた、時間tsettle_n後にそれの最終の値に整定するまで、同様に繰り返す。リング1002内の第1のビットセル102aが再初期化された(たとえば、それのプリチャージトランジスタ204、206、304、306がオンに切り替えられる)ものと仮定すると、最後のビットセル102nの整定しつつあるまたは整定した出力ノードがリング1002内の第1のビットセル102aを再び活性化し(たとえば、それのプリチャージトランジスタ204、206、304、306をオフに切り替え)、それ自体の両出力ノードが時間tsettle_1後に何らかの最終電圧値に再び整定することを生じさせる。このようにして、ビットセルリング1002のビットセル102a、102b、...102nの各々は、初期化期間と活性化期間のサイクルを継続し、それによってランダム整定時間がリング1002の全体的な期間に寄与することになる。ビットセル102a、102b、...102nは、下記のように、外部回路を介して、またはリングのビットセル102a、102b、...102n自体の出力を介して活性化された後に再初期化されてよい。
【００６４】
ビットセルリング1002の整定時間tsettle_periodは、リング1002の第1のビットセル102aの活性化から第1のビットセル102aの次の再活性化までにかかる時間量を表す。すなわち、整定時間tsettle_periodは、リング1002の整定時間の周期であり、tsettle_period≒tsettle_1+tsettle_2+…+tsettle_nである。個別の整定時間tsettle_1+tsettle_2+…+tsettle_nはランダムであるので、リング1002の任意の1周期の間の周期性整定時間tsettle_periodもまたランダムである。したがって、整定時間tsettle_period(またはそれの累積)は、ADC804および/またはTDC806によって乱数ビットストリングに変換され得る。
【００６５】
リングの整定時間tsettle_periodは、個別のビットセル102a、102b、...102nの整定時間tsettle_1、tsettle_2、…tsettle_nよりはるかに長い。したがって、ビットセルリング1002の比較的長い整定時間tsettle_periodは、ADC804および/またはTDC806の設計制約をゆるくすることを可能にする。たとえば、ADC804および/またはTDC806は、それが単一のビットセルの整定時間を正確かつ精密に測定するために使用される場合に通常有する必要がある精度より低い精度を有することができる。ビットセルリング1002を構成するビットセル102a、102b、...102nの数nは、総整定時間tsettle_sumが高度の精度を有する必要のないADC804および/またはTDC806を使用して容易に測定され得るように選択されてよい。単なる非限定的で非排他的な一例として、単一のビットセル102a、102b、...102nの整定時間は1ns程度であり、総整定時間tsettle_sumは100ns〜1μs程度であり得る。したがって、リング1002は、100個〜1000個程度のビットセル102a、102b、...102nを含んでよい。他の例によれば、リング1002は、より多いまたはより少ないビットセルを含む場合がある。
【００６６】
図11に、一態様による真の乱数生成器1100の高レベルのブロック図を示す。図示の例では、乱数生成器1100は、ビットセルエントロピー源リング1102およびADC804を含む。ビットセルリング1102は、各々が出力1110a、1110b、...1110nをそれぞれ有する複数のビットセル102a、102b、...102nを含む。ビットセル102a、102b、...102nは、本明細書ならびに図1、図2、図3、図4、図5、図6および/または図7に関して示し、説明したビットセルエントロピー源102および/またはビットセル200、300、600、700と実質的に同様である。
【００６７】
図11の乱数生成器1100は、図10に示す乱数生成器1000と実質的に同様である。たとえば、図11のビットセルリング1102は、上記で説明した図10のビットセルリング1002と実質的に同様に動作する。しかしながら、図11では、ADC804は、フリップフロップ1104とクロック源1106とを含む。フリップフロップ1104は、複数のビットセル102a、102b、...102nのうちの1つのランダム出力をクロック1106によって与えられるレートでサンプリングする。非限定的な一例として、フリップフロップ1104は、クロック1106信号の立上りエッジまたは立下りエッジの際に、フリップフロップ1104のD入力に結合されたビットセルの出力値1110nをフリップフロップのQ出力にラッチする。したがって、フリップフロップ1104のQ出力は、ランダムデジタル出力値104を提供し得る。ビットセルリング1102およびフリップフロップ1104は、ランダムデジタル出力値104の連続的発生源(たとえば、連続的ランダムデジタルビットストリーム)を提供するために連続的に動作し得る。フリップフロップ1104は、基本的に、クロック1106サンプリング周期に対する、ビットセルリング1102がイネーブルされた時点から出力1110nがサンプリングされた時点までに累積するフェーズを測定し、次いで出力を論理「1」または「0」に丸める。ビットセルリング発振器1102のジッタは、通常のインバータベースのリング発振器よりはるかに大きい。
【００６８】
一態様によれば、ビットセルリング1102が発振する(たとえば、ビットセル102a、102b、...102nが繰り返し、初期化し次いで整定する)ことを維持するために、ビットセルリング1102の周期ごとに一度、先行するビットセル102a、102b、...102nの出力値は、後続するビットセル102a、102b、...102nを初期化/再初期化する。様々なビットセル102a、102b、...102nの設計を特徴とする様々なビットセルリング1102アーキテクチャが可能である。これらの設計のいくつかを、非限定的で非排他的な例として以下で説明する。
【００６９】
図12は、本開示の一態様による、第1の例示的なビットセルリング発振器エントロピー源1202を含む真の乱数生成器1200の第1の例示的なブロック図を示す。図12に示す例は、図11に関して上記で説明した、ビットセルリング発振器1102ベースの真の乱数生成器1100の単なる一例である。図12のビットセルリング発振器ベースの真の乱数生成器1200は、ランダムデジタル出力値の連続供給を生成することができる。以下で詳細に説明するように、ビットセルリング1202が発振することを維持するために、ビットセルリング1202の周期ごとに一度、先行するビットセル1204a、1204bの出力値が後続するビットセル1204a、1204bを初期化/再初期化する。
【００７０】
ビットセルリング1202は、第1のビットセル1204aと、第2のビットセル1204bと、第1の遅延要素1252と、第2の遅延要素1256とを含んでよい。図示の例では、第1のビットセル1204aは、図2に示すpタイプビットセル200を含む。図12を参照すると、pタイプビットセル200の出力214、216はインバータ1240、1242に結合されてよく、インバータ1240、1242の出力は次いで、XORゲート1250に結合される(入力される)。第2のビットセル1204bは、図3に示すnタイプビットセル300を含む。図12を参照すると、nタイプビットセル300の出力314、316はインバータ1244、1246に結合されてよく、インバータ1244、1246の出力は次いで、XORゲート1254に結合される(入力される)。第1のビットセル1204aの出力1258が第2のビットセル1204bの入力に結合され、第2のビットセル1204bの出力1260が第1のビットセル1204aの入力に結合されて、リング発振器構造が形成される。図12に示すビットセルリング1202の動作は、一例に従って以下で説明する。
【００７１】
初期開始点として、第1のビットセル1204aのイネーブルトランジスタ212における電圧値が、ハイ「1」(たとえば、正の電源線VDD)からロー「0」(たとえば、負の電源線VSS)に移行することが仮定されてよい。その後短時間に、第1のビットセル1204aのプリチャージトランジスタ204、206における電圧値は、同様にハイ「1」からロー「0」に移行し、それによってプリチャージトランジスタ204、206をオフに切り替えて第1のビットセル1204aを活性化する。これは、第1のビットセル1204aの出力ノード214、216における電圧値がVSSの初期化値から遷移してプリチャージ電圧レベルVPC(約0.5*VDDであり得る)まで一緒に立ち上がることを生じさせる。次いで、出力ノード214、216の電圧値は、ビットセル1204aにおける熱雑音および電気的雑音によって部分的に影響されるランダムな時間量の後、互いに分岐する。出力ノード214、216における電圧値は、それらのフルスイング電圧レベルVDDおよびVSSであり得るそれらの整定値において、または整定値の近くに整定するまで分岐を継続することになる。第1のビットセル1204aの出力ノード214、216が整定するのにかかる時間tsettleはランダムである。第1のビットセル1204aのXORゲート1250への入力値は異なる(たとえば、一方はハイ「1」であり他方はロー「0」である)ので、XORゲート1250の出力1258はハイ「1」となる。第1のビットセル1204aの出力1258の値は、第2のビットセル1204bのイネーブルトランジスタ312およびプリチャージトランジスタ304、306の入力に伝播する。具体的には、第2のビットセル1204bのプリチャージトランジスタ304、306に到達する第1のビットセル1204aの出力値1258は、第2のビットセル1204bのイネーブルトランジスタ312に到達する出力値1258に対して、(第1の遅延要素1252を介して)わずかに遅延されてよい。
【００７２】
第2のビットセル1204bのプリチャージトランジスタ304、306およびイネーブルトランジスタ312の入力におけるロー「0」からハイ「1」への遷移は、プリチャージトランジスタ304、306がオフに切り替わることおよびイネーブルトランジスタ312がオンに切り替わって第2のビットセル1204bを活性化することを生じさせる。イネーブルトランジスタ312は、第1の遅延要素1252によって、プリチャージトランジスタ304、306がオフに切り替わる少し前にオンに切り替わる。これは、第2のビットセル1204bの出力ノード314、316における電圧値がVDDの初期化値から遷移してプリチャージ電圧レベルVPC(約0.5*VDDであり得る)まで一緒に立ち下がることを生じさせる。次いで、出力ノード314、316の電圧値は、ビットセル1204bにおける熱雑音および電気的雑音によって部分的に影響されるランダムな時間量の後、互いに分岐する。出力ノード314、316における電圧値は、それらのフルスイング電圧レベルVDDおよびVSSか、またはそれらに近いレベルであり得るそれらの整定値において整定するまで分岐を継続することになる。したがって、先行するビットセル(たとえば、第1のビットセル1204a)の整定値は、後続のビットセル(たとえば、第2のビットセル1204b)の出力ノードがそれの初期化値から整定値まで遷移することを生じさせる。第2のビットセル1204bの出力ノード314、316が整定するのにかかる時間tsettleはランダムである。第2のビットセル1204bのXORゲート1254への入力値は異なる(たとえば、一方はハイ「1」であり他方はロー「0」である)ので、XORゲート1254の出力1260はハイ「1」となる。第2のビットセル1204bの出力1260の値は、第1のビットセル1204aのイネーブルトランジスタ212およびプリチャージトランジスタ204、206の入力に戻って伝播する。具体的には、第1のビットセル1204aのプリチャージトランジスタ204、206に到達する第2のビットセル1204bの出力値1260は、第1のビットセル1204aのイネーブルトランジスタ212に到達する出力値1260に対して、(第2の遅延要素1256を介して)わずかに遅延されてよい。
【００７３】
第1のビットセル1204aのプリチャージトランジスタ204、206およびイネーブルトランジスタ212の入力におけるロー「0」からハイ「1」への遷移は、プリチャージトランジスタ204、206がオンに切り替わることおよびイネーブルトランジスタがオフに切り替わることを生じさせる。イネーブルトランジスタ212は、第2の遅延要素1256によって、プリチャージトランジスタ204、206がオンに切り替わる少し前にオフに切り替わる。これは、第1のビットセル1204aの出力ノード214、216における電圧値がロー「0」になることを生じさせる。なぜならば、出力ノード214、216は負の電源線VSSに結合されているからである。この時点で、第1のビットセル1204aは、初期化された(本明細書では「非活性化された」とも呼ばれる)ものと見なされてよい。第1のビットセル1204aのXORゲート1250への入力値は同じ(たとえば、両方がハイ「1」である)ので、XORゲート1250の出力1258はロー「0」となる。この値は、第2のビットセル1204bの入力に伝播する。したがって、先行するビットセル(たとえば、第2のビットセル1204b)の出力値は、ビットセルリング1202が発振することを維持するために、ビットセルリング1202の周期ごとに一度、後続のビットセル(たとえば、第1のビットセル1204a)を初期化する(たとえば、再初期化する)。
【００７４】
第2のビットセル1204bのプリチャージトランジスタ304、306およびイネーブルトランジスタ312の入力におけるハイ「1」からロー「0」への遷移は、プリチャージトランジスタ304、306がオンに切り替わることおよびイネーブルトランジスタ312がオフに切り替わることを生じさせる。イネーブルトランジスタ312は、第1の遅延要素1252によって、プリチャージトランジスタ304、306がオンに切り替わる少し前にオフに切り替わる。これは、第2のビットセル1204bの出力ノード314、316における電圧値がハイ「1」になることを生じさせる。なぜならば、出力ノード314、316は正の電源線VDDに結合されているからである。この時点で、第2のビットセル1204bが初期化される。第2のビットセル1204bのXORゲート1254への入力値は同じ(たとえば、両方がロー「0」である)ので、XORゲート1254の出力1260はロー「0」となる。したがって、先行するビットセル(たとえば、第1のビットセル1204a)の出力値は、ビットセルリング1202が発振することを維持するために、ビットセルリング1202の周期ごとに一度、後続のビットセル(たとえば、第2のビットセル1204b)を初期化する(たとえば、再初期化する)。
【００７５】
第2のビットセル1204bにおけるロー「0」出力1260は、第1のビットセル1204aの入力に伝播され、そのことで、上記のように第1のビットセル1204aが再び活性化される(すなわち、再活性化される)。ビットセル1204a、1204bの活性化および非活性化/初期化のプロセスは、ビットセルリング1202がディセーブルされる(たとえば、電源オフにされる)まで連続的に繰り返されてよい。ビットセルリング発振器1202のビットセル1204a、1204bの活性化と再活性化との間の時間は、ビットセルリング1202の周期性整定時間tsettle_periodを示す(mark)。
【００７６】
次いで、ビットセル1204a、1204bのうちの1つのXOR出力1258、1260が、たとえば、フリップフロップ1104によってサンプリングされてよい。図示の例では、第2のビットセル1204bのXOR出力1260が、フリップフロップ1104のD入力に結合される。他の例では、第1のビットセル1204aのXOR出力1258が、代わりに、フリップフロップ1104のD入力に結合されてもよい。クロック1106は、周期性クロック信号をフリップフロップ1104に供給してよい。したがって、フリップフロップ1104は、出力ノード1260における値を周期的にサンプリングして、その値をフリップフロップ1104のQ出力にラッチする。ビットセル1204a、1204bの整定時間tsettleはランダムであり、ビットセルリング1202の周期ごとに異なるという事実によって、所与の時間における第2のビットセル1204bの出力ノード1260のビット値はランダムである。フリップフロップ1104によるサンプリングの任意の所与の時間における出力ノード1260の値はランダムであるので、フリップフロップ1104のQ出力におけるビット値もまたランダムである。したがって、複数のランダムデジタル出力値104は、フリップフロップ1104によって供給される。フリップフロップ1104は、フリップフロップ1104のサンプリングレート(たとえば、クロック1106のレート)に等しいビットレートにおいてランダムデジタル出力値(たとえば、ランダムビット)を連続的に供給してよい。調整アルゴリズム回路(図1に示す)は、ランダムデジタル出力値104において存在するバイアスを低減または除去することによってエントロピーを増大させるのを助けるために使用されてよい。フリップフロップ1104は出力1260をサンプリングするために使用されるが、他のサンプリング回路要素が、ビットセル1204a、1204bの出力のランダム出力値を取り込むために使用されてもよい。
【００７７】
図12に示す例では、ビットセルリング1202を構成する2つのビットセル1204a、1204bがある。しかしながら、ビットセルリング1202は、2に限定されない様々な数のビットセルを含んでもよい。たとえば、ビットセルリング1202は、4n-2個のビットセル(nは1以上の正の整数である)を含んでよく、リング1202のビットセルは、図12に示すpタイプ+XORビットセル1204aとnタイプ+XORビットセル1204bとの間で順に入れ替わる。pタイプ+XORビットセル1204aは、一般に、それの入力1260に供給されるロー「0」の値がそれの出力1258においてハイ「1」の値を生成し、同様にそれの入力1260に供給されるハイ「1」の値がそれの出力1258においてロー「0」の値を生成するインバータのように働くものと理解され得る。反対に、nタイプ+XORビットセル1204bは、一般に、それの入力1258に供給されるロー「0」の値がそれの出力1260においてロー「0」の値を生成し、同様にそれの入力1258に供給されるハイ「1」の値がそれの出力1260においてハイ「1」の値を生成するバッファのように働くものと理解され得る。これら2つのビットセル1204a、1204bを一緒に結合することで、第1のビットセル1204aの入力にロー「0」の値を入力すると、第2のビットセル1204bにおいてハイ「1」の出力がもたらされ、同様に第1のビットセル1204aの入力にハイ「1」の値を入力すると、第2のビットセル1204bにおいてロー「0」の出力がもたらされる、結果的に反転動作が得られる。このようにして、リングの第1のビットセル1204aから最後のビットセル1204bまでの単一の作動(run)が、第1のビットセル1204aに入力されたビットの180度シフトをもたらし、ビットセルリング1202の半周期を表し得ることが一般的に理解され得る。リング発振器を始端から終端まで通る後続の作動は、最後のビットセル1204bの出力値が第1のビットセル1204aの入力をそれの初期の開始ビット値に戻す、別の180度シフト(ビットセルリング1202のフル周期)をもたらす。
【００７８】
上記の分析に基づいて図11を参照すると、ビットセルリング1102に対するビットセル102a、102b、...102nの数、タイプ、および使用されるゲーティング(たとえば、XOR対XNOR対他のゲート)は、したがって、リング1102の第1のビットセル102aからリング1102の最後のビットセル102nまでを通る単一の作動が180度シフトをもたらすように、および/またはビットセルリング1102の半周期を表すように設計されてよい。以下の図13、図14および図15は、ビットセルリング1102に対するビットセル構成の他の非限定的で非排他的な例を示す。
【００７９】
図13は、本開示の一態様による、第2の例示的なビットセルリング発振器エントロピー源1302を含む真の乱数生成器1300のブロック図を示す。図13のビットセルリング1302は、図13のビットセル1304a、1304bが、図12に示すXORゲート1250、1254ではなくXNORゲート1350、1354を特徴とすることを除いて、図12のビットセルリング1202と同等である。第1のビットセル1304aの出力1358が第2のビットセル1304bの入力に結合され、第2のビットセル1304bの出力1360が第1のビットセル1304aの入力に結合される。ビットセル1304bのうちの1つのビットセルの出力1360が、複数のランダムデジタル出力値104を生成するために、サンプリングするための手段(たとえば、図13に示すADC804)によってサンプリングされる。
【００８０】
図13に示す設計は、一般にバッファとして働く(たとえば、ロー「0」入力がロー「0」出力をもたらす、など)pタイプ+XNORビットセル1304aと、一般にインバータとして働く(たとえば、ロー「0」入力がハイ「1」出力をもたらす、その逆も同様)nタイプ+XNORビットセル1304bとをもたらす。これらの2つの1304a、1304bを図示のように互いに結合することで、リング1302を始端から終端まで通る単一の作動の後、リング1302の第1のビットセル1304aの入力値からリング1302の最後のビットセル1304bの出力値まで180度シフトを再びもたらす。図13に示す例では、ビットセルリング1302を構成する2つのビットセル1304a、1304bがある。しかしながら、ビットセルリング1302は、2に限定されない様々な数のビットセルを含んでもよい。たとえば、ビットセルリング1302は、4n-2個のビットセル(nは1以上の正の整数である)を含んでよく、リング1302のビットセルは、図13に示すpタイプ+XNORビットセル1304aとnタイプ+XNORビットセル1304bとの間で順に入れ替わる。
【００８１】
図14は、本開示の一態様による、第3の例示的なビットセルリング発振器エントロピー源1402を含む真の乱数生成器1400のブロック図を示す。図14のビットセルリング1402は、動作において、図12および図13のビットセルリング1202、1302と実質的に同様である。しかしながら、図14のビットセルリング1402は、pタイプ+XNOR第2のビットセル1404b(図13に示す第1のビットセル1304aと同等)に結合されたpタイプ+XOR第1のビットセル1404a(図12に示す第1のビットセル1204aと同等)を特徴とする。第1のビットセル1404aの出力1458が第2のビットセル1404bの入力に結合され、第2のビットセル1404bの出力1460が第1のビットセル1404aの入力に結合される。ビットセル1404bのうちの1つのビットセルの出力1460が、複数のランダムデジタル出力値104を生成するために、サンプリングするための手段(たとえば、図14に示すADC804)によってサンプリングされる。
【００８２】
図14に示す設計は、一般にインバータとして働く(たとえば、ロー「0」入力がハイ「1」出力をもたらす、その逆も同様)pタイプ+XORビットセル1404aと、バッファとして働く(たとえば、ロー「0」入力がロー「0」出力をもたらす、など)pタイプ+XNORビットセル1404bとをもたらす。これらの2つの1404a、1404bを図示のように互いに結合することで、リング1402を始端から終端まで通る単一の作動の後、リング1402の第1のビットセル1404aの入力値からリング1402の最後のビットセル1404bの出力値まで180度シフトを再びもたらす。図14に示す例では、ビットセルリング1402を構成する2つのビットセル1404a、1404bがある。しかしながら、ビットセルリング1402は、2に限定されない様々な数のビットセルを含んでもよい。たとえば、ビットセルリング1402は、4n-2個のビットセル(nは1以上の正の整数である)を含んでよく、リング1402のビットセルは、図14に示すpタイプ+XORビットセル1404aとpタイプ+XNORビットセル1404bとの間で順に入れ替わる。
【００８３】
図15は、本開示の一態様による、第4の例示的なビットセルリング発振器エントロピー源1502を含む真の乱数生成器1500のブロック図を示す。図15のビットセルリング1502は、動作において、図12および図13のビットセルリング1202、1302と実質的に同様である。しかしながら、図15のビットセルリング1502は、nタイプ+XOR第2のビットセル1504b(図12に示す第2のビットセル1204bと同等)に結合されたnタイプ+XNOR第1のビットセル1504a(図13に示す第2のビットセル1304bと同等)を特徴とする。第1のビットセル1504aの出力1558が第2のビットセル1504bの入力に結合され、第2のビットセル1504bの出力1560が第1のビットセル1504aの入力に結合される。ビットセル1504bのうちの1つのビットセルの出力1560が、複数のランダムデジタル出力値104を生成するために、サンプリングするための手段(たとえば、図15に示すADC804)によってサンプリングされる。
【００８４】
図15に示す設計は、一般にインバータとして働く(たとえば、ロー「0」入力がハイ「1」出力をもたらす、その逆も同様)nタイプ+XNORビットセル1504aと、バッファとして働く(たとえば、ロー「0」入力がロー「0」出力をもたらす、など)nタイプ+XORビットセル1504bとをもたらす。これらの2つの1504a、1504bを図示のように互いに結合することで、リング1502を始端から終端まで通る単一の作動の後、リング1502の第1のビットセル1504aの入力値からリング1502の最後のビットセル1504bの出力値まで180度シフトを再びもたらす。図15に示す例では、ビットセルリング1502を構成する2つのビットセル1504a、1504bがある。しかしながら、ビットセルリング1502は、2に限定されない様々な数のビットセルを含んでもよい。たとえば、ビットセルリング1502は、4n-2個のビットセル(nは1以上の正の整数である)を含んでよく、リング1502のビットセルは、図15に示すnタイプ+XNORビットセル1504aとnタイプ+XORビットセル1504bとの間で順に入れ替わる。
【００８５】
図12〜図15を参照すると、ビットセル1204a、1204b、1304a、1304b、1404a、1404b、1504a、1504bの出力ノード214、216、314、316はそれぞれ、XORまたはXNORのゲートに入力され、そのゲート出力はフリップフロップ1104によってサンプリングされるものであり、ビットセル出力ノード214、216、314、316そのものではないので、ビットセル1204a、1204b、1304a、1304b、1404a、1404b、1504a、1504bの交差結合インバータにおいて存在して、出力ノード214、216、314、316を1つの特定の論理値または別の値に整定させる可能性がある任意のバイアスは問題とされなくなり、乱数ビットセルリング発振器1102、1202、1302、1402、1502のエントロピーに著しい影響を及ぼさなくなる。したがって、ビットセル1204a、1204b、1304a、1304b、1404a、1404b、1504a、1504bのランダム整定時間が、ビットセルリング1102、1202、1302、1402、1502のエントロピーを規定する。
【００８６】
図16に、一態様による真の乱数生成器1600の高レベルのブロック図を示す。図16に示す乱数生成器1600は、フリップフロップ1104のクロック入力への信号が別のビットセルリング発振器エントロピー源1604の出力1602によって供給されることを除いて、図11に示す乱数生成器1100と同等である。ビットセルリング発振器エントロピー源1604は、限定はしないが図11、図12、図13、図14および図15に示すエントロピー源を含め、本明細書で図示し説明したビットセルリング発振器1102、1202、1302、1402、1502のうちの任意の1つとすることができる。フリップフロップ1104に標準クロックを供給するのではなく、ビットセルリング発振器にクロック信号を供給させることで、真の乱数生成器100のエントロピーの増大を助けることができる。また、ビットセルリング発振器エントロピー源1604は、図12〜図15に示すフリップフロップ1104に、標準周期クロック1106の代わりにクロック信号1602を供給してもよい。
【００８７】
図17は、一態様による、複数のビットセルリング発振器エントロピー源を特徴とする真の乱数生成器1700の高レベルブロック図を示す。真の乱数生成器1700は、フリップフロップ1704a、1704b、1704c、1704dの入力に結合された出力1702a、1702b、1702c、1702dをそれぞれ有する複数のビットセルリング発振器1102a、1102b、1102c、1102dを含む。フリップフロップ1704a、1704b、1704c、1704dは、図17に示すように、別のビットセルリング発振器1604の出力1602にそれらのフリップフロップのクロック(clk)入力を駆動させてよく、または代替として(たとえば、図11に示すクロック1106のような)標準周期クロックにそれらのフリップフロップのクロック入力を駆動させてもよい。図示の例では、4つのビットセルリング発振器1102a、1102b、1102c、1102dおよび4つのフリップフロップ1704a、1704b、1704c、1704dが示されている。しかしながら、5つ以上の多数を含めて、任意の数のビットセルリング発振器およびフリップフロップを使用することができる。ビットセルリング発振器1102a、1102b、1102c、1102d、1604の各々は、限定はしないが、図11〜図15のビットセルリング1102、1202、1302、1402、1502を含めて、本明細書で説明するビットセルリング発振器のうちの任意の1つとすることができる。
【００８８】
フロップ1704a、1704b、1704c、1704dの出力1706a、1706b、1706c、1706dは、最終的に単一のXOR出力信号を残留させるために複数段のXORゲートに入力され、そのことで、ランダムデジタル出力値104が与えられる。XORゲートに加えてまたはその代わりに、限定はしないがXNORゲートなどの他のゲートが使用される場合もある。図17に示す例では、2段のXORゲートが、フリップフロップ出力1706a、1706b、1706c、1706dの数を低減するために使用される。第1段は2つのXORゲート1708、1710を含む。フリップフロップ出力の第1のペア1706a、1706bが第1のXORゲート1708に入力され、フリップフロップ出力の第2のペア1706c、1706dが第2のXORゲート1710に入力される。次いで、これらのXORゲート1708、1710の出力1712a、1712bが第2段のXORゲート1714に入力され、XORゲート1714は、今度は単一のXOR出力信号1716を生成する。図示の例では、フリップフロップ出力1706a、1706b、1706c、1706dの数を1つの出力1716に低減するために、2段だけのゲート1708、1710、1714が必要であった。他の例では、これを達成するために、より多くの段が必要になる場合がある。たとえば、16ビットセルリング発振器エントロピー源は4段のゲートを必要とし、32ビットセルリング発振器エントロピー源は5段のゲートを必要とし、以下同様である。同じく、XORゲート1708、1710、1714のうちの任意の1つは、XNORゲートで置き換えることができる。
【００８９】
次いで、最後のゲート1714の出力1716が、別のフリップフロップ1718に入力されてよい。フリップフロップ1718の出力は、真の乱数生成器1700のランダムデジタル出力値104を表し得る。一態様によれば、直列に結合された(すなわち、1つのフリップフロップの出力が後続のフリップフロップの入力に結合された)複数のフリップフロップが、図示の単一のフリップフロップ1718に取って代わる場合がある。図示のように、標準周期クロック1106が、フリップフロップ1718のクロック入力を駆動してよく、または代替として、さらに別のビットセルリング発振器エントロピー源の出力が、フリップフロップ1718のクロック入力を駆動するために使用されてもよい。したがって、リング構成に配列された複数のビットセルを各々が含む複数のビットセルリング発振器1102a、1102b、1102c、1102dは、1ゲート段に入力される出力1702a、1702b、1702c、1702dを有し、このゲート段は、複数のゲート1708、1710、1714を有し、ランダムデジタル出力値104を生成するために1718によってサンプリングされるゲート段出力1716を有する。
【００９０】
図18は、一態様による乱数を生成するための方法の流れ図1800を示す。第1に、ビットセルのランダム整定時間が決定される1802。次いで、ビットセルのランダム整定時間に基づくランダムデジタル出力値が、アナログデジタル変換器(ADC)を使用して生成される1804。一態様では、ビットセルのランダム整定時間を決定するステップは、ビットセルの出力を初期化電圧値にならしめるようにビットセルを初期化するステップと、ビットセルの出力が初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するようにビットセルを活性化するステップとを含む。別の態様では、ビットセルのランダム整定時間は、ビットセルが活性化されたときからビットセルの出力が整定値に到達するときまでに経過する期間である。また別の態様では、方法は、複数のビットセルの各ビットセルの出力が複数のビットセルの後続のビットセルの入力に結合され、複数のビットセルの各ビットセルがランダム整定時間を有するように、リング構成に複数のビットセルを結合するステップをさらに含む。別の態様では、周期性ランダム整定時間(periodic random settling time)は、複数のビットセルのランダム整定時間の各々の合計に等しく、方法は、ADCを使用して周期性ランダム整定時間に基づいてランダムデジタル出力値を生成するステップをさらに含む。また別の態様では、方法は、複数のランダムデジタル出力値を生成するために、複数のビットセルのうちの1つのビットセルの少なくとも1つの出力を、あるサンプリングレートでサンプリングするステップをさらに含む。別の態様では、方法は、フリップフロップの入力を複数のビットセルのうちの1つのビットセルの出力に結合するステップと、フリップフロップのクロック入力をビットセルリング発振器の出力に結合するステップと、フリップフロップの出力において複数のランダムデジタル出力値を生成するステップとをさらに含む。別の態様では、方法は、フリップフロップの入力をサンプリングされているビットセルの出力に結合するステップと、サンプリングレートを有するクロック信号をフリップフロップに供給するステップと、フリップフロップの出力において複数のランダムデジタル出力値を生成するステップとをさらに含む。
【００９１】
図19は、一態様によるコンピューティングデバイス1900の第1の例示的な概略ブロック図を示す。コンピューティングデバイス1900は、たとえば、モバイルフォン、スマートフォン、タブレット、スマートウォッチ、光学式ヘッドマウントディスプレイを含むウェアラブル通信眼鏡、ラップトップ、デスクトップコンピュータ、携帯情報端末などとすることができる。コンピューティングデバイス1900は、処理回路1902、メモリ回路1904、乱数生成器回路1906、入力/出力(I/O)デバイス1908、通信インターフェース1910、および/またはディスプレイ1912を含んでよく、それらの全部または一部は、通信バス1916を介して互いに通信可能に結合されてよい。
【００９２】
処理回路1902(たとえば、プロセッサ、アプリケーションプロセッサ、など)は、限定はしないが、メモリ回路1904内に記憶されているソフトウェアコードを実行することなど、様々な処理動作を実行してよい。一例によれば、処理回路1902は、暗号化演算およびアルゴリズムを実行する暗号回路1914を含んでよい。メモリ回路1904は、限定はしないが、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)など、揮発性メモリを含んでよい。メモリ回路1904はまた、フラッシュメモリ、磁気ディスクドライブ、光ディスクドライブ、ソリッドステートドライブなど、不揮発性メモリを含んでもよい。メモリ回路1904は、ブートコード、高レベルオペレーティングシステム(HLOS)コード、および/または処理回路1902による実行のための他のソフトウェアアプリケーションコードなどのソフトウェアコードを記憶してよい。
【００９３】
乱数生成器回路1906は、本明細書で説明する真の乱数生成器100、800、900、1000、1100、1200、1300、1400、1500、1600、1700のうちの任意の1つまたは複数を含んでよい。一態様では、暗号化回路1914は鍵生成および/またはデータセキュリティプロトコルのための暗号アルゴリズムにおいて使用するために、乱数生成器回路1906によって生成されるランダムデジタル出力値(たとえば、乱数)を利用してよい。
【００９４】
I/Oデバイス1908は、マウス、トラックボール、キーボード、タッチスクリーンディスプレイ、プリンタなどを含んでよい。通信インターフェース1910は、モバイルフォンネットワーク通信プロトコル(たとえば、セルラーネットワーク通信プロトコル)、および同様に、802.11、WiFi(登録商標)、Bluetooth(登録商標)、Zigbee(登録商標)などの短距離ワイヤレス通信規格をサポートすることができるワイヤレス通信インターフェースを含んでよい。通信インターフェース1910はまた、ワイヤード通信インターフェースを含む場合がある。ディスプレイ1912は、限定はしないが、LCDディスプレイ、プラズマディスプレイ、タッチスクリーンディスプレイなどを含む任意のタイプの表示デバイスとすることができる。
【００９５】
一態様によれば、処理回路1902、メモリ回路1904、乱数生成器回路1906、および/または通信インターフェース1910はすべて、単一の集積回路の一部(たとえば、システムオンチップ)であってよい。他の態様では、乱数生成器回路1906は、処理回路1902の一部であってよい。
【００９６】
図20は、本開示の一態様によるコンピューティングデバイス2000の概略ブロック図を示す。コンピューティングデバイス2000は、たとえば、モバイルフォン、スマートフォン、タブレット、スマートウォッチ、光学式ヘッドマウントディスプレイを含むウェアラブル通信眼鏡、ラップトップ、デスクトップコンピュータ、携帯情報端末などとすることができる。コンピューティングデバイス2000は、1つまたは複数のビットセル2004、ビットセル整定時間決定回路2006、および/またはランダムデジタル出力値生成回路2008を含んでよい乱数生成器回路2002を含む。一態様によれば、ビットセル整定時間決定回路2006は、ビットセル初期化回路2010および/またはビットセル活性化回路2012を含んでよい。
【００９７】
ビットセル2004は、本明細書で説明するビットセルのうちの任意の1つであってよい。ビットセル整定時間決定回路2006は、ビットセルのランダム整定時間を決定するための手段の一例にすぎない。ビットセル整定時間決定回路2006は、ビットセルのランダム整定時間を決定するための、図1〜図18に関して説明した1つまたは複数の構成要素、特徴、および/またはステップを含んでよい。ランダムデジタル出力値生成回路2008は、ビットセルのランダム整定時間に基づいてランダムデジタル出力値を生成するための手段の一例にすぎない。ランダムデジタル出力値生成回路2008は、限定はしないが、ADC、TDCおよび/または1つまたは複数のフリップフロップなどのビットセルのランダム整定時間に基づいてランダムデジタル出力値を生成するための、図1〜図18に関して説明した1つまたは複数の構成要素、特徴、および/またはステップを含んでよい。
【００９８】
ビットセル初期化回路2010は、ビットセルの出力を初期化電圧値にならしめるためにビットセルを初期化するための手段の一例にすぎない。ビットセル初期化回路2010は、ビットセルの出力を初期化電圧値にならしめるためにビットセルを初期化するための、図1〜図18に関して説明した1つまたは複数の構成要素、特徴、および/またはステップを含んでよい。ビットセル活性化回路2012は、ビットセルの出力が初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するようにビットセルを活性化するための手段の一例にすぎない。ビットセル活性化回路2012は、ビットセルの出力が初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するようにビットセルを活性化するための、図1〜図18に関して説明した1つまたは複数の構成要素、特徴、および/またはステップを含んでよい。
【００９９】
図1、図2、図3、図4、図5、図6、図7、図8、図9、図10、図11、図12、図13、図14、図15、図16、図17、図18、図19、および図20に示す構成要素、ステップ、特徴および/または機能のうちの1つまたは複数は、単一の構成要素、ステップ、特徴または機能として再構成および/または合体されてよく、あるいはいくつかの構成要素、ステップ、または機能として具現化されてもよい。本発明から逸脱することなく、さらなる要素、構成要素、ステップ、および/または機能が付加されてもよい。図1、図2、図3、図6、図7、図8、図9、図10、図11、図12、図13、図14、図15、図16、図17、図19および/または図20に示す装置、デバイス、および/または構成要素は、図4、図5および/または図18で説明した方法、特徴、またはステップのうちの1つまたは複数を実行するように構成されてもよい。また、本明細書で説明するアルゴリズムは、効率的にソフトウェアに実装され、および/またはハードウェアに組み込まれてもよい。
【０１００】
その上、本開示の一態様では、図19に示す乱数生成器回路1906は、図18および関連する文章で説明したアルゴリズム、方法、および/またはステップを実行するように特別に設計および/または配線接続される専用プロセッサ(たとえば、特定用途向け集積回路(たとえば、ASIC))であってよい。したがって、そのような専用プロセッサ(たとえば、ASIC)は、図18で説明されるアルゴリズム、方法、および/またはステップを実行するための手段の一例であり得る。同様に、図20に示すビットセル整定時間決定回路2006、ビットセル初期化回路2010、ビットセル活性化回路2012、および/またはランダムデジタル出力値生成回路2008は、図18および関連する文章で説明されたアルゴリズム、方法、および/またはステップを実行するために特別に設計され、および/または配線接続された専用プロセッサ(たとえば、ASIC)であってよい。
【０１０１】
また、本開示の態様は、流れ図、フロー図、構造図またはブロック図として示されるプロセスとして説明される場合があることに留意されたい。流れ図は動作を逐次プロセスとして説明する場合があるが、動作の多くは並行してまたは同時に実行することができる。加えて、動作の順序は並べ替えられてよい。プロセスは、その動作が完了したとき、終了される。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応する場合がある。プロセスが関数に対応するとき、その終了は、その関数が呼び出し関数またはメイン関数に戻ることに対応する。
【０１０２】
さらに、記憶媒体は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスおよび/もしくは他の機械可読媒体、およびプロセッサ可読媒体、ならびに/または情報を記憶するためのコンピュータ可読媒体を含む、データを記憶するための1つもしくは複数のデバイスを表すことができる。「機械可読媒体」、「コンピュータ可読媒体」、および/または「プロセッサ可読媒体」という用語は、限定はしないが、ポータブルもしくは固定ストレージデバイス、光ストレージデバイス、ならびに、命令および/またはデータを記憶または格納することが可能な様々な他の媒体のような非一時的媒体を含み得る。したがって、本明細書で説明される様々な方法は、「機械可読媒体」、「コンピュータ可読媒体」および/または「プロセッサ可読媒体」に記憶され、1つもしくは複数のプロセッサ、機械および/またはデバイスによって実行され得る命令および/またはデータによって、完全にまたは部分的に実装され得る。
【０１０３】
さらに、本開示の態様は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せによって実装され得る。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードにおいて実現されるとき、必要なタスクを実行するプログラムコードまたはコードセグメントは、記憶媒体または他のストレージのような機械可読媒体に記憶することができる。プロセッサは、必要なタスクを実行する場合がある。コードセグメントは、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表す場合がある。コードセグメントは、情報、データ、引数、パラメータ、もしくはメモリ内容を渡すことおよび/または受け取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の適切な手段を介して渡されてもよく、転送されてもよく、または送信され得る。
【０１０４】
本明細書で開示する例に関して説明する様々な例示的な論理ブロック、モジュール、回路、要素、および/または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せで実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連係した1つもしくは複数のマイクロプロセッサ、または他の任意のそのような構成として実装され得る。
【０１０５】
本明細書で開示される例に関連して説明される方法またはアルゴリズムは、処理ユニット、プログラミング命令、または他の指示の形において、ハードウェアにおいて直接に、プロセッサによって実行可能なソフトウェアモジュール内で、またはこの両方の組合せにおいて実施され得、単一のデバイス内に含まれまたは複数のデバイスにまたがって分散され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態の記憶媒体に常駐し得る。プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、記憶媒体はプロセッサに結合され得る。代替形態では、記憶媒体は、プロセッサに一体化される場合がある。
【０１０６】
当業者には、本明細書で開示される態様に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実施されてもよいことが、さらに了解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能性がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の用途およびシステム全体に課せられる設計制約によって決まる。
【０１０７】
本明細書で説明する本発明の様々な特徴は、本発明から逸脱することなく、異なるシステム内で実装されてもよい。本開示のこれまでの態様は例にすぎず、本発明を限定するものと解釈されるべきではないことに留意されたい。本開示の態様の説明は、例示であることを意図しており、特許請求の範囲を限定することは意図していない。したがって、本教示は、他のタイプの装置に容易に適用することが可能であり、多くの代替形態、修正形態、および変更形態が当業者には明らかであろう。
【符号の説明】
【０１０８】
100  真の乱数生成器
102  オンチップビットセルエントロピー源
102a  ビットセルエントロピー源チェーン
102b  ビットセルエントロピー源チェーン
102n  ビットセルエントロピー源チェーン
103  調整アルゴリズム回路
104  ランダムデジタル出力値
105  正常性検査回路
106  アプリケーション
108  暗号セキュリティアルゴリズム
110  コンピュータシミュレーション
112  セキュリティ鍵
200  ビットセル
202  6トランジスタセル部分
204  第1のプリチャージトランジスタ
206  第2のプリチャージトランジスタ
208  第1のCMOSインバータペア
209a  pチャネル金属酸化物半導体電界効果トランジスタ(PMOS)トランジスタ
209b  pチャネル金属酸化物半導体電界効果トランジスタ(PMOS)トランジスタ
210  第2のCMOSインバータペア
211a  nチャネル金属酸化物半導体電界効果トランジスタ(NMOS)トランジスタ
211b  nチャネル金属酸化物半導体電界効果トランジスタ(NMOS)トランジスタ
212  イネーブルトランジスタ
214  ビットセルの出力値
216  ビットセルの出力値
218  プリチャージ入力
220  プリチャージ入力
222  イネーブル入力
300  ビットセル
302  6トランジスタセル部分
304  第1のプリチャージトランジスタ
306  第2のプリチャージトランジスタ
308  第1のCMOSインバータペア
309a  PMOSトランジスタ
309b  PMOSトランジスタ
310  第2のCMOSインバータペア
311a  NMOSトランジスタ
311b  NMOSトランジスタ
312  イネーブルトランジスタ
314  ビットセルの出力値
316  ビットセルの出力値
318  プリチャージ入力
320  プリチャージ入力
322  イネーブル入力
400  タイミング図
402  出力ノードの電圧レベル
404  出力ノードの電圧レベル
502  出力ノードの電圧レベル
504  出力ノードの電圧レベル
600  ビットセル
604  第1のプリチャージNMOSトランジスタ
606  第2のプリチャージNMOSトランジスタ
609a  第1のプルアップ抵抗
609b  第2のプルアップ抵抗
611a  第1のNMOSトランジスタ
611b  第2のNMOSトランジスタ
612  イネーブルPMOSトランジスタ
700  ビットセル
704  第1のプリチャージPMOSトランジスタ
706  第2のプリチャージPMOSトランジスタ
709a  第1のPMOSトランジスタ
709b  第2のPMOSトランジスタ
711a  第1のプルダウン抵抗
711b  第2のプルダウン抵抗
712  イネーブルNMOSトランジスタ
800  真の乱数生成器
802  整定時間tsettle
804  アナログデジタル変換器(ADC)
806  時間デジタル変換器(TDC)
900  乱数生成器
902  ビットセルチェーン
1000  乱数生成器
1002  ビットセルエントロピー源リング
1100  真の乱数生成器
1102  ビットセルエントロピー源リング
1104  フリップフロップ
1106  クロック
1110a  ビットセルの出力
1110b  ビットセルの出力
1110n  ビットセルの出力
1200  真の乱数生成器
1202  ビットセルリング発振器エントロピー源
1204a  ビットセル
1204b  ビットセル
1240  インバータ
1242  インバータ
1244  インバータ
1246  インバータ
1250  XORゲート
1252  第1の遅延要素
1254  XORゲート
1256  第2の遅延要素
1258  ビットセルの出力
1260  ビットセルの出力
1300  真の乱数生成器
1302  ビットセルリング発振器エントロピー源
1304a  ビットセル
1304b  ビットセル
1350  XNORゲート
1354  XNORゲート
1358  ビットセルの出力
1360  ビットセルの出力
1400  真の乱数生成器
1402  ビットセルリング発振器エントロピー源
1404a  pタイプ+XORビットセル
1404b  pタイプ+XNORビットセル
1458  ビットセルの出力
1460  ビットセルの出力
1500  真の乱数生成器
1502  ビットセルリング発振器エントロピー源
1504a  第1のビットセル
1504b  第2のビットセル
1558  ビットセルの出力
1560  ビットセルの出力
1600  乱数生成器
1602  ビットセルリング発振器エントロピー源の出力
1604  ビットセルリング発振器エントロピー源
1700  真の乱数生成器
1702a  ビットセルリング発振器の出力
1702b  ビットセルリング発振器の出力
1702c  ビットセルリング発振器の出力
1702d  ビットセルリング発振器の出力
1704a  フリップフロップの入力
1704b  フリップフロップの入力
1704c  フリップフロップの入力
1704d  フリップフロップの入力
1706a  フリップフロップの出力
1706b  フリップフロップの出力
1706c  フリップフロップの出力
1706d  フリップフロップの出力
1708  XORゲート
1710  XORゲート
1712a  XORゲートの出力
1712b  XORゲートの出力
1714  第2段のXORゲート
1716  XORゲートの出力
1718  フリップフロップ
1900  コンピューティングデバイス
1902  処理回路
1904  メモリ回路
1906  乱数生成器回路
1908  入力/出力(I/O)デバイス
1910  通信インターフェース
1912  ディスプレイ
1914  暗号回路
1916  通信バス
2000  コンピューティングデバイス
2002  乱数生成器回路
2004  ビットセル
2006  ビットセル整定時間決定回路
2008  ランダムデジタル出力値生成回路
2010  ビットセル初期化回路
2012  ビットセル活性化回路
【図１】
2018507468.tif 000021
【図２】
2018507468.tif 000022
【図３】
2018507468.tif 000023
【図４】
2018507468.tif 000024
【図５】
2018507468.tif 000025
【図６】
2018507468.tif 000026
【図７】
2018507468.tif 000027
【図８】
2018507468.tif 000028
【図９】
2018507468.tif 000029
【図１０】
2018507468.tif 000030
【図１１】
2018507468.tif 000031
【図１２】
2018507468.tif 000032
【図１３】
2018507468.tif 000033
【図１４】
2018507468.tif 000034
【図１５】
2018507468.tif 000035
【図１６】
2018507468.tif 000036
【図１７】
2018507468.tif 000037
【図１８】
2018507468.tif 000038
【図１９】
2018507468.tif 000039
【図２０】
2018507468.tif 000040
【手続補正書】
【提出日】平成29年7月18日(2017.7.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
一緒に結合された複数のビットセルであって、前記複数のビットセルの各ビットセルがランダム整定時間を有する、複数のビットセルと、
前記複数のビットセルのうちの1つのビットセルの前記ランダム整定時間を受信し、受信された前記ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成されたアナログデジタル変換器(ADC)とを備える、乱数生成器。
【請求項２】
前記複数のビットセルの各ビットセルが、
6トランジスタ(6T)相補型金属酸化物半導体(CMOS)スタティックランダムアクセスメモリ(SRAM)セル部分を含む、請求項1に記載の乱数生成器。
【請求項３】
前記複数のビットセルの各ビットセルが2つのプリチャージトランジスタを備え、各プリチャージトランジスタが、前記ビットセルの2つの差動出力ノードのうちの1つに結合されたドレインと、正の電源電圧VDDまたは負の電源電圧VSSに結合されたソースとを有する、請求項1に記載の乱数生成器。
【請求項４】
前記複数のビットセルの各ビットセルが、交差結合インバータのペアをさらに備え、各交差結合インバータが、前記2つの差動出力ノードのうちの1つに結合された入力を有する、請求項3に記載の乱数生成器。
【請求項５】
前記2つのプリチャージトランジスタがオンであるとき、前記差動出力ノードが、ほぼ前記正の電源電圧VDDまたは前記負の電源電圧VSSである初期化電圧値に等しく、前記2つのプリチャージトランジスタがオフであるとき、前記差動出力ノードが、0.5*VDD±0.15*VDDに等しいプリチャージ電圧値VPCに等しい、請求項4に記載の乱数生成器。
【請求項６】
前記差動出力ノードがVPCに等しくなった後、前記差動出力ノードの電圧値が、互いに異なり、逆の整定値で整定する、請求項4に記載の乱数生成器。
【請求項７】
前記複数のビットセルの最後のビットセルが別のビットセルに結合されない出力を有することを除いて、前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合されるように、前記複数のビットセルが直列に配列される、請求項1に記載の乱数生成器。
【請求項８】
総ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記ADCが、前記総ランダム整定時間を受信し、前記総ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するように構成される、請求項7に記載の乱数生成器。
【請求項９】
前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合されるように、前記複数のビットセルがリング内に配列される、請求項1に記載の乱数生成器。
【請求項１０】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記ADCが、前記周期性ランダム整定時間を受信し、前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するように構成される、請求項9に記載の乱数生成器。
【請求項１１】
前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力が、複数のランダムデジタル出力値を生成するために、あるサンプリングレートでサンプリングされる、請求項10に記載の乱数生成器。
【請求項１２】
前記複数のビットセルのうちの1つのビットセルの出力に結合された入力を有するフリップフロップをさらに備え、前記フリップフロップの出力が複数のランダムデジタル出力値を生成するように構成され、前記フリップフロップがビットセルリング発振器エントロピー源の出力に結合されたクロック入力を有する、請求項10に記載の乱数生成器。
【請求項１３】
サンプリングされている前記ビットセルの前記出力に結合された入力を有するフリップフロップをさらに備え、前記フリップフロップが、前記サンプリングレートにおけるクロック入力を有し、前記複数のランダムデジタル出力値を生成するように構成される、請求項11に記載の乱数生成器。
【請求項１４】
乱数を生成する方法であって、
一緒に結合された複数のビットセルのうちの1つのビットセルのランダム整定時間を決定するステップと、
アナログデジタル変換器(ADC)を使用して前記ビットセルの前記ランダム整定時間に基づいてランダムデジタル出力値を生成するステップとを含む、方法。
【請求項１５】
前記ビットセルの前記ランダム整定時間を決定するステップが、
前記ビットセルの出力を初期化電圧値にならしめるために前記ビットセルを初期化するステップと、
前記ビットセルの前記出力が前記初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するように前記ビットセルを活性化するステップとを含む、請求項14に記載の方法。
【請求項１６】
前記ビットセルの前記ランダム整定時間が、前記ビットセルが活性化されたときから前記ビットセルの前記出力が前記整定電圧値に到達するときまでに経過する期間である、請求項15に記載の方法。
【請求項１７】
前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合され、前記複数のビットセルの各ビットセルがランダム整定時間を有するように、リング構成に前記複数のビットセルを結合するステップをさらに含む、請求項14に記載の方法。
【請求項１８】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記方法が、
前記ADCを使用して前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するステップをさらに含む、請求項17に記載の方法。
【請求項１９】
複数のランダムデジタル出力値を生成するために、前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力を、あるサンプリングレートでサンプリングするステップをさらに含む、請求項18に記載の方法。
【請求項２０】
フリップフロップの入力を前記複数のビットセルのうちの1つのビットセルの出力に結合するステップと、
前記フリップフロップのクロック入力をビットセルリング発振器の出力に結合するステップと、
複数のランダムデジタル出力値を前記フリップフロップの出力において生成するステップとをさらに含む、請求項18に記載の方法。
【請求項２１】
フリップフロップの入力をサンプリングされている前記ビットセルの前記出力に結合するステップと、
前記サンプリングレートを有するクロック信号を前記フリップフロップに供給するステップと、
前記複数のランダムデジタル出力値を前記フリップフロップの出力において生成するステップとをさらに含む、請求項19に記載の方法。
【請求項２２】
メモリ回路と、
前記メモリ回路に通信可能に結合された乱数生成器とを備え、前記乱数生成器が、
一緒に結合された複数のビットセルであって、前記複数のビットセルの各ビットセルがランダム整定時間を有する、複数のビットセルと、
前記複数のビットセルのうちの1つのビットセルの前記ランダム整定時間を受信し、受信された前記ランダム整定時間に基づいてランダムデジタル出力値を生成するように構成されたアナログデジタル変換器(ADC)とを含み、前記ランダムデジタル出力値が前記メモリ回路において記憶される、コンピューティングデバイス。
【請求項２３】
前記複数のビットセルの各ビットセルが、
6トランジスタ(6T)相補型金属酸化物半導体(CMOS)スタティックランダムアクセスメモリ(SRAM)セル部分を含む、請求項22に記載のコンピューティングデバイス。
【請求項２４】
前記複数のビットセルの各ビットセルが2つのプリチャージトランジスタを備え、各プリチャージトランジスタが、前記ビットセルの2つの差動出力ノードのうちの1つに結合されたドレインと、正の電源電圧VDDまたは負の電源電圧VSSに結合されたソースとを有する、請求項22に記載のコンピューティングデバイス。
【請求項２５】
前記複数のビットセルの各ビットセルが、交差結合インバータのペアをさらに備え、各交差結合インバータが、前記2つの差動出力ノードのうちの1つに結合された入力を有する、請求項24に記載のコンピューティングデバイス。
【請求項２６】
前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合されるように、前記複数のビットセルがリング内に配列される、請求項22に記載のコンピューティングデバイス。
【請求項２７】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記ADCが、前記周期性ランダム整定時間を受信し、前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するように構成される、請求項26に記載のコンピューティングデバイス。
【請求項２８】
前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力が、複数のランダムデジタル出力値を生成するために、あるサンプリングレートでサンプリングされる、請求項27に記載のコンピューティングデバイス。
【請求項２９】
前記乱数生成器が、
前記複数のビットセルのうちの1つのビットセルの出力に結合された入力を有するフリップフロップをさらに含み、前記フリップフロップの出力が複数のランダムデジタル出力値を生成するように構成され、前記フリップフロップがビットセルリング発振器エントロピー源の出力に結合されたクロック入力を有し、前記複数のランダムデジタル出力値が前記メモリ回路において記憶される、請求項27に記載のコンピューティングデバイス。
【請求項３０】
前記乱数生成器が、
サンプリングされている前記出力に結合された入力を有するフリップフロップをさらに含み、前記フリップフロップが前記サンプリングレートにおけるクロック入力を有し、前記複数のランダムデジタル出力値を生成するように構成され、前記複数のランダムデジタル出力値が前記メモリ回路において記憶される、請求項28に記載のコンピューティングデバイス。
【請求項３１】
一緒に結合された複数のビットセルのうちの1つのビットセルのランダム整定時間を決定するための手段と、
前記ビットセルの前記ランダム整定時間に基づいてランダムデジタル出力値を生成するための手段とを含む、コンピューティングデバイス。
【請求項３２】
前記ビットセルの前記ランダム整定時間を決定するための前記手段が、
前記ビットセルの出力を初期化電圧値にならしめるために前記ビットセルを初期化するための手段と、
前記ビットセルの前記出力が前記初期化電圧値からプリチャージ電圧値に次いで整定電圧値に遷移するように前記ビットセルを活性化するための手段とを含む、請求項31に記載のコンピューティングデバイス。
【請求項３３】
前記複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合され、前記複数のビットセルの各ビットセルがランダム整定時間を有するように、前記複数のビットセルがリング構成に結合される、請求項31に記載のコンピューティングデバイス。
【請求項３４】
周期性ランダム整定時間が、前記複数のビットセルの前記ランダム整定時間の各々の合計に等しく、前記コンピューティングデバイスが、
前記周期性ランダム整定時間に基づいて前記ランダムデジタル出力値を生成するための手段をさらに含む、請求項33に記載のコンピューティングデバイス。
【請求項３５】
複数のランダムデジタル出力値を生成するために、前記複数のビットセルのうちの1つのビットセルの少なくとも1つの出力を、あるサンプリングレートでサンプリングするための手段をさらに含む、請求項34に記載のコンピューティングデバイス。
【請求項３６】
複数のビットセルの各ビットセルの出力が前記複数のビットセルの後続のビットセルの入力に結合されるように、リング構成に配列された前記複数のビットセルを含むビットセルリングと、
複数のランダムビットを生成するために前記複数のビットセルのうちの1つのビットセルの出力ノードをサンプリングするための手段とを含む、乱数生成器。
【請求項３７】
前記ビットセルリングの前記複数のビットセルの各々の少なくとも1つの出力ノードが、初期化値から整定値に遷移するように構成され、先行するビットセルの整定値が、後続のビットセルの前記出力ノードが初期化値から整定値に遷移することを生じさせる、請求項36に記載の乱数生成器。
【請求項３８】
前記ビットセルリングの前記複数のビットセルの各々の少なくとも1つの出力ノードが、整定値から初期化値に遷移するように構成され、先行するビットセルの整定値が、後続のビットセルの前記出力ノードが整定値から初期化値に遷移することを生じさせる、請求項36に記載の乱数生成器。
【請求項３９】
前記ビットセルリングが、前記複数のビットセルの各々の整定時間tsettleに基づくランダムな周期性整定時間tsettle_periodを有し、前記複数のランダムビットが、前記ランダムな周期性整定時間tsettle_periodに部分的に基づいてランダムに生成される、請求項36に記載の乱数生成器。
【請求項４０】
前記複数のビットセルが、初期化と活性化のフェーズの間で順に入れ替わるように構成される、請求項36に記載の乱数生成器。
【請求項４１】
サンプリングするための前記手段が、前記ビットセルの前記出力ノードに通信可能に結合された入力と、前記入力におけるビット値をフリップフロップの出力にラッチすることによって前記複数のランダムビットを生成する出力とを有するフリップフロップであり、前記フリップフロップが、クロックによって前記フリップフロップに供給されるクロック信号に基づいて前記ビットセルの前記出力ノードをサンプリングする、請求項36に記載の乱数生成器。
【請求項４２】
前記ビットセルリングの前記複数のビットセルが、第1のビットセルと最後のビットセルとを含み、前記最後のビットセルの出力が前記第1のビットセルの入力に通信可能に結合され、前記第1のビットセルの前記入力に、あるビット値を入力することで、前記最後のビットセルの前記出力において、前記第1のビットセルの前記入力に入力された前記ビット値と反対の出力ビット値が生成される、請求項36に記載の乱数生成器。
【請求項４３】
前記乱数生成器が、4*n-2個のビットセルを含み、nが1以上の正の整数である、請求項36に記載の乱数生成器。
【請求項４４】
前記複数のビットセルのうちの少なくとも1つのビットセルが、pチャネル金属酸化物半導体電界効果トランジスタ(PMOS)イネーブルトランジスタと、交差結合インバータペアと、2つのnチャネル金属酸化物半導体電界効果トランジスタ(NMOS)プリチャージトランジスタとを含むpタイプビットセルであり、前記交差結合インバータペアが、XORゲートおよび/またはXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、前記XORゲートおよび/または前記XNORゲートの出力が、サンプリングするための前記手段によってサンプリングされる前記ビットセルの前記出力ノードである、請求項36に記載の乱数生成器。
【請求項４５】
前記複数のビットセルのうちの少なくとも1つのビットセルが、NMOSイネーブルトランジスタと、交差結合インバータペアと、2つのPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記交差結合インバータペアが、XORゲートおよび/またはXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、前記XORゲートおよび/または前記XNORゲートの出力が、サンプリングするための前記手段によってサンプリングされる前記ビットセルの前記出力ノードである、請求項36に記載の乱数生成器。
【請求項４６】
前記複数のビットセルのうちの第1のビットセルが、PMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つのNMOSプリチャージトランジスタとを含むpタイプビットセルであり、前記第1の交差結合インバータペアが、第1のXORゲートおよび/または第1のXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記複数のビットセルのうちの第2のビットセルが、NMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つのPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記第2の交差結合インバータペアが、第2のXORゲートおよび/または第2のXNORゲートのうちの少なくとも1つの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記第1のXORゲートおよび/または前記第1のXNORゲートの出力が、前記NMOSイネーブルトランジスタのゲートおよび前記2つのPMOSプリチャージトランジスタのゲートに通信可能に結合される、請求項36に記載の乱数生成器。
【請求項４７】
遅延要素が、前記第1のXORゲートおよび/または前記第1のXNORゲートの、前記2つのPMOSプリチャージトランジスタの前記ゲートへの前記出力を、前記NMOSイネーブルトランジスタの前記ゲートに対して遅延させる、請求項46に記載の乱数生成器。
【請求項４８】
前記複数のビットセルのうちの第1のビットセルが、第1のPMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つの第1のNMOSプリチャージトランジスタとを含むpタイプビットセルであり、前記第1の交差結合インバータペアが、XORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記複数のビットセルのうちの第2のビットセルが、第2のPMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つの第2のNMOSプリチャージトランジスタとを含むpタイプビットセルであり、前記第2の交差結合インバータペアが、XNORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記XORゲートの出力が、前記第2のPMOSイネーブルトランジスタのゲートおよび前記2つの第2のNMOSプリチャージトランジスタのゲートに通信可能に結合される、請求項36に記載の乱数生成器。
【請求項４９】
前記複数のビットセルのうちの第1のビットセルが、第1のNMOSイネーブルトランジスタと、第1の交差結合インバータペアと、2つの第1のPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記第1の交差結合インバータペアが、XORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記複数のビットセルのうちの第2のビットセルが、第2のNMOSイネーブルトランジスタと、第2の交差結合インバータペアと、2つの第2のPMOSプリチャージトランジスタとを含むnタイプビットセルであり、前記第2の交差結合インバータペアが、XNORゲートの入力に通信可能に結合された2つの相補型出力ノードを有し、
前記XORゲートの出力が、前記第2のNMOSイネーブルトランジスタのゲートおよび前記2つの第2のPMOSプリチャージトランジスタのゲートに通信可能に結合される、請求項36に記載の乱数生成器。
【請求項５０】
リング構成に配列された複数のビットセルを各々が含む複数のビットセルリングをさらに備え、前記複数のビットセルリングがそれぞれ、ゲート段に入力される出力を有し、前記ゲート段が複数のゲートを有し、前記ゲート段が前記複数のランダムビットを生成するためにサンプリングされるゲート段出力を有する、請求項36に記載の乱数生成器。
【国際調査報告】
2018507468.tif 000041
2018507468.tif 000042
2018507468.tif 000043