(Tiểu luận) báo cáo xử lý tín hiệu số với fpga bài tập lớn cho sơ đồ khối của hệ thống tìm số nhỏ nhất thứ nhất (min1), số nhỏ nhất thứ 2 (min2) và vị trí của số nhỏ nhất thứ nhất
Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 52 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
52
Dung lượng
2,3 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ - - BÁO CÁO XỬ LÝ TÍN HIỆU SỐ VỚI FPGA BÀI TẬP LỚN Giáo viên hướng dẫn : Nguyễn Lý Thiên Trường Nhóm thực : 10 Danh sách thành viên : Nguyễn Hà Nhất Phương 1813622 Nguyễn Bùi Thanh Sơn 1813849 Nguyễn Minh Thành 1814021 Trần Văn Thành 1814035 Võ Hồng Thịnh 1810552 TP Hồ Chí Minh, Tháng 08/2021 h Danh sách thành viên: STT Họ Tên MSSV Email Nguyễn Hà Nhất Phương 1813622 phuong.nguyenhanhat@hcmut.edu.vn Nguyễn Bùi Thanh Sơn 1813849 son.nguyenbku1604@hcmut.edu.vn Nguyễn Minh Thành 1814021 thanh.nguyenminh912000@hcmut.edu.vn Trần Văn Thành 1814035 thanh.tran.432@hcmut.edu.vn Võ Hồng Thịnh 1810552 thinh.vo2888@hcmut.edu.vn Danh sách phân cơng nhiệm vụ: STT Họ Tên Nhiệm vụ cụ thể Nguyễn Hà Nhất Phương Phần chung: Bài Nguyễn Bùi Thanh Sơn Phần chung: Bài Nguyễn Minh Thành Phần chung: Bài 4 Trần Văn Thành Phần chung: Bài Võ Hoàng Thịnh Phần chung: Bài Phần tập riêng nhóm làm chung qua buổi google meet Đại học Bách khoa TPHCM Trang h MỤC LỤC NỘI DUNG Phần chung cho tất nhóm 1.1 Bài 1.1.1 Đề 1.1.2 Giải thuật thứ 1.1.3 Giải thuật thứ hai 10 1.2 Bài 16 1.2.1 Đề 16 1.2.2 Cơ sở lý thuyết 16 1.2.3 Giải thuật tính tốn 18 1.2.4 Code mô 19 1.2.5 Kết mô 21 1.2.6 Đánh giá tài nguyên phần cứng thực thi FPGA Cyclone II EP2C35F672C6 23 1.3 Bài 24 1.3.1 Đề 24 1.3.2 Giải thuật tính tính tốn chữ số (Digit-by-digit calculation) 24 1.3.3 Code thực kết mô 26 1.3.4 Kết đánh giá tài nguyên phần cứng thực thi FPGA Cyclone II EP2C35F672C6 30 1.4 Bài 31 1.4.1 Đề 31 1.4.2 Cơ sở lý thuyết 31 1.4.3 Chi tiết thiết kế 32 1.4.4 Code thực kết mô 33 1.4.5 Kết đánh giá tài nguyên phần cứng thực thi FPGA Cyclone II EP2C35F672C6 38 Đại học Bách khoa TPHCM Trang h 1.5 Bài 40 1.5.1 Đề 40 1.5.2 Cơ sở lý thuyết 40 1.5.3 Code thực kết mô 42 1.5.4 Kết đánh giá tài nguyên phần cứng thực thi FPGA Cyclone II EP2C35F672C6 45 Phần riêng cho nhóm 46 Đại học Bách khoa TPHCM Trang h NỘI DUNG Phần chung cho tất nhóm 1.1 Bài 1.1.1 Đề Cho sơ đồ khối hệ thống tìm số nhỏ thứ (min1), số nhỏ thứ (min2) vị trí số nhỏ thứ (index_min1) 𝑛 số không dấu ngõ vào hình bên Hình 1.1 Bộ min_finder Lưu ý: Thực thi hệ thống với 𝑛 = 10 Các ngõ vào I0, I1,…, In-1 số nhị phân bit không dấu Trường hợp ngõ vào có nhiều giá trị min1, ngõ index_min1 vị trí ngõ vào có số nhỏ Đề xuất giải thuật thực thi hệ thống (sơ đồ khối, giải thích chi tiết) Viết code Verilog mơ tả giải thuật đề xuất Sử dụng phần mềm mô kiểm tra chức hệ thống (chụp lại hình kết mơ phỏng) Đánh giá tài nguyên phần cứng thực thi giải thuật đề xuất FPGA Cyclone II EP2C35F672C6 Đại học Bách khoa TPHCM Trang h 1.1.2 Giải thuật thứ Hình 1.2 Sơ đồ giải thuật thứ min_finder Đầu tiên, ta ghép phần gồm giá trị port số thứ tự port vào để thực so sánh, gọi IN[i] Khi so sánh, phần giá trị port nhau, ta so sánh số thứ tự port Tiếp theo, ta lưu min_1 index_min1 tương ứng với giá trị port số thứ tự nó: min_2 giá trị port Ta so sánh cặp min_1, index_min1 giá trị min_2 với giá trị tương ứng (có khơng có số thứ tự) port từ đến Khi có trường hợp xảy ra: Thứ nhất, cặp min_1, index_min1 lớn IN[i] Khi đó, ta thay min_1, index_min1 giá trị tương ứng port thứ i thay min_2 min_1 Thứ hai, cặp min_1, index_min1 bé IN[i] Ta tiếp tục so sánh giá trị port thứ i với min_2 Nếu min_2 lớn giá trị port thứ i ta cập nhật giá trị cho min_2 ngược lại ta giữ nguyên min_2 Đại học Bách khoa TPHCM Trang h Code thực hiện: module min_finder(rst,clk,in0,in1,in2,in3,in4,in5,in6,in7,in8,in9,min1,min2,index_ min1,nflag); localparam n = 10; input rst,clk; input[3:0] in0,in1,in2,in3,in4,in5,in6,in7,in8,in9; output reg[3:0] min1,min2; output reg[3:0] index_min1; output reg nflag; reg[7:0] reg_in0,reg_in1,reg_in2,reg_in3,reg_in4,reg_in5,reg_in6,reg_in7,reg_in8,reg _in9,temp; reg[7:0] reg_min1; reg[3:0] reg_min2; wire cp1,cp2,flag_0; reg[3:0] count; mf_compare CP1 (reg_min1,reg_in1,cp1); cp CP2 (reg_min2,reg_in1[3:0],,cp2); assign flag_0 = |(count); always @(posedge clk) begin if(rst||(~flag_0)) begin reg_in0 = {4'b0000,in0}; reg_in1 = {4'b0001,in1}; reg_in2 = {4'b0010,in2}; reg_in3 = {4'b0011,in3}; reg_in4 = {4'b0100,in4}; reg_in5 = {4'b0101,in5}; reg_in6 = {4'b0110,in6}; reg_in7 = {4'b0111,in7}; reg_in8 = {4'b1000,in8}; reg_in9 = {4'b1001,in9}; end else begin temp = reg_in0; reg_in0 = reg_in1; reg_in1 = reg_in2; reg_in2 = reg_in3; reg_in3 = reg_in4; reg_in4 = reg_in5; reg_in5 = reg_in6; reg_in6 = reg_in7; reg_in7 = reg_in8; reg_in8 = reg_in9; reg_in9 = temp; end end always @(posedge clk) begin if(rst) begin count = 4'b1001; nflag = 1'b1; end else if(flag_0) count = count - 1; else begin {index_min1,min1} = reg_min1; min2 = reg_min2; nflag = 1'b0; end end Đại học Bách khoa TPHCM Trang h always @(negedge clk) begin if (rst) begin reg_min1 = {4'b0000,in0}; reg_min2 = in1; end else if(cp1&flag_0) begin reg_min2 = reg_min1[3:0]; reg_min1 = reg_in1; end else if(cp2&flag_0) reg_min2 = reg_in1[3:0]; end endmodule module mf_compare(in0,in1,out); input[7:0] in0,in1; output reg out; wire[1:0] eq, grt; cp COMP0 (in0[3:0],in1[3:0],eq[0],grt[0]); cp COMP1 (in0[7:4],in1[7:4],eq[1],grt[1]); always @* begin if(eq[0]) out