You are on page 1of 14

Thực hiện FFT trên FPGA

LỜI CẢM ƠN

TÓM TẮT ĐỒ ÁN

1
Thực hiện FFT trên FPGA

MỤC LỤC
I. GIỚI THIỆU: ........................................................................................................... 5
1. Tổng quan: ........................................................................................................... 5
2. Nhiệm vụ đề tài: .................................................................................................. 5
II. LÝ THUYẾT: ................................................................................................................ 5
1. FPGA: .................................................................................................................... 5
2. FFT/DFT: ............................................................................................................... 6
3. MODELSIM PE: ..................................................................................................... 8
III. PHẦN MỀM ............................................................................................................ 8
1. Module Bfly0:....................................................................................................... 8
2. Module Bfly1:....................................................................................................... 9
3. Module FFT_8: ................................................................................................... 10
IV. KẾT QUẢ THỰC HIỆN ........................................................................................ 11
1. Kết quả ............................................................................................................... 11
2. So sánh với Matlab ............................................................................................ 12
V. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................................................... 13
1. Đánh giá: ............................................................................................................ 13
2. Hướng phát triển: .............................................................................................. 13
VI. TÀI LIỆU THAM KHẢO ....................................................................................... 14
VIII. PHỤ LỤC ............................................................................................................... 14

2
Thực hiện FFT trên FPGA

DANH MỤC HÌNH ẢNH


Hình 1 Dòng FPGA Stratix của hãng Altera ................................................................ 5

Hình 2 Sơ đồ FFT 8 điểm phân chia theo thời gian ..................................................... 7

Hình 3 Sơ đồ FFT 8 điểm phân chia theo tần số ......................................................... 8

Hình 4 Dòng dữ liệu Dataflow của module bfly0 ........................................................ 9

Hình 5 Dòng dữ liệu Dataflow của module bfly1 ........................................................ 9

Hình 6 Dòng dữ liệu Dataflow của module fft_8 ........................................................ 11

Hình 7 Dạng sóng X(f) của ví dụ 1 .............................................................................. 12

Hình 8 Dạng sóng X(f) của ví dụ 2 .............................................................................. 12

3
Thực hiện FFT trên FPGA

DANH MỤC BẢNG SỐ LIỆU


Bảng so sánh kết quả fft 8 điểm thông qua ModelSim và Matlab.............................. 13

4
Thực hiện FFT trên FPGA

I. GIỚI THIỆU:
1. Tổng quan:
 Nói về ngành thiết kế vi mạch mà em theo đuổi em biết có 1 vi
mạch tích hợp FPGA. Với những đề tài thầy đề ra em xin chọn đề
tài thực hiện FFT trên FPGA.
2. Nhiệm vụ đề tài:
 Nội dung 1: Tìm hiểu các lý thuyết liên quan
 Nội dung 2: Viết demo FFT 8 bit bằng code Verilog
II. LÝ THUYẾT:
1. FPGA:[1]

Hình 1 Dòng FPGA Stratix của hãng Altera


a) Tổng quan:
 FPGA (Field Programmable Gate Array) là một vi mạch tích hợp dạnh lớn
dùng cấu trúc mảng logic mà người sử dụng có thể lập trình được.
 Được cấu thành từ các bộ phận:
 Các khối logic cơ bản lập trình được (logic block)
 Hệ thống mạch liên kết lập trình được
 Khối vào ra (I/O Pads)
 Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân xử lý, …
b) So sánh FPGA và vi mạch bán dẫn chuyên dụng ASIC:
 FPGA không đạt được mức độ tối ưu như những loại kia và hạn chế trong
khả năng thực hiện các tác vụ đặc biệt phức tạp
 Tuy vậy FPGA ưu việt hơn ở chỗ có thể tái cấu trúc lại khi đang sử dụng,
công đoạn thiết kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưa
sản phẩm vào sử dụng.
5
Thực hiện FFT trên FPGA

c) Ứng dụng:
 Xử lý tín hiệu số DSP, các hệ thống hàng không, vũ trụ, quốc phòng, tiền
thiết kế mẫu ASIC, các hệ thống điều khiển trực quan, phân tích nhận dạng
ảnh, nhận dạng tiếng nói, mô hình phần cứng máy tính, máy đánh cờ,…
 Các bài toán phức tạp cũng được FPGA giải quyết nhanh mà trước kia chỉ
có thể được thực hiện trên phần mềm máy tính bởi tính linh động cao của
nó. Ngoài ra, nhờ số lượng mật độ các cổng logic trong FPGA tương đối
lớn có thể thực hiện cá bài toán có độ phức tạp cao cần khối lượng bước
tính toán lớn và dùng trong các thời gian thực.
2. FFT/DFT: [2]
a) Ứng dụng:
 Tính toán phổ tần số tín hiệu
 Thuật toán tích chập vòng hiệu quả bằng FFT
 Mã hóa các dạng sóng như tiếng nói hay hình ảnh cho việc truyền dẫn dữ
liệu hiệu quả.
b) DFT (Discrete Fourier Transform):
 DFT là bộ biến đổi 1 chuỗi N số điểm liên tục trên miền thời gian thành 1
chuỗi N số điểm rời rạc trên miền tần số.
 Giả sử x(n) là tín hiệu rời rạc có chiều dài hữu hạn L:
 Công thức biến đổi DFT – N điểm (N>=L) của x(n) là:

 Công thức biến đổi ngược IDFT :

 Đặt WN = e-j2∏/N thì DFT-N điểm :

c) FFT (Fast Fourier Transform):


 FFT, biến đổi Fourier nhanh, là một thuật toán của DFT – N điểm.
 Từ công thức trên ta chia ra thành N/2 điểm chẵn và lẻ:

6
Thực hiện FFT trên FPGA

Với và
d) FFT – 8 điểm :
 FFT – radix 2 có cơ số cơ bản nhất trong thiết kế thuật toán FFT/IFF có
phần tiết kiệm tài nguyên nhưng bù lại thuật toán sẽ không có độ chính
xác cao và tốc độ kém hơn các thiết kế có cơ số hỗn hợp.
 FFT – radix 2 8 điểm phân chia theo 2 cách:
 Theo thời gian:

Hình 2 Sơ đồ FFT 8 điểm phân chia theo thời gian

 Theo tần số:

7
Thực hiện FFT trên FPGA

Hình 3 Sơ đồ FFT 8 điểm phân chia theo tần số


3. Phần mềm mô phỏng ModelSim PE:[3]
 ModelSim là phần mềm mô phỏng và sửa lỗi cho các thiết kế ASIC và FPGA
cực kỳ mạnh mẽ và hiệu quả, khi thiết kế FPGA chúng ta có thể dung
ModelSim để mô phỏng, kiểm tra, test chương trình…
 ModelSim là môi trường debug cho các ngôn ngữ như Verilog HDL, VHDL,
System C. ModelSim hiện nay có nhiều phiên bản như PE, LE, SE, XE.
ModelSim PE và LE dùng cho các thiết kế nhỏ và trung bình, còn SE dùng
cho các thiết kế FPGA lớn hơn.
III. PHẦN MỀM:
1. Module bfly0:
 Là module tính giá trị x khi có W=W0 hoặc W2 .
 Là module có input: 2 giá trị thực hoặc thuần ảo x,y ; output: 2 giá trị phức
x0, x1.

8
Thực hiện FFT trên FPGA

Hình 4 Dòng dữ liệu Dataflow của module bfly0


2. Module bfly1:
 Là module tính giá trị x khi có W=W1 hoặc W3 .
 Là module có input: 2 giá trị phức x,y ; output: 2 giá trị phức x0,x1

Hình 5 Dòng dữ liệu Dataflow của module bfly1

9
Thực hiện FFT trên FPGA

3. Module fft_8:
 Là module kết hợp 2 module trên để cho ra 8 giá trị cần tìm.
 Là module có input: 8 giá trị nguyên x0 đến x7 ; output: 8 giá trị phức từ y0
đến y7.
 Sơ đồ giải thuật:

x0 X0
x4 Bfly0 (W0) Bfly0 (W0) Bfly0 (W0) X1

x2 X2
x6 Bfly0 (W0) Bfly0 (W2) Bfly1 (W1) X3

x1 X4
x5 Bfly0 (W0) Bfly0 (W0) Bfly0 (W2) X5

x3 X6
x7 Bfly0 (W0) Bfly0 (W2) Bfly1 (W3) X7

10
Thực hiện FFT trên FPGA

Hình 6 Dòng dữ liệu Dataflow của module fft_8


IV. KẾT QUẢ THỰC HIỆN:
1) Kết quả:
 Ví dụ 1: x(n)={0,1,2,3,4,5,6,7} thì X(f):

11
Thực hiện FFT trên FPGA

Hình 7 Dạng sóng X(f) của ví dụ 1

 Ví dụ 2: x(n) ={ 1 2 3 4 -3 -1 0 2} thì X(f):

Hình 8 Dạng sóng X(f) của ví dụ 2

2) So sánh với Matlab :


12
Thực hiện FFT trên FPGA

Bảng so sánh kết quả FFT 8 điểm thông qua ModelSim và Matlab
Vd1 x(n)={0 1 2 3 4 5 6 7} Vd2 x(n)={1 2 3 4 -3 -1 0 2}
ModelSim Matlab ModelSim Matlab
X0 1c 00 28 08 00 8
28 8
X1 c0 9a -4+9.6569i 4b 97 4.4071-6.5355i
-4+9.625i 4.6875-6.5625i
X2 fc 04 -4+4i fb 05 -5+5i
-4+4i -5+5i
X3 c0 1a -4+1.6569i 35 f7 3.2929-0.5355i
-4+1.625i 3.3125-0.5625i
X4 fc 00 -4 fa 00 -6
-4 -6
X5 c0 e6 -4-1.6569i 35 09 3.2929+0.5355i
-4-1.625i 3.3125+0.5625i
X6 fc fc -4-4i fb fb -5-5i
-4-4i -5-5i
X7 c0 66 -4-9.6569i 4b 69 4.4071+6.5355i
-4-9.625i 4.6875+6.5625i
Từ kết quả thu được qua 2 ví dụ ta thấy việc mô phỏng chính xác với các giá trị X1, X3, X5,
X7 biểu diễn 4 bit cao là phần nguyên và 4 bit thấp là phần thập thân.
V. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
1) Đánh giá:
Có sai số giữa hai kết quả nhưng vẫn chấp nhận được
2) Hướng phát triển:
Từ việc thực hiện FFT 8 điểm ta có thể nâng số điểm lên thành 16 , 32 cho
đến 1024 điểm. Ngoài ra, FFT có thể sử dụng các phương thức khác nhau
như radix-4, radix-mix,… để thực hiện việc xử lý có các ưu nhược điểm
khác nhau và cũng có thể so sánh giữa các phương thức để chọn lọc.
13
Thực hiện FFT trên FPGA

VI. TÀI LIỆU THAM KHẢO


[1] FPGA Wikipedia.org
[2] Slide Xử lý số tín hiệu
[3] Vimach.net
VII.PHỤ LỤC

14

You might also like