2016年11月23日水曜日

【にわかAVマニアの変換】 サルでもわかる、デルタシグマ変調、ΔΣ方式DAC (長文)

2019年9月追記: この記事が度々PV上位に登場します.回路愛好者の皆様のご愛顧ありがとうございます!


ちょっちD級アンプを作ろうかな~と思いつつ、アナログ信号→ビットストリーム変換をどうやっているのだろう?という疑問が生じ、調べました.

まさかまさか、アナログ信号と三角波を比較してビットストリームを取り出すなんていう粗雑なやり方だったとしたら怒るよ.だってそんなのまさかのモータドライバクオリティですから.しかしそれは杞憂でありまして、デルタシグマ方式DACと同じ方法でビットストリームに変換しているらしいので安心しました.なんてったってキモの部分ですからね.

追記: 三角波タイプのD級アンプICっていろいろあるらしいdeath

デルタシグマ方式、デルタシグマ変調、ΔΣDAC、、、いろいろな名前で呼ばれますが、つまるところ量子化誤差を高周波帯域に追い出してしまえる(ノイズシェーピング)というメリット追求のために使われる回路です.どうしてノイズシェーピングできるのか? そこら辺をサルでもわかるように数式を一切使わずに解説してみようと思います.

【ノイズシェーピングとは?】
通常のADCで生じてしまう量子化ノイズは左図のように全帯域にまったりと生じます.こんなのフィルタで除去なんかできません.
デルタシグマ方式ADCでは右図のように量子化ノイズを高域寄りにシェーピングできるので、LPFで除去しやすいというのがメリットです.カラクリは後述します.

【デルタシグマ? シグマデルタ?】
↓デルタシグマの名前の由来は、このような、微分回路=差分=デルタが一段目に在り、二段目は積分回路=加算=シグマになっている回路だからです.
←デルタシグマ
この回路自体には意味はありません.だって入力=出力になりますから.
どうしてVin=Voutになるのか判りますでしょうか? 遅延素子が2つあります.どちらも中央部の同じ信号を遅延させていますから、同じ遅延信号なわけです.同じ信号を、1段目では引き算し、2段目では足し算する、そうすると引いて足しているのですから、チャラになります.だからVin=Voutになるわけです.
この、「同じ信号を引き足ししてチャラになる」という考え方が、デルタシグマを理解するために後々重要になるので覚えておきましょう.

↓次に、1段目と2段目を逆に置いて積分→微分の順序にしてみます.足してから引くので入出力は同じになります.つまり理論的に積分・微分の順序はどっちでもOKです.
←シグマデルタ
というわけで両者は理論的には同じなのですが、現実はさにあらず.1段目が積分回路というのは回路実装上の問題があるので通常は嫌がられます.DC成分を含む入力信号を積分するとマッハの速度で電源電圧まで達してアンプが電源飽和して死んでしまうからです.そんな回路はいやだわ.

【デルタシグマ回路の波形】
まず遅延回路はどういう回路なのか? → いわゆるサンプルホールド回路です.FS発振器はビットストリームのサンプル周波数です.ここでは450kHzに設定しています.
spice sim回路はこうしました.
各部の波形はこうなっています.
↓入力信号Vinは50kHz正弦波に設定しました.
↓遅延回路出力はこのようなサンプルホールド波形になっています.S/H周波数は450kHzに設定しました.これがVinから引き算されます.
↓減算回路出力=微分波形=デルタ波形はこのようになります.
↓Vout=加算回路出力=積分波形=シグマ波形はこのようになります.SW点でのグリッチは無視してもらうとして、入力と同じ1Vの正弦波が出てきます.遅延回路出力を引き足ししたのですから当然です.

【シグマデルタ回路の波形】
結果は同じだと判っているのですが、途中経過がアレなので確認しておきます.

spice sim回路はこうしました.一段目が加算回路、2段目が減算回路になってます.
入力信号は上と同じなので省くとして、各部の波形です.
↓加算回路出力=積分波形=シグマ波形はこのようになります.動いていますけど、振幅が3.6Vまで上昇してアンプ飽和の萌芽が垣間見られてイヤ~な予感がします.
↓それでもってサンプルホールド出力はこのように3.0Vになってしまっています.
↓Vout=減算回路出力=微分波形=デルタ波形は入力と同じになります.(グリッチは無視してくれ)

というわけで、デルタシグマとシグマデルタは同じ結果を得られるが、アンプが飽和するかもしれないシグマデルタはやめておきましょう.

【デルタシグマ その2】
上で2つの知見を得ました.
  1)同じ信号を引いて足してたらチャラになる
  2)1段目はデルタが良い
それならば、というわけで、こんなひねくれ回路にしたらどうでしょうか? 1段目=デルタで、2段目=シグマで、同じ信号を引き足ししているからチャラであり、Vin=Voutになるという点で同類と言えます.この構成はデルタシグマDACの形状に近づきました.
これもspiceでsimってみます.
↓入力信号Vinは、20kHzの正弦波にしました.
↓出力信号Voutは、入力と同じ波形が出てきます.(グリッチを除くとして)
↓途中の波形です.
グリーンはサンプルホールド波形です.S/H周波数は1MHzに設定しました.VoutをS/Hしたのですから階段波形になります.
ブルーは減算回路出力=デルタ波形です.

【思考実験】
ここで、デルタシグマDACにより近づけるために、この回路を変更する思考実験をしてみます.


↓まずこの回路について考えてみます.Voutの直前に16bitADCとDACを挿入してあります.(レイテンシ=0とする)  AD/DAのサンプリング周期は遅延時間と同じとします.こうしても、Vin=Voutという点は同じですよね? (量子化誤差はさておくとして)

↓次はもう少し変形してこの回路を考えます.DACの位置を変えました.出力は16bitデジタルになります.これでデルタシグマ形DACがほぼ完成です.16bitデジタルをアナログに戻すとVinと同じ波形が得られるはずです.(量子化誤差はさておくとして)

↓さらに変形します.AD/DAを1bitタイプに変えました.ゼロクロスコンパレータの後段に遅延回路=サンプルホールドを配置することによって、サンプル周期で駆動される1bitADCを形成します.これでデルタシグマ方式の1bitDACの完成形となります.
↓1bitDACはこんな回路です.ガチガチの2値信号が出力されます.
アナログ回路に2値信号をフィードバックするというところがデルタシグマ方式1bitDACを理解しずらいところですが、1つ前の16bitAD/DAを想像すると理解し易いのではと思います.

【1bitデルタシグマDACのスパイスsim】
↓実際のデルタシグマ回路はスイッチトキャパシタ回路で実装されると思いますが、ここでは無理やりオペアンプで構成した下記の回路でsimりました.
入力は1kHzの正弦波.Fs=1MHzにしてあります.
コンパレータの電源電圧は±1.2Vにしてあります.これがアナログ入力レンジ=±1.2Vに規定します.
円満に動かすために重要な小技があります.積分回路のS/H駆動発振器FSは、システムのFsの逆位相で駆動しています.PULSE()の中の0.5uが180度位相ずらしパラメータです.これをケアしないとグリッチがループを回って波形が死にまくりますので要注意です.

↓そんなこんなで、2Vppの正弦波を1bitDAC変換した波形(=回路図のBS)がこのように美しく出ました.

あれれ? 通常のADCは16bit/48kHzで出てくるけど? と思った貴方は正しいです.
デジタル信号処理でこの1bitストリームを16bit/48kHzに変換するんです.
やり方は、、、この1bit信号をデジタルFIRフィルタでLPFします.FIRフィルタ演算の過程で小数点以下がボロボロ出てきます.それを16bitで丸めると、16bitのデジタル信号になります.またFsの1MHzを48kHzに変換するのはデシメーターというデジタルフィルタの一種でサンプリング周波数を変換します.
これらのデジタル変換を解説すると日が暮れてしまいますので解説は割愛します.ここでは1bitストリームを得たところまでとします.

↓イエローが回路図におけるVDIFFの波形です.1bitストリームを引き算してますから、こんな感じで納得できる波形です.
↓回路図におけるVCMPの波形がピンクです.VDIFFを積分したらこんなギザギザな波形になってしまいましたとさ.これをゼロクロスコンパレートすると1bitストリームを得られるのですが、ギザギザが激しくて意味を理解するのは断念しました.こんなもんだということで.

【ノイズシェーピングの定性的説明】
まとめです.どうして量子化ノイズだけをノイズシェーピングできるのか?

量子化ノイズが入り込む場所は上で述べたADCの場所ですから、ADCの代わりに量子化ノイズを加算する回路を描きました.量子化ノイズをN(n)とします.このN(n)はノイズシェーピングされていない帯域フラットなノイズです.
↓このN(n)がこのループをグルグルと廻ってVoutにポンッと飛び出てくるわけですから、N(n)に着目してループの各部の信号を計算してみます.赤字のX(n)N(n)から計算を始めます.各部の信号を時計回りに計算しますと、1bitストリームが含む量子化ノイズであるところのNout=N(n)-N(n-1)と最終的に計算されます.この、一つ前のNとの差分という点が重要でありまして、差分=微分=HPF=低域抑圧=高域強調=ノイズシェーピング、という連想になるわけです.
つまり、デルタシグマ回路にはラッキーな性質が2つあると言えます.
  1)VinはVoutへ素通りする (上で述べたとおり)
  2)N(n)の位置で注入された信号(=量子化ノイズ)は微分される=ノイズシェーピング
異様に上手く考えられた回路ですね.こんな特許を書きたいものです.
ここだけは数式を使わざるを得なかったです.orz

-----
以上の説明は、遅延=1Tの1次デルタシグマ回路のみでした.遅延=2Tや3Tや、実用化されたすごい回路では7Tのもあるみたいです.遅延が大きくなるほどノイズシェーピングがキツくなるので高性能になるのだと思います.

というわけでデルタシグマ回路の解説はおしまいです.ネット界最強の平易な解説になったかと思うのですが、いかがなものか?

次回はUcd方式D級アンプ

かしこ

3 件のコメント:

  1. DACについて教えてたも
    「PCM5102 DAC デコーダ モジュール I2S インターフェイス GY-PCM5102」ググってくだされ
    この基盤でDC高精度アナログ信号は出せますか?

    返信削除
    返信
    1. お久しぶりです.
      PCM5102は使ったことがあります.
      この基板はチンケな基板ですので、PCM5102の性能をフルに発揮できる気はしませんというのがわたしの感想です.
      電源が貧弱だったり、digital noiseが回ったり、いろいろありそうな感じがします.

      削除
  2. なるほど、試してみます出来上がったら報告します。

    返信削除