仮想 通貨

オシレータ

オシレータ
実際のリングオシレータの例と、その回路ブロック。

FPGA と予測不可能性と乱数 (2)

リングオシレータの例 (3個の NOT ゲートが環状に接続されている)。

上図に示した3個の NOT ゲートからなる RO の動作について考えてみます。とはいえ、この回路には入力がないので、いずれかの信号の時刻ゼロにおける信号値を仮定して、そこから各信号の時間変化を求めてみます。ここでは各 NOT ゲートの出力を Q0、Q1、Q2 とし、回路の出力 Q は Q2 と定義します。また、各 NOT ゲートは τ の伝搬遅延をもつ (つまり、入力が変化してから τ 経過した後に出力が変化する) ものとします。

下図に、以上の仮定のもとで求めた RO のタイミングチャートを示します。

リングオシレータのタイミングチャートの例。

時刻0では、仮定どおり Q2 = ‘0’ として、Q0、Q1 は不定値とします。時刻 τ では、左側の NOT ゲートの入力 Q2 = ‘0’ より、Q0 は オシレータ ‘1’ に変化します。その変化により、時刻 2τ では中央の NOT ゲートの出力 Q1 が ‘0’ に変化します。時刻 3τ 以降も同様に、Q2 = ‘1’、Q0 = オシレータ ‘0’、Q1 = ‘1’、……と変化します。

結果として、いつまで経ってもこの回路の信号はぐるぐると変化し続ける、つまり発振するということになります。環状 (リング) のゲートにより作られる発振回路 (オシレータ) なので、この回路をリングオシレータとよぶわけです。

ちなみに、NOT ゲートが偶数個の場合には、最終的に全ての オシレータ オシレータ NOT ゲートの出力値を安定に (発振することなく) 定めることができます。これは、ある信号の値を ‘0’ と定めた場合でも、’1′ と定めた場合でも成り立ちます。こうした回路は、2つの安定状態をもつ回路、すなわち2安定 (バイステーブル) 回路といいます。2安定回路はフリップフロップや SRAM の記憶素子の基礎になっています。

ただ、先に示した RO はあくまで原理を説明するためのもので、そのまま使われることはまれです。特に、現実には発振するかどうかを決める有効入力がないと不便です。

そのため、NOT ゲートのうち1つを NAND オシレータ ゲートで置き換えて、その一方の入力を有効入力とすることが多いです。また、このとき残った偶数個の NOT ゲートは、単に任意の個数のバッファ (入力をそのまま出力するゲート) としてしまっても、論理的に等価です。

実際のリングオシレータの例と、その回路ブロック。

ということで、実際に使われる RO は、上図に示す1個の NAND ゲートと任意個のバッファからなる構成をもつ場合が多いです。以降の説明では、これを1入力1出力の回路ブロック RO で表します。

今回の想定事項

今回紹介するサーベイ論文では、外部クロック入力も信頼できない (攻撃者によって操作されうる) ものとみなしています。つまり、TRNG で使うクロック信号は内部で作り出さなければならないということです。そのため今回は、クロック信号は RO オシレータ を使って生成します。

リングオシレータを使った TRNG の例

下図に、基本的なリングオシレータ型 (ERO 型; Elementary RO) の オシレータ TRNG の構造を示します。これは、2つの RO と分周比 K の分周回路、そして D フリップフロップ (オシレータ D-FF) から構成されます。

基本的なリングオシレータ型 (ERO 型) の TRNG。

RO の出力周波数は一定ではありません。先に示したタイミングチャートでは全ての NOT ゲートの伝搬遅延を τ で一定とみなしました。しかし、実際には素子の細かな特性の違いによって伝搬遅延は少しずつ異なります。そのため、同じ形の RO でも、使うチップや素子の配置によってその出力周波数は異なります。

また、ある RO から出力される波形を細かく見れば、その周期にはほんの少しだけ (ピコ秒単位の) ばらつきがあります。これをジッタといいます。

これらの不確実性の影響によって、RO2 の出力を十分大きな K で分周した信号で RO1 の出力を D-FF でサンプリングすると、その出力からは ‘0’ と ‘1’ がほぼ半々の確率で、しかも予測不可能な形で現れます。K をどれくらい大きくするべきかは、確率的モデルから計算できます。具体的には、デバイスによっても異なりますが、数万~数十万程度のようです。

ERO 型の TRNG は、シンプルなハードウェアで実現できて、ランダム性も十分、デバイスや環境への非依存性も申し分ないのですが、 乱数の生成速度が極めて低いのが弱点 です。RO の出力周波数はおおむね数百 MHz なので、それを数万~数十万で分周するということは、数 kbit 毎秒程度でしか乱数が生成できないことを意味します。

じゃあそれを複数並べれば……と思った方は鋭いです。ただ、単に ERO 型の TRNG を複数並べるよりも、複数の RO の出力を オシレータ XOR したものを乱数として使った方が、回路面積の面で効率が良くなります。それが下図に示す複数リングオシレータ型 (MURO 型; Multi RO) の TRNG です。

複数リングオシレータ型 (MURO 型) の TRNG。

多数の RO を使えば、それだけ分周比 K を小さくできます。論文では、120個の RO を使い、K を100に設定しています。ERO 型 TRNG を多数並べる場合と比べ、分周回路は1個だけで済みますし、K オシレータ が小さいので分周回路自体も小さく作れます。これにより、数 Mbit 毎秒の速度での乱数生成が効率良く行えます。

また、複数個の RO の出力をサンプリングするのではなく、非同期回路のハンドシェイクで用いられる回路素子を使った Self-timed Ring (STR) というリングを構成し、その各出力をサンプリング、XOR する方法も提案されています。これを Self-timed Ring 型 (STR 型) の TRNG とよびます。論文では、255 素子の STR を用いることで、サンプリングクロックの分周が不要となることが示されています。つまり STR 型 TRNG では数百 Mbit 毎秒での乱数生成が可能です。

ただ、MURO 型と STR 型の TRNG は、必要な論理素子 (LUT や D-FF) の絶対数が多い (ともに百個単位) 点に注意が必要です。また オシレータ STR 型では、望んだ動作をさせるために多くの素子を注意深く配置する必要があり、配置の自由度が低いということも、問題点として挙げられています。

コヒーレントサンプリング

2つの独立なクロック源を使う方法

次に紹介するのは、下図に示すコヒーレントサンプリング型 (COSO 型; Coherent Sampling RO) の TRNG です。今度は、2つの RO の出力が直接 D-FF のデータ入力 D オシレータ とクロック入力に接続されています。詳しい原理は次回に説明したいと思いますが、ここでは簡単にその動きを紹介します。

コヒーレントサンプリング型 (COSO 型) の TRNG。

COSO 型 TRNG では、2つの RO から出力されるクロック信号がほんの少しだけ異なる周波数 (周期) をもつと考えます。そうすると、RO2 の出力によるサンプリングのたびに、RO1 の出力との間の位相が少しずつズレていきます (これがコヒーレントサンプリングです)。その結果、D-FF の出力は ‘0’ の連続と ‘1’ の連続を繰り返します。

実際に ‘0’ が何回連続するかには不確定性があります。この回数の偶奇を T フリップフロップ (T-FF) で数え、左の D-FF から ‘1’ が出力されたら、その結果を右の D-FF から出力します。これにより乱数を取り出すのが、COSO 型の TRNG です。

この COSO 型の TRNG は、周期が少しだけ異なる RO のペアを運良く見つけることができれば、1 Mbit 毎秒程度の乱数を極めて少ない数の論理素子 (LUT 20個と D-FF 3個程度) で実現できます。問題は、そうしたペアを見つけることが難しい、ということです。

サーベイ論文が発表された2016年時点では、この問題は未解決でした。しかし、2019年の FPL にてこの問題を解決する COSO 型 TRNG の改良が提案されています [2]。この論文は第5回で紹介する私の研究の土台にもなっているので、詳細はそのときに説明したいと思います。

1つのクロック源から周波数合成する方法

前述の通り、COSO 型 TRNG では周期が少しだけ異なる2つのクロック信号を用意する必要があります。実はその方法はもう1つあります。1つのクロック源 (RO) から PLL (Phase-locked Loop) を使って分周・逓倍を行い、そうしたクロック信号のペアを生み出すという方法です。この考えに基づくのが、下図に示す PLL を用いたコヒーレントサンプリング型 (PLL 型) オシレータ TRNG です。

PLL を用いたコヒーレントサンプリング型 (PLL 型) の TRNG。

FPGA では、用途によっては様々な周波数のクロックが必要とされる場合があります。そのため、PLL などのクロッキング素子は FPGA 内にそれなりの個数存在しています。とはいえ、実際にその全てを使うことはまれですから、そのうちの2個をこうした用途で使用しても、ほとんどの場合問題はありません。

動作の基本原理は COSO 型と同様にコヒーレントサンプリングなので、COSO 型の利点の多くは PLL 型でも共通です。ただし、クロッキング素子は FPGA のメーカーや世代によって作りが変わっていることも多く、新しい世代の FPGA でこの手法が引き続き使用できるかどうかは、しっかりと検討しなければなりません。この辺りの詳しい話は、また次回することとします。

SR ラッチと TERO (遷移効果リングオシレータ)

SR ラッチの禁止状態

最後に紹介するのは、遷移効果リングオシレータ型 (TERO 型; Transition Effect RO) オシレータ の TRNG ですが、その説明のために前回示した SR ラッチを再掲しておきます。

SR ラッチの回路図と特性表 (再掲)。

前回、この SR ラッチを禁止状態から一気に保持状態に移行させると何が起きるか……という話をしました。RO のタイミングチャートを検討したときと同様に考えてみると、Q と /Q とでそれぞれ時間 τ ごとに ‘0’ と ‘1’ とを繰り返す波形が得られます (詳しくは第4回で検討します)。つまり、これも一種の発振回路として動作してしまうことになります。TERO 型 TRNG では、これを遷移効果リングオシレータとよんでいます。

ただ、現実にはこの発振は永遠には続きません。様々な要因により、どこかのタイミングで ‘0’ や ‘1’ の安定な状態に落ち着きます。回路をうまく調整してやると、最終的にどちらで安定するか (出力) オシレータ や、安定するまでにどれくらい時間がかかるか (発振の回数) に不確実性が生まれます。このうち後者に着目したものが、TERO 型の TRNG です。

なお、前者に着目する、つまり SR ラッチの出力そのものに注目することでも オシレータ TRNG を構成できます [3]。本コースでは、こうした TRNG について第4回で扱うことにします。ただし、この種の TRNG は厳密な確率的モデルが用意されているものではないため、今回のサーベイ論文では議論の対象外となっています。

TERO 型 オシレータ オシレータ TRNG

TERO 型の TRNG の構成例を下図に示します。左上に見える8の字状に接続された2つの NAND ゲートと任意個のバッファは、SR ラッチの2つの入力に同じ信号 /CTRL を接続した場合と論理的に等価です。

遷移効果リングオシレータ型 (TERO 型) の TRNG。

CTRL が ‘0’ オシレータ オシレータ の間は、ラッチは禁止状態で、両方の NAND ゲートが ‘0’ を出力します。CTRL が ‘1’ になると、ラッチは禁止状態から一気に保持状態に移行し、しばらくの間発振します。発振の回数の偶奇は、NAND ゲートの出力の立上りを T-FF で数えることで求めます。再び CTRL が ‘0’ になると、その結果が D-FF に取り込まれ、出力されます。これにより乱数を取り出すのが、TERO 型の TRNG です。

TERO 型の TRNG で十分なランダム性が取り出せるとき、発振する時間は概ね 1 マイクロ秒弱です。そのため、TERO 型の TRNG からはおよそ 1 Mbit 毎秒程度の乱数が取り出せます.必要な論理素子の数もかなり少なく済みます。

TERO 型の TRNG の問題点は、ちょうど良い回数の発振が起きるように回路を調整することが難しいことです。COSO 型と同様に、2016年時点でこの問題は未解決でした。しかし、2020年の FPL で発表した私の最近の研究で、回路の構成を工夫し、COSO 型 TRNG で行われたのと似た改良を施すことで、この問題も解決できることがわかりました [4]。詳細は、本コースの第5回で説明したいと思います。

今回は、FPGA 向けの TRNG の構成法のいくつかを概説するとともに、本コースで今後説明していく内容の導入を行いました。今回は、要点を挙げるかわりに、紹介した6種類の TRNG の利点・欠点を表にまとめておきます。

利点欠点
ERO 型構成がシンプル,デバイス非依存性も良好乱数の生成速度が極めて低い
MURO 型デバイス非依存性が良好使用する論理素子数が多い
STR 型乱数の生成速度が極めて高い使用する論理素子数が多い
COSO 型使用する論理素子数が少ない良好なクロックの組を見つけるのが難しい
PLL 型使用する論理素子数が少ない使用するクロッキング素子の影響が大きい
TERO 型使用する論理素子数が少ない回路の調整が難しい

次回は、PLL 型の TRNG の動作についてもう少し詳しく説明したあと、これらを Xilinx 社の最近の FPGA でどうやれば活用できるかについて、我々の最近の研究成果をもとにお話したいと思います。

TI の LMK61E2 高性能オシレータにより優れた振動抵抗を実現

01:14

TI DLP® Pico™ テクノロジー

03:39

TI のオンライン・アンプ・クロス・リファレンス・ツールを利用した最適なアンプ選択

04:34

TI Design: 車載 LED 照明向けの昇圧ドライバとバッテリ電圧への昇圧ドライバ

03:08

TIの誘導型近接センサご紹介

01:27

TI DLP® LightCrafter™ Display 4710 評価モジュール

TI is a global semiconductor design オシレータ and manufacturing company. Innovate with 100,000+ analog ICs and embedded processors, along with software, tools and the industry‘s largest sales/support staff.

© Copyright 1995-2018 Texas Instruments Incorporated. All rights reserved.

オシレータとRSQB Flip Flopの等価回路モデル【SPICEシミュレーション連載講座】

os

---------------------------------
*$
* PART NUMBER: OSCILLATOR
* COMPONENTS: OSCILLATOR
* MANUFACTURER: Bee Technologies
* All Rights Reserved Copyright (C) Bee Technologies Inc. 2014
.SUBCKT OSCILLATOR Oscillator_IN Oscillator_OUT
+ PARAMS: iout=5m lv=1.25 hv=2.5 オシレータ
R_R4 N06418 N06402 10
V_V2 N06126 0 0.5Vdc
C_C2 0 N06402 10p IC=0
V_V3 N06132 0 3Vdc
D_D1 N06126 OSCILLATOR_IN Dide_Oscillator
E_GAIN1 オシレータ OSCILLATOR_OUT 0 VALUE
D_D2 OSCILLATOR_IN N06132
Dide_Oscillator
E_E2 オシレータ N06418 0 VALUE < if(V(Oscillator_IN)>(V(CAL_OUTPUT)+0.01),5,0) + >
G_G1 OSCILLATOR_IN 0 オシレータ VALUE < if(V(Oscillator_OUT)>4,,0) >
E_E3 CAL_OUTPUT 0 VALUE オシレータ < if(V(Oscillator_OUT)>4,,) >
R_R3 0 CAL_OUTPUT 100MEG
.model Dide_Oscillator d (N=0.01)
.ENDS OSCILLATOR オシレータ
*$
---------------------------------

RSQB Flip Flopのデバイスモデルと評価用シミュレーション・データ

ff


▽RSQB Flip Flopの等価回路 ネットリスト

---------------------------------
*$
* PART NUMBER: RSQB FLIP-FLOP
* COMPONENTS: RSQB FLIP-FLOP
* MANUFACTURER: Bee オシレータ Technologies
* All Rights Reserved Copyright (C) Bee Technologies Inc. 2014
.SUBCKT RSQB_FLIP_FLOP RSQB_FlipFlopR RSQB_FlipFlopS RSQB_FlipFlopQB
E_GAIN1 RSQB_FlipFlopQB 0 VALUE
R_R1 N03584 N03648 10
R_R2 0 RSQB_FlipFlopR 100MEG
R_R3 0 RSQB_FlipFlopS 100MEG
E_E1 N03584 0 VALUE < if((V(RSQB_FlipFlopR)>4 オシレータ &
+ V(RSQB_FlipFlopS) <1),5,(if((V(RSQB_FlipFlopR)<1 &
+ V(RSQB_FlipFlopS)>4),0,V(RSQB_FlipFlopQB)))) >
C_C1 0 N03648 オシレータ 10p IC=0
.ENDS RSQB_FLIP_FLOP
*$
---------------------------------

WALDORF ( ウォルドルフ ) / nw 1 ウェーブテーブルオシレータ

WALDORF ( ウォルドルフ ) / nw 1 ウェーブテーブルオシレータ

主な仕様
21世紀型、先進のウェーブテーブルエンジン
ポジション、トラベルスピードを調整可能な循環式ウェーブテーブルスキャン
ピッチとは独立したスペクトルエンベロープのコントロール
再生されるウェーブテーブルのノイズ成分量を調整するNoisyノブ
Waldorf が誇るクラシックウェーブテーブルの継承
ウェーブテーブルのためのスピーチシンセサイザー
ウェーブテーブルはユーザーレコーディングも可能
接続
Gate:ウェーブテーブルトラベルとレコーディングのトリガー
ピッチCV:1V/Oct、0V~5Vピッチインプット、100kΩインピーダンス
モジュレーションCV:3系統、-12V~+12Vモジュレーションインプット、100kΩインピーダンス
出力:10v p-p、8Hz~18kHz、470Ωインピーダンス
ファームウェアのアップデート、ウェーブテーブル、テキストデータ転送用のガルバニック絶縁されたUSBポート
メモリー容量:8MBフラッシュメモリー(うち5MBはファクトリーテーブル)

レビューを投稿する Write a Review

WALDORF ( ウォルドルフ )
nw 1 ウェーブテーブルオシレータ

¥25,795 (税込)

在庫 あり 在庫があり、注文確認後すぐに出荷できます。 在庫僅少 在庫が少なくなっているため、品切れとなる可能性があります。 予定日 現時点での入荷予定日となります。
※入荷予定については予告なく変更される場合もあります。 入荷未定 現時点での入荷予定日は未定です。 お取寄せ メーカーより取り寄せが必要な商品となります。納期についてはお問い合わせください。 メーカー直送 メーカーからの直送となります。納期についてはお問い合わせください。 DL即納 ご注文後すぐに登録メールアドレスへシリアル番号のみ納品します。 特別注文 受注生産品や海外取り寄せ品のためお届けに若干時間がかかります。 取扱中止 生産完了等によりお取り扱いできません。

アルティメットオシレーター

FX初心者におすすめ!FXの基礎知識や失敗しないための方法を紹介

詳しくみる

【初心者におすすめ】FX自動売買とは?

詳しくみる

スプレッドとは

詳しくみる

【2021年】FXの税金や確定申告・税率について

詳しくみる

FX取引手法とは?初心者に役立つ分析方法を紹介

詳しくみる

【初心者向け】無料デモトレード

詳しくみる

トラッキングトレード ガチンコバトル!

詳しくみる

FX用語集

詳しくみる

FXブロードネットが選ばれる5つの理由

詳しくみる

テクニカルチャート分析

詳しくみる

【初心者から上級者に人気】ドル円予想レポート

詳しくみる

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる