Hình 3: Sơ đồ logic khối Half Adder.. Hình 4: Sơ đồ tổng quát khối Half adder.. Hình 6: Sơ đồ tổng quát khối Full adder Hình 7: Sơ đồ tổng quát khối Full adder ghép từ 2 khối Half adder.
Trang 1BÁO CÁO MÔN HỌC QUI TRÌNH THIẾT KẾ VI MẠCH SỐ
LAB 2 THIẾT KẾ BỘ ĐẾM LÊN/XUỐNG
GVHD: Hoàng Trang Trợ giảng: Đỗ Quang Thịnh
Tôn Thất Bảo Phúc
SVTH: Phạm Quang Sáng - 1712949
Trương Thành Đạt -1710996 Nguyễn Sĩ Nam - 1712245
TP.HCM 2021
Trang 2MỤC LỤC
Thuyết 4
1.1 Thiết kế cấp độ Specification 4
1.1.1 Trình bày sơ đồ khối bộ đếm lên/xuống (hình vẽ) 4
1.1.2 Giới thiệu chung về cách thức hoạt động của bộ trên 4
1.1.3 Giới thiệu sơ qua cách lên ý tưởng thiết kế (bắt đầu từ đâu, ý tưởng thực thi,…) 4
II Thực hiện thiết kế 9
2.1 Mạch thiết kế cấp cổng dùng Verilog 9
2.2 Môi trường làm việc 11
2.3 Kiểm định RTL 12
2.4 Synthesis (Tổng hợp) 14
III Kết luận 17
3.1 Nhận xét 17
3.2 Kết luận 17
IV Phụ lục 17
V Tài liệu tham khảo (nếu có) 17
VI Trả lời một số câu hỏi lý thuyết 17
Trang 3MỤC LỤC HÌNH ẢNH
Hình 1: Sơ đồ khối của 1 ALU 4-bit
Hình 2: Sơ đồ khối của một ALU phân theo chức năng
Hình 3: Sơ đồ logic khối Half Adder
Hình 4: Sơ đồ tổng quát khối Half adder
Hình 5: Sơ đồ logic khối Full adder
Hình 6: Sơ đồ tổng quát khối Full adder
Hình 7: Sơ đồ tổng quát khối Full adder ghép từ 2 khối Half adder
Hình 8: Khối logic unit
Hình 9: Sơ đồ tổng quát của bộ ALU 4-bit
MỤC LỤC BẢNG
Bảng 1: Các tác vụ của ALU
Bảng 2: Bảng 2: Giá trị vào/ra của khối Half Adder
Trang 4Bảng 3: Giá trị vào ra của khối Full Adder.
Bảng 4: Bảng hoạt động của bộ logic unit
Bảng 5: Bảng hoạt động của khối arithmetic unit
Trang 5I Tổng Quan Lý Thuyết.
1.1 Thiết kế cấp độ Specification.
1.1.1 Trình bày sơ đồ khối bộ đếm lên/xuống (hình vẽ).
1.1.2 Giới thiệu chung về cách thức hoạt động của bộ trên.
Ngõ vào:
– Một số 16 bit cnt_in là giá trị đếm khởi điểm
– Một tín hiệu 1 bit tên load là tín hiệu báo hiệu bắt đầu load giá trị khởi điểm
– Một tín hiệu clock 1 bit tên clk
– Một tín hiệu 1 bit nhằm chọn chế độ đếm tên mode, với 0 là đếm lên và 1 là đếm xuống
Ngõ ra: 1 số 16 bit cnt_out là số đếm ngõ ra có giá trị thay đổi theo thời gian
Hoạt động: Khi có xung cạnh lên của clk, bộ đếm sẽ kiểm tra giá trị của tín hiệu load, nếu
bằng 1 thì cnt_out sẽ bằng giá trị của tín hiệu cnt_in±1 tùy theo giá trị của mode, nếu bằng 0
thì cnt_out sẽ bằng giá trị cnt_out trong chu kỳ clock trước đó ±1 tùy theo giá trị của mode
Trang 61.1.3 Giới thiệu sơ qua cách lên ý tưởng thiết kế (bắt đầu từ đâu, ý tưởng thực thi,…).
II Thực hiện thiết kế
2.1 Mạch thiết kế cấp cổng dùng Verilog
A Mã code: Dựa vào sơ đồ khối mô tả ở trên, sinh viên viết code Verilog, sau đó copy hoặc
capture màn hình các mã code của tất cả các file Verilog để vào mục này
B Ứng với từng ảnh, sinh viên thêm vào những chú thích nhỏ cho biết các đoạn code bên
trong có ý nghĩa gì (không cần phải nói quá chi tiết)
2.2 Kiểm định RTL
Yêu cầu trình bày:
A Copy hoặc capture màn hình file testtop.sv Giải thích ngắn gọn ý nghĩa các đoạn code
Lưu ý: testtop.sv cần test đủ các trường hợp đếm lên/xuống khi có load (load=1) và khi
không load (load=0), dùng $display để in kết quả ra Terminal, Giá trị cnt_in có thể cho tùy ý
Trang 7B Capture màn hình Terminal sau khi chạy Makefile và giải thích ngắn gọn những gì hiện
lên trong Terminal
C Dùng DVE mở dạng sóng, giải thích ngắn gọn
2.3 Synthesis (Tổng hợp).
Sinh viên thêm các ràng buộc về clock (chu kì 1000), input delay min/max=1/10, output
delay min/max=1/10 vào file dc_command.src
Yêu cầu trình bày:
A Copy hoặc capture màn hình file Verilog của bộ đếm sau khi đã Synthesis
B Copy hoặc capture màn hình các file report.timing Giải thích file này đã kiểm tra điều
kiện timing thế nào (kiểm tra setup hay hold, các khoảng thời gian nào được xem xét, cách
tính slack)
2.4 Kiểm định netlist.
Sinh viên sử dụng phần mềm Formality để kiểm định
Yêu cầu trình bày:
A Capture màn hình thông báo của Formality sau khi chạy Matching
Trang 8B Capture màn hình thông báo của Formality sau khi chạy Verify.
III Kết luận
3.1 Nhận xét
Nhận xét về mạch thiết kế, nêu tổng quan về những khó khăn khi thiết kế mạch và khi viết
code Verilog
3.2 Kết luận
Nêu kết luận đề tài
IV Phụ lục
Nếu có kết quả thêm, hoặc mở rộng nghiên cứu, không có thì để trống
V Tài liệu tham khảo (nếu có)
Sử dụng Endnote hoặc Cross-reference để đánh chỉ mục tài liệu tham khảo
Sinh viên trình bày một số tài liệu tham khảo trong quá trình làm việc, có thể là sách, báo hay
bất cứ trang web nào, không có thì để trống
Trang 9VI Trả lời một số câu hỏi lý thuyết.
Các câu hỏi cần được trả lời cụ thể, riêng mục Bonus là điểm cộng, sinh viên có thể làm hoặc
không
A Nêu cách khắc phục khi điều kiện setup time bị vi phạm
- Tối ưu lại mạch tổ hợp giữa hai phần tử tuần tự để giảm độ trễ trên mạch tổ hợp Thồng
thường để tối ưu đáng kể thì người thiết kế phải chuyển hoàn toàn từ một phương pháp hay ý
tưởng thiết kế này sang một giải pháp thiết kế khác
- Sử dụng phần tử tuần tự để cắt đường timing dài thành nhiều đường timing ngắn hơn Lúc
này, đường timing đi trực tiếp từ FFA đến FFB sẽ không còn, thay vào đó là đường timing đi
từ FFA đến FFM và đường timing đi từ FFM đến FFB với độ trễ mạch tổ hợp giữa FFA và
FFM; FFM và FFBA nhỏ hơn nhiều so với từ FFA đến FFB trước đó
- Đổi thư viện công nghệ bằng cách chuyển từ thư viện công nghệ có các cell độ trễ lớn, tốc
độ thấp đến các cell có độ trễ nhỏ hơn , tốc độ cao Tuy nhiên, trên thực tế, với một dự án cụ
thể, thư viện công nghệ đã được chọn cố định từ đầu và các thiết kế trong một chip phải tìm
mọi cách đáp ứng theo thư viện công nghệ này
Trang 10B Nêu cách khắc phục khi điều kiện hold time bị vi phạm.
- Tăng độ trễ trên đường timing
- Giảm độ trễ của đường clock
C So sánh mạch tuần tự và mạch tổ hợp
- Mạch tổ hợp là mạch mà các ngõ ra chỉ phụ thuộc vào giá trị của các ngõ vào Mọi sự thay
đổi của ngõ vào sẽ làm ngõ ra thay đổi
Hình: Mạch tổ hợp
- Mạch tuần tự là mạch mà ngõ ra không chỉ phụ thuộc vào các ngõ vào mà còn phụ thuộc
Trang 11Hình: Mạch tuần tự.