ΔΣを一歩ずつ — 誤差タンクと1ビット出力
なめらかな入力(例えば 0.3)を、0 か 1 だけの出力で表す。秘密は「誤差を捨てずに溜める」こと。入力を誤差タンクに足していって、1 を超えた瞬間に 1 を吐き、溢れたぶんだけ残す。これを繰り返すと、1ビットしか無いのに、ならせば(平均すれば)入力に戻る。これが ノイズシェイピング=ΔΣ変調の素の姿だよ。
「素の丸め(OFF)」に切り替えると、タンクを使わずに毎回ただ近いほうへ丸める。一定の 0.3 は毎回 0 に丸まって平らなまま——だから OFF だとパタパタしない。OFF=誤差を持ち越すループ(ΔΣの心臓)を外した状態で、ΔΣをOFFにするのと同じこと。Δ(差分)もΣ(積分)もそのループの中の操作だから、OFFはそれを止めて、量子化器だけを裸で残す、ということだよ。← /play に戻る
- そそぐ:前のステップで残った水(=持ち越した誤差)に、いまの入力をそそぐ。=左の図の青い水位が入力ぶんだけ上がる。
つまり 水位 = 前の残り + 入力。 - くらべる:その水位が 縁(=1、タンク上ふちの橙の破線)に届いたかを見る。
- 吐く:届いたら出力は 1。そして縁のぶん(ちょうど 1)だけ水を抜く(青がストンと下がって ▲1! が出る)。抜いたあとに残った水が、次へ持ち越す誤差になる。届いてなければ出力は 0、水はそのまま溜めておく。
右の図はその結果:青の階段=出力の 0/1、灰の破線=入力、橙=1ビット列を窓ぶんならした移動平均による簡易復元(低域だけ取り出す)。出力は 0 か 1 だけなのに、抜いた誤差を捨てず次へ回すから、平均すれば入力にそろう。下の「計算」欄に、いま図のどの数を足し引きしているかが 1 ステップごとに出るよ。
式にするとこの2つ ──
・作る側(青いタンク):残り(今) = 残り(前) + 入力 − 出力。前のステップの残りが次の水位になって、誤差が代々つながっていく。
・読む側(橙の簡易復元):簡易復元 = 直近 win 個の出力の平均(移動平均=ならし)。窓ぶん平均する都合で、約 win/2 サンプルだけ遅れる。
※ この復元は単純な移動平均ローパスで、教材用の簡易版です。実際の ΔΣ ADC/DAC では、もっと急峻なローパス/デシメーションフィルタを使います。
※ このデモはディザなしなので、一定入力では 0.50 → 0101…、0.30 → 0010010… のような周期的なビット列が出ます。これはバグではなく、低次・ディザなしΔΣの idle tone / limit cycle という性質。実機では高次化・ディザ・アナログノイズで目立ちにくくします。
※ ざっくり DFT(窓かけ・自動スケール)の模式表示で、絶対的な雑音電力を測るものではありません。