# 🎛️ Thiết kế DSP trên FPGA: triển khai bộ lọc thời gian thực

By Everwise Intern · Generated by Everwise

Khóa học ngắn dành cho người đã nắm lý thuyết DSP cơ bản, đi theo trục chính là triển khai nhúng thời gian thực. Người học đi từ đặc tả thiết kế, thiết kế bộ lọc FIR/IIR, mô phỏng và kiểm chứng bằng scipy.signal, đến kiến trúc pipeline trên FPGA và capstone triển khai bộ lọc thời gian thực bằng Verilog.

- **Level:** Intermediate
- **Language:** Vietnamese
- **Focus:** [Triển khai nhúng thời gian thực trên FPGA (Verilog/VHDL), thiết kế pipeline và tài nguyên song song](/courses?q=Tri%E1%BB%83n%20khai%20nh%C3%BAng%20th%E1%BB%9Di%20gian%20th%E1%BB%B1c%20tr%C3%AAn%20FPGA%20(Verilog%2FVHDL)%2C%20thi%E1%BA%BFt%20k%E1%BA%BF%20pipeline%20v%C3%A0%20t%C3%A0i%20nguy%C3%AAn%20song%20song), [Thiết kế bộ lọc số FIR và IIR (cửa sổ, Parks-McClellan, bilinear transform)](/courses?q=Thi%E1%BA%BFt%20k%E1%BA%BF%20b%E1%BB%99%20l%E1%BB%8Dc%20s%E1%BB%91%20FIR%20v%C3%A0%20IIR%20(c%E1%BB%ADa%20s%E1%BB%95%2C%20Parks-McClellan%2C%20bilinear%20transform)), [Mô phỏng và kiểm thử bằng MATLAB/Python (scipy.signal)](/courses?q=M%C3%B4%20ph%E1%BB%8Fng%20v%C3%A0%20ki%E1%BB%83m%20th%E1%BB%AD%20b%E1%BA%B1ng%20MATLAB%2FPython%20(scipy.signal))
- **Practice:** Capstone project
- **Time:** ~3.5h
- **Voice:** Một giảng viên hướng dẫn luận văn, chặt chẽ về lý thuyết và phương pháp luận

## Bạn sẽ đạt được gì

Sau khóa học, bạn thiết kế, mô phỏng và triển khai được một hệ thống DSP thời gian thực hoàn chỉnh, đi trọn từ đặc tả bộ lọc đến một mạch FPGA chạy được. Cụ thể, bạn sẽ có khả năng:

- Đọc một đặc tả thiết kế (design specification) và chuyển nó thành các tham số bộ lọc có thể kiểm chứng: dải thông (passband), dải chặn (stopband), độ gợn (ripple), tần số lấy mẫu (sampling frequency).
- Thiết kế bộ lọc FIR bằng phương pháp cửa sổ (window) và Parks-McClellan, đồng thời thiết kế bộ lọc IIR bằng biến đổi song tuyến tính (bilinear transform).
- Mô phỏng và kiểm thử thiết kế bằng `scipy.signal`, rồi lượng tử hóa sang số nguyên có dấu cố định (fixed-point) mà vẫn giữ được đáp ứng mong muốn.
- Phân tích kiến trúc phần cứng theo hướng đường ống (pipeline) và song song tài nguyên (resource parallelism) để đạt thông lượng thời gian thực.
- Viết và kiểm tra một bộ lọc thời gian thực bằng Verilog trên FPGA, hiểu rõ đánh đổi giữa tài nguyên, độ trễ (latency) và tần số hoạt động.

Điểm mấu chốt: **mỗi bước trong khóa học đều phục vụ một hệ thống DSP duy nhất mà bạn tự tay dựng nên**, không phải các bài tập rời rạc.

## Khóa học này dành cho ai

Khóa học ở mức trung cấp (intermediate), dành cho người đã có nền tảng lý thuyết DSP cơ bản: biến đổi Z (Z-transform), biến đổi Fourier nhanh (FFT) và lý thuyết lấy mẫu (sampling theory). Bạn không cần đã từng thiết kế hệ thống thực tế, nhưng cần thoải mái với toán rời rạc ở mức đại học và biết đọc mã Python cơ bản.

Về phía phần cứng, khóa học giả định bạn chưa có kinh nghiệm triển khai trên FPGA. Kiến thức Verilog sẽ được dẫn dắt từ đầu trong module 2, nên điều kiện tiên quyết thực sự chỉ là nền DSP lý thuyết nói trên.

Nếu bạn đang làm luận văn hoặc đồ án cần một chuỗi thiết kế có thể bảo vệ được về mặt phương pháp luận, đây là định hướng mà khóa học theo đuổi: lý thuyết chặt, mỗi quyết định thiết kế đều có lý do và có cách kiểm chứng.

## Lộ trình khóa học

Khóa học gồm 2 module với 8 bài, tổng thời lượng ước tính khoảng 210 phút.

**Module 1: Thiết kế bộ lọc số từ đặc tả**

- **1.1 Đặc tả thiết kế và ôn nhanh nền tảng DSP.** Học cách đọc và viết đặc tả bộ lọc, cùng ôn lại các khái niệm nền sẽ dùng xuyên suốt khóa.
- **1.2 Thiết kế bộ lọc FIR: cửa sổ và Parks-McClellan.** So sánh hai họ phương pháp thiết kế FIR, khi nào dùng cửa sổ và khi nào cần Parks-McClellan để đạt đặc tả chặt.
- **1.3 Thiết kế bộ lọc IIR: biến đổi song tuyến tính.** Ánh xạ bộ lọc tương tự sang số, hiểu hiện tượng chồng phổ (frequency warping) và hệ quả của nó.
- **1.4 Checkpoint: thiết kế bộ lọc số.** Bài kiểm tra củng cố toàn bộ module 1 trước khi chuyển sang phần cứng.

**Module 2: Mô phỏng và triển khai nhúng thời gian thực trên FPGA**

- **2.1 Mô phỏng, kiểm thử với scipy.signal và lượng tử hóa fixed-point.** Dựng quy trình kiểm thử tự động và xử lý các vấn đề số học khi chuyển sang số nguyên.
- **2.2 Kiến trúc phần cứng: pipeline và song song tài nguyên.** Thiết kế kiến trúc đạt thông lượng thời gian thực, cân bằng giữa tài nguyên và độ trễ.
- **2.3 Capstone: bộ lọc thời gian thực trên FPGA bằng Verilog.** Hiện thực hóa thiết kế thành mạch chạy được và kiểm chứng trên phần cứng.
- **2.4 Checkpoint: triển khai nhúng trên FPGA.** Bài kiểm tra tổng kết, đánh giá mức hiểu toàn khóa.

## Khóa học vận hành thế nào

Mỗi bài kết hợp ba lớp: lý thuyết ngắn gọn, thực hành có hướng dẫn, và các bài checkpoint dạng trắc nghiệm để bạn tự kiểm tra trước khi đi tiếp. Phần thực hành dùng Python với `scipy.signal` cho mô phỏng và Verilog cho triển khai, nên bạn cần một môi trường Python chạy được và một công cụ tổng hợp (synthesis) FPGA để làm bài capstone.

Tổng thời lượng ước tính khoảng 210 phút cho 8 bài, tức trung bình chưa tới 30 phút mỗi bài. Con số này giả định bạn đã nắm nền DSP lý thuyết; nếu cần ôn lại, hãy dành thêm thời gian cho bài 1.1.

Cách học khuyến nghị là tuyến tính (linear): đi đúng thứ tự từ 1.1 đến 2.4, vì mỗi bài dựa trên kết quả của bài trước. Nếu bạn đã vững phần thiết kế bộ lọc, có thể đọc lướt module 1 để nắm quy ước của khóa rồi tập trung vào module 2. Tuy nhiên, không nên bỏ qua các bài checkpoint, vì chúng chỉ ra lỗ hổng trước khi lỗ hổng đó xuất hiện dưới dạng lỗi trên phần cứng.

## Đồ án xuyên suốt khóa học

Đồ án của khóa là **Bộ lọc thời gian thực trên FPGA**, và đây là một mạch nối liên tục chứ không phải các bài tập rời. Bạn sẽ đi từ một đặc tả bộ lọc bằng văn bản, thiết kế bộ lọc đáp ứng đặc tả đó, mô phỏng và kiểm thử bằng `scipy.signal`, lượng tử hóa sang fixed-point, thiết kế kiến trúc pipeline, rồi hiện thực bằng Verilog và chạy thử trên FPGA.

Các bài nuôi đồ án theo thứ tự: bài 1.1 đặt ra đặc tả, bài 1.2 và 1.3 cho bạn bộ lọc ứng viên, bài 2.1 kiểm chứng và chuẩn bị số học, bài 2.2 định hình kiến trúc, và bài 2.3 là nơi mọi thứ ráp lại thành mạch chạy được. Bài 2.4 tổng kết và đánh giá toàn bộ chuỗi đó.

Hãy bắt đầu với bài 1.1 và mang theo một đặc tả bộ lọc cụ thể của riêng bạn. Càng sớm chốt đặc tả, đồ án càng có nhiều thời gian để trưởng thành qua từng bài.

## Contents

- **📐 Thiết kế bộ lọc số từ đặc tả**
  - [🧭 Đặc tả thiết kế và ôn nhanh nền tảng DSP](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/dsp-spec-and-foundations-review.md)
  - [🪟 Thiết kế bộ lọc FIR: cửa sổ (window) và Parks-McClellan](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/fir-filter-design-window-parks-mcclellan.md) (sign-in required)
  - [🌀 Thiết kế bộ lọc IIR: biến đổi song tuyến tính (bilinear transform)](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/iir-filter-design-bilinear-transform.md)
  - [✅ Checkpoint: thiết kế bộ lọc số](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/checkpoint-filter-design.md)
- **⚙️ Mô phỏng và triển khai nhúng thời gian thực trên FPGA**
  - [🧪 Mô phỏng, kiểm thử với scipy.signal và lượng tử hóa fixed-point](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/simulation-and-fixed-point-quantization.md)
  - [🧱 Kiến trúc phần cứng: pipeline và song song tài nguyên](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/fpga-pipeline-and-resource-parallelism.md)
  - [🛠️ Capstone: bộ lọc thời gian thực trên FPGA bằng Verilog](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/capstone-realtime-filter-on-fpga.md) (premium content)
  - [✅ Checkpoint: triển khai nhúng trên FPGA](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/checkpoint-fpga-implementation.md) (premium content)
- [Course cheatsheet](https://everwise.study/courses/thiet-ke-dsp-tren-fpga-trien-khai-bo-loc-thoi-gian-thuc/cheatsheet.md) (premium content)
