Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA
FFT REPORT November 10, 2012 Giáo viên hướng dẫn: Giảng viên Dương Tấn Nghĩa Nhóm 2Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Contents Giới thiệu Cơ sở lý thuyết .12 Triển khai 12 .23 Kết luận 23 Tài liệu tham khảo: 25 3Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA LỜI MỞ ĐẦU Lợi ích xử lý tín hiệu số ngày khẳng định rõ ràng Nó ứng dụng nhiều dạng ngày khác với hiệu to lớn đặc biệt, nhiều lĩnh vực khác thông tin, truyền dẫn, nhận dạng,… Ngày xử lý tín hiệu trở thành ngành khoa học không môn học Với mức độ phát triển ngày cao bản, phương pháp khả ứng dụng, lôi kỹ sư, nhà vật lý nhà toán học dồn tâm nghiên cứu Những kết nghiên cứu lĩnh vực xử lý tín hiệu ứng dụng vào sản phẩm phục vụ sống góp phần thay đổi sống xã hội hàng ngày Trong lĩnh vực xử lý tín hiệu số, biến đổi Fourier chiếm vị trí hàng đầu nhờ tồn thuật toán hiệu biến đổi Fourier rời rạc đóng vai trò quan trọng xử lý tín hiệu số Từ Cooley phát thuật toán tính nhanh biến đổi Fourier rời rạc vào năm 1965 (ta quen gọi biến đổi Fourier, tiếng anh Fast Fourier Transform, viết tắt FFT), thuật toán ngày nghiên cứu, phát triển thêm ngày khẳng định vai trò quan trọng xử lý tín hiệu số Tầm quan trọng thuật toán FFT lớn lí sau đây: FFT nâng cao tốc độ, độ mềm dẻo, độ xác xử lý tín hiệu số FFT mở lĩnh vực ứng dụng rộng lớn phân tích phổ: viễn thông, thiên văn, chuẩn đoán y học,… FFT khơi lại lợi ích nhiều ngành toán học mà trước chưa khai thác hết 4Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA FFT đặt móng cho việc tính toán nhanh biến đổi khác như: biến đổi Walsh, biến đổi Hadamard, biến đổi Haar, biến đổi Wavelet,… Chính tầm quan trọng to lớn tính ứng dụng rộng rãi thuật toán FFT nên nhóm chúng em chọn đề tài: “Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA” làm đề tài cho tập lớn môn học Tồn nhiều thuật toán FFT khác nhau, thuật toán có đặc điểm, cách tính toán ưu nhược điểm khác Trong báo cáo này, chúng em chọn thực thuật toán FFT Radix-22 5Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Giới thiệu 1.1 Mô tả công việc Triển khai thuật toán FFT 16 điểm dấu phảy tĩnh HDL FPGA 1.2 Yêu cầu kiến thức chương trình công việc 1.2.1 Yêu cầu kiến thức Các yêu cầu kiến thức cần phải học, trang bị: kiến thức xử lý tín hiệu số, kiến thức cụ thể FFT kiến thức thiết kế mạch số Các thiết bị cần dùng phải mô tả phần (Kit phát triển Altera DE2, phần mềm…) Số người tổng thời gian để thực nhiệm vụ 1.2.2 Phân công công việc Thành viên Nguyễn Văn Hưng Nguyễn Thị Hương Nguyễn Thế Mạnh Nguyễn Sơn Lâm Công việc làm Viết code C cho thuật toán 16-FFT radix2^2 thiết kế nhân phức Thiết kế Ram, Rom Viết code verilog cho BFI, BFII Thiết kế khối làm tròn, khối điều khiển thực mô Cả nhóm tham gia tìm hiểu lí thuyết FFT viết báo cáo 6Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Cơ sở lý thuyết 2.1 ĐÁNH GIÁ CÁCH TÍNH DFT TRỰC TIẾP THEO CÔNG THỨC ĐỊNH NGHĨA Ta biết, biến đổi Fourier rời rạc N điểm (N-point DFT) dãy N số phức x0, x1, , xN – dãy N giá trị phức X0, X1, , XN−1 tính theo công thức định nghĩa sau: k = 0, 1, 2,… , N-1 Đi kèm với biến đổi Fourier rời rạc DFT biến đổi Fourier rời rạc ngược IDFT, tính theo công thức định nghĩa: k = 0, 1, 2,… , N-1 Có thể đặt: Ta đánh giá khối lượng tính toán biến đổi DFT số phép cộng phép nhân cần phải thực Với giá trị x(n) giá trị phức, để có giá trị X(k)theo công thức định nghĩa, ta phải thực hiện: 7Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA N phép nhân phức, tương đương với 4N phép nhân thực 2N phép cộng thực (N-1) phép cộng phức, tương đương với 2(N-1) phép cộng thực 2N phép tính giá trị hàm sin, cos Như vậy, để tính tất N giá trị X(k) ta cần thực tổng cộng: N2 phép nhân phức N(N-1) phép cộng phức 2N2 phép tính giá trị hàm sin, cos Ta thấy, độ phức tạp thuật toán O(N 2) Khi số giá trị đầu vào lớn, khối lượng tính toán cần phải thực lớn tốc độ tính toán bị hạn chế, tốn nhiều nhớ máy tính Để ứng dụng vào thực tế, ta cần phải có phương pháp khác để tính toán nhanh hiệu DFT so với cách tính định nghĩa Đó lý đời thuật toán tính biến đổi Fourier nhanh (FFT) 2.2 THUẬT TOÁN FFT RADIX-22 DIF Trước tiên, ta cần biết rằng, hầu hết thuật toán FFT ứng dụng số tính chất quan trọng WNkn, tính chất đối xứng tính chất tuần hoàn: 2.2.1 Thuật toán FFT số 2^2 miền tần số: Tính toán DFT trực tiếp, công thức DFT N điểm định nghĩa biểu thức: Để giải toán thuật toán FFT số 2^2 ta áp dụng giản đồ chiều sau: 8Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Khi thay vào biểu thức (1) ta có: Trong đó: Ta thấy B phụ thuộc vào giá trị n2 n3 Giả sử n3 chẵn ta có biểu thức B có dạng: Nếu n3 lẻ (= 2m+1), tổng trở thành: Trong m có giá trị nguyên khoảng từ đến N/8 -1 Bằng việc trừ biểu thức (5), (6) cho biểu thức (3) ta nhận được: 9Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Trong biểu thức H định nghĩa bởi: Từ biểu thức (8) ta xây dựng sơ đồ hình cánh bướm để tính toán sau: Hình 1: Sơ đồ cánh bướm thuật toán Radix-22 Sơ đồ thể khối tính toán gồm BFI BFII cho FFT pipeline Architecture mô tả sau: Hình 2: Kiến trúc Radix 2^2 SDF pipeline FFT cho N=256 10Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Sau sơ đồ tính toán hình bướm cho 16 điểm : Hình 3: Sơ đồ tính toán cánh bướm hoàn chỉnh FFT Radix-22 cho N=16 2.2.2 Code C cho thuật toán 16-FFT radix 2^2 Đính kèm file “FFT_22SDF.c” 11Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA 12Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Triển khai 3.1 KIẾN TRÚC Để thực thuật toán FFT Radix-22 phần cứng, sử dụng nhiều kiểu kiến trúc khác như: kiến trúc song song (parallel architecture), kiến trúc thác lũ (cascade architecture), kiến trúc chỗ (in-place architecture) Mỗi kiến trúc có ưu điểm nhược điểm khác Trong trình thực hiện, nhóm chúng em chọn sử dụng kiến trúc thác lũ dễ thực không tốn nhiều tài nguyên Kiến trúc cascade có số đặc điểm như: Dữ liệu vào/ra theo điểm Chia làm log2N tầng (stage) tính toán butterfly Dễ thực Sơ đồ khối tổng quan kiến trúc: Hình 4: Sơ đồ tổng quan kiến trúc cascade 13Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Các stage tầng thực việc tính toán butterfly tương ứng với stage sơ đồ cánh bướm Hình Trong kiến trúc này, stage ta phải thực lưu lại liệu Điều giải thích do: liệu đầu vào vào liên tục theo điểm x(0), x(1), x(2),… Tuy nhiên cánh bướm lại tính toán x(1) x(8) Do giá trị đầu vào chưa sử dụng đến cần phải lưu lại sau lại lấy để tính toán thời điểm thích hợp Giá trị đầu ra theo điểm một, cánh bướm cho phép tính đồng thời giá trị đầu ra; ta cần lưu tạm giá trị đầu chưa cho đưa thời điểm thích hợp Chúng ta sử dụng ghi dịch cho mục đích Sau tính toán stage này, tín hiệu đưa đến stage để tính toán cánh bướm, hết Trong trường hợp N=16 điểm, sơ đồ cánh bướm hình 3, có stage tính toán Giữa stage chẵn stage lẻ có khác biệt nhau: kết tính toán đầu butterfly stage chẵn đưa tới nhân –j, kết tính toán butterfly stage lẻ đưa đến nhân W k Các giá trị Wk lưu ROM lấy để nhân cần thiết Do stage lẻ stage chẵn có khác biệt nên cần sử dụng khối Buttefly khác BF I BF II cho stage Sự khác chi tiết BF I BF II trình bày kĩ phần Ngoài khối butterfly khối nhân phức, kiến trúc cần có Controller dùng để kiểm soát trình tính toán Như vậy, ta có sơ đồ khối kiến trúc hình đây: Hình 5: Sơ đồ khối kiến trúc R22 3.1.1 Datapath 3.1.1.1 Các khối Butterfly ghi dịch Thanh ghi dịch (Shift Register) 14Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Thanh ghi dịch dùng kiến trúc hoạt động tương tự ghi dịch thông thường: có đầu vào để đưa liệu vào ghi, đầu để đưa tín hiệu từ ghi Ngoài có tín hiệu clock reset Ở sườn lên xung clock, có giá trị đầu vào đưa vào ghi, đồng thời giá trị lưu ghi dịch vị trí sang trái, giá trị nằm trái đưa đầu Do tất tín hiệu ta xử lí giá trị phức, nên vị trí ghi dịch bit mà phải đủ số bit để biểu diễn độ lớn phần thực phần ảo Nếu ta dùng bit để biểu diễn phần thực, bit để biểu diễn phần ảo vị trí ghi dịch phải có độ dài 16 bit Khối BF I: Cấu trúc chi tiết khối BF I thể Hình 6: Hình 6: Cấu trúc khối BF I Tín hiệu vào đưa vào giá trị Mỗi giá trị vào gồm có phần thực phần ảo đưa vào đồng thời qua port Input real Input Imag Đầu vào lấy từ tín hiệu vào x(n) từ stage trước Đầu BF I đưa tới khối tính toán tiếp theo, thông thường khối BF II Tín hiệu điều khiển s điều khiển multiplexer Số vị trí lưu trữ shift register thay đổi phụ thuộc theo stage, thấy hình Hoạt động khối BF I mô tả sau: 15Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA - Trong N/2i+1 chu kì đồng hồ đầu tiên, multiplexer dẫn tín hiệu từ input vào ghi dịch ghi dịch điền đầy - Trong N/2i+1 chu kì đồng hồ tiếp theo, liệu đầu vào tiếp tục đưa vào, đồng thời mẫu tín hiệu vào trước lưu ghi dịch đưa đầu ghi dịch Các cánh bướm tính toánvới liệu đầu vào liệu từ đầu ghi dịch Việc tính toán sử dụng cộng trừ Tín hiệu s điều khiển multiplexer để đưa kết tính toán cánh bướm output Tín hiệu điều khiển s lấy từ khối Controller Khối Controller có nhiệm vụ tạo tín hiệu s theo chu kì đồng hồ để điều khiển dòng liệu theo mong muốn Code đính kèm file “BFI.v” RTL tổng hợp Quartus: Hình 7: RTL BFI tổng hợp Quartus Khối BF II: Cấu trúc chi tiết khối BF II thể hình 7: 16Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Hình 8: Cấu trúc khối BF II Đầu vào khối BF II tương tự khối BF I, gồm phần thực phần ảo Những tín hiệu đầu vào đến từ khối nằm trước nó, khối BF I Đầu đưa tới khối tính toán tiếp theo, thường nhân phức để thực phép nhân với hệ số Wkn Các tín hiệu đầu vào S1 S2 dùng để điều khiển multiplexer cộng/trừ Trong kiến trúc này, ta kết hợp nhân với –j vào khối BF II Phép nhân với –j thực chất đổi chỗ phần thực, phần ảo đổi dấu Việc đổi chỗ phần thực phần ảo thực MUXim nằm đầu khối BF II; việc đổi dấu thực cách thay chuyển đổi việc thực phép cộng phép trừ cộng/trừ H1 H2 Hoạt động BF II giống với BF I Chỉ có khác biệt việc cần thực phép nhân với –j ứng với số giá trị đầu vào theo sơ đồ cánh bướm hình Tín hiệu điều khiển S1 S2 lấy từ khối Controller: khối Controller phải tạo tín hiệu phù hợp theo chu kì đồng hồ để điều khiển dòng liệu mong muốn, tương tự điều khiển khối BF I 17Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Code verilog BFII lưu file “BFII.v” RTL tổng hợp Quartus: Hình 9: RTL BFII tổng hợ Quartus 3.1.1.2 Bộ nhân phức khối làm tròn Sơ đồ khối nhân phức : Hình 10: sơ đồ khối nhân phức Đầu vào nhân phức gồm số phức đầu BFII phía trước giá trị Wk lưu ROM, số phức nhỏ nên lưu vào Rom ta phải nhân với 2^7 để giảm sai số nhân Do đó, sau nhân phức xong ta phải chia cho 2^7 cách cho qua làm tròn dịch trái bit 18Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Code Verilog cho “complex_mul_and_rounded.v” nhân làm tròn lưu file RTL tổng hợp Quartus: Hình 11: RTL nhân làm tròn 3.1.1.3 ROM Vì Rom lưu giá trị Wk, 16-FFT radix 2^2 ta cần Rom, Rom lưu giá trị , thời điểm ta sử dụng Rom cần bit địa bit lựa chọn rom Rom1 lưu giá trị W0 W2 W4 W6 , rom2 lưu giá trị trị W0 W1 W2 W3 , rom3 lưu giá trị trị W0 W3 W6 W9 Code cho rom lưu file “memory.v” 3.1.2 Controller Để xây dựng khối điều khiển ta phải tìm hiểu hoạt động datapath sau: Chu kỳ Stag Công việc e x(0) đưa vào Trạng thái ghi 00000000000000000 coun S[3:0] ter 0000 S[3]=0 Me m 19Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA 1->8 9->15 16->23 8->11 12->15 input x x(0) -> x(7) vào BFI lên ghi x(0)x(1) x(7) 0001 S[3]=0 - x(8) vào input BFI cộng/trừ với x(0) đầu ghi dịch cho output BFI, đồng thời tín hiệu đưa vào input BFII stage =0 x(0)x(1) x(7) 1000 S[3]=1 1000 S[3]=1 - x(0) đẩy x(1) thay x(0) đứng đầu ghi dịch - x(9…15) vào input BFI cộng/trừ với x(1…7) đầu ghi dịch, cho output BFI,và kết phép trừ đẩy vào ghi, đồng thời tín hiệu output BFI đưa vào input BFII stage =0 x(1)x(2)…x(7) 1001 S[3]=1 x(7)…………… 1111 S[3]=1 Số đưa vào để làm ghi Từ chu kì nput BFII hợp lệ sẵn sàng đưa vào ghi dịch chu kì 9->12 Thanh ghi dịch đầy đồng thời phần đầu ghi cộng với x(4,12) xuất input BFII ,tín hiệu cộng/trừ với đầu ghi dịch output BFII , đồng thời kết 00000000 0000 S[3]=0 ……………… …………….x(0,8) 0111 1000 S[2]=0 1001 X(0,8)x(1,9)x(2,10)x(3,11) 1100 S[2]=1 X(0,8)x(1,9)x(2,10)x(3,11) x(1,9)x(2,10)x(3,11)x(0,8.4,12) x(2,10)x(3,11)……… x(3,11)……………… 1100 1101 1110 1111 x(6)x(7)……… S[2]=1 S[2]=1 S[2]=1 S[2]=1 20Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA 16->19 20->23 24->27 28->31 12->13 phép trừ sẵn sàng đưa vào ghi chu kì -Từ chu kì 16 kết phép trừ lưu vào ghi phần đầu ghi thực phép nhân phức kết đẩy sang ghi BFI stage chu kì (17) - kì ghi dịch BFI lưu kết phép trừ sẵn sàng đẩy vào ghi BFII chu kì Thanh ghi dịch BFII đầy phần đầu cộng/trừ với output BFI sau nhân với –j Kết phép cộng cho output BFII qua nhân phức , sẵn sàng vào ghi dịch BFI stage Kết phép trừ đẩy ngược lại ghi chu kì sau Phân tích ““ Output BFII xuất input BFI nạp vào (-)(-)(-)(-) (-)(-)(-)(-)’ (-)(-)(-)’(-)’ (-)(-)’(-)’(-)’ 0000 S[2]=0 0001 0010 0011 W2 W4 W6 0100 S[2]=1 0101 0110 0111 W1 W2 W3 S[2]=0 W2 W4 W6 Chú thích (-)’ kết phép trừ BF trước S[2]=1 1100 S[1]=0 1101 21Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA ghi BFI chu kì 14->15 14 15 Thanh ghi BFI đầy phần đầu ghi +/- với input BFI Input BFII hợp lệ vào ghi chu kì Phân tích tương tự ta có X[0] xuất output hệ thống 15 chu kì có 15 output xuất 1110 S[1]=1 1111 1110 S[0]=0 1111 S[0]=1 Như để tính toán FFT 16 điểm radix2^2 cần dùng 30 chu kỳ để thực tính toán đưa tất đầu Qua phân tích ta thấy bit điều khiển S3, S2,S1,S0 kết hợp thành đếm Vì vậy, khối điều khiển đếm bit 3.1.3 Top module Ở phần ta ghép nối khối với để hệ thống hoàn chỉnh Code verilog top module lưu file “FFT_top.v” RTL top module tổng hợp Quartus: Hình 12: RTL top module 22Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA 3.2 KẾT QUẢ TỔNG HỢP VÀ MÔ PHỎNG 3.2.1 Kết tổng hợp Logic element (LE) = 593 Total registers = 83 Total memory bits = 148 Clock Setup: fclk = 41.34 MHz ( period = 24.192 ns ) 3.2.2 Kết mô Hình 13: Kết mô 16-FFT radix 2^2 Chú ý: x_re, x_im input , X_re, X_im output xuất từ chu kì 15->30 kết mô Kết mô so sánh độ xác với kết tạo từ chương trình C 23Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Kết luận Trên đây, nhóm em trình bày việc thiết kế kiến trúc triển khai thuật toán FFT Radix 22 cho trường hợp 16 điểm FPGA sử dụng ngôn ngữ Verilog HDL Việc thực đề tài giúp chúng em hiểu rõ thuật toán FFT, lĩnh vực trọng tâm ngành xử lý tín hiệu số; đồng thời giúp chúng em biết cách triển khai thuật toán phần cứng, cụ thể công nghệ FPGA Không vậy, trình thực đề tài, chúng em củng cố, nâng cao kiến thức môn học Xử lý số tín hiệu; bên cạnh kiến thức ngôn ngữ Verilog HDL, công nghệ FPGA, cách sử dụng công cụ phần mềm thiết kế, mô Quartus, ModelSim,… Chúng em xin chân thành cảm ơn giảng viên Dương Tấn Nghĩa hướng dẫn giúp đỡ chúng em trình thực đề tài 24Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA 25Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh HDL FPGA Tài liệu tham khảo: [1] Low Power Hardware Implementation of High Speed FFT Core - M Kannan and S.K Srivatsa [2] Discrete-Time Signal Processing - 2ed – V.Oppenheim, W Schafer and R Buck [3] Digital Signal Processing - Principles, algorithms and applications, 3rd Edition - J.G Proakis and D.G Manolakis [3] FPGA implementation of Radix-22Pipelined FFT Processor - AHMED SAEED, M ELBABLY, G ABDELFADEEL and M I ELADAWY [...]...1 1Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA 1 2Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA 3 Triển khai 3.1 KIẾN TRÚC Để thực hiện thuật toán FFT Radix-22 trên phần cứng, có thể sử dụng nhiều kiểu kiến trúc khác nhau như: kiến trúc song song (parallel architecture),... phỏng trên Kết quả mô phỏng đã được so sánh độ chính xác với kết quả được tạo từ chương trình C 2 3Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA 4 Kết luận Trên đây, nhóm em đã trình bày việc thiết kế kiến trúc và triển khai thuật toán FFT Radix 22 cho trường hợp 16 điểm trên FPGA sử dụng ngôn ngữ Verilog HDL Việc thực hiện đề tài này đã giúp chúng em hiểu rõ hơn về các thuật toán FFT, ... giảng viên Dương Tấn Nghĩa đã hướng dẫn và giúp đỡ chúng em trong quá trình thực hiện đề tài này 2 4Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA 2 5Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA Tài liệu tham khảo: [1] Low Power Hardware Implementation of High Speed FFT Core - M Kannan and S.K Srivatsa [2] Discrete-Time Signal Processing - 2ed – V.Oppenheim, W Schafer... chia cho 2^7 bằng cách cho qua bộ làm tròn và dịch trái 7 bit 1 8Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA Code Verilog cho bộ “complex_mul_and_rounded.v” nhân và làm tròn được lưu trong file RTL tổng hợp trên Quartus: Hình 11: RTL của bộ nhân và làm tròn 3.1.1.3 ROM Vì Rom lưu các giá trị Wk, đối với 16 -FFT radix 2^2 ta cần 3 Rom, mỗi Rom lưu 4 giá trị , tại một thời điểm ta chỉ... ở file FFT_ top.v” RTL của top module được tổng hợp trên Quartus: Hình 12: RTL của top module 2 2Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA 3.2 KẾT QUẢ TỔNG HỢP VÀ MÔ PHỎNG 3.2.1 Kết quả tổng hợp Logic element (LE) = 593 Total registers = 83 Total memory bits = 148 Clock Setup: fclk = 41.34 MHz ( period = 24.192 ns ) 3.2.2 Kết quả mô phỏng Hình 13: Kết quả mô phỏng 16 -FFT radix... hồ để điều khiển dòng dữ liệu đúng theo mong muốn Code được đính kèm trong file “BFI.v” RTL tổng hợp trên Quartus: Hình 7: RTL BFI được tổng hợp trên Quartus Khối BF II: Cấu trúc chi tiết của khối BF II được thể hiện trong hình 7: 1 6Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA Hình 8: Cấu trúc khối BF II Đầu vào của khối BF II cũng tương tự như khối BF I, gồm phần thực và phần... x(1,9)x(2,10)x(3,11)x(0,8.4,12) x(2,10)x(3,11)……… x(3,11)……………… 1100 1101 1110 1111 x(6)x(7)……… S[2]=1 S[2]=1 S[2]=1 S[2]=1 2 0Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA 16- >19 0 20->23 0 24->27 0 28->31 12->13 0 1 quả phép trừ sẵn sàng được đưa vào thanh ghi ở chu kì tiếp theo -Từ chu kì 16 kết quả phép trừ đã lưu đây vào thanh ghi và phần đầu thanh ghi thực hiện phép nhân phức kết quả này sẽ... này phù hợp theo từng chu kì đồng hồ để điều khiển dòng dữ liệu như mong muốn, tương tự như điều khiển khối BF I 1 7Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA Code verilog BFII được lưu trong file “BFII.v” RTL tổng hợp trên Quartus: Hình 9: RTL của BFII được tổng hợ trên Quartus 3.1.1.2 Bộ nhân phức và khối làm tròn Sơ đồ khối của bộ nhân phức : Hình 10: sơ đồ khối của bộ nhân... hiểu hoạt động của datapath như sau: Chu kỳ 0 Stag Công việc e 0 x(0) được đưa vào Trạng thái thanh ghi 00000000000000000 coun S[3:0] ter 0000 S[3]=0 Me m 1 9Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA 1->8 0 8 0 9->15 0 16- >23 0 8->11 0 12->15 0 input x x(0) -> x(7) vào BFI và lên thanh ghi x(0)x(1) x(7) 0001 S[3]=0 - x(8) vào input của BFI sẽ cộng/trừ với x(0) ở đầu thanh ghi... phức, kiến trúc cần có một bộ Controller dùng để kiểm soát quá trình tính toán Như vậy, ta có sơ đồ khối của kiến trúc như hình dưới đây: Hình 5: Sơ đồ khối kiến trúc R22 3.1.1 Datapath 3.1.1.1 Các khối Butterfly và thanh ghi dịch Thanh ghi dịch (Shift Register) 1 4Triển khai thuật toán FFT 16 điểm dấu phẩy tĩnh bằng HDL trên FPGA Thanh ghi dịch dùng trong kiến trúc này hoạt động tương tự như các thanh