要約
A/D コンバータの動的性能を表すためには、様々な指標が用いられます。代表的なものとしては、S/N比(SNR:Signal to Noise Ratio)、信号/ノイズ+歪み(SINAD)、THD(全高調波歪み)、有効ビット数(ENOB)が挙げられます。これらのうち、ENOB の値は、SNR と THD の既知の値を使って計算することができます。
はじめに
ENOBは、ADCの動的性能を表す指標の1つです。本稿では、SNR、SINAD、THDの各指標とENOBの関係について説明します。また、分解能が24ビットのデルタ・シグマADC「MAX11216」を具体例として取り上げ、ENOBの計算値と実測値を比較してみます。
各種の指標の関係
まずは、SNR、SINAD、THD、ENOBの関係について押さえておきましょう。それに向けて、以下では各指標について詳しく説明することにします。
SNR
ADCの動的性能を評価する際には、特定の周波数の信号(基本波)を対象として、ノイズや歪みとの関係を数値化します。SNRは、その基本波の出力レベル(PS)とノイズの出力レベル(PN)の比です。数学的には、以下の式(1)によって表されます。
SNR = 10log(PS/PN) = 10logPS – 10logPN (式1)
また、理想的なADCを想定した場合、そのSNRの理論値は分解能を使用することで表現できます。具体的には、SNR = (6.02×N + 1.76)〔dB〕という式が成り立ちます。但し、現実のADCのSNRはこの式によって一律に決まるわけではありません。例えば、デルタ・シグマADCであるMAX11216は、プログラマブルなデジタル・フィルタ(ローパス・フィルタ)を内蔵しています。このタイプの製品の場合、フィルタの特性を調整することで、SNRを高められます。具体的には、フィルタの帯域幅を狭くしてフィルタの減衰量を増大させると、SNRの値は向上します。なお、フィルタの帯域幅を広げてフィルタの減衰量を抑えると、データ・レートを上げられます。
図1に示したのは、MAX11216から出力されるデジタル・データを高速フーリエ変換(FFT)によって処理した結果です。この例では、連続モードでの動作、sincフィルタを使用、バッファを使用という条件で同ADCを動作させています。上述したように、SNRは基本波の出力レベル(PS)とノイズの出力レベル(PN)の比として求められます。この例の場合、データ・レートが8kspsという条件におけるSNRは110.4dBとなりました。なお、FFTは周波数解析を行うために用いられる手法です。A/D変換によって得られたデータに対してFFTの処理を適用することで、基本波とその高調波に加え、非高調波のスプリアス、ノイズ成分の振幅を算出できます。
図1. MAX11216の出力のFFT結果(その1)。SNRは110.4dBとなっています。サンプル・レートが8ksps、fIN = 1kHz、VAVDD = 3.6V、VAVSS = 0V、VREF = 3.6V、TA = 25℃、外部クロックの周波数が8.192MHzという条件で取得しました。
SINAD
SINADは、基本波の出力レベル(PS)と、ノイズと歪みの出力レベルを合算した値(PN+D)の比です。数学的には以下の式で表されます。
SINAD = 10log[PS/(PN+D)] = 10logPS – 10logPN+D (式2)
歪みには、高調波とそれ以外のスプリアスが含まれます。図2に示すように、MAX11216のSINADは、データ・レートが8kspsという条件において109.4dBとなっています。なお、図1の場合と同じく、この結果は連続モード、sincフィルタを使用、バッファを使用という条件で取得しました。
図2. MAX11216の出力のFFT結果(その2)。SINADの値は109.4dBとなっています。サンプル・レートが8ksps、fIN = 1kHz、VAVDD = 3.6V、VAVSS = 0V、VREF = 3.6V、TA = 25℃、外部クロックの周波数が8.192MHzという条件で取得しました。
THD
THDは、基本波の出力レベルと、その高調波の出力レベルの合算値(ノイズを除く)の比です。一般的には、歪みの大部分は最初の5つの高調波成分によって占められます。そのため、以下に示すように、THDの計算には最初の5つの高調波成分だけを使用します。
THD (dB) = 10log(PS) – 10log(P2 + P3 + P4 + P5 + P6) (式3)
ここで、PS、P2~P6の単位はmWです。
例えば、PS = P1 = 1mW、P2 = 0.1nW、P3 = 0.01nW、P4 = 0.001nW、P5 = 0.0001nW、P6 = 0.00001nWである場合、THDの値は以下のように計算します。
THD(dB) = 10log(1) – 10log[(0.1 + 0.01 + 0.001 + 0.0001 + 0.00001) × 10−6]
THD(dB) = −69.5074dB
仮に6次高調波(P6)の値が0.00002nWであった場合、THDの値は-69.5070dBに増加します。ただ、その増分はごくわずかであることがわかります。.
図3に示すように、基本波の周波数が1kHz、サンプル・レートが8kspsという条件において、MAX11216のTHDは-116.3dBとなっています。なお、図1、図2の場合と同じく、この結果は連続モード、sincフィルタを使用、バッファを使用という条件で取得しました。
図3. MAX11216の出力のFFT結果(その3)。THDの値は116.3dBとなっています。サンプル・レートが8ksps、fIN = 1kHz、VAVDD = 3.6V、VAVSS = 0V、VREF = 3.6V、TA = 25℃、外部クロックの周波数が8.192MHzという条件で取得しました。
ENOB
ENOBは、ノイズと歪みの両方を考慮に入れた事実上の分解能に相当します。数学的には以下の式で表されます。
ENOB = (SINAD – 1.76)/6.02 (式4)
ENOBをSNRとTHDで表したい場合、以下の手順に従って計算を行います。
- 以下のように式(1)と式(2)を使用することで、式(5)を導出します。
SINAD = 10log[PS/(PN+D)] = 10logPS – 10logPN+D
SNR = 10log (PS/PN)
log (PS/PN) = SNR/10
PS/PN = 10SNR/10
PN/PS = 10−SNR/10 (式5) - 式(5)は、以下のように表すこともできます。
PD/PS = 10−THD/10 (式6) - 式(5)と式(6)を加算すると、以下の式(7)が得られます。
(PN+PD)/PS = 10−SNR/10 + 10−THD/10
PS/(PN+D) = 1/(10−SNR/10 + 10−THD/10) = (10−SNR/10 + 10-THD/10)−1 (式7) - 式(7)を式(2)に代入すると、式(8)が得られます。
SINAD = 10log(10−SNR/10 + 10−THD/10)−1
= −10log(10−SNR/10 + 10-THD/10) (式8) - 最後に式(8)を式(4)に代入すると、次のようにSNRとTHDでENOBを表すことができます。
ENOB = {[−10log(10−SNR/10 + 10−THD/10)] – 1.76}/6.02 (式9)
MAX11216のENOB
表1は、MAX11216のSNRのシミュレーション結果をまとめたものです。各シミュレーションは、データ・レートとPGAのゲインを変更して実施しました。また、デジタル・フィルタはsincフィルタとして構成しています。それ以外の条件は、VIN = 0V、VAVDD = 3.6V、VAVSS = 0V、VREF = 3.6V、TA = 25℃です。
データ・レート〔sps〕(sps) | バッファ | ゲイン:1 | ゲイン:8 | ゲイン:128 |
---|---|---|---|---|
低ノイズ | 低ノイズ | 低ノイズ | ||
1.9 | 139.8 | 136.5 | 140.5 | 128 |
3.9 | 139.4 | 135.3 | 139.2 | 125.4 |
7.8 | 139.2 | 134.7 | 137.9 | 122.5 |
31.2 | 135.8 | 132.1 | 134.3 | 116.5 |
62.5 | 133.8 | 129.4 | 131.5 | 114 |
500 | 125.8 | 121.2 | 123.3 | 104.8 |
1000 | 123.1 | 118.5 | 120.4 | 101.8 |
4000 | 117.7 | 113.1 | 115.1 | 96.5 |
16000 | 114.6 | 109.9 | 112 | 93.4 |
64000 | 107.8 | 103.2 | 105.8 | 88.2 |
表2は、ENOBの値についてまとめたものです。各値は、SNRの値を使用し、式(9)によって算出しました。その際、THDの値は120dBとしています。これは、MAX11216のデータシートでTHDの代表値として記されている値です。それ以外の条件は、VIN = 0V、VAVDD = 3.6V、VAVSS = 0V、VREF = 3.6V、TA = 25℃です。
データ・レート〔sps〕 | ENOB | |||
---|---|---|---|---|
バッファ | ゲイン:1 低ノイズ | ゲイン:8 低ノイズ | ゲイン:128 低ノイズ | |
1.9 | 19.6336811 | 19.62522357 | 19.63479484 | 19.53506307 |
3.9 | 19.6329602 | 19.62021353 | 19.63257437 | 19.45838575 |
7.8 | 19.63257437 | 19.61715616 | 19.62958982 | 19.3193091 |
31.2 | 19.62246601 | 19.59803115 | 19.61487866 | 18.79339941 |
62.5 | 19.6117322 | 19.56278581 | 19.59185023 | 18.4828525 |
500 | 19.4727366 | 19.23395095 | 19.3643726 | 17.09481505 |
1000 | 19.35361828 | 19.00585701 | 19.17360407 | 16.60710288 |
4000 | 18.92511435 | 18.36098144 | 18.62499223 | 15.73432624 |
16000 | 18.56137578 | 17.89619095 | 18.20615941 | 15.22101479 |
64000 | 17.57240744 | 16.83558105 | 17.25547296 | 14.35832751 |
表3は、ENOBの実測結果をまとめたものです。
データ・レート〔sps〕 | バッファ | ゲイン:1 | ゲイン:8 | ゲイン:128 |
---|---|---|---|---|
低ノイズ | 低ノイズ | 低ノイズ | ||
1.9 | 24.6 | 25.2 | 24.8 | 24.5 |
3.9 | 23.4 | 24.7 | 23.9 | 24.4 |
7.8 | 23.6 | 23.4 | 23.3 | 23.1 |
31.2 | 22.3 | 22.3 | 22.1 | 22 |
62.5 | 21.6 | 21.7 | 21.5 | 21.4 |
500 | 20.2 | 20.1 | 20.2 | 20 |
1000 | 19.7 | 19.6 | 19.5 | 19.3 |
4000 | 18.8 | 18.8 | 18.7 | 18.5 |
16000 | 18.3 | 18.8 | 18.5 | 18.6 |
64000 | 17.2 | 17.3 | 17.3 | 17.3 |
図4、図5、図6、図7は、ENOBの実測値と計算値を比較したものです。それぞれ、バッファを使用、ゲインが1、ゲインが8、ゲインが128の場合に対応しています。
図4. MAX11216のENOBの実測値と計算値(その1)。バッファを使用した場合の結果です。連続モード、sincフィルタを使用という条件で比較しています。
図5. MAX11216のENOBの実測値と計算値(その2)。ゲインが1の場合の結果です。連続モード、sincフィルタを使用という条件で比較しています。
図6. MAX11216のENOBの実測値と計算値(その3)。ゲインが8の場合の結果です。連続モード、sincフィルタを使用という条件で比較しています。
図7. MAX11216のENOBの実測値と計算値(その4)。ゲインが128の場合の結果です。連続モード、sincフィルタを使用という条件で比較しています。
図8は、ENOBの実測値とデータ・レートの関係を示したものです。バッファを使用、ゲインが1、ゲインが8、ゲインが128の場合の結果を比較しています。
図8. MAX11216のENOBの実測値とデータ・レートの関係。バッファを使用、ゲインが1、ゲインが8、ゲインが128の場合の結果を比較しています。
まとめ
SNR、SINAD、THD、ENOBは、ADCの動的性能を表す一般的な指標です。ENOBの値は、SNRとTHDの値を使用することで、正確かつ簡単に計算できます。本稿では、MAX11216のENOBの値を実測し、その結果が理論式に基づくENOBの計算値とほぼ一致することを確認しました。また、プログラマブルなデジタル・フィルタを内蔵するデルタ・シグマADCでは、フィルタの減衰量を増大させるとSNRとENOBが向上します。そのことも、本稿で示した実測結果から確認できました。
この記事に関して
製品
製品カテゴリ
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}