1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài tập lớn Thiết kế hệ nhúng: Thiết kế và thực hiện thuật toán FFT 64 điểm trên phần cứng bằng ngôn ngữ Verilog HDL (có code)

12 427 14

Đ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 12
Dung lượng 593,37 KB
File đính kèm code.rar (21 MB)

Nội dung

Bài tập lớn Thiết kế hệ nhúng Đại học Bách khoa Hà Nội: Thiết kế và thực hiện thuật toán FFT 64 điểm trên phần cứng bằng ngôn ngữ Verilog HDL. Trong file đính kèm bao gồm code đầy đủ trên quartus và model sim, code thu gọn gồm các file .v và báo cáo chuẩn IEEE

Thiết kế thực thuật toán FFT 64 điểm phần cứng ngôn ngữ Verilog HDL Nguyễn Minh Hiếu (20151336) Điện tử 03 – K60 Đại học Bách khoa Hà Nội hieu.nm151336@sis.hust.edu.vn Nguyễn Minh Hiếu (20151337) Điện tử 03 – K60 Đại học Bách khoa Hà Nội hieu.nm151337@sis.hust.edu.vn Tóm tắt—Báo cáo trình bày cở sở tốn học biến đổi Fourier rời rạc (DFT), biến đổi Fourier nhanh (FFT) cụ thể FFT 64 điểm, thiết kế, mô FFT 64 điểm ngôn ngữ Verilog HDL Từ khóa—FFT 64 điểm, Verilog HDL, CORDIC Ngơ Văn Quyền (20153086) Điện tử 08 – K60 Đại học Bách khoa Hà Nội quyen.nv153086@sis.hust.edu.vn Biến đổi DFT IDFT biểu diễn dạng ma trận Xét ma trận sau: (4) I GIỚI THIỆU CHUNG Trong lĩnh vực Điện tử − Viễn thơng, xử lí tín hiệu công việc phổ biến quan trọng Cơ sở lí thuyết việc xử lí tín hiệu xây dựng dựa sở toán học phép biển đổi tín hiệu (rời rạc liên tục) miền khác nhau, miền thời gian miền tần số Tín hiệu đầu vào đầu biểu diễn sau: x= (5) X= (6) Biến đổi DFT IDFT biểu diễn dạng: X=Wx (7) x= (8) Biến đổi Fourier rời rạc (DFT ) biến đổi thơng dụng xử lý tin hiệu, biến đổi Fourier nhanh (FFT) thuật toán hiệu để tính DFT Chính vậy, nhóm chúng em chọn đề tài “ Thiết kế thực thuật tốn FFT 64 điểm phần cứng ngơn ngữ Verilog HDL” để làm tập lớn môn thiêt kế hệ nhúng B Thuật toán FFT Cooley − Tukey số Biến đổi Fourier nhanh (Fast Fourier Transform − FFT) thuật toán hiệu để biến đổi DFT IDFT nhanh nhiều so với tính tốn theo cơng thức gốc mà cho kết [6] Có nhiều thuật tốn FFT khác sử dụng kiến thức từ nhiều mảng khác tốn học, từ số phức tới lý thuyết nhóm lý thuyết số, báo cáo nhóm em nghiên cứu thực thuật toán FFT Cooley − Tukey số phân chia theo tần số (DIF) 1) Giới hiệu thuật toán FFT Cooley − Tukey số Thuật toán FFT Cooley − Tukey, đặt theo tên hai nhà toán học J.W Cooley John Tukey Có dạng thuật tốn FFT khác phân chia theo thời gian (Decimation in Time – DIT) phân chia theo tần số (Decimation in Frequency − DIF) [6] Cả hai dạng xây dựng dựa chế phân chia đệ quy DFT N điểm thành DFT điểm Hạn chế thuật toán FFT số áp dụng N chia hết cho 2, nhiên thuật toán lại tỏ hiệu trường hợp N lũy thừa phân chia biến đổi N điểm lặp lặp lại đến biến đổi DFT điểm 2) Thuật toán FFT số phân chia theo tần số Thuật toán FFT số phân chia theo tần số gọi thuật toán FFT Sande – Tukey Thuật toán dạng thuật toán FFT Cooley – Tukey số 2, sử dụng chế DIF Thuật toán DIF FFT xây dựng sau: Trong báo cáo này, nhóm em trình bày cở sở toán học DFT FFT phần II, thiết kế FFT 64 điểm phần III, trình bày kết mô phần IV đưa kết luận phần V II CƠ SỞ TOÁN HỌC CỦA DFT VÀ FFT A Biến đổi Fourier rời rạc (DFT) Biến đội Fourier rời rạc (Discrete Fourier Transform – DFT) biến đổi giải tích Fourier cho tín hiệu thời gian rời rạc Đầu vào DFT chuỗi rời rạc hữu hạn số thực số phức, khiến DFT công cụ lý tưởng để xử lý thông tin máy tính Đặc biệt, DFT sử dụng rộng rãi xử lý tín hiệu ngành liên quan đến phân tích tần số tín hiệu, để giải phương trình đạo hàm riêng làm phép tích chập [9] Trong biển đổi DFT, tín hiệu đầu vào rời rạc x[n] N điểm (n=0,1,2,…,N−1) chuyển thành tín hiệu đầu rời rạc X[k] N điểm (k=0,1,2,…,N−1) Dưới công thức biển đổi thuận DFT: Đặt , cơng thức viết lại: Cơng thức biển đổi ngược IDFT là: Nhóm − Lớp 109212 – GVHD: TS Ngơ Vũ Đức Như X[k] tách thành dãy có số chẵn số lẻ: Từ biến đổi DFT N điểm tách thành biến đổi DFT điểm, biến đổi DFT điểm lại tách thành biến đổi DFT , tiếp tục phân chia đến DFT điểm Đây sở thuật tốn FFT số Trong báo cáo nhóm em thực FFT 64 điểm Biến đổi DFT 64 điểm tách thành biến đổi DFT 32 điểm hình phức lại cần phép nhân số thực phép cộng số thực Như để tính N phép nhân số phức cần 4N phép nhân số thực 2N phép cộng số thực, để tính N−1 phép nhân số phức cần 2N−2 phép cộng số thực Ngoài để tính giá trị (cần phép tính giá trị hàm sin, cos, ta cần 2N phép tính giá trị hàm sin, cos để tính giá trị X[k] [1] Tóm lại để tính giá trị X[k] từ công thức gốc cần số phép tính sau:  N phép nhân phức (4N phép nhân thực 2N phép cộng thực)  N−1 phép cộng phức (2N−2 phép cộng thực)  2N phép tính giá trị hàm sin, cos Đối với thuật tốn DIF FFT, từ sở lí thuyết phân chia thuật toán, tổng số phép nhân số phức tổng số phép cộng số phức , nhiều so với tính DFT theo cơng thức gốc Như FFT có độ phức tạp tính tốn thấp nhiều lần tính trực tiếp DFT, dẫn đến tốc độ thực nhanh mà cho kết III THIẾT KẾ BỘ FFT 64 ĐIỂM A Thuật toán CORDIC 1) Giới hiệu thuật tốn CORDIC Thuật tốn CORDIC (COordinate Rotation DIgital Computer), gọi thuật toán Volder, thuật toán để tính tốn hàm lượng giác hyperbolic Thuật tốn phù hợp để thực phần cứng (ví dụ kit FPGA) khơng yêu cầu nhân Các thao tác thuật toán gồm cộng, trừ, dịch bit, tra bảng Lookup Table (LUT), CORDIC gọi thuật tốn dịch cộng CORDIC tính toán hàm lượng giác hyperbolic với độ xác mong muốn nào, tùy vào số bit để biểu diễn LUT, số bit biểu diễn nhiều độ xác cao [7] Trong triển khai FFT phần cứng, CORDIC sử dụng để thực phép nhân phức với , u cầu tính tốn hàm lượng giác sin, cos, độ lớn pha CORDIC xoay quanh ý tưởng việc xoay pha số phức cách nhân với giá trị không đổi nối tiếp Tuy nhiên, bội số sử dụng lũy thừa 2, nên cần sử dụng phép dịch bit cộng để tính tốn, khơng cần sử dụng nhân Tiếp tục phân chia DFT 32 điểm thành DFT 16 điểm, chia tiếp thành DFT điểm, 16 DFT điểm, 32 DFT điểm, cuối ta lưu đồ tín hiệu hồn chỉnh hình Các X[k] đầu bị đảo thứ tự, chia thành nửa, nửa 32 X[k] số chẵn, nửa 32 X[k] số lẻ Thứ tự đảo đầu xác định cách đảo bit, ví dụ x[61] (111101) tương ứng đầu X[47] (101111) 3) So sánh độ phức tạp tính tốn DFT DIF FFT Từ công thức (1) biến đổi DFT, ta nhận thấy để tính trực tiếp giá trị X[k] cần đến N phép nhân số phức N−1 phép cộng số phức Để tính phép nhân số 2) Nguyên lí hoạt động CORDIC CORDIC dựa tính chất phép nhân số phức: argument tích số phức tổng argument số phức Việc nhân phức với thực chất phép quay argument số phức góc mà khơng làm thay đổi module số phức Nguyên lí hoạt động CORDIC sau: Giả sử có số phức z=x+yj, muốn cộng thêm argument z (quay z theo chiều dương, ngược chiều quay kim đồng hồ), ta nhân z với (1+Kj) muốn trừ argument z (quay z theo chiều âm, chiều quay kim đồng hồ), ta nhân z với (1−Kj), K=, với i=0,1,2,… góc quay φ=arctan(K) φ=−arctan(K) tương ứng với hai trường hợp quay z Số phức nhận sau nhân trường là:  Nếu quay z theo chiều dương: z’=z(1+Kj)=(x+yj)(1+Kj)=(x−yK) + (y+xK)j (12)  Nếu quay z theo chiều âm: z’=z(1−Kj)=(x+yj)(1−Kj)=(x+yK) + (y−xK)j (13) Vì K= nên việc nhân số với K thực chất chia số cho , điều thực qua phép dịch phải (>>) i bit, nên ta khơng cần sử dụng nhân Trên thực tế ta sử dụng phép dịch phải số học (>>>) i bit để giữ dấu số bị dịch bit Các phương trình (12) (13) viết lại [3], [4]:   Nếu quay z theo chiều dương: z’=(x−y>>>i) + (y+x>>>i)j (14) Nếu quay z theo chiều âm: z’=(x+y>>>i) + (y−x>>>i)j (15) Ta nhận thấy K= ln nhỏ nên góc φ ln nhỏ 45° Khi cần quay góc khoảng −90° đến 90°, ta quay số phức theo góc φ theo chiều dương âm đến đạt độ xác mong muốn, số phức cuối nhận là: u=z(1±j)(1±j)( 1±j)… (16) Tuy nhiên, CORDIC làm module z tăng lên lần, số lần tăng lần gọi CORDIC Gain phục thuộc vào số lần quay z để đạt độ xác mong muốn Cơng thức tổng qt tính CORDIC Gain thực quay z n lần [2]: Bảng giá trị góc quay φ (tính theo độ) CORDIC Gain tương ứng với i=0:7 n=1:8 Vì module tăng lên nên tính tốn ta phải chia số cần tính cho CORDIC Gain, điều thực nhờ phép dịch phải logic bit cho kết gần Thuật toán CORDIC cho FFT 64 điểm trình bày kĩ phần B B Kiến trúc FFT 64 điểm 1) Khối CORDIC Khối CORDIC sử dụng tính toán gần phép nhân phức với Ở tập lớn này, nhóm em sử dụng 32 bit biểu diễn LUT, bit [31] có trọng số −180°, bit [30] có trọng số 90°, bit[29] đến bit[0] có trọng số °, với m=1,2,…,30 tương ứng Ví dụ chuỗi 00010010111001000000010100011101 biểu diễn gần góc arctan(=26.56505°, vì: Nhóm em biểu diễn đầu vào đầu số có dấu 16 bit, biểu diễn số âm theo kiểu mã bù Vì vậy, thực CORDIC quay 16 lần, giá trị CORDIC Gain là: Do đó, sau CORDIC ta phải chia kết cho , hay nhân với , việc thực nhờ phép dịch phải số học bit nên khơng cần nhân Hình thể thuật toán khối CORDIC, với xin, yin, zangle, clk, xout, yout phần thực, phần ảo số đầu vào, góc quay, xung clock, phần, phần ảo số đầu Trong vòng lặp, z[i]>0 thực nhân (x+ỵ)(1+ (quay theo chiều dương) trừ z[i] cho arctanLUT[i], z[i]>) i bit, nên ta không cần sử dụng nhân Trên thực tế ta sử dụng phép dịch phải số học (>>>) i bit để giữ dấu số bị dịch bit Các phương trình (12) (13) viết lại [3], [4]:  Nếu quay z theo chiều dương:  z’=(x−y>>>i) + (y+x>>>i)j (14) Nếu quay z theo chiều âm: z’=(x+y>>>i) + (y−x>>>i)j (15) Ta nhận thấy K= nhỏ nên góc φ ln nhỏ 45° Khi cần quay góc khoảng −90° đến 90°, ta quay số phức theo góc φ theo chiều dương âm đến đạt độ xác mong muốn, số phức cuối nhận là: u=z(1±j)(1±j)( 1±j)… (16) Tuy nhiên, CORDIC làm module z tăng lên lần, số lần tăng lần gọi CORDIC Gain phục thuộc vào số lần quay z để đạt độ xác mong muốn Cơng thức tổng qt tính CORDIC Gain thực quay z n lần [2]: Bảng giá trị góc quay φ (tính theo độ) CORDIC Gain tương ứng với i=0:7 n=1:8 Vì module tăng lên nên tính tốn ta phải chia số cần tính cho CORDIC Gain, điều thực nhờ phép dịch phải logic bit cho kết gần Thuật toán CORDIC cho FFT 64 điểm trình bày kĩ phần B Hình kiến trúc vòng lặp CORDIC Trong vòng lặp sử dụng MUX 2−1 đầu đưa vào vòng lặp Việc tính tốn giá trị có cộng trừ dịch phải số học bit làm giảm độ phức tạp phần cứng nhiều so với dùng nhân B Kiến trúc FFT 64 điểm 1) Khối CORDIC Khối CORDIC sử dụng tính tốn gần phép nhân phức với Ở tập lớn này, nhóm em sử dụng 32 bit biểu diễn LUT, bit [31] có trọng số −180°, bit [30] có trọng số 90°, bit[29] đến bit[0] có trọng số °, với m=1,2,…,30 tương ứng Ví dụ chuỗi 00010010111001000000010100011101 biểu diễn gần góc arctan(=26.56505°, vì: 2) Khối Butterfly Khối Butterfly xây dựng từ sơ đồ cánh bướm cho DIF FFT số (hình 5) [1] số phức đầu vào stage m dùn để tính tốn đầu stage m+1, với: (20) (21) Như khối Butterfly cần dùng CORDIC để tính tốn đầu thứ hai Sơ đồ khối Butterfly thể hình Khối Butterfly có đầu vào có phần thực phần ảo xin1, yin1, xin2, yin2, đầu có phần thực phần ảo xout1, yout1, xout2, yout2 [4] Nhóm em biểu diễn đầu vào đầu số có dấu 16 bit, biểu diễn số âm theo kiểu mã bù Vì vậy, thực CORDIC quay 16 lần, giá trị CORDIC Gain là: Do đó, sau CORDIC ta phải chia kết cho , hay nhân với , việc thực nhờ phép dịch phải số học bit nên không cần nhân Hình thể thuật tốn khối CORDIC, với xin, yin, zangle, clk, xout, yout phần thực, phần ảo số đầu vào, góc quay, xung clock, phần, phần ảo số đầu Trong vòng lặp, z[i]>0 thực nhân (x+ỵ)(1+ (quay theo chiều dương) trừ z[i] cho arctanLUT[i], z[i]

Ngày đăng: 14/03/2020, 17:50

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w