lOMoARcPSD| 58833082
Báo cáo thực hành môn thiết kế số và vi xử lý
Buổi 1 và 2
Họ và tên: Trần Duy Long
sinh viên: 22029071
1) Buổi 1:
- Cài đặt ứng dụng Quartus cùng với cách sử dụng ứng dụng cùng với đó là tải ứng
dụng
ModelSim và le MAX 10 DEVICE ch hợp vào trong ứng dụng Quartus. Học về cách tạo
1 project và thể hiện biểu thức logic đại số XNOR vào trong Quartus dưới dạng ngôn ngữ
SystemVerilog. Học về các chân của STEP MAX 10 board dựa vào bảng chi ết và cách chọn
gn input, output vào các chân của nó. Cuối cùng là cách thể hin biểu thức đại số XNOR
trên STEP MAX 10 board.
2) Buổi 2:
- Giới thiệu về ngôn ngữ mô tphần cứng. Đầu ên học về luồng thiết kế gồm những
ớc nào kể từ khi lập được bảng chân lý cho đến khi thể hiện nó được trên STEP
MAX 10 board. Học về định nghĩa của mô phòng và tổng hợp là gì ? Tiếp theo ta biết
lOMoARcPSD| 58833082
đưc định nghĩa về ngôn ngữ mô tả phần cứng, mục đích sử dụng để làm gì. Định
nghĩa về Module, cú pháp, khai báo, portlist, và logic nội bộ của nó thể hiện trong
việc lập trình. Sau đó ta có bảng các kiểu dữ liệu cơ bản và giá trị của 1 biến. Tiếp đó
là học thêm về các toán tử và mức độ ưu ên của chúng trong Quartus. Định nghĩa
và cú pháp của gán liên tục và gán có điều kiện. Biết thêm được cách thể hiện biểu
thức logic đại số NOT ới dạng ngôn ngữ SystemVerilog. Biết được testbench là gì,
các bước thực hiện cùng với đó là cấu trúc của 1 testbench và ví dụ về nó. Cuối cùng
là cách chạy mô phỏng trên Quartus và thử nghiệm việc thiết kế module trên STEP
MAX 10 board.
- Bài tập về nhà buổi 2:
Bài 1: Design a NAND gate using SystemVerilog, simulate on ModelSim and test
operaons of design in STEP MAX-10 board
Đoạn code sử dụng ngôn ngữ SystemVerilog đthiết kế 1 cổng NAND
Testbench của nó
lOMoARcPSD| 58833082
Kết quả chạy mô phỏng như hình dưới đây
Bài 2: Design a 2:1 mulplexer using SystemVerilog, simulate on ModelSim and test operaons
of design in STEP MAX-10 board. (Using condional operator)
Đoạn code sử dụng ngôn ngữ SystemVerilog đthiết kế 1 bộ ghép kênh 2:1
lOMoARcPSD| 58833082
Testbench của nó
lOMoARcPSD| 58833082
Kết quả chạy mô phỏng như hình dưới đây
Bài 3: Design a 4:1 mulplexer using SystemVerilog, simulate on ModelSim and test operaons
of design in STEP MAX-10 board. (Using condional operator)
Đoạn code sử dụng ngôn ngữ SystemVerilog đthiết kế 1 bộ ghép kênh 4:1
lOMoARcPSD| 58833082
module Mulplexer41(input logic a,b,c,d,sel1,sel2, output logic e); assign e = (sel1 == 0 & sel2 == 0) ?
a : (sel1 == 0 & sel2 == 1) ? b : (sel1 == 1 & sel2 ==
0) ? c : d;
endmodule
Testbench của nó
lOMoARcPSD| 58833082
module Mulplexer41_tb(); logic
a,b,c,d,sel1,sel2,e;
Mulplexer41 dut(a,b,c,d,sel1,sel2,e); inial begin a = 0; b = 0; c = 0; d = 0; sel1 =
0; sel2 = 0; #10; assert (e == 0) else $error("a = 0, b = 0, c = 0, d = 0, sel1 = 0, and
sel2 = 0 failed");
a = 1; b = 0; c = 0; d = 0; sel1 = 0; sel2 = 0; #10; assert (e == 1) else $error("a = 1,
b = 0, c = 0, d = 0, sel1 = 0, and sel2 = 0 failed");
a = 0; b = 0; c = 0; d = 0; sel1 = 0; sel2 = 1; #10; assert (e == 0) else $error("a = 0,
b = 0, c = 0, d = 0, sel1 = 0, and sel2 = 1 failed");
a = 0; b = 1; c = 0; d = 0; sel1 = 0; sel2 = 1; #10; assert (e == 1) else $error("a = 0,
b = 1, c = 0, d = 0, sel1 = 0, and sel2 = 1 failed");
a = 0; b = 0; c = 0; d = 0; sel1 = 1; sel2 = 0; #10; assert (e == 0) else $error("a = 0,
b = 0, c = 0, d = 0, sel1 = 1, and sel2 = 0 failed"); a = 0; b = 0; c = 1; d = 0; sel1 = 1;
sel2 = 0; #10; assert (e == 1) else $error("a = 0, b = 0, c = 1, d = 0, sel1 = 1, and
sel2 = 0 failed");
lOMoARcPSD| 58833082
a = 0; b = 0; c = 0; d = 0; sel1 = 1; sel2 = 1; #10; assert (e == 0) else $error("a = 0,
b = 0, c = 0, d = 0, sel1 = 1, and sel2 = 1 failed");
a = 0; b = 0; c = 0; d = 1; sel1 = 1; sel2 = 1; #10; assert (e == 1) else $error("a = 0,
b = 0, c = 0, d = 1, sel1 = 1, and sel2 = 1 failed");
a = 1; b = 1; c = 1; d = 1; sel1 = 1; sel2 = 1; #10; assert (e == 1) else $error("a = 1,
b = 1, c = 1, d = 1, sel1 = 1, and sel2 = 1 failed");
a = 1; b = 0; c = 1; d = 0; sel1 = 1; sel2 = 0; #10; assert (e == 1) else $error("a = 1,
b = 0, c = 0, d = 1, sel1 = 1, and sel2 = 0 failed");
a = 0; b = 1; c = 0; d = 1; sel1 = 1; sel2 = 0; #10; assert (e == 0) else $error("a = 0,
b = 1, c = 0, d = 1, sel1 = 1, and sel2 = 0 failed");
end endmodule
Kết quả chạy mô phỏng như hình dưới đây

Preview text:

lOMoAR cPSD| 58833082
Báo cáo thực hành môn thiết kế số và vi xử lý Buổi 1 và 2
Họ và tên: Trần Duy Long Mã sinh viên: 22029071 1) Buổi 1:
- Cài đặt ứng dụng Quartus cùng với cách sử dụng ứng dụng cùng với đó là tải ứng dụng
ModelSim và file MAX 10 DEVICE tích hợp vào trong ứng dụng Quartus. Học về cách tạo
1 project và thể hiện biểu thức logic đại số XNOR vào trong Quartus dưới dạng ngôn ngữ
SystemVerilog. Học về các chân của STEP MAX 10 board dựa vào bảng chi tiết và cách chọn
gắn input, output vào các chân của nó. Cuối cùng là cách thể hiện biểu thức đại số XNOR trên STEP MAX 10 board. 2) Buổi 2:
- Giới thiệu về ngôn ngữ mô tả phần cứng. Đầu tiên học về luồng thiết kế gồm những
bước nào kể từ khi lập được bảng chân lý cho đến khi thể hiện nó được trên STEP
MAX 10 board. Học về định nghĩa của mô phòng và tổng hợp là gì ? Tiếp theo ta biết lOMoAR cPSD| 58833082
được định nghĩa về ngôn ngữ mô tả phần cứng, mục đích sử dụng để làm gì. Định
nghĩa về Module, cú pháp, khai báo, portlist, và logic nội bộ của nó thể hiện trong
việc lập trình. Sau đó ta có bảng các kiểu dữ liệu cơ bản và giá trị của 1 biến. Tiếp đó
là học thêm về các toán tử và mức độ ưu tiên của chúng trong Quartus. Định nghĩa
và cú pháp của gán liên tục và gán có điều kiện. Biết thêm được cách thể hiện biểu
thức logic đại số NOT dưới dạng ngôn ngữ SystemVerilog. Biết được testbench là gì,
các bước thực hiện cùng với đó là cấu trúc của 1 testbench và ví dụ về nó. Cuối cùng
là cách chạy mô phỏng trên Quartus và thử nghiệm việc thiết kế module trên STEP MAX 10 board.
- Bài tập về nhà buổi 2:
Bài 1: Design a NAND gate using SystemVerilog, simulate on ModelSim and test
operations of design in STEP MAX-10 board
Đoạn code sử dụng ngôn ngữ SystemVerilog để thiết kế 1 cổng NAND Testbench của nó lOMoAR cPSD| 58833082
Kết quả chạy mô phỏng như hình dưới đây
Bài 2: Design a 2:1 multiplexer using SystemVerilog, simulate on ModelSim and test operations
of design in STEP MAX-10 board. (Using conditional operator)
Đoạn code sử dụng ngôn ngữ SystemVerilog để thiết kế 1 bộ ghép kênh 2:1 lOMoAR cPSD| 58833082 Testbench của nó lOMoAR cPSD| 58833082
Kết quả chạy mô phỏng như hình dưới đây
Bài 3: Design a 4:1 multiplexer using SystemVerilog, simulate on ModelSim and test operations
of design in STEP MAX-10 board. (Using conditional operator)
Đoạn code sử dụng ngôn ngữ SystemVerilog để thiết kế 1 bộ ghép kênh 4:1 lOMoAR cPSD| 58833082
module Multiplexer41(input logic a,b,c,d,sel1,sel2, output logic e); assign e = (sel1 == 0 & sel2 == 0) ?
a : (sel1 == 0 & sel2 == 1) ? b : (sel1 == 1 & sel2 == 0) ? c : d; endmodule Testbench của nó lOMoAR cPSD| 58833082
module Multiplexer41_tb(); logic a,b,c,d,sel1,sel2,e;
Multiplexer41 dut(a,b,c,d,sel1,sel2,e); initial begin a = 0; b = 0; c = 0; d = 0; sel1 =
0; sel2 = 0; #10; assert (e == 0) else $error("a = 0, b = 0, c = 0, d = 0, sel1 = 0, and sel2 = 0 failed");
a = 1; b = 0; c = 0; d = 0; sel1 = 0; sel2 = 0; #10; assert (e == 1) else $error("a = 1,
b = 0, c = 0, d = 0, sel1 = 0, and sel2 = 0 failed");
a = 0; b = 0; c = 0; d = 0; sel1 = 0; sel2 = 1; #10; assert (e == 0) else $error("a = 0,
b = 0, c = 0, d = 0, sel1 = 0, and sel2 = 1 failed");
a = 0; b = 1; c = 0; d = 0; sel1 = 0; sel2 = 1; #10; assert (e == 1) else $error("a = 0,
b = 1, c = 0, d = 0, sel1 = 0, and sel2 = 1 failed");
a = 0; b = 0; c = 0; d = 0; sel1 = 1; sel2 = 0; #10; assert (e == 0) else $error("a = 0,
b = 0, c = 0, d = 0, sel1 = 1, and sel2 = 0 failed"); a = 0; b = 0; c = 1; d = 0; sel1 = 1;
sel2 = 0; #10; assert (e == 1) else $error("a = 0, b = 0, c = 1, d = 0, sel1 = 1, and sel2 = 0 failed"); lOMoAR cPSD| 58833082
a = 0; b = 0; c = 0; d = 0; sel1 = 1; sel2 = 1; #10; assert (e == 0) else $error("a = 0,
b = 0, c = 0, d = 0, sel1 = 1, and sel2 = 1 failed");
a = 0; b = 0; c = 0; d = 1; sel1 = 1; sel2 = 1; #10; assert (e == 1) else $error("a = 0,
b = 0, c = 0, d = 1, sel1 = 1, and sel2 = 1 failed");
a = 1; b = 1; c = 1; d = 1; sel1 = 1; sel2 = 1; #10; assert (e == 1) else $error("a = 1,
b = 1, c = 1, d = 1, sel1 = 1, and sel2 = 1 failed");
a = 1; b = 0; c = 1; d = 0; sel1 = 1; sel2 = 0; #10; assert (e == 1) else $error("a = 1,
b = 0, c = 0, d = 1, sel1 = 1, and sel2 = 0 failed");
a = 0; b = 1; c = 0; d = 1; sel1 = 1; sel2 = 0; #10; assert (e == 0) else $error("a = 0,
b = 1, c = 0, d = 1, sel1 = 1, and sel2 = 0 failed"); end endmodule
Kết quả chạy mô phỏng như hình dưới đây