1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG TRÊN QUARTUS (có code)

27 949 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 0,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG TRÊN QUARTUS (có code)................... THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG TRÊN QUARTUS (có code)................... THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG TRÊN QUARTUS (có code)................... THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG TRÊN QUARTUS (có code)................... THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG TRÊN QUARTUS (có code)................... THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG TRÊN QUARTUS (có code)...................

Trang 1

THIẾT KẾ BỘ FFT VÀ MÔ PHỎNG

TRÊN QUARTUS

Trang 5

ASIC Application-specific Integrated Circuit

CPLD Complex Programmable Logic Device

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

O Order

PAL Programmable Array Logic

PLA Programmable Logic Array

PLD Programmable Logic Device

RAM Random-access Memory

ROM Read-only Memory

SDF Single-path Delay Feedback

SOPC System On a Programmable Chip

SPLD Simple Programmable Logic Device

VHDL VHSIC Hardware Description Language

VHSIC Very High Speed Integrated Circuit

Trang 6

CHƯƠNG 1 TỔNG QUAN VỀ FPGA

• Các khối xuất/nhập (I/O Pads)

• Các phần tử được thiết kế sẵn như RAM, ROM, nhân vi xử lý, DSP Slice…

1.1.1 Lịch sử

Trang 7

FPGA được thiết kế đầu tiên bởi nhà sáng lập công ty Xilinx,Ross Freeman, vàonăm 1984, kiến trúc mới của FPGA đã cho phép tích hợp một lượng rất lớn cácphần tử bán dẫn vào 1 vi mạch so với CPLD Số lượng cổng logic mà FPGA có khảnăng chứa là từ 100.000 đến hàng tỷ cổng, trong khi đó, con số mà CPLD có là10.000 - 100.000 cổng logic Ngoài ra PAL, PLA còn thấp hơn nữa với chỉ từ thấphơn 10.000 cổng.

CPLD được cấu trúc từ một lượng cố định các khối SPLD (thuật ngữ chỉ chungcho PLA, PAL) SPLD là một mảng logic AND/OR lập trình được có kích thướcxác định và chứa một lượng hạn chế các phần tử nhớ đồng bộ (clocked register) Kiến trúc FPGA là kiến trúc mảng các khối logic, nó nhỏ hơn nhiều so với một khốiSPLD, ưu điểm này đã giúp FPGA có thể chứa các phần tử logic nhiều hơn và khảnăng lập trình của các phần tử logic và hệ thống mạch kết nối được phát huy tối đa,kiến trúc của FPGA phức tạp hơn nhiều so với CPLD để có thể đạt được các mụctiêu trên

1.1.2 Sự khác biệt của FPGA với ASIC

ASIC là một vi mạch IC được thiết kế một ứng dụng cụ thể

FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng giống ASICnhưng nếu ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện logic thì FPGAkhông thể giống như những loại trên là đạt mức độ tối ưu, và hạn chế trong việcthực hiện các chức năng với những tác vụ đặc biệt phức tạp

Tuy nhiên, FPGA lại có ưu thế hơn là có thể cấu trúc lại khi đang sử dụng, chiphí giảm do công đoạn thiết kế đơn giản hơn, nhờ vậy mà thời gian đưa sản phẩmvào cũng được rút ngắn

Trang 8

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ác bài toán với độ 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ực hiện trong thời gian thực.

Trang 9

CHƯƠNG 2 TỔNG QUAN VỀ BỘ BIẾN ĐỔI FFT

1.2 DFT & FFT

1.1.4 Ứng dụng

- Tính toán phổ tần của tín hiệu

- Thuật toán tính chập vòng hiểu quả bằng FFT

- Mã hóa dạng sóng, như là tiếng nói hay hình ảnh, cho việc truyền dẫn và dữ liệuhiệu quả

1.1.5 DFT (Discrete Fourier Transform)DFT là bộ biến đổi 1 chuỗi N số điểm trên miền thời gian thành 1 chuỗi số trênmiền tần số IDFT (Inverse Discrete Fourier Transform) là bộ DFT đảo

X(ωk) = ( DFT N điểm của tín hiệu chiều dài L) (1)

DFT N – điểm của một tín hiệu dài – L được định nghĩa bằng DTFT được tínhtoán tại N tần số phân bố đều trên toàn khoảng Nyquist, 0 ≤ ω ≤ 2π

Trang 10

(6)Hoặc: X= Wx

có phần tiết kiệm tài nguyên nhờ chính sự đơn giản của nó Nhưng bù lại cho việc

đó, thuật toán này sẽ không có độ chính xác cao và tốc độ kém hơn các thiết kếRadix-mix (trộn cơ số) Ý tưởng thiết kế Radix-2 FFT dựa trên việc chia chuỗi N –điểm x(n) ra thành hai chuỗi N/2 điểm chẵn, được đặt: x(2m), và N/2 điểm lẻ, x(2m+ 1), được tính độc lập

Trang 11

Từ đó, gộp lại và tính X(k) với k = 0, 1, …, N – 1:

 X(k) = X0(k) + X1(k) Với k = 0, 1, …,N/2 – 1 (14)

X(k + ) = X0(k) – X1(k) Với k = 0, 1, …, N/2 – 1 (15)Sau đây là các ví dụ về thuật toán Radix-2:

• 8-point (8 điểm): N = 8

Vì N = 2L , nên ta sẽ có L – 1 số bước chia cơ số 2

 Ta thực hiện 2 lần FFT cơ số 2

Trang 12

Hình 2-1: DFT 8 điểm từ 2 bộ DFT 4 điểm [4]

Lưu ý: ở phần này thứ tự các x(n) sẽ có phần bị thay đổi Ví dụ ở bài 8 điểm, 8 =

23 nên ta có 3 bit Trường hợp x(4), 1002 ta sẽ đảo vị trí của chúng => 0012 = 1 =>x(4) sẽ nằm vị trí của x(1) và tương tự cho x(1),x(3),x(6), x(2) = 0102 đảo vị trí vẫnnhư ban đầu, tương tự cho x(0), x(5), x(7)

• Tương tự với 16 điểm, 16 =24 => có 4 bit Trường hợp 10002 = x(8) => 00012 =x(1) 2 vị trí này sẽ thay đổi cho nhau và tương tự cho các x khác

X(k) = X10(k) + X11(k) Wmk

N

Trang 13

Hình 2-2: Ví dụ cho mô hình 8-điểm FFT Radix-2 [6]

1.1.8 Kiến trúc SDF (Single-path-Delay-Feedback)

Hình 2-3: Kiến trúc SDF Radix-2 [2]

Sau đây là các bước thực hiện của 1 tầng SDF:

Bước 1: N/2 dữ liệu đầu ở ngõ vào bộ mux và được ghi vào thanh ghi dịch (shiftregs) Không có dữ liệu ở ngõ ra

Bước 2: N/2 dữ liệu đầu ở thanh ghi dịch sẽ thực hiện bộ cộng (+), trừ (–) với dữliệu sau ở ngõ vào Sau đó, dữ liệu ở bộ cộng (+) sẽ xuất ở ngõ ra Dữ liệu ở bộ trừ(–) được hồi tiếp trở lại và vào thanh ghi dịch

Bước 3: N/2 dữ liệu ở thanh ghi dịch sau bước 2 sẽ được xuất ở ngõ ra và kếtthúc quá trình

Trang 14

Hình 2-4: Sơ đồ khối 2 tầng kề nhau [2]

Mỗi tầng SDF sẽ có một bộ đệm dữ liệu hồi tiếp Dung lượng bộ đệm của tầng

sau sẽ bằng nửa dung lượng bộ đệm của tầng trước Bộ nhân số phức W sẽ nằm trên

đường đi dữ liệu giữa hai tầng kế tiếp Việc thay đổi cơ số Radix chỉ làm thay đổicấu trúc và cách điều khiển bộ nhân W, chứ không làm thay đổi cấu trúc của mộttầng trong SDF

Trang 15

CHƯƠNG 3 TỔNG QUAN VỀ PHẦN MỀM MÔ PHỎNG

FPGA có nhiều loại phần mềm hỗ trợ để tích hợp và mô phỏng như: Quartus II,ModelSim, Xilinx…

1.3 Phần mềm Quartus II

Hình 3-1: Giao diện Quartus II

Quartus II là phần mềm được phát triển bởi hãng Altera, cung cấp và hỗ trợ môitrường thiết kế các SOPC (hệ thống trên Chip khả trình)

Phần mềm còn giúp người sử dụng tích hợp và mô phỏng các thiết kế logic vớicác linh kiện khả trình PLD của Altera, bao gồm các dòng Chip như: Cyclone,APEC, MAX, Stratix…

Các công dụng của Quartus bao gồm:

 Thiết kế các bản vẽ, sơ đồ khối, các ngôn ngữ lập trình như: AHDL,VHDL, VerilogHDL

 Thực hiện các mô phỏng với các linh kiện khả trình người dùng thiết kế trongQuartus bằng Vector Waveform

 Cho phép xuất, tạo và các file nguồn, thư viện để tạo các file chương trình

Trang 16

 Kiểm tra và định vị lỗi đoạn mã (code).

 Khả năng lập trình và nhận diện linh kiện

 Phần mềm sự dụng bộ tích hợp NativeLink@ với các công cụ thiết kế cung cấpthông tin để kết nối Quartus với các công cụ thiết kế phần cứng EDA khác

 Phân tích logic nhúng nhờ có công cụ phân tích SignalTap@ II

Ngoài ra, Quartus II còn có thể cho phép kết hợp nhiều kiểu file trong 1 dự án(Project) thiết kế phân cấp Có thể dùng bộ tạo sơ đồ khối (Quartus Block Editor) đểtạo ra sơ đồ khối mô tả thiết kế ở mức cao, rồi dùng các file thiết kế khác như:AHDL Text Design Files (.tdf), EDIF Input Files (.edf), VHDL Design Files (.vhd),Verilog HDL Design Files (.v) để tạo ra thành phần thiết kế mức thấp

1.4 Phần mềm ModelSim

Hình 3-2: Giao diện ModelSim

Cũng như Quartus II, ModelSim cũng được hãng Altera phát triển ModelSim làchương trình mô phỏng hỗ trợ cho các thiết kế ASIC hay FPGA một cách mạnh mẽ

và hiệu quả cao Công dụng của ModelSim là mô phỏng, kiểm tra và test chươngtrình một cách hiệu quả hơn chương trình Quartus II và có thể mô phỏng các kiểu

dữ liệu cao hơn

Trang 17

 Hỗ trợ riêng cho các ngôn ngữ verilog, VHDL, systemC để kiểm tra 1 cách hiệu quảcác môi trường thiết kế tối tân nhất.

 Hiệu suất cao, trọng tải cao phục vụ cho thông số hồi quy nhanh nhất

 Thời gian gỡ lỗi nhanh chóng theo nhân quả và gỡ lỗi trong môi trường đa ngônngữ

 Công cụ phân tích và quét mã nâng cao để kết thúc quá trình quét một cách nhanhchóng

Trang 18

CHƯƠNG 4 KẾT QUẢ VÀ ĐÁNH GIÁ

Phần mềm Quartus II chỉ có thể mô phỏng và tổng hợp được nhị phân (có dấu vàkhông dấu), thập lục phân, và thập phân phần số nguyên (integer) Nhưng điều đó làkhông thể với số thực và số phức Nên việc có thể mô phỏng phần số thực và sốphức, ta cần dùng đến phần mềm khác có thể hỗ trợ Quartus II là phần mềmModelSim

Kết quả dưới đây là kết quả của bộ FFT 4 điểm và 8 điểm từ phương pháp cơ số

2 và kiến trúc SDF và được sử dụng ngôn ngữ lập trình VHDL cho chương trình.ModelSim được sử dụng để mô phỏng kết quả ngõ ra là các số thực được chia thành

2 phần thực và ảo từ ngõ vào là các số nguyên

1.5 Kết quả mô phỏng

Hình 4-1: FFT 4-point (nhị phân)

Trang 19

Hình 4-2: FFT 8-point (nhị phân)

Hình 4-3: FFT 8-point (MATLAB)

Trang 20

Hình 4-4: FFT 8-point (thập phân)

1.6 Đánh giá kết quả

Bảng dưới đây sẽ đánh giá kết quả giữa mô phỏng trên Quartus II + ModelSimvới MATLAB

Bảng 4-1: Kết quả đánh giá giữa Quartus II + ModelSim với MATLAB (4-point).

Ngõ vào (x) Quartus II + ModelSim (y) MATLAB (y)

x0 = 1 y0 = 4 y0 = 4x1 = 1 y1 = 0 y1 = 0x2 = 1 y2 = 0 y2 = 0x3 = 1 y3 = 0 y3 = 0

 Kết quả ra giống với MATLAB

Trang 21

Bảng 4-2: Kết quả đánh giá giữa Quartus II + ModelSim với MATLAB (8-point).

Ngõ vào (x) Quartus II + ModelSim (y) MATLAB (y)

x0 = 0 y0 = 28 y0 = 28x1 = 1 y1 = – 4 + 9.625i y1 = – 4 + 9.6563ix2 = 2 y2 = – 4 + 4i y2 = – 4 + 4ix3 = 3 y3 = – 4 + 1.625i y3 = – 4 + 1.6563ix4 = 4 y4 = – 4 y4 = – 4

x5 = 5 y5 = – 4 – 1.625i y5 = – 4 – 1.6563ix6 = 6 y6 = – 4 – 4i y6 = – 4 – 4ix7 = 7 y7 = – 4 – 9.625i y7 = – 4 – 9.6563i

 Kết quả chỉ gần giống với MATLAB

Như vậy, kết quả mô phỏng của Quartus II + ModelSim chỉ hoàn toàn giống với

mô phỏng khi ngõ vào và ra là kiểu số nguyên Còn với kiểu số thực, Quartus II +ModelSim có chuỗi bit sau dấu chấm càng dài thì kết quả càng gần giống với kếtquả của MATLAB

Trang 22

CHƯƠNG 5 KẾT LUẬN

1.7 Kết luận

Việc lập trình và mô phỏng xử lý số trên phần mềm Quartus II cho ra kết quảgần giống với kết quả MATLAB Ta có thể thực hiện ứng dụng xử lý số trên nềnFPGA 1 cách dễ dàng

1.8 Hướng phát triển

Từ việc thực hiện FFT 8 điểm trên nền FPGA 1 cách dễ dàng và chính xác tươngđối cao, người lập trình còn có thể nâng lên 1 bậc cao hơn như 16, 32, 64 đến 1024điểm và cao hơn nữa Ngoài ra, FFT có thể sử dụng các phương thức khác 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

Trang 23

TÀI LIỆU THAM KHẢO

[5] Richard G.Lyons “Understanding Digital Signal Processing (2nd Edition)” Chapter 4, 2004.

[6] https://cnx.org/

Trang 24

y0_r, y0_i, y1_r, y1_i, y2_r, y2_i, y3_r, y3_i,

y4_r, y4_i, y5_r, y5_i, y6_r, y6_i, y7_r, y7_i: out real);

end component;

component bin_to_dec1 is

Port (outp_comp: in sfixed (8 downto -7);

outp_real: out real);

end component;

component butterfly is

Trang 25

w: in complex; phase factor

g1, g2: out complex outputs

Real Input value transformed in complex value

sixteen_bits_complex_transform: real_to_complex port map (x0, x1 , x2, x3, x4,x5, x6, x7, s);

first stage of butterfly's

bf11: butterfly port map (s(0), s(4), w(0), g(0), g(4));

bf12: butterfly port map (s(2), s(6), w(2), g(2), g(6));

bf13: butterfly port map (s(1), s(5), w(1), g(1), g(5));

bf14: butterfly port map (s(3), s(7), w(3), g(3), g(7));

seconds stage of butterfly's

bf21: butterfly port map (g(0), g(2), w(0), f(0), f(2));

bf22: butterfly port map (g(1), g(3), w(2), f(1), f(3));

bf23: butterfly port map (g(4), g(6), w(0), f(4), f(6));

bf24: butterfly port map (g(5), g(7), w(2), f(5), f(7));

thirds stage of butterfly's

bf31: butterfly port map (f(0), f(1), w(0), y(0), y(4));

Trang 26

bf32: butterfly port map (f(2), f(3), w(0), y(2), y(6));bf33: butterfly port map (f(4), f(5), w(0), y(1), y(5));bf34: butterfly port map (f(6), f(7), w(0), y(3), y(7)); bien doi binary - decimal

btd0r: bin_to_dec1 port map (y(0).r, y0_r);

btd0i: bin_to_dec1 port map (y(0).i, y0_i);

btd1r: bin_to_dec1 port map (y(1).r, y1_r);

btd1i: bin_to_dec1 port map (y(1).i, y1_i);

btd2r: bin_to_dec1 port map (y(2).r, y2_r);

btd2i: bin_to_dec1 port map (y(2).i, y2_i);

btd3r: bin_to_dec1 port map (y(3).r, y3_r);

btd3i: bin_to_dec1 port map (y(3).i, y3_i);

btd4r: bin_to_dec1 port map (y(4).r, y4_r);

btd4i: bin_to_dec1 port map (y(4).i, y4_i);

btd5r: bin_to_dec1 port map (y(5).r, y5_r);

btd5i: bin_to_dec1 port map (y(5).i, y5_i);

btd6r: bin_to_dec1 port map (y(6).r, y6_r);

btd6i: bin_to_dec1 port map (y(6).i, y6_i);

btd7r: bin_to_dec1 port map (y(7).r, y7_r);

btd7i: bin_to_dec1 port map (y(7).i, y7_i);

Trang 27

port (

c1, c2: in complex; inputs

w: in complex; phase factor

g1, g2: out complex outputs

Ngày đăng: 09/03/2018, 19:29

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w