🌀 Thiết kế bộ lọc IIR: biến đổi song tuyến tính (bilinear transform)

By Everwise Intern

Bài trước ta đã khép nhánh FIR: cửa sổ (window) và Parks-McClellan cho pha tuyến tính nhưng trả giá bằng bậc cao, vài chục đến vài trăm hệ số. Bài này đi nhánh còn lại, nơi bậc thấp là ưu tiên số một: lấy một bộ lọc tương tự (analog) đã chuẩn hóa rồi ánh xạ nó sang miền z. Đây là con đường chuẩn bị trực tiếp cho capstone, vì bậc thấp đồng nghĩa ít phép nhân hơn trên FPGA.

Mục tiêu của bài:

  • Giải thích được vì sao nên xuất phát từ nguyên mẫu tương tự (analog prototype).
  • Viết và diễn giải được ánh xạ song tuyến tính cùng hệ quả ổn định của nó.
  • Phân biệt méo tần số (frequency warping) với aliasing, và áp dụng tiền biến dạng (prewarping) đúng chỗ.
  • Thực hiện đúng trình tự chuyển một đặc tả số sang bộ lọc IIR.
  • Cân nhắc trade-off bậc thấp đổi lấy pha phi tuyến (nonlinear phase) cho hệ thống của mình.

Điểm tựa: nguyên mẫu tương tự (analog prototype)

Lý thuyết bộ lọc tương tự đã giải xong bài toán "bậc tối thiểu để đạt đặc tả biên độ". Với Butterworth:

$$ |H(j\Omega)|^2 = \frac{1}{1 + \left(\Omega/\Omega_c\right)^{2N}} $$

Đặc tả này đơn điệu, không gợn sóng (maximally flat). Chebyshev I/II cho phép gợn ở băng thông hoặc băng chắn để hạ bậc, còn elliptic (Cauer) là tối ưu bậc khi cho phép gợn cả hai băng. Chiến lược của bài là: tính bậc và tần số cắt trên trục tương tự $\Omega$, sau đó ánh xạ sang miền z. Toàn bộ độ chính xác của thiết kế nằm ở bước ánh xạ này.

Ánh xạ song tuyến tính: từ mặt phẳng s sang mặt phẳng z

Phép thay thế trung tâm:

$$ s = \frac{2}{T}\cdot\frac{1 - z^{-1}}{1 + z^{-1}} $$

với $T$ là chu kỳ lấy mẫu. Ba tính chất quyết định chất lượng của phép ánh xạ:

  1. Nửa mặt phẳng trái của s (Re $s < 0$) ánh xạ vào bên trong vòng tròn đơn vị. Bộ lọc tương tự ổn định luôn cho bộ lọc số ổn định, và ngược lại.
  2. Trục ảo $j\Omega$ ánh xạ lên vòng tròn đơn vị, nhưng chỉ một lần: $\Omega$ chạy từ $-\infty$ đến $+\infty$ thì $\omega$ chạy từ $-\pi$ đến $\pi$. Vì mỗi tần số tương tự chỉ có đúng một ảnh, không xảy ra chồng phổ (aliasing) như phương pháp bất biến xung (impulse invariance).
  3. Cái giá phải trả là quan hệ tần số phi tuyến, trình bày ngay dưới đây.

Méo tần số (frequency warping) và tiền biến dạng (prewarping)

Đặt $z = e^{j\omega}$ và $s = j\Omega$ vào công thức trên, ta được:

$$ \Omega = \frac{2}{T}\tan\left(\frac{\omega}{2}\right) \qquad\Longleftrightarrow\qquad \omega = 2\arctan\left(\frac{\Omega T}{2}\right) $$

Hệ quả cần nhớ:

  • Với $\omega$ nhỏ, $\tan(\omega/2) \approx \omega/2$ nên $\Omega \approx \omega/T$: gần như tuyến tính.
  • Với $\omega \to \pi$, $\Omega \to \infty$: cả nửa trục tần số vô hạn bị nén vào một đoạn hữu hạn gần Nyquist. Đây là méo tần số, không phải aliasing.

Vì vậy trước khi chọn bậc, mọi tần số biên của đặc tả số phải được tiền biến dạng sang $\Omega$ bằng $\Omega = (2/T)\tan(\omega/2)$. Bỏ bước này là lỗi phổ biến nhất khiến bộ lọc số có tần số cắt lệch khỏi đặc tả, lệch càng nhiều khi tần số cắt càng cao.

Bài tập nhanh 1. Với $T = 1$, tần số số $\omega_s = \pi/2$ tương ứng $\Omega_s$ bằng bao nhiêu? Ngược lại, nếu bộ lọc tương tự có $\Omega = 4$ thì tần số số là bao nhiêu?

Xem lời giải

$\Omega_s = 2\tan(\pi/4) = 2$ rad/s. Chiều ngược: $\omega = 2\arctan(4/2) = 2\arctan(2) \approx 2.214$ rad, tức khoảng $0.705\pi$. Lưu ý $4$ rad/s bị nén xuống dưới $\pi$, minh họa trực tiếp hiệu ứng nén ở tần số cao.

Trình tự thiết kế và một ví dụ số

flowchart TD
    A["📋<br/>Đặc tả số: ωp, ωs, Ap, As"] --> B["⚖️<br/>Tiền biến dạng sang Ω"]
    B --> C["🧮<br/>Tính bậc N và Ωc"]
    C --> D["🔁<br/>Ánh xạ song tuyến tính"]
    D --> E["✅<br/>Kiểm tra biên độ và cực"]

Ví dụ: băng thông $\omega_p = 0.2\pi$, băng chắn $\omega_s = 0.5\pi$, gợn thông $A_p = 1$ dB, suy giảm chắn $A_s = 40$ dB, chọn $T = 1$.

  1. Tiền biến dạng: Ωp = 2·tan(0.1π) ≈ 0.6498 rad/s; Ωs = 2·tan(0.25π) = 2 rad/s
  2. Chọn bậc Butterworth: N ≥ log10((10^(As/10) − 1)/(10^(Ap/10) − 1)) / (2·log10(Ωs/Ωp)) ≈ 4.70, lấy N = 5
  3. Suy ra Ωc từ điều kiện băng thông: Ωc = Ωp / (10^(Ap/10) − 1)^(1/(2N)) ≈ 0.7439 rad/s
  4. Dựng H(s) Butterworth bậc 5 với Ωc vừa tính
  5. Thay s = 2(1 − z⁻¹)/(1 + z⁻¹) (vì T = 1), rút gọn về dạng hệ số bậc hai (SOS)
  6. Kiểm tra: |H(e^(j0))| ≈ 1, suy giảm tại ωs ≥ 40 dB, mọi cực có |z| < 1

Với cùng đặc tả, một bộ lọc FIR pha tuyến tính theo phương pháp cửa sổ cần số hệ số lớn hơn nhiều lần, và một bộ elliptic bậc 3 đã có thể đạt xấp xỉ chỉ tiêu này. Đó chính là lý do IIR được chọn khi tài nguyên tính toán là nút cổ chai.

Bậc thấp đổi lấy pha phi tuyến (nonlinear phase)

IIR thắng về chi phí, nhưng thua ở hai điểm cần nói rõ với người hướng dẫn:

  • Pha phi tuyến và trễ nhóm (group delay) không hằng. Các thành phần tần số khác nhau bị trễ khác nhau, nên dạng sóng bị méo dù biên độ đúng. Với tín hiệu cần bảo toàn hình dạng (ECG, xung sinh học), đây là rủi ro thực. Cách giảm thiểu: lọc thuận rồi lọc ngược (forward-backward), bù pha bằng allpass, hoặc quay lại FIR.
  • Nhạy cảm hệ số khi lượng tử hóa (coefficient quantization). Cực càng gần vòng tròn đơn vị (tần số cắt thấp, hệ số phẩm chất Q cao) thì sai số làm tròn càng dễ đẩy cực ra ngoài. Vì vậy thiết kế cần lưu ở dạng SOS, không lưu đa thức bậc cao. Đây là cầu nối trực tiếp sang phần lượng tử hóa fixed-point ở Module 2.

Bài tập nhanh 2. Trong capstone, bạn cần lọc một tín hiệu sinh học 1 kHz lấy mẫu 8 kHz và giữ nguyên hình dạng đỉnh. Bạn chọn Butterworth bậc 5 hay elliptic bậc 3, hay FIR? Nêu hai rủi ro triển khai gắn với lựa chọn đó.

Xem gợi ý

Câu trả lời hợp lý: ưu tiên pha tuyến tính vì cần giữ hình dạng đỉnh, nên FIR là lựa chọn an toàn; nếu bắt buộc IIR vì tài nguyên, chọn elliptic bậc 3 và bù pha, đồng thời chấp nhận kiểm tra méo dạng bằng mô phỏng. Hai rủi ro: (1) trễ nhóm không hằng làm lệch đỉnh, (2) cực gần vòng tròn đơn vị khiến hệ số fixed-point dễ mất ổn định. Luôn kiểm chứng bằng mô phỏng trước khi lên phần cứng.

Cạm bẫy khi chuyển bộ lọc tương tự sang số

  • Quên tiền biến dạng: tần số cắt số bị kéo lệch, lệch mạnh nhất khi $\omega_c > 0.3\pi$.
  • Lo lắng về $T$: nếu tiền biến dạng đúng, $T$ triệt tiêu và $H(z)$ không phụ thuộc $T$. Chọn $T = 1$ cho gọn, đừng suy luận gì thêm từ nó.
  • Nhầm méo tần số với aliasing: song tuyến tính không gây chồng phổ, chỉ nén trục tần số. Đừng thêm bộ lọc chống chồng phổ ở đây.
  • Quên kiểm tra cực: hãy in ra $|z_i|$ lớn nhất, yêu cầu nhỏ hơn 1 với biên an toàn hợp lý.
  • Lưu hệ số dạng đa thức bậc cao: luôn xuất ra các khối bậc hai (SOS) để giảm nhạy cảm số học.
  • Đặt tần số biên vượt quá $\pi$: kiểm tra lại quy ước chuẩn hóa (rad/mẫu so với Hz) trước khi tính.

Chốt lại và bước tiếp

Bốn điểm cần mang theo:

  • IIR được thiết kế bằng cách ánh xạ một nguyên mẫu tương tự qua $s = (2/T)(1 - z^{-1})/(1 + z^{-1})$.
  • Ánh xạ bảo toàn ổn định, không gây aliasing, nhưng tạo méo tần số; tiền biến dạng $\Omega = (2/T)\tan(\omega/2)$ là bước không được bỏ.
  • Trình tự cố định: đặc tả số, tiền biến dạng, chọn bậc và $\Omega_c$, ánh xạ, kiểm tra biên độ và cực.
  • Lợi ích là bậc thấp; cái giá là pha phi tuyến và độ nhạy hệ số khi lượng tử hóa.

Điền...các giá trị $\omega_p$, $\omega_s$, $\Omega_p$, $\Omega_s$, $N$ và $\Omega_c$ vào bảng thiết kế của bạn trước khi sang bài checkpoint. Bài checkpoint sẽ không hỏi lại công thức, mà yêu cầu bạn bảo vệ toàn bộ chuỗi quyết định: vì sao chọn IIR hay FIR, vì sao bậc đó, và vì sao tiền biến dạng là bắt buộc. Sau checkpoint, module 2 mới mở đường sang mô phỏng bằng scipy.signal và lượng tử hóa fixed-point, nơi những lo ngại về cực và hệ số ở bài này sẽ quay lại dưới dạng bài toán số học thực thi.

Tự kiểm tra nhanh bằng điền khuyết

Biến đổi song tuyến tính thay $s$ bằng _____.

Trục ảo $j\Omega$ được ánh xạ lên _____ trong mặt phẳng z, và nửa mặt phẳng trái ánh xạ vào _____, nên tính ổn định được bảo toàn.

Công thức tiền biến dạng (prewarping) cho tần số cắt tương tự là $\Omega_c =$ _____.

Song tuyến tính không gây _____, nhưng gây _____ vì trục tần số bị nén phi tuyến.

Bộ thẻ ghi nhớ cho bài này

Front: Phép thay thế $s$ trong biến đổi song tuyến tính là gì? Back: s = (2/T)(1 - z⁻¹)/(1 + z⁻¹), một ánh xạ phân tuyến tính giữa hai mặt phẳng.

Front: Vì sao gọi là song tuyến tính (bilinear)? Back: Vì tử số và mẫu số đều là hàm bậc một của z⁻¹, tức ánh xạ hữu tỉ bậc một ở cả hai phía.

Front: Trục ảo jΩ của mặt phẳng s ánh xạ lên đâu? Back: Lên vòng tròn đơn vị, với Ω chạy từ -∞ đến +∞ thành ω chạy từ -π đến π, khép kín đúng một vòng.

Front: Nửa mặt phẳng trái ánh xạ vào miền nào của mặt phẳng z? Back: Vào bên trong vòng tròn đơn vị, nên bộ lọc tương tự ổn định luôn cho bộ lọc số ổn định.

Front: Công thức tiền biến dạng (prewarping) là gì? Back: Ω = (2/T)·tan(ω/2), dùng để đặt tần số cắt tương tự sao cho tần số cắt số khớp đúng đặc tả.

Front: Song tuyến tính có gây aliasing không? Back: Không. Ánh xạ là một-một từ trục jΩ lên vòng tròn đơn vị; cái giá phải trả là méo tần số chứ không phải chồng phổ.

Front: Méo tần số (frequency warping) là gì? Back: Trục tần số bị nén phi tuyến: khoảng vô hạn của Ω dồn vào đoạn hữu hạn [-π, π], mức nén tăng dần khi tiến về π.

Front: Tại sao có thể chọn T = 1 mà không mất tính tổng quát? Back: Khi đã tiền biến dạng đúng, T triệt tiêu trong biểu thức H(z); kết quả số không phụ thuộc T.

Front: Ưu điểm cốt lõi của IIR so với FIR với cùng đặc tả biên độ? Back: Bậc thấp hơn nhiều lần, do đó ít phép nhân và ít độ trễ tính toán hơn.

Front: Cái giá phải trả khi chọn IIR là gì? Back: Pha phi tuyến (trễ nhóm không hằng) và độ nhạy số học cao khi lượng tử hóa hệ số.

Front: Trong bốn họ Butterworth, Chebyshev I, Chebyshev II và elliptic, họ nào cho bậc thấp nhất? Back: Elliptic, đổi lại là gợn sóng ở cả dải thông và dải chắn.

Front: Sau khi ánh xạ, phải kiểm tra những gì? Back: Kiểm tra mọi cực có |z_i| < 1 với biên an toàn, và so đáp ứng biên độ số với đặc tả ban đầu.

Front: Vì sao nên xuất hệ số dưới dạng các khối bậc hai (SOS)? Back: Đa thức bậc cao có nghiệm cực kỳ nhạy với sai số làm tròn; SOS giảm mạnh độ nhạy đó khi triển khai.

Front: Quên tiền biến dạng thì sai số lớn nhất ở đâu? Back: Ở vùng tần số cao, lệch rõ rệt khi ω_c vượt khoảng 0.3π.