ADCの量子化ノイズと SNR シミュレーター 戻る
信号処理

ADCの量子化ノイズと SNR シミュレーター

A/D 変換器の「連続な電圧を 2^N 段の符号にまるめる」ときに発生する量子化ノイズと SNR を計算するツールです。ビット数・フルスケール電圧・信号振幅・サンプリング周波数を変えると、量子化ステップ・ノイズ実効値・フルスケール SNR (6.02N+1.76 dB)・信号 SNR・オーバーサンプリングゲイン・ENOB がリアルタイムで更新されます。

パラメータ設定
ビット数 N
bit
分解能。1 ビット増やすごとに SNR は約 6 dB 改善
フルスケール電圧 V_FS
V
ADC の入力レンジ全幅。V_FS/2^N が 1 LSB
信号振幅 V_sig
V
入力正弦波のピーク振幅。フルスケール以下に
サンプリング周波数 f_s
Hz
単位時間あたりのサンプル数
信号帯域 BW
Hz
関心のある信号の最高周波数。f_s/(2·BW) がオーバーサンプリング比
計算結果
量子化ステップ Q (µV)
量子化ノイズ実効値 (µV)
フルスケール SNR (dB)
信号 SNR (dB)
オーバーサンプリングゲイン (dB)
ENOB (bits)
連続信号 vs 量子化波形 — 1 周期スイープ

青:連続な入力正弦波。橙:N ビット ADC でまるめた階段状の量子化波形。下段の細い赤線がその差(量子化誤差 = ノイズの種)。

フルスケール SNR vs ビット数
総合 SNR vs オーバーサンプリング比
理論・主要公式

$$\text{SNR}_{FS}=6.02\,N+1.76\ [\text{dB}],\quad Q=\frac{V_{FS}}{2^{N}},\quad v_{q,rms}=\frac{Q}{\sqrt{12}}$$

N ビット ADC の量子化ステップ Q、量子化ノイズ実効値 v_q,rms、フルスケール正弦波での理想 SNR。

$$\text{SNR}_{sig}=20\log_{10}\!\frac{V_{sig}/\sqrt{2}}{v_{q,rms}},\quad G_{OSR}=10\log_{10}\!\frac{f_{s}}{2\,BW}$$

入力振幅 V_sig の信号 SNR と、オーバーサンプリングによる処理利得 G_OSR。f_s/(2·BW) が 1 を超えれば残りはディジタルフィルタで除去できる。

$$\text{ENOB}=\frac{\text{SNR}_{sig}-1.76}{6.02}\ [\text{bits}]$$

有効ビット数。実測 SNR を「理想 N ビット相当」に換算した値。ディザは小信号の量子化歪みを線形化する古典技法。

ADCの量子化ノイズとは

🙋
A/D 変換器って、要するに電圧を数値にする部品ですよね?でも「量子化ノイズ」っていう言葉が出てくるのがよく分かりません。電気的なノイズじゃなくて?
🎓
いいところに引っかかったね。これは熱雑音みたいな「物理的に混ざる」ノイズじゃなくて、もっと根本的なやつ。ADC は連続的なアナログ電圧を 2^N 個の符号にしか割り当てられないから、必ず「一番近い符号にまるめる」必要がある。例えば 16 ビットなら符号は 65536 個。フルスケール 5 V なら 1 段が 5/65536 ≈ 76 µV。この間にある電圧は全部同じ符号に丸められてしまう。この「丸め誤差」が時間とともにバラつくと、出力に乗ったノイズみたいに見える。これが量子化ノイズだよ。
🙋
なるほど、避けようがないノイズなんですね。でも左で「ビット数 N」を上げると SNR がぐんぐん上がりますよね。1 ビット増えると 6 dB 増えるみたいなんですが、これって有名な式なんですか?
🎓
そう、SNR = 6.02·N + 1.76 dB ってやつだ。電子工学の世界ではめちゃくちゃ有名な式で、ADC の「理想性能の限界」を表す。導出はちょっとだけ計算が要るんだけど、量子化誤差が ±Q/2 で一様分布だと仮定すると実効値は Q/√12、フルスケール正弦波の実効値は (V_FS/2)/√2、その比を dB にすると 6.02N+1.76 にきれいにまとまる。1 ビット増やすと SNR が 6 dB(パワー比で 4 倍)改善するから、16 ビットなら 98 dB、24 ビットなら 146 dB の理想 SNR。ただし実際の 24 ビット ADC は熱雑音や回路ノイズで頭打ちになって、ENOB は 21 ビットくらいが限界。
🙋
右下のグラフで「オーバーサンプリング比」を上げると総合 SNR がさらに増えていきます。ビット数を増やしてないのに、なんで SNR が上がるんですか?
🎓
これがオーバーサンプリングのおいしいトリックだ。量子化ノイズの総パワーは Q²/12 で固定なんだけど、それが 0 〜 f_s/2 の帯域に一様に広がってる。f_s を信号帯域 BW のずっと上に取れば、信号帯域内に残るノイズは比率で BW/(f_s/2)。残りはディジタル LPF で削れる。だから処理利得は 10·log10(f_s/2BW) dB。4 倍オーバーサンプリングで +6 dB、つまり 1 ビット分の改善。ΔΣ(デルタシグマ)ADC はこれを 256 倍とか 1024 倍まで効かせて、ノイズ整形(ノイズシェーピング)も組み合わせて 24 ビット相当の SNR を 1 ビット量子化器から作っちゃう。
🙋
ENOB って何なんですか?ビット数 N とは別のもの?
🎓
ENOB = Effective Number Of Bits、有効ビット数。データシートに「16 bit」と書いてあっても、実測 SNR が理想の 98 dB に届かないことが多い。例えば実測 SNR が 90 dB なら、ENOB = (90 − 1.76)/6.02 ≈ 14.7 ビット。つまり下位 1.3 ビットはノイズに埋もれてて、実用上は 14.7 ビット ADC として扱うべき。ADC を選定するときは公称分解能じゃなくて、データシートの SNR や SINAD(信号と「ノイズ+歪み」の比)から ENOB を見るのが鉄則だよ。
🙋
「ディザ」って言葉も理論欄に出てきました。わざとノイズを足すと精度が良くなるって、なんだか矛盾してませんか?
🎓
直感に反するけど本当の話。量子化器は小信号に対して「ピタッと同じ符号に張り付く」非線形要素になるんだけど、Q 程度の小さなノイズを足してから量子化すると、入力に対する平均的な出力が滑らかな直線に化ける。瞬間値のノイズは増えるけど、平均化すれば DC バイアスや調波歪みが激減する。オーディオ DAC やΔΣ ADC、画像処理の誤差拡散ディザなど、低レベル信号の品質を担保したい場面で広く使われてる、地味だけど重要なテクニックだよ。

よくある質問

N ビット ADC ではフルスケール電圧 V_FS を 2^N 個の符号に等間隔で割り当てるので、1 ステップの幅は Q = V_FS/2^N。量子化誤差は ±Q/2 の範囲に一様分布すると仮定でき、その実効値は Q/√12 になります。一方フルスケール正弦波(振幅 V_FS/2)の実効値は (V_FS/2)/√2。両者の比を dB で表すと SNR = 20·log10((V_FS/2)/√2 / (V_FS/2^N/√12)) = 20·log10(2^N · √(3/2)) = 6.02·N + 1.76 dB と整理できます。1 ビット増やすごとに 6 dB SNR が改善するのはこの式の帰結です。
量子化ノイズの総パワーはサンプリング周波数によらず Q²/12 で一定ですが、それが 0 〜 f_s/2 の帯域に一様に広がります。サンプリング周波数 f_s を信号帯域 BW の何倍も大きく取ると、ノイズパワーのうち信号帯域に残るのは BW/(f_s/2) の割合だけ。残りはディジタルフィルタで除去できます。これで SNR は 10·log10(f_s/(2·BW)) dB 改善し、これを処理利得(プロセシングゲイン)と呼びます。4 倍オーバーサンプリングで +6 dB(1 ビット分)、ΔΣ ADC は数十〜数百倍のオーバーサンプリングでさらに大きなゲインを稼ぎます。
ENOB は ADC の実測 SNR を「理想 N ビット相当」に換算した値で、ENOB = (SNR_measured − 1.76)/6.02 [bits] で定義されます。例えば 16 ビット ADC でも、回路の熱雑音・歪み・クロックジッタ・電源ノイズなどで実測 SNR が 90 dB しか出なければ ENOB ≈ 14.7 ビットとなり、下位 1.3 ビットは事実上ノイズに埋もれています。データシートの「分解能 16 ビット」はあくまで符号の細かさで、ENOB こそが実用上の有効分解能。高精度 ADC を選ぶときは公称ビット数ではなく ENOB(または SNR・SINAD)で比較してください。
意外ですが、量子化前に少量のランダムノイズ(典型的には Q 程度の振幅)を意図的に加えると、小信号での量子化器の振る舞いが「平均的に線形化」され、入力に対する出力の DC バイアスや調波歪みが大きく減ります。瞬間値のノイズは増えますが、複数サンプルの平均をとると、ディザがない場合の段差状の歪み(量子化歪み)が消え、純粋なホワイトノイズに化けます。オーディオ DAC、計測機器、ΔΣ 変換器、画像処理(誤差拡散ディザ)など、低レベル信号の品質が大切な場面で広く使われている古典的技法です。

実世界での応用

オーディオ機器(CD・ハイレゾ・配信):CD の規格は 16 ビット/44.1 kHz で SNR は理想 98 dB。これは可聴帯域の最大音と最小音の比に対して十分大きく、聴感上量子化ノイズが気にならない設計です。ハイレゾの 24 ビット/96 kHz では 146 dB の理論 SNR を持ち、編集マージンを大きく取れる一方、実機の ENOB は熱雑音で 20〜21 ビットに頭打ちになります。配信側では低レベル信号にディザを加えて 16 ビット化することで、フェードアウト時の量子化歪みを実質聞こえなくする処理が標準です。

計測機器(オシロスコープ・データロガー・LCRメータ):低周波の高精度計測には 16〜24 ビットΔΣ ADC、高速波形観測には 8〜12 ビットのパイプライン/フラッシュ ADC が使われます。例えば 1 GS/s のオシロは多くが 8 ビット ADC で、目盛分解能は 256 段だけ。代わりにオーバーサンプリングと波形平均で実効分解能を上げます。逆に µV オーダーのひずみゲージ用ロガーは 24 ビットΔΣ で、信号帯域を 100 Hz に絞ることで 20 ビット以上の ENOB を確保しています。

通信機器(無線受信機・SDR・5G 基地局):受信機の ADC は弱い信号と強い妨害波を同時に取り込む必要があり、ダイナミックレンジ(≈SNR + α)が命です。基地局では 14〜16 ビット・数百 MHz サンプリングの高速 ADC が使われ、デジタルダウンコンバージョンで処理利得を稼いで微弱信号を取り出します。ソフトウェア無線(SDR)でも、ADC のビット数とサンプリング周波数の積(FoM)が受信機性能を直接決めます。

制御・センサ計装:サーボモータの電流検出には 12〜16 ビット、温度センサ・圧力センサのフロントエンドには 16〜24 ビットΔΣ ADC が使われます。設計時にはセンサのフルスケール出力に対して ADC レンジを合わせ、必要分解能(例えば 0.1 °C なら 10 ビット程度)から最低 ENOB を逆算してチップを選定します。本ツールのような計算を最初に行えば、過剰スペックの ADC を選んで BOM コストが膨らむのを防げます。

よくある誤解と注意点

最大の落とし穴が、「ビット数だけ見て ADC を選ぶ」こと。データシートに「24 bit」とあっても、ENOB が 18 ビットなら実質 18 ビット ADC です。特に高速 ADC では公称 16 ビットでも ENOB 12 ビットというものも珍しくありません。選定時は必ず SNR・SINAD・ENOB を入力周波数とサンプリングレートの条件付きで確認してください。本ツールは「理想 ADC の上限性能」を示すツールで、実機はこれより悪くなることはあっても良くなることは絶対にありません。

次に、「サンプリング周波数を上げれば SNR は無限に良くなる」と思い込むこと。理論上は確かに 10·log10(f_s/2BW) dB ずつ改善しますが、実機の ADC は高速サンプリング時にアパーチャジッタ(サンプリングタイミングのばらつき)が支配的ノイズになり、ある周波数以上では SNR が頭打ち、むしろ悪化することもあります。アパーチャジッタ t_j[s] による SNR 上限は 20·log10(1/(2π·f_in·t_j)) で、例えば t_j=1 ps の優秀な ADC でも入力 100 MHz では SNR ≈ 64 dB が限界です。「速く・高分解能で・低ノイズ」を全部同時には実現できないトレードオフがあります。

最後に、「フルスケールに信号を合わせれば SNR が最大」と覚えていても、入力が ADC レンジを超えるとクリッピングして急激に歪みが増えること。通常は最大入力をフルスケールの -3〜-6 dBFS にセットして、突発的なピークでもクリップしないバックオフを取ります。すると信号 SNR は数 dB 下がりますが、クリップによる歪み(THD)の悪化を避けられます。本ツールで V_sig を V_FS に近づけると「信号 SNR ≒ フルスケール SNR」に近づくのが見え、逆に小信号にすると SNR がどんどん下がるのも分かります。これは ADC の現実をよく表していて、用途に応じた「最適入力レベル」の設計が腕の見せどころです。

使い方ガイド

  1. ビット数(4~16bit)をbitsNumで指定し、フルスケール電圧範囲(0.1~10V)をbitsRangeで設定します
  2. 入力信号の周波数fsNumと振幅ampNumを入力し、サンプリング周波数fsampNumを設定してシミュレーションを実行します
  3. 量子化ステップQと量子化ノイズ実効値v_nから、フルスケールSNR=6.02N+1.76 dBと実際の信号SNRを比較確認します
  4. オーバーサンプリングゲイン(fsamp/2f信号比に応じた改善値)とENOB(有効ビット数)を確認し、ADCの性能評価を行います

具体的な計算例

12bitのADC、フルスケール5V、入力信号1kHz・1V振幅、サンプリング周波数100kHzの場合:量子化ステップQ=5V/4096=1.22mV(1220µV)、量子化ノイズ実効値v_n=Q/√12≈352µV、フルスケールSNR=6.02×12+1.76=74dB、オーバーサンプリングゲイン=10log₁₀(100kHz/2kHz)≈23.98dB、信号SNR≈74-3dB=71dBに改善、ENOB≈(71-1.76)/6.02≈11.5bitと計算されます

実務での注意点

  1. センサ出力がフルスケール未満の場合、有効SNRは低下します。例えば100mV信号を5Vレンジで測定すると-34dB減衰するため、低レンジ設定が重要です
  2. オーバーサンプリングで量子化ノイズを低減できますが、単位時間あたりのデータ処理負荷と消費電力増加を考慮してください
  3. 実際の回路ではアナログフロントエンドのノイズが加算されるため、シミュレーション値より実測SNRが低くなります
  4. 時間変化信号の場合、ナイキスト周波数(fsamp/2)以上の成分はエイリアシングで折り返されるため、アンチエイリアスフィルタが必須です