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 線が細かったので線を太くしてみました。