2011年3月20日日曜日

A/D D/Aコンバータの有効ビット数 ENOB

某社の技術セミナーに参加し、FPGAのI/Oドライバを通すだけでジッタが数10ps増加するという話を耳にしました。これがどんなFPGAのことを言っているのかわかりませんが、例示されていたハイスピードロジックと比較して1~2桁悪いとされていました。
ジッタは位相雑音はもちろん、データコンバータの有効ビット数に影響しオーディオ帯域ならともかく高周波領域ではかなりのインパクトを持ちます。これまでの設計では、基準クロックをFPGAで分配して周辺デバイスに接続していましたので、FMトランスミッタのように位相雑音が気になるアプリケーションでは適切とは言えません。気になって先達の回路を読み返してみると、コンバータのクロックはFPGAを通さずに基準クロックをクロックドライバで分配したものを供給しています。
そんなこんなで少し勉強してみました。


A/Dコンバータの理論S/N比(SNR)
フルスケール正弦波(RMS値)と量子化誤差(RMS値)の比。

まず、フルスケール正弦波のRMS値はFS/(2√2)となります。

フルスケール正弦波
 

次に量子化誤差(量子化雑音)について考えます。入力信号の変化に伴い量子化信号はLSB毎に階段状の波形となることから、量子化誤差(入力信号との差)はのごぎり波状となります。コンバータの分解能がNビットのとき、のこぎり波のRMS値はLSB/√12よりFS/(2^N × √12)です。


 入力信号と量子化信号


 量子化誤差


以上より、SNRは次の通り。上の式の単位は実数、下はデシベルです。1.76dBの根拠がわかってすっきりしました。

SNRの理論式


ビット数毎のSNR理論値は下表の通りです。16ビットで98dB、24ビットなら146dBまで及ぶというおなじみの表です。



有効ビット数(ENOB; Effective Number Of Bits)
現実のA/DコンバータのSNRは、種々の理由により理論値より必ず下回ります。実測したSNRから有効なビット数を求める事ができます。ENOBは一般的に入力アナログ信号の周波数が高くなるほど悪化します。


アパーチャ・ジッタ
サンプリングクロックのジッタにより、サンプリング点に時間的にばらつきがあると結果的に歪んだ波形としてA/D変換されてしまいSNRも悪くなります。アパーチャ・ジッタ ta 、入力周波数 fin によるSNRは次の通りです。



上のグラフによると100MHzで14bit精度が必要なときの所要ジッタは約0.1ps。オーディオ用途なら50kHzで16bitなら50psくらいでしょうか。これはジッタのみに着目していますから、振幅誤差などのSNRを別途考慮する必要があり、少なくともさらに数分の1程度の余裕が必要ですね。
FMトランスミッタのDDSなら直接FM帯を生成するのではなく、ジッタの余裕がある低い周波数からアップコンすることも考慮したほうが良さそうです。このあたり、とっても難しいのでまずは実機で確認しながら必要に応じて試行錯誤するつもりです。それにENOB = SFDRでもありませんしね。


参考文献
アナログ・デバイセズ - AN-313 高分解能D/Aコンバータを最大限に活用する方法

エー・ディー・エム - マッチィ先生と生徒2人の楽しい勉強会12 LCフィルタとA/D変換の話

FIDELIX - アナログ約60dB、デジタル90dB以上というDレンジは比較不可
日本テキサス・インスツルメンツ - ADコンバータにおけるビットばらつきの推定方法

0 件のコメント:

コメントを投稿