1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

54 12 0

Đ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

Tiêu đề 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ác giả Nguyễn Hà Nhất Phương, Nguyễn Bùi Thanh Sơn, Nguyễn Minh Thành, Trần Văn Thành, Võ Hoàng Thịnh
Người hướng dẫn Nguyễn Lý Thiên Trường
Trường học Đại Học Bách Khoa TPHCM
Thể loại Bài tập lớn
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 54
Dung lượng 1,14 MB

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

Cấu trúc

  • 1.1 Bài 1 (5)
    • 1.1.1 Đề bài (5)
    • 1.1.2 Giải thuật thứ nhất (6)
    • 1.1.3 Giải thuật thứ hai (11)
  • 1.2 Bài 2 (17)
    • 1.2.1 Đề bài (17)
    • 1.2.2 Cơ sở lý thuyết (17)
    • 1.2.3 Giải thuật tính toán (19)
    • 1.2.4 Code mô phỏng (20)
    • 1.2.5 Kết quả mô phỏng (22)
    • 1.2.6 Đánh giá tài nguyên phần cứng khi thực thi trên FPGA Cyclone II EP2C35F672C6 (24)
  • 1.3 Bài 3 (25)
    • 1.3.1 Đề bài (25)
    • 1.3.2 Giải thuật tính căn tính toán từng chữ số (Digit-by-digit calculation) (25)
    • 1.3.3 Code thực hiện và kết quả mô phỏng (27)
    • 1.3.4 Kết quả đánh giá tài nguyên phần cứng khi thực thi trên FPGA Cyclone II EP2C35F672C6 (31)
  • 1.4 Bài 4 (32)
    • 1.4.1 Đề bài (32)
    • 1.4.2 Cơ sở lý thuyết (32)
    • 1.4.3 Chi tiết thiết kế (33)
    • 1.4.4 Code thực hiện và kết quả mô phỏng (35)
    • 1.4.5 Kết quả đánh giá tài nguyên phần cứng khi thực thi trên FPGA Cyclone II (40)
  • 1.5 Bài 5 (42)
    • 1.5.1 Đề bài (42)
    • 1.5.2 Cơ sở lý thuyết (42)
    • 1.5.3 Code thực hiện và kết quả mô phỏng (44)
    • 1.5.4 Kết quả đánh giá tài nguyên phần cứng khi thực thi trên FPGA Cyclone II EP2C35F672C6 (47)

Nội dung

Sơ đồ giải thuật thứ nhất bộ min_finder Đầu tiên, ta ghép 2 phần gồm giá trị của port và số thứ tự của port đó vào để thực hiện so sánh, gọi là IN[i].. Hình 1.10 kết quả mô phỏng của dạn

Bài 1

Đề bài

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 (index_min1) trong số không dấu ngõ vào như hình bên dưới.

 Thực thi hệ thống trên với = 10

 Các ngõ vào I0, I1,…, In-1 là các số nhị phân 4 bit không dấu.

 Trường hợp ngõ vào có nhiều hơn 2 giá trị min1, thì ngõ ra index_min1 chỉ vị trí ngõ vào có chỉ số nhỏ hơn.

1 Đề xuất 2 giải thuật thực thi hệ thống trên (sơ đồ khối, giải thích chi tiết).

2 Viết code Verilog mô tả 2 giải thuật đã đề xuất ở trên Sử dụng phần mềm mô phỏng kiểm tra chức năng hệ thống (chụp lại hình kết quả mô phỏng).

3 Đánh giá tài nguyên phần cứng khi thực thi 2 giải thuật đề xuất trên FPGA Cyclone II EP2C35F672C6.

Giải thuật thứ nhất

Hình 1.2 Sơ đồ giải thuật thứ nhất bộ min_finder Đầu tiên, ta ghép 2 phần gồm giá trị của port và số thứ tự của port đó vào để thực hiện so sánh, gọi là IN[i] Khi so sánh, nếu phần giá trị của 2 port bằng nhau, ta sẽ so sánh số thứ tự của port đó.

Tiếp theo, ta lưu min_1 và index_min1 tương ứng với giá trị của port 0 và số thứ tự của nó:

0 và min_2 là giá trị của port 1.

Ta lần lượt so sánh cặp min_1, index_min1 và giá trị min_2 với giá trị tương ứng (có hoặc không có số thứ tự) của các port từ 1 đến 9 Khi đó sẽ có 2 trường hợp xảy ra:

Thứ nhất, cặp min_1, index_min1 lớn hơn IN[i] Khi đó, ta thay min_1, index_min1 bởi các giá trị tương ứng của port thứ i và thay min_2 bởi min_1.

Thứ hai, cặp min_1, index_min1 bé hơn IN[i] Ta sẽ tiếp tục so sánh giá trị của port thứ i với min_2 Nếu min_2 lớn hơn giá trị của port thứ i thì ta cập nhật giá trị đó cho min_2 và ngược lại thì ta giữ nguyên min_2. Đại học Bách khoa TPHCM Trang 5

 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 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]; endmodule end 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

Ngày đăng: 10/04/2023, 10:25

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w