組み込み回路 18 · DAC の方式と内部回路

Chapter 18

DAC の方式と内部回路

この章がなぜ必要なのか——「PWM で十分」なのか、そうでないのかを判断するため.

DAC は ADC より単純だが、出力インピーダンスと整定時間という 固有の落とし穴がある。

この章で使う既出の用語(定義は各リンク先). オペアンプ(05 章)、スイッチ(05 章 2 節)、制御(06 章 6 節)、出力段(07 章 1 節)、RRO(08 章 6 節)、\(V_{DD}\)(11 章 3 節)、並列(11 章 2 節)、温度(11 章 3 節)、直列(11 章 2 節)、モード(15 章 9 節)、DMA(17 章 6 節)、レイテンシ(17 章 4 節)、簡単(17 章 3 節)、量子化雑音(17 章 3 節)

1. 基本

\[ V_{OUT} = V_{REF} \times \frac{D}{2^N} \]

\(D\) は入力コード。ADC の逆である。

主な用途

用途必要な特性
センサのオフセット調整・しきい値生成低速・中分解能でよい
可変電源・可変負荷の制御中速・整定時間が効く
波形生成(信号源)高速・グリッチが小さいこと
オーディオ高分解能・低歪み。速度は 48〜192 kSPS
通信の変調極めて高速(GSPS 級)
モータ制御の指令値中速・レイテンシが小さいこと

2. 抵抗ストリング型(電圧出力・MCU 内蔵の主流)

\(2^N\) 個の抵抗を直列に並べ、タップをスイッチで選ぶ。

抵抗ストリング型 DACVREFVOUTデコーダが 1 つだけ閉じる
直列抵抗のタップを選ぶだけなので、単調性が構造的に保証される。ただし出力インピーダンスが高い
性質理由
単調性が保証される直列抵抗のタップなので、コードが増えれば必ず電圧が上がる
DNL が良い隣接タップの差は 1 抵抗分
INL は抵抗のばらつき次第累積するので中央付近で最大
出力インピーダンスが高い抵抗ストリングそのもの。数十 kΩ
面積が \(2^N\) で増える12 bit で 4096 個。10〜12 bit が実用上限
グリッチが小さいスイッチが 1 個変わるだけ

「単調性が保証される」は地味に重要である.

フィードバックループの中で DAC を使う場合 (例: DAC で出力電圧を設定して、それを電源が追従する)、 コードを上げたのに電圧が下がる点があるとループが発振する。

R-2R 型はこれが保証されない。

出力インピーダンスの罠.

MCU 内蔵の抵抗ストリング DAC は、出力インピーダンスが数〜数十 kΩある。

\(R_{OUT} = 15\) kΩ の DAC に \(R_L = 15\) kΩ の負荷を繋ぐと、 出力電圧が半分になる。

対策: 必ずオペアンプでバッファする。

多くの MCU の DAC には 出力バッファの ON/OFF 設定がある。

「DAC で 0 V を出したいのに 0.2 V から下がらない」は バッファ ON のレール制限である。

3. R-2R 型

抵抗 2 種類だけで作れる、古典的で美しい構造。

R-2R ラダー2Rb32Rb22Rb12Rb0RRR出力へどの節点から右を見ても抵抗が R になるよう作られている
抵抗 2 種類だけで 2 進の重みが作れる。面積は N に比例するが、単調性は保証されない

なぜこれで 2 進の重み付けになるか

どの節点から右を見ても、抵抗が必ず \(R\) になるように作られている。

一番右端: \(2R \parallel 2R = R\) その左: \(R + R = 2R\)、これが \(2R\) と並列で再び \(R\) 以下同様に繰り返す。

したがって、各ビットから見た「出力への分圧比」は、 1 段左に行くごとに 1/2 になる。これが 2 進の重み。

性質内容
必要な抵抗値は 2 種類だけIC 内では比の精度が非常に高く作れる
面積が \(N\) に比例(\(2^N\) ではない)高分解能に向く
単調性が保証されないMSB の抵抗誤差が大きいとコードの飛びが起きる
MSB の精度が支配的12 bit で単調性を保つには MSB の抵抗が 0.012 % 精度で要る
グリッチが大きい後述
電流出力型が多い外部にオペアンプ(I-V 変換)が必要なことも

メジャーコードグリッチ

0111 1111 → 1000 0000 の遷移では、全ビットが同時に変わる。

各スイッチの切り替わりタイミングがわずかにずれると、 一瞬 1111 1111 や 0000 0000 が出力される。

メジャーコードグリッチ時間V_OUTヒゲ0111 1111 → 1000 0000 で全ビットが同時に変わる
各スイッチの切り替わりが少しずれるだけで、一瞬まったく違う値が出力される

グリッチエネルギー(nV·s)としてデータシートに載る。

対策内容
デグリッチャ(S/H)遷移中は前の値を保持する回路
セグメント化上位ビットを温度計コードにする(後述)
LPF帯域が許すなら最も簡単

4. 電流セル型(高速 DAC の主流)

同じ大きさの電流源を並べて、必要な数だけ足す。

電流セル型(セグメント化)IIIIII出力(電流を合計)全部同じ大きさの電流源。オンにした数だけ足される
温度計コードなら単調性もグリッチも構造的に解決する。上位を温度計、下位をバイナリにするのがセグメント化

温度計コード(値 \(n\) なら \(n\) 個 ON)を使うと:

性質内容
単調性が保証される増やせば必ず増える
グリッチが極小1 個ずつ増減するだけ
極めて高速電流の切り替えだけ
セル数が \(2^N\)12 bit で 4096 個。全部を温度計にはできない

セグメント化——実務的な妥協

上位ビットは温度計コード、下位ビットはバイナリ重みにする。

例: 12 bit を「上位 6 bit = 63 セル温度計 + 下位 6 bit = バイナリ」

現代の高速 DAC はほぼすべてセグメント化されている。

電流出力の扱い

高速 DAC は電流出力が多い。理由は:

\[ V_{OUT} = I_{OUT} \times R_{load} \]

負荷抵抗の精度がそのままゲイン精度になることに注意。

5. ΔΣ DAC(オーディオの主流)

ADC の逆をやる。

24 bit補間フィルタΔΣ 変調1 bit DACアナログ LPF出力1 bit なら出力が 2 点しかない=原理的に完全に線形
オーディオ DAC の構成。素子のマッチングに頼らずに 24 bit の線形性を得る
  1. 補間(アップサンプリング): 48 kHz → 6.1 MHz など
  2. ΔΣ 変調: 高分解能 → 低ビット。量子化雑音を高周波へ追いやる
  3. 低ビット DAC: 1 bit なら完全に線形(2 点しかないので直線を外しようがない)
  4. アナログ LPF: 高周波の雑音を落とす
性質内容
高分解能24 bit
線形性が極めて良い素子マッチングに依存しない
低速〜中速数百 kSPS まで
レイテンシがある補間フィルタの群遅延
アナログ LPF が必須高周波の整形雑音が乗っている

なぜ 1 bit DAC は完全に線形なのか.

出力が 0 と 1 の 2 点しかない。2 点を結ぶ線は必ず直線である。 だから「非直線性」という概念が存在しない。

多ビット(例: 5 レベル)にすると分解能効率は上がるが、 素子のばらつきが非直線性として現れる。 そこで DEM(Dynamic Element Matching) で 使う素子をランダムに入れ替え、誤差を雑音に変える。

6. PWM + フィルタ——DAC が要らないことも多い

組み込みで最もよく使われる「DAC」は、実は PWM である。

PWM 出力Rアナログ電圧CV_OUT = D × V_DD。リプルと整定時間は同じ RC が支配するので両立しない
組み込みで最もよく使われる「DAC」。実力は 8〜10 bit 程度で、電源精度がそのまま誤差になる

デューティ \(D\) の矩形波を LPF に通すと、平均値が出る:

\[ V_{OUT} = D \times V_{DD} \]

リプルと整定時間のトレードオフ

残留リプル(1 次 RC、\(f_{PWM} \gg f_c\) のとき):

\[ V_{ripple} \approx \frac{V_{DD}\,D(1-D)}{f_{PWM}\,RC} \]

最悪は \(D = 0.5\):

\[ V_{ripple,max} \approx \frac{V_{DD}}{4 f_{PWM} RC} \]

整定時間(\(N\) bit 精度):

\[ t_{settle} = RC \ln(2^{N+1}) \]

両立しない。 リプルを減らすには \(RC\) を大きくするが、 そうすると遅くなる。

具体例: \(V_{DD} = 3.3\) V、\(f_{PWM} = 100\) kHz、 リプルを 1 mV 以下にしたい:

\[ RC \geq \frac{3.3}{4 \times 10^5 \times 0.001} = 8.25\ \text{ms} \]

整定時間(10 bit 相当):

\[ t = 8.25\ \text{ms} \times \ln(2^{11}) = 8.25 \times 7.6 = 63\ \text{ms} \]

63 ms かかる。 これが許せるかどうかが判断基準。

改善策効果
PWM 周波数を上げる\(RC\) を小さくできる。分解能とのトレードオフ(後述)
2 次 RC にするリプルが大幅に減る。整定は少し遅くなる
アクティブフィルタオペアンプ 1 個で 2 次。バッファも兼ねる

PWM の分解能と周波数のトレードオフ.

タイマのクロックが \(f_{clk}\)、分解能 \(N\) bit なら:

\[ f_{PWM} = \frac{f_{clk}}{2^N} \]

\(f_{clk} = 100\) MHz、12 bit なら \(f_{PWM} = 24.4\) kHz。 16 bit なら 1.5 kHz まで落ちる(フィルタが極めて重くなる)。

高分解能と高速の両立が要るなら、素直に DAC IC を買うべきである。

PWM DAC の精度の限界

誤差要因内容
\(V_{DD}\) の精度出力は \(D \times V_{DD}\)。電源精度がそのまま乗る
出力ドライバの \(R_{DS(on)}\)H レベルが \(V_{DD}\) にならない。負荷電流で変わる
立ち上がり/立ち下がり時間の非対称実効デューティがずれる
タイマの分解能デューティが離散値

PWM DAC の実力は 8〜10 bit 程度と見るのが現実的である。

判断表: PWM か DAC IC か.

条件選択
8 bit 以下、応答は数十 ms でよいPWM
しきい値・オフセット調整PWM で十分
10 bit 以上の精度が要るDAC(MCU 内蔵で足りることも)
ms オーダの応答が要るDAC
波形を出したいDAC(内蔵 DAC + DMA + タイマ)
オーディオ専用 ΔΣ DAC(I2S)
電源電圧に依存しない絶対精度が要るDAC + 外部リファレンス

PWM から電圧を作る

PWM 周波数・デューティ・\(R\)・\(C\) を変えて、 出力波形、残留リプル、整定時間を見る。 「リプルを減らすと遅くなる」トレードオフを確認する。

7. 出力段と実務

出力バッファ

DAC の出力は、ほぼ必ずオペアンプでバッファする。

要求見るポイント
レール・ツー・レール出力0 V や \(V_{DD}\) 付近を出したい場合
整定時間DAC の更新レートに間に合うか。大信号ではスルーレートが律速(08 章)
容量負荷ケーブルを繋ぐなら直列抵抗が要る
オフセット電圧DAC の精度を殺さないか。12 bit・3.3 V なら 1 LSB = 806 µV
出力電流負荷を駆動できるか

整定時間の分解

DAC の「整定時間」は 3 つの合計である。

成分支配要因
ディジタル遅延インタフェース(SPI/I2C)の転送時間
DAC コアの整定スイッチと内部抵抗/容量
バッファの整定スルーレート + 小信号整定

見落としがち: インタフェース時間.

I2C(400 kHz)で 16 bit DAC を更新すると、 1 回あたり約 80 µs。更新レートは 12 kSPS が上限である。

波形を出したいなら SPI(数十 MHz)にする、 または MCU 内蔵 DAC + DMA を使う。

よくある失敗

失敗原因
出力電圧が低い負荷が DAC の出力インピーダンスと分圧している。バッファが要る
0 V が出ない出力バッファ ON のレール制限。バッファ OFF か RRO オペアンプ
ヒゲが出るメジャーコードグリッチ。LPF かデグリッチャ
波形が滑らかでない更新レート不足、またはインタフェースが律速
精度が出ない\(V_{REF}\) の精度、バッファのオフセット、負荷の影響
電源変動で出力が動く\(V_{DD}\) をリファレンスにしている
リセット時に想定外の電圧が出るパワーオン時のデフォルトコードを確認(ゼロスケールかミッドスケールか)
温度でずれるリファレンスのドリフト、または内部抵抗の温度係数

パワーオン時のデフォルト値は安全に効く.

DAC で「バルブの開度」や「電源の出力電圧」を制御している場合、 リセット直後に何が出るかは安全設計そのものである。

データシートを必ず確認し、必要なら外付けのプルダウンで規定する。

DAC 方式を比べる

抵抗ストリング/R-2R/電流セル/ΔΣ の構造・分解能・速度・ グリッチ・単調性を並べて見る。

まとめ

ポイント内容
基本式\(V_{OUT} = V_{REF}\,D/2^N\)
抵抗ストリング単調性が保証される。MCU 内蔵の主流。出力インピーダンスが高い
内蔵 DAC の罠必ずバッファする。バッファ ON だとレール付近が出せない
R-2R抵抗 2 種類で作れる。面積は \(N\) 比例。単調性は保証されない
メジャーコードグリッチ0111→1000 で全ビットが変わる。R-2R の弱点
電流セル温度計コードで単調性とグリッチを解決。高速 DAC の主流
セグメント化上位を温度計、下位をバイナリ。セル数を実用的に抑える
ΔΣ DACオーディオの主流。1 bit は原理的に完全線形
PWM DAC\(V_{OUT}=D\,V_{DD}\)。組み込みで最も使われる DAC
PWM の限界リプルと整定時間はトレードオフ。実力は 8〜10 bit
PWM の精度\(V_{DD}\) 精度・\(R_{DS(on)}\)・エッジの非対称が乗る
分解能と周波数\(f_{PWM} = f_{clk}/2^N\)。16 bit だと極端に遅くなる
整定時間インタフェース + コア + バッファ。I2C は律速になりやすい
安全パワーオン時のデフォルトコードを必ず確認する

ここまでで第 VI 部(データ変換)は終わり。 次章からは第 VII 部——外の世界とつなぐ インタフェースに入る。