THIẾT kế bộ FFT và IFFT TRÊN nền CÔNG NGHỆ FPGA (có code)
ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ BỘ FFT VÀ IFFT TRÊN NỀN CÔNG NGHỆ FPGA MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC CÁC BẢNG BIỂU DANH MỤC CÁC TỪ VIẾT TẮT AHDL Altera Hardware Description Language AS Active Serial ASIC Application-specific Integrated Circuit CPLD Complex Programmable Logic Device DE Development and Education DFT Dicrete Fourier Transform DSP Digital Signal Processor DTFT Dicrete-Time Fourier Transform EDA Electronic Design Automation EDIF Electronic Design Interchange Format FFT Fast Fourier Transform FPGA Field-programmable gate array HDL Hardware Description Language IDFT Inverse Discrete Fourier Transform IFFT Inverse Fast Fourier Transform JTAG Joint Test Action Group LCD Liquid crystal display LED Light Emitting Diode O Order PAL Programmable Array Logic PLA Programmable Logic Array PLD Programmable Logic Device RAM Random-access Memory ROM Read-only Memory RTL Register Transfer Level SDF Single-path Delay Feedback SDRAM Synchorous dynamic random-access Memory SOPC System On a Programmable Chip SPLD Simple Programmable Logic Device SRAM Static random-access Memory SW Switch VHDL VHSIC Hardware Description Language VHSIC Very High Speed Integrated Circuit ĐỒ ÁN TỐT NGHIỆP Trang 6/80 CHƯƠNG TỔNG QUAN VỀ BỘ FFT/IFFT 1.1 Khái niệm DFT FFT 1.1.1 DFT DFT N – điểm tín hiệu dài – L định nghĩa DTFT tính tốn N tần số phân bố toàn khoảng Nyquist, ≤ ω ≤ 2π ωk = , k = 0, 1, …, N – (1.1) DFT: (1.2) Trong đó: • x(n) ngõ vào miền liên tục thời gian, phân tích tín hiệu với N điểm • X(k) ngõ miền tần số • : trọng số nhân DFT đảo (IDFT): (1.3) 1.1.2 FFT & IFFT: Biến đổi Fourier nhanh (FFT) thuật toán biến đổi DFT chuỗi N điểm Có nhiều phương pháp thực khác với ưu nhược điểm riêng biệt cho phương pháp Ví dụ: Radix-2 (cơ số 2), Radix-4 (cơ số 4), Radix-mix (bộ trộn số),… Khác biệt FFT DFT độ phức tạp tốc độ tính toán DFT thực với độ phức tạp O (N2) Còn FFT thực với độ phức tạp O (N log m N), với m số FFT Ví dụ: FFT số (Radix-2) có độ phức tạp O (N log2 N) IFFT đảo FFT Ta sử dụng công thức IDFT để thực Vẫn giống FFT, IFFT giảm độ phức tạp so với IDFT tùy theo phương pháp chọn Thiết kế FFT IFFT công nghệ FPGA ĐỒ ÁN TỐT NGHIỆP Trang 7/80 1.1.3 Radix-2 (cơ số 2) Radix-2 số thiết kế thuật tốn FFT/IFFT Thiết kế Radix-2 FFT/IFFT có phần tiết kiệm tài nguyên nhờ đơn giản Nhưng bù lại cho việc đó, thuật tốn khơng có độ xác cao tốc độ thiết kế Radix-mix (trộn số) Ý tưởng thiết kế Radix-2 FFT/IFFT dựa việc chia chuỗi N – điểm x(n) thành hai chuỗi N/2 điểm chẵn, đặt x(2n), N/2 điểm lẻ, x(2n + 1), tính độc lập với 1.1.3.1 Radix-2 FFT: • • • (1.4) n chia thành phần: N/2 điểm chẵn N/2 điểm lẻ điểm chẵn : x0(n) = x(2n) điểm lẻ : x1(n) = x(2n+1) Điểm chẵn: (1.5) Điểm lẻ: (1.6) Ta có: (1.7) (1.8) Từ đó, gộp lại tính X(k) với k = 0, 1, …, N – 1: (1.9) (1.10) Thiết kế FFT IFFT công nghệ FPGA ĐỒ ÁN TỐT NGHIỆP Trang 8/80 Bộ FFT cho điểm: Hình 1-1: Mơ hình FFT điểm [2] Lưu ý: Ở phần thứ tự x(n) có phần bị thay đổi Ví dụ FFT điểm, = nên ta có bit Với bit lẻ, bit khơng đảo hay thay đổi với bit lại Ví dụ cho bit, phần bit đảo vị trí cho Phần bit khơng đổi Với phần chẵn, ta khơng có bit nên tất bit đối xứng bị đảo với Ví dụ cho bit, bit đảo cho Bit tương tự Các bit đảo theo hình dưới: bit Thiết kế FFT IFFT công nghệ FPGA bit ĐỒ ÁN TỐT NGHIỆP Trang 9/80 Hình 1-2: Qui tắc biến đổi thứ tự n x y 1.1.3.2 Radix-2 IFFT: IFFT đảo FFT Ta sử dụng công thức IDFT để thực Vẫn giống FFT Ta chia nhỏ số điểm thành phần chẵn lẻ để thực Điểm chẵn: (1.11) Điểm lẻ: (1.12) Từ đó, gộp lại tính x(n) với n = 0, 1, …, N – 1: (1.13) (1.14) Thiết kế FFT IFFT công nghệ FPGA ĐỒ ÁN TỐT NGHIỆP Trang 10/80 Hình 1-3: Mơ hình IFFT điểm [2] Lưu ý: Ở phần thứ tự X(k) có phần bị thay đổi tương tự phần FFT Sau ví dụ thuật tốn Radix-2: • 4-point (4 điểm): N = x = [1 4], tìm kết X(k) sau qua FFT Dựa vào công thức (1.7) (1.8): X0(0) = x(0) + x(2) = X0(1) = x(0) + x(2) W12 = –2 (Với W12 = e-jπ = –1) X1(0) = x(1) + x(3) = X1(1) = x(1) + x(3) W12 = –2 Với k = 0, 1, 2, Theo công thức (1.9) (1.10): X(0) = + = X(1) = (–2) + (–2) W14 = –2 + 2j (Với W14 = e-jπ/2 = –j) X(2) = – = –2 X(3) = (–2) – (–2) W14 = –2 – 2j X = [10 –2 + 2j –2 –2 – 2j ], tìm kết x(n) sau qua IFFT Dựa vào công thức (1.11) (1.12): x0(0) = X(0) + X(2) = 10 – = x0(1) = X(0) + X(2) W12 = 10 + = 12 (Với W12 = e-jπ = –1) x1(0) = X(1) + X(3) = (–2) + 2j + (–2) – 2j = -4 x1(1) = X(1) + X(3) W12 = (–2) + 2j – (–2) + 2j = 4j Với n = 0, 1, 2, Theo công thức (1.13) (1.14): X(0) = (x0(0) + x1(0) W04) = (8 – 4)/4 = X(1) = (x0(1) + x1(1) W-14) = (12 + 4j j)/4 = (Với W-14 = ejπ/2 = j) X(2) = (x0(0) – x1(0) W04) = (8 + 4)/4 = X(3) = (x0(1) – x1(1) W-14) = (12 – 4j j)/4 = Như vậy, ta kết x = [1 4] Thiết kế FFT IFFT công nghệ FPGA ĐỒ ÁN TỐT NGHIỆP Trang 70/80 for i in 215 to 220 loop W(i).r