A/D,D/Aの量子化の単位は、 2^n ? 2^n-1?

8ビットのA/Dコンバータの量子化の単位はどのように計算すればいいのでしょう?

昔あった「マイコン応用システムエンジニア試験」などでは、
LSB=Vref/255 とするのが常識となっていて(選択肢の答えが255で割った値だったので)
実際問題、256で割っても255で割っても、その差は量子化誤差未満なので、「2^n-1(=255)」ということで割り切って試験に臨みましたけれども
よくよく考えると、2^n(=256)で割ったほうが正解なのかなーと思っています。

D/Aコンバータで考えると最大出力は「Vref-1LSB」なので、
A/Dに内蔵されているD/Aコンバータの出力最大値Vref-1LSB以上の電圧をA/Dに入力した時
(ADの中のコンパレータで入力値とD/A値が比較されて)最大値255(@8bitA/D)が得られます。
もっと単純に、1ビットのA/Dコンバータならば、Vrefの1/2以上の時に1になりますから、2^nで割らないといけなくなりそうです。

ps

と書きつつ、1ビットのA/Dの場合、Vref=1Vなら分解能をLSB=1Vとしないと、全ての入力において、誤差0.5LSBを満足させられないなーとも思えてきました。やっぱり2^n-1が正解?

  • さらに謎は深まるばかり!

    すべての入力電圧(0~Vref)において、入力値と測定結果の差が量子化誤差±0.5LSB以内に収まるようにLSBの大きさを決定するという視点で見ると

    Vref=1Vとして、
    1ビットADの場合は、LSB=1V/(2^1-1)=1V   ex)ANI=0.5LSB=0.5V時 ADCR=1(1V) 変換誤差+0.5V=+0.5LSB
    2ビットADの場合は、LSB=1V/(2^2-2)=0.5V   ex)ANI=0.5LSB=0.25V時 ADCR=1(0.5V) 変換誤差+0.25V=+0.5LSB
    3ビットADの場合は、LSB=1V/(2^3-4)=0.25V  ex)ANI=0.5LSB=0.125V時 ADCR=1(0.25V) 変換誤差+0.125V=+0.5LSB
    ・・・・・・・
    8ビットADの場合は、LSB=1V/(2^8-128)=0.0078125V ex)ANI=0.5LSB=0.00390625V時 ADCR=1(0.00390625V) 変換誤差+0.00390625V=+0.5LSB

    この考え方だと、LSB=Vref/(2^n-2^(n-1))=Vref/(2^(n-1))ということになって、
    (2^n)でも(2^n)-1でもなく2^(n-1)という想定外のオチになりそうです。

    さて、ワケが分からなくなってきたので寝よっと。

  • 1ビットと2ビットADコンバータのアナログ入力-デジタル出力の特性をプロットしてみました。

    グラフを見る限り、やっぱりLSB=Vref/2^n ですね!

    マイコンのUMに書いてあるグラフは0オフセットを1/2LSB嵩上げして表記しているので、
    デジタル最小値のところの幅が0.5LSB幅で、最大値のところの幅が1.5LSB分とちょっといびつになっていますけども、
    イメージを見せるのにはいいのかもしれませんね。

    一応、分かりやすくするため、A/Dの中のコンパレータが理想的な特性を持っているという前提です。

    PS
    線が細かったので線を太くしてみました。