ADCの分解能とLSBステップサイズの計算
アナログ・デジタルの境界において、アナログ・デジタル・コンバータ(ADC)の分解能を正しく評価することは、高精度な信号処理システムを設計するための第一歩です。ADC分解能計算ツールは、コンバータのビット数と基準電圧から、LSB(Least Significant Bit)ステップサイズ、量子化誤差、および理想的な信号対雑音比(SNR)を算出するオンラインツールです。
本ツールは、ユニポーラ(単極)およびバイポーラ(双極)の両方の入力範囲に対応しており、任意の測定点における電圧とデジタルコードの相互変換や、目標とする電圧変化を検出するために必要な最小ビット数の算出を瞬時に行います。
コンバータの基本特性とノイズ性能の算出
ツールに「分解能 N (ビット)」と「基準電圧」を入力すると、以下のパラメータが自動的に計算され、「ステップサイズとノイズ」エリアに表示されます。
- LSBステップサイズ: 1 LSBあたりの電圧幅です。フルスケールに対する割合(%)および ppm(Parts Per Million)単位のサブラベルも同時に表示されます。
- 量子化レベル数: コンバータが表現可能な不連続な値の総数(2^N)です。
- 最大コード: デジタル出力の最大値(2^N − 1)です。
- フルスケール範囲 (FSR): コンバータが測定可能な全電圧スパンです。
- 最大量子化誤差 (±½ LSB): 理想的な量子化器において発生する、理論上の最大量子化誤差です。
- 量子化ノイズ (rms): 二乗平均平方根(rms)で表される理論上の量子化ノイズ電圧です。
- 理想SNR (フルスケール正弦波): ナイキスト帯域幅における、フルスケール正弦波入力時の理論上のSN比上限値(デシベル単位)です。
- ダイナミックレンジ: コンバータが識別可能な最大信号と最小信号の理論比(デシベル単位)です。
例えば、ツールに「12ビット、3.3 V基準電圧、ユニポーラ」を入力した場合、量子化レベル数は 4,096、最大コードは 4,095 となり、LSBステップサイズは約 805.6641 µV と計算されます。このときの最大量子化誤差は ±402.832 µV、量子化ノイズは約 232.5752 µV rms、理想SNRは約 74.01 dB、ダイナミックレンジは約 72.25 dB となります。
測定点における電圧とコードの相互変換
任意の「測定点 (任意)」を入力することで、特定の電圧値またはデジタルコードにおける詳細な挙動を検証できます。
電圧からコードへの変換(電圧 → コード)
入力電圧に対応するデジタル出力コード、およびその2進数・16進数表現を算出します。また、そのコードにマッピングされる具体的な「このコードに対応する入力範囲」と、丸め処理によって生じる「量子化誤差」も表示されます。 12ビット、3.3 Vユニポーラの例で 1.65 V を入力すると、ちょうどミッドスケール(中央値)となり、量子化誤差ゼロで出力コード 2,048(2進数: 1000 0000 0000、16進数: 0x800)にマッピングされます。
コードから電圧への変換(コード → 電圧)
指定したデジタルコードが表す正確なアナログ電圧(コード電圧)を逆算します。
入力制限とクリッピング
入力電圧がコンバータの測定可能範囲を超えた場合、ツールは以下の警告を表示し、クリップされた状態の誤差を算出します。
- 上限超過時: 「入力が上限レールを超えています。出力は最大コードで飽和しており、表示されている誤差は実際の残留誤差です(±½ LSB の範囲は適用されません)。」
- 下限未満時: 「入力が下限レールを下回っています。出力はコード 0 で飽和しており、表示されている誤差は実際の残留誤差です(±½ LSB の範囲は適用されません)。」
必要なビット数の算出
「分解したい最小変化量」に目標とする電圧ステップを入力すると、その変化を識別するために必要な最小限のビット数が算出されます。
- 現在のビット幅で満たしている場合: 「
‹step›を分解するには少なくとも‹bits›ビット必要です — 現在の‹current›ビットコンバーターで対応可能です。」 - 不足している場合: 「
‹step›を分解するには少なくとも‹bits›ビット必要です — 現在の‹current›ビットコンバーターでは‹lsb›までしか分解できません。」
計算式と代入プロセス
ツールは、以下の数式に基づいて計算を行い、ユーザーが入力した数値を代入したプロセスを「数式と代入プロセス」として詳細に展開します。
- フルスケール範囲 (FSR):
- ユニポーラ: FSR = Vref
- バイポーラ: FSR = 2 × Vref
- LSBステップサイズ: LSB = FSR ÷ 2^N
- 最大量子化誤差: ±LSB ÷ 2
- 量子化ノイズ (rms): LSB ÷ √12
- 理想SNR (フルスケール正弦波): SNR = 6.02 × N + 1.76 dB
- ダイナミックレンジ: 6.02 × N dB
- デジタルコードへの変換:
- ユニポーラ: コード = round(Vin ÷ LSB)
- バイポーラ: コード = round((Vin + Vref) ÷ LSB)
- コード電圧への変換:
- ユニポーラ: V = コード × LSB
- バイポーラ: V = コード × LSB − Vref
- 量子化誤差:
‹codeVoltage›−‹vin› - 必要分解能の算出: N ≥ log₂(FSR ÷ step) (小数点以下切り上げ)
理想モデルと実機における制限事項
本ツールが提供するすべての計算結果は、理想的な量子化器モデルに基づいています。実際のADC回路では、積分非直線性誤差(INL)、微分非直線性誤差(DNL)、オフセット誤差、ゲイン誤差、温度ドリフト、および基準電圧自体のノイズや許容誤差が各ステップに影響を与えます。そのため、ツールで算出される理想SNRやダイナミックレンジ、±½ LSBの誤差境界は、実機における測定値ではなく、理論上の性能上限を示すものです。実際のADCの有効ビット数(ENOB)は、通常この公称分解能を下回ります。また、サンプリングレート、アンチエイリアスフィルタ、フロントエンドのセトリング時間などはこのモデルには含まれません。
プライバシーとデータ処理について
本ツールでのデータ処理はすべてローカル環境で行われます。入力されたすべての数値はこのブラウザ内にとどまり、外部に送信されることはありません。
よくある質問 (FAQ)
12ビットの分解能は、12ビットの精度を意味しますか?
いいえ。分解能はコードの幅、つまり入力範囲がどれだけ細かく分割されているかを示すものに過ぎません。実際の精度は、コンバーターの INL(積分非直線性誤差)やオフセット/ゲイン誤差、基準電圧の許容誤差やノイズ、および周辺回路によって制限されます。そのため、データシートには ENOB(有効ビット数)が記載されています。例えば、12ビットの SAR ADC の有効ビット数は通常 10–11 ビット程度です。ここで示される 74 dB の理想 SNR は理論上の上限であり、実際の12ビットコンバーターがこの値に達することはありません。
入力範囲が ±Vref(バイポーラ)になると、計算はどのように変わりますか?
入力範囲(スパン)が 2 × Vref と2倍に広がるため、同じコンバーターであっても分解するステップ幅は2倍(LSB = 2 × Vref ÷ 2^N)になります。コードは負の電源レールから正の電源レールまで対応し、コード 0 は −Vref、中間コード 2^(N−1) は 0 V、最大コードは +Vref より1ステップ低い値になります。上記の入力範囲でバイポーラを選択すると、0 V がちょうど中間コードにマッピングされます。
2^N で割る情報源と、2^N − 1 で割る情報源があるのはなぜですか?
これらは同じコンバーターに対する2つの異なるモデルです。データシートや古典的な量子化理論では LSB = FSR ÷ 2^N と定義され、最初のコード遷移は半ステップ(0.5 LSB)の位置にあります。当ページではこのモデルを採用しています。一方、Vref ÷ (2^N − 1) という形式は、最大コードをちょうど Vref にマッピングするもので、マイコンのチュートリアルなどでよく見られます。12ビットの場合、両者の差は約 0.02% であり、実際の基準電圧の許容誤差よりもはるかに小さいですが、異なる情報源の間で数値を確認する際にはこれらを混同しないよう注意してください。
ステップサイズが粗すぎる場合はどうすればよいですか?
信号にわずかなノイズが含まれている場合、オーバーサンプリングと平均化処理を行うことで分解能を向上させることができます。ノイズが白色かつ無相関であると仮定すると、4×(4倍)のサンプルを平均化すると有効ビット数が約1ビット向上し、16×(16倍)では2ビット向上します。ただし、完全にノイズがなく静止した信号では、単に同じコードが繰り返されるだけなのでこの効果は得られません。それ以上の分解能が必要な場合は、よりビット数の多いコンバーターに移行するか、プログラマブルゲインアンプ(PGA)段を追加して信号が入力範囲をより広く占めるようにしてください。