1ビットで高精度を出す逆説 ── ΔΣ変調の話
1と0しか出力しないのに、なぜハイレゾ音源を再生できるのか。量子化ノイズを高周波に「押しやる」ΔΣ変調の仕組みを直感から追う。
ΔΣ変調は逆説的に見える。
普通、精度を上げようと思ったらビット数を増やす。8ビットより16ビット、16ビットより24ビット。でもΔΣ変調はそのアプローチを丸ごと捨てる。出力は基本的に「1か0か」、たった1ビット。なのに、うまく処理すれば24ビット相当の精度が出る。
どういうことだろう。
差分と積分、それから量子化
ΔΣという名前を分解すると見えてくる。Δ(デルタ)は「差分」、Σ(シグマ)は「積分(累算)」だ。処理の流れはこうなる:
- 入力信号と、前に出力したビット列の差を取る(差分)
- その差を積分器に通して蓄積する(積分)
- 積分器の出力を1ビットに量子化する(+1か−1か)
- 量子化した値を次の差分計算にフィードバックする
フィードバックがポイントで、「今の量子化誤差を次のサンプルに持ち越す」ことで、誤差を未来に分散させていく。
直感的に言うとこうだ。「さっきちょっと多く出してしまったから、次は少なめに出す」を高速で繰り返す。ひとつひとつのサンプルはガタガタでも、時間を平均すると元の信号に収束する。
ノイズシェイピング
もう少し丁寧に考えると、量子化ノイズの周波数成分が変化していることに気づく。
フィードバックなしで量子化すると、ノイズは全周波数帯に均等に広がる。でもΔΣ変調では積分器(Σ)がループの内側にあるせいで、量子化ノイズに対してハイパスフィルタとして機能する。結果、量子化ノイズは低周波から追い出されて高周波に集まる。
これが**ノイズシェイピング(Noise Shaping)**だ。
伝達関数で書くと、1次ΔΣ変調のノイズ転送関数(NTF)はこうなる:
これはハイパスフィルタの形をしている。サンプリングレートを十分高くしておけば(オーバーサンプリング)、目的の信号帯域はノイズがほとんどない領域に収まる。あとはデジタルローパスフィルタをかけてデシメーション(間引き)すれば、低いサンプルレートで高SNRの信号が手に入る。
ループを外すと何が残るか(OFFの正体)
ここで一度、逆を考えておくと腑に落ちる。「ノイズシェイピングをOFFにする」とは、要するに ΔΣをOFFにする ことと同じだ。
ΔΣ変調器の中身は「量子化器(丸める部分)+誤差を持ち越すフィードバックのループ」。ノイズを高域へ追いやっているのは、このループそのもの。だからループ(出力が戻ってくる線)を切ると、残るのは量子化器だけ——過去を一切見ず、その場の値を近いほうへ丸めるだけの、メモリの無い素の1ビット量子化に退化する。
名前とも繋がっている。Δ(差分=引き算)もΣ(積分=足し込み)も、どちらもあのループの中の操作だ。OFFはΔもΣも止めること。だから “ΔΣ OFF” は文字どおり、ΔもΣも無い状態になる。
具体的には、一定の入力(例えば 0.3)を入れると、毎回いちばん近い 0 に丸まって出力は平らなまま。0 と 1 の間の値を表せない。逆にループを戻した瞬間、丸め誤差が次へ繰り越されて、「3回に1回くらい 1 を出す」=平均が 0.3 に合うパターンが生まれる。誤差を捨てるか、持ち越すか——その一点だけの違いなんだ。この溜まって吐く様子は、/dsm(ΔΣを一歩ずつ) で1サンプルずつ追える。
オーバーサンプリング比とSNR
オーバーサンプリング比を OSR とすると、1次ΔΣ変調ではSNRの改善量はおよそ:
OSRを2倍にするたびに約9 dB改善する。フラットなオーバーサンプリングだと3 dBしか稼げないから、ノイズシェイピングで3倍の効率だ。
次数を上げると(2次、3次…)さらにノイズを高周波へ追いやれて、改善幅は急激に大きくなる。ただし次数が高すぎると安定性が崩れるので、実用ではそこのバランスを取ることになる。
高精度のお釣りは「遅延」で払う
ΔΣには、はっきりした代償がある。**遅延(レイテンシ)**だ。
理由は復元の側にある。ΔΣが吐くのはパタパタの1ビット列で、本当の信号はその平均の中に隠れている。だから信号を取り出すには、ある窓ぶんを平均してやらないといけない(これがデシメーションフィルタ=ローパス)。ところが「過去◯サンプルをならす」という操作は、出てくる信号を窓の半分ぶん遅らせる。これが群遅延だ。
しかも、ここには逃げ場のないトレードオフがある。窓を広げると雑音はよく消えて精度(SNR)が上がるが、その分だけ遅延が増える。窓を狭めると遅延は減るが、ならし足りずに雑音が戻ってくる。オーバーサンプリングを効かせるほど帯域内SNRは稼げるけれど、間引きのフィルタも実時間で長くなりがちで、これも遅延に乗る。つまりΔΣは、いつも「精度」と「遅延」を天秤にかけているんだ。
だからオーディオDACのように遅延が許される場面では大胆に精度を取れるし、制御ループの中のように遅延が命取りになる場面では、次数やOSRやフィルタを控えめに選ぶことになる。この「窓を広げると滑らかだが遅れ、狭めると即応だがギザつく」感触は、/dsm の「復元の窓」スライダで実際に行き来できる。
どこにある
ΔΣ変調はそこら中にある。スマートフォンのオーディオDAC、高精度センサーのデジタル出力、SDR受信機の入力段、Class Dアンプの電力変換まで。「アナログの高精度をデジタルで扱いたい」ほぼすべての場面に出てくる。
1ビットのストリームでも、フィードバックとフィルタリングを組み合わせれば高精度が生まれる。情報は瞬間のビット値ではなく、時間の中のパターンに宿っている、ということかもしれない。
— ランキン
コメント
まだコメントはないよ。最初のひとことをどうぞ。