1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ΔΣ変調器と z⁻¹ フィードバックの数理整理

Last updated at Posted at 2025-09-18
  1. 基本の1次ΔΣ変調器

出力式:
Y = X + (1 - z^-1) Qn

構造:
・入力 X と出力 Y を減算
・差分を積分器 (1 / (1 - z^-1)) に通す
・量子化器 Qn を加え、出力 Y としてフィードバック


  1. 2次ΔΣ変調器

積分器が2段になる:

Y = X + (1 - z^-1)^2 Qn

構造:
・入力 X とフィードバック z^-1 Y を加算 → 積分器へ
・さらにもう1段の積分器 → 量子化器へ
・量子化器の出力 Y を z^-1 経由で再び入力側に戻す

ここで z^-1 は「1サンプル遅延」を意味する。
つまり「出力を1サンプル遅らせて引き算している」=フィードバック。


  1. 一般 L 次 ΔΣ変調器

Y = X + (1 - z^-1)^L Qn

構造:
・積分器をL段直列に接続
・各段の入力に「出力 Y の遅延 z^-1」をフィードバック
・これによりノイズ伝達関数が (1 - z^-1)^L となる


  1. 周波数領域でのフィードバック効果

z = e^(jω) と置換
(1 - z^-1)^L = (1 - e^(-jω))^L

低周波近似:
|(1 - e^(-jω))^L| ≈ ω^L

→ フィードバックにより量子化ノイズは低周波で急激に抑圧される。


  1. フィードバックの意味

・z^-1 によって「1クロック遅れの出力」を戻す → システム安定化
・この遅延フィードバックがなければ、出力が即座に戻り発散してしまう
・z^-1 フィードバックを含むことで「ループの因果性」を確保できる


import numpy as np
import matplotlib.pyplot as plt

# ==========================
# Parameters
# ==========================
fs = 1000           # Sampling frequency [Hz]
f_in = 10           # Input sine frequency [Hz]
N = 256             # Number of samples
A = 0.8             # Input amplitude (normalized, <1)
t = np.arange(N) / fs
x = A * np.sin(2 * np.pi * f_in * t)  # input sinewave

# ==========================
# 1st-order ΔΣ modulator
# ==========================
y1 = np.zeros(N)    # output
v1 = 0              # integrator state
for n in range(N):
    v1 += x[n] - y1[n-1] if n > 0 else x[n]   # integrator with feedback z^-1
    y1[n] = 1 if v1 >= 0 else -1              # 1-bit quantizer

# ==========================
# 2nd-order ΔΣ modulator
# ==========================
y2 = np.zeros(N)
v2_1 = 0   # first integrator state
v2_2 = 0   # second integrator state
for n in range(N):
    e = x[n] - (y2[n-1] if n > 0 else 0)      # feedback z^-1
    v2_1 += e                                # 1st integrator
    v2_2 += v2_1                             # 2nd integrator
    y2[n] = 1 if v2_2 >= 0 else -1           # quantizer

# ==========================
# Plot results
# ==========================
plt.figure(figsize=(12,6))

plt.subplot(3,1,1)
plt.plot(t, x, label="Input sine")
plt.title("Input signal")
plt.grid(); plt.legend()

plt.subplot(3,1,2)
plt.step(t, y1, where='post', label="1st-order ΔΣ output")
plt.title("1st-order Delta-Sigma output (with z^-1 feedback)")
plt.grid(); plt.legend()

plt.subplot(3,1,3)
plt.step(t, y2, where='post', label="2nd-order ΔΣ output")
plt.title("2nd-order Delta-Sigma output (with z^-1 feedback)")
plt.grid(); plt.legend()

plt.tight_layout()
plt.show()
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?