96倍速の等価時間サンプリング
100MHzクラスのADCを使って、GHzクラスのADCを作る方法を研究しています。
入力波形が繰り返し波形の場合にだけ使える方法なのですが、周期的に繰り返す波形に対してサンプリングする時間を少しずつずらしてサンプリングすると、等価的にサンプリング速度を上げることができます。
例えば、80MHzでサンプリングするとサンプリング手記は12.5nsですが、2回目のサンプリングで12.5ns/6=2.083nsずらしてサンプリングを開始できれば、等価的にサンプリング周波数が6倍に上がったことになります。
こういうやり方を等価時間サンプリングといいますが、ようやくCosmo-ZのFPGAで長時間のサンプリングを安定かつ、タイミングを正確にコントロールすることができるようになりました。
原理は簡単です。XILINXのMMCMにはPhase Shiftという機能があって、この機能を使うと出力するクロックの位相を少しだけずらすことができます。どのくらいの精度で位相をずらすことができるかというと、実はMMCMってすごいんです。
なんと、位相コントロールの1単位が1/(56×fVCO)なのです。ここで、fvcoというのはVCOの周波数です。
例えば、クロック80MHzを出力するMMCMの中身が960MHzで動いているとき、Phase Shiftを行うと、1/960MHz/56=18.6psだけクロックの位相をずらすことができます。
すべてのXILINX FPGAに備わっていて誰もが気にせず使っているMMCMは、実は10ピコ秒のオーダーで遅延をコントロールできるという超すごいプリミティブだったのです。
さて、ADCのクロックが80MHzで、それを作るためのVCOが960MHzで動いているならば、672回のPhase Shiftでクロックの位相が360°回ることになります。これを96回にわけて行うことで、約130psずつADCのタイミングを動かしながら96倍速のサンプリングすることができるというわけです。
実験してみましょう。
まず、FPGAで50nsの矩形波を作り、ADCでサンプリングした波形が下の図のものです。
80MHz(12.5ns)でサンプリングしているので50nsの幅があるのですが4個分しか高い電圧レベルになっていません。
ここで等価サンプリングをONにしますと、上の波形が次の図のように超高解像になります。
立ち上がりの部分を拡大してみると、サンプリングポイントが見えてきます。
1つ1つのサンプリングポイントの間隔が約130psであることがわかります。元々が12.5nsのサンプリング間隔なので96倍に高速化されました。
使用しているADCのサンプリングクロックは最大125MHzなのですが、等価的に毎秒7.6GサンプリングのADCになりました。しかも、1回の波形をサンプリングするのに1秒もかかりません。
ADCの帯域とアナログフロントエンドの帯域は650MHz程度で、ADCのアパーチャ時間は1nsなので帯域的には全然足りていないはずですが、1つ1つのサンプリング点は単調増加しているので、LPFの効果で少しなまっているとはいえ各ポイントのデータは意味があります。
現時点では、FPGAからパルスを出して何かにぶつけて反射や減衰を超高速に等価サンプリングで見るという使い方、つまり信号の反射の形を見るTDRみたいなことしかできません。
これに外部トリガと外部クロックが使えるようになれば、応用範囲が広がっていくと思います。
| 固定リンク
コメント