Chapter 18
DAC の方式と内部回路
この章がなぜ必要なのか——「PWM で十分」なのか、そうでないのかを判断するため.
- 「アナログ電圧を出したいが、DAC を買うべきか PWM で済ますべきか」
- 「DAC の出力を負荷に繋いだら電圧が下がった」
- 「出力にヒゲ(グリッチ)が出る」
- 「オーディオ用と計測用の DAC は何が違うのか」
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. 基本
\(D\) は入力コード。ADC の逆である。
主な用途
| 用途 | 必要な特性 |
|---|---|
| センサのオフセット調整・しきい値生成 | 低速・中分解能でよい |
| 可変電源・可変負荷の制御 | 中速・整定時間が効く |
| 波形生成(信号源) | 高速・グリッチが小さいこと |
| オーディオ | 高分解能・低歪み。速度は 48〜192 kSPS |
| 通信の変調 | 極めて高速(GSPS 級) |
| モータ制御の指令値 | 中速・レイテンシが小さいこと |
2. 抵抗ストリング型(電圧出力・MCU 内蔵の主流)
\(2^N\) 個の抵抗を直列に並べ、タップをスイッチで選ぶ。
| 性質 | 理由 |
|---|---|
| 単調性が保証される | 直列抵抗のタップなので、コードが増えれば必ず電圧が上がる |
| 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 設定がある。
- バッファ ON: 低インピーダンス出力。ただし レール付近が出せない (レールまで 0.2 V 程度の余裕が要る)
- バッファ OFF: フルスイングできるが高インピーダンス
「DAC で 0 V を出したいのに 0.2 V から下がらない」は バッファ ON のレール制限である。
3. R-2R 型
抵抗 2 種類だけで作れる、古典的で美しい構造。
なぜこれで 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 が出力される。
グリッチエネルギー(nV·s)としてデータシートに載る。
| 対策 | 内容 |
|---|---|
| デグリッチャ(S/H) | 遷移中は前の値を保持する回路 |
| セグメント化 | 上位ビットを温度計コードにする(後述) |
| LPF | 帯域が許すなら最も簡単 |
4. 電流セル型(高速 DAC の主流)
同じ大きさの電流源を並べて、必要な数だけ足す。
温度計コード(値 \(n\) なら \(n\) 個 ON)を使うと:
| 性質 | 内容 |
|---|---|
| 単調性が保証される | 増やせば必ず増える |
| グリッチが極小 | 1 個ずつ増減するだけ |
| 極めて高速 | 電流の切り替えだけ |
| セル数が \(2^N\) | 12 bit で 4096 個。全部を温度計にはできない |
セグメント化——実務的な妥協
上位ビットは温度計コード、下位ビットはバイナリ重みにする。
例: 12 bit を「上位 6 bit = 63 セル温度計 + 下位 6 bit = バイナリ」
- セル数: 63 + 6 = 69 個(4096 個ではない)
- 主要な遷移では温度計部分が 1 個変わるだけ → グリッチが小さい
- 単調性も上位側で保証される
現代の高速 DAC はほぼすべてセグメント化されている。
電流出力の扱い
高速 DAC は電流出力が多い。理由は:
- 電圧出力にするとオペアンプの帯域が律速になる
- 電流のまま抵抗(50 Ω など)に流せば、伝送線路に直結できる
- 差動電流出力なら、コモンモードノイズに強い
負荷抵抗の精度がそのままゲイン精度になることに注意。
5. ΔΣ DAC(オーディオの主流)
ADC の逆をやる。
- 補間(アップサンプリング): 48 kHz → 6.1 MHz など
- ΔΣ 変調: 高分解能 → 低ビット。量子化雑音を高周波へ追いやる
- 低ビット DAC: 1 bit なら完全に線形(2 点しかないので直線を外しようがない)
- アナログ LPF: 高周波の雑音を落とす
| 性質 | 内容 |
|---|---|
| 高分解能 | 24 bit |
| 線形性が極めて良い | 素子マッチングに依存しない |
| 低速〜中速 | 数百 kSPS まで |
| レイテンシがある | 補間フィルタの群遅延 |
| アナログ LPF が必須 | 高周波の整形雑音が乗っている |
なぜ 1 bit DAC は完全に線形なのか.
出力が 0 と 1 の 2 点しかない。2 点を結ぶ線は必ず直線である。 だから「非直線性」という概念が存在しない。
多ビット(例: 5 レベル)にすると分解能効率は上がるが、 素子のばらつきが非直線性として現れる。 そこで DEM(Dynamic Element Matching) で 使う素子をランダムに入れ替え、誤差を雑音に変える。
6. PWM + フィルタ——DAC が要らないことも多い
組み込みで最もよく使われる「DAC」は、実は PWM である。
デューティ \(D\) の矩形波を LPF に通すと、平均値が出る:
リプルと整定時間のトレードオフ
残留リプル(1 次 RC、\(f_{PWM} \gg f_c\) のとき):
最悪は \(D = 0.5\):
整定時間(\(N\) bit 精度):
両立しない。 リプルを減らすには \(RC\) を大きくするが、 そうすると遅くなる。
具体例: \(V_{DD} = 3.3\) V、\(f_{PWM} = 100\) kHz、 リプルを 1 mV 以下にしたい:
整定時間(10 bit 相当):
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 部——外の世界とつなぐ インタフェースに入る。