Các loại gán giá trị Assignments: ● Gán liên tục Continuous Assignment: Giám sát và cập nhật ngay khi có thay đổi giá trị bên phải RHS, được sử dụng cho các mạch kết hợp đơn giản.. ● G
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ-
Trang 2Lab 4: Introduction to hardware description language (cont)
❖ Tóm tắt nội dung bài học:
1 Các loại gán giá trị (Assignments):
● Gán liên tục (Continuous Assignment): Giám sát và cập nhật ngay khi có
thay đổi giá trị bên phải (RHS), được sử dụng cho các mạch kết hợp đơn giản
● Gán chặn (Blocking Assignment): Cập nhật ngay lập tức giá trị bên trái
(LHS) và thực hiện lần lượt theo thứ tự, dùng trong mạch kết hợp
● Gán không chặn (Non-blocking Assignment): Cập nhật cuối bước thời gian
hiện tại, thường sử dụng trong mạch tuần tự phức tạp
● Bao gồm: always_comb cho mạch kết hợp, always_latch cho latch, và
4 Câu lệnh điều kiện:
● If-Else: Kiểm tra các điều kiện liên tiếp để thực thi các câu lệnh tương ứng
● Case: Chọn và thực hiện khối lệnh khi biểu thức thỏa mãn giá trị nhất định
5 Bài tập thực hành:
● Bài 1: Thiết kế bộ giải mã 2:4
● Bài 2: Thiết kế mạch cộng (full adder)
● Bài 3: Thiết kế và mô phỏng ALU trong SystemVerilog, kiểm tra trên DE-10
Trang 3● Bài 4: Thiết kế bộ giải mã 7 đoạn
● Đây là đoạn mã thực hiện giải mã đầu vào 2-bit thành đầu ra 4-bit dạng "one-hot" (chỉ có một bit ở đầu ra là 1, còn lại là 0) dựa trên giá trị của đầu vào
○ Dùng case statement:
○ Dùng if else statement:
Trang 4● File testbench:
● Chạy modelsim:
Trang 5● RTL viewer:
● Pin planner:
Trang 6● Kết quả thực hành:
- Trường hợp in 00:
Trang 7- Trường hợp in 01:
Trang 8- Trường hợp in 10:
Trang 9- Trường hợp in 11:
Trang 11● Đây là đoạn mã cho một bộ cộng toàn phần (full adder), một mạch logic cộng hai bit nhị phân cùng với một bit nhớ từ phép tính trước
Trang 12● File testbench:
● Chạy modelsim:
● RTL viewer:
Trang 13● Pin planner:
● Kết quả thực hành:
- Trường hợp 000
Trang 14- Trường hợp 001
Trang 15- Trường hợp 010
Trang 16- Trường hợp 011
Trang 17- Trường hợp 100
Trang 18- Trường hợp 110
Trang 19- Trường hợp 111
Trang 21● Đây là đoạn mã cho một bộ xử lý số học và logic (Arithmetic Logic Unit - ALU) Module ALU này nhận hai đầu vào 3-bit (A và B) và thực hiện các phép toán khác nhau tùy thuộc vào giá trị của tín hiệu alu_select
● File testbench:
Trang 22● Chạy modelsim:
● RTL viewer:
Trang 23● Pin planner:
● Kết quả thực hành:
- trường hợp in 000
Trang 24- Trường hợp 001
Trang 25- Trường hợp 010
Trang 26- Trường hợp 011
Trang 27- Trường hợp 100
Trang 28- Trường hợp 101
Trang 30● Đây là một đoạn mã được viết để điều khiển một màn hình hiển thị 7 đoạn (7-segment display) Mục đích của đoạn mã là hiển thị một con số dạng thập lục phân (0-F) lên màn hình này dựa vào giá trị đầu vào 4 bit d
Trang 31● File testbench:
● Chạy modelsim:
Trang 32● RTL viewer:
● Pin planner:
Trang 33● Kết quả thực hành:
- Led hiển thị số 0
Trang 34- Led hiển thị số 1
Trang 35- Led hiển thị số 2
Trang 36- Led hiển thị số 3
Trang 37- Led hiển thị số 4
Trang 38- Led hiển thị số 5
Trang 39- Led hiển thị số 6
Trang 40- Led hiển thị số 7
Trang 41- Led hiển thị số 8
Trang 42- Led hiển thị số 9