1 Giới thiệuĐồng hồ kỹ thuật số Tiếng Anh: Digital clock, ở Việt Nam đôi khi gọi chung là đồng hồ điện tử là tên gọi của loại đồng hồ hiển thị thời gian bằng các màn hình điện tử hoặc cá
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
Thiết Kế Luận Lý Với HDL
Báo Cáo Bài Tập Lớn
Giảng viên: Phạm Công Thái
Sinh viên thực hiện:
Nguyễn Trung Tân - 2213063
Thạch Minh Hưng - 2311357
Phạm Gia Huy - 2311230
Hà Trọng Sơn - 2312958
Trần Thiện Huy - 2311254
TP Hồ Chí Minh, 6/2024
Trang 23.1 Công cụ hỗ trợ 2
3.2 Phần mềm Vivado 2
3.3 Board Arty Z7 2
3.4 Extension for board Arty Z7 3
4 Hiện thực 3 4.1 Thiết kế module đếm thời gian 3
4.2 Thiết kế module giải mã cho Led 7 đoạn 5
4.3 Thiết kế module top 7
4.4 Chức năng báo thức 10
4.5 Thực hành trên mạch 11
5 Kết luận 12 5.1 Ưu điểm 12
5.2 Nhược điểm 12
Trang 31 Giới thiệu
Đồng hồ kỹ thuật số (Tiếng Anh: Digital clock, ở Việt Nam đôi khi gọi chung là (đồng hồ điện tử) là tên gọi của loại đồng hồ hiển thị thời gian bằng các màn hình điện tử hoặc các chữ số Hầu hết các loại đồng hồ này
là đồng hồ tinh thể, hoạt động qua sự dao động tinh thể thạch anh hoặc đồng hồ nguyên tử Cụ thể bài này sẽ là đồng hồ kĩ thuật số hiển thị giờ
và phút bằng 4 thiết bị led 7
• Hiểu về thiết kế và mô phỏng trong Verilog
• Thiết kế bộ đếm và đồng hồ hiển thị giờ và phút với chức năng báo thức
• Điều khiển led 7 đoạn Kiểm tra và thử trên mạch Arty - Z7 – 20
3.1 Công cụ hỗ trợ
Verilog là ngôn ngữ mô tả phần cứng (Hardware Description Language)được
sử dụng trong việc thiết kế các các hệ thống số, các mạch tích hợp: như
bộ nhớ RAM, bộ vi xử lý hoặc đơn giản là D-FlipFlop Thiết kế số FPGA bằng ngôn ngữ verilog cũng giống như bạn viết chương trình cho vi điều khiển
3.2 Phần mềm Vivado
Vivado 2023 là một môi trường thiết kế tích hợp (IDE - Integrated De-velopment Environment) mạnh mẽ được phát triển bởi Xilinx (nay thuộc AMD) để hỗ trợ việc thiết kế và triển khai các hệ thống số trên các thiết
bị FPGA và SoC Vivado 2023 cung cấp một loạt các công cụ và tính năng nhằm giúp các kỹ sư thiết kế tối ưu hóa hiệu suất và giảm thời gian phát triển
3.3 Board Arty Z7
Board Arty Z7 là một nền tảng phát triển FPGA được sản xuất bởi Digilent, thiết kế dựa trên các thiết bị FPGA Zynq-7000 của Xilinx Đây
là một board phát triển mạnh mẽ, linh hoạt và phù hợp cho nhiều ứng dụng trong các lĩnh vực như xử lý video, truyền thông, và hệ thống nhúng
Trang 43.4 Extension for board Arty Z7
Extension for board Arty Z7 là board sử dụng cho board FGPA Arty Z7,
mở rộng thêm switch, LED 7 đoạn Extension board được sử dụng để hỗ trợ cho môn Thiết kế luận lý với HDL, giúp sinh viên có thể dễ dàng sử dụng thêm các chức năng mà Extension Board đã cấp sẵn
4.1 Thiết kế module đếm thời gian
Thực hiện bộ đếm thời gian theo giây
Tạo xung nhịp 1Hz
Figure 1: Module Clock Divider
Trang 5- Sau đó thực hiện bộ đếm thời gian cho phút
- Tạo xung nhịp mỗi phút
Figure 2: Module Minute Counter
NOTE: do biến thời gian là giờ quá lớn nên phải dùng hai bước
Trang 64.2 Thiết kế module giải mã cho Led 7 đoạn
- Chuyển đổi một giá trị nhị phân 4 bit thành mã điều khiển cho một LED
7 đoạn - Mỗi chữ số (từ 0 đến 9) được mã hóa bằng cách kích hoạt các đoạn LED phù hợp để hiển thị đúng chữ số bằng phương pháp ánh xạ Bảng ánh xạ Để hiển thị các chữ số từ 0 đến 9, chúng ta cần xác định các đoạn nào cần được bật (1) và tắt (0) cho từng chữ số Dưới đây là bảng ánh xạ
Table 1: Bảng ánh xạ
Trang 7Với mỗi LED 7 đoạn thì sẽ ứng với một module.
Figure 3: Module led 7 thanh
• Với mỗi LED 7 đoạn thì sẽ ứng với một module
• Đầu vào (digit): là một số nhị phân 4 bit (từ ‘4’b0000’ đến ‘4’b1001’) đại diện cho các số từ 0 đến 9
• Đầu ra (seg) là một mã 7 đoạn ( 7 bit ) điều khiển LED 7 đoạn
• Khối ‘always’ này được kích hoạt mỗi khi ‘digit’ thay đổi “always
@(digit)”
• Cấu trúc ‘case’ được sử dụng để ánh xạ giá trị của ‘digit’ tới giá trị của ‘seg’
Trang 84.3 Thiết kế module top
- Khởi tạo các biến với giá trị ban đầu là thời gian hiện tại để đồng hồ bắt đầu chạy
- Gọi các module và nối thiết lập các biến phù hợp:
Figure 4: Module top
Trang 9Figure 5: Module top
Trang 10Figure 6: Module top
Trang 11Đồng hồ có nút reset, khi reset tích cực thì thiết lập đồng hồ về 00:00 Thiết lập các điều kiện ràng buộc cho phút và giờ phù hợp:
• Khi min_units tăng đến 9 là sau một xung clk đếm phút thì min_units
về 0 và min_tens tăng thêm 1
• Khi min_tens tăng đến 5 và min_units tăng đến 9 thì sau một xung clk đếm phút thì min_tens về 0 và min_units về 0 dẫn đến hour_uinits tăng thêm 1
• Khi min_units tăng đến 9, min_tens tăng đến 5, hour_units tăng đến
3, hour_tens tăng đến 2 thì sau một phút tất cả sẽ về 00:00 (do chọn
hệ đếm giờ là hệ 24 giờ)
4.4 Chức năng báo thức
• Trước tiên cần tạo các biến là thanh ghi để có thể lưu các giá trị giờ
và phút chúng ta thiết lập để báo thức
• Kết nối một input với nút bấm, mỗi lần bấm thì giá trị của thanh ghi ứng với giờ và phút sẽ tăng lên 1 đơn vị
• Để chuyển đổi giữa các biến chục giờ, giờ và chục phút, phút chúng ta cần thiết lập thêm một nút bấm để chuyển đổi giữa các biến để ghi giá trị
• Sau khi thiết lập xong thì chúng ta cần một module để thực hiện việc
so sánh giữa 4 input vào và giờ đang được đếm Khi đếm đến đó thì mạch sẽ phát ra tín hiệu (ví dụ như các đèn nhấp nháy hoặc phát âm thanh)
Trang 124.5 Thực hành trên mạch
Đồng hồ đang hiện 17 giờ 34 phút
Trang 135 Kết luận
5.1 Ưu điểm
• Dễ đọc: Digital Clock hiển thị giờ bằng các con số, giúp người dùng dễ dàng và nhanh chóng biết được giờ và phút chính xác mà không cần giải mã vị trí của kim đồng hồ
• Chính xác cao: Digital Clock thường sử dụng bộ dao động tinh thể thạch anh để giữ thời gian chính xác, ít bị ảnh hưởng bởi các yếu tố ngoại cảnh như nhiệt độ hay từ trường
• Thiết kế đa dạng: Digital Clock có thể thiết kế theo nhiều kiểu dáng
và kích thước khác nhau, phù hợp với nhiều phong cách và nhu cầu của người sử dụng
5.2 Nhược điểm
Đồng hồ kỹ thuật số (digital clock) có nhiều ưu điểm, nhưng cũng có một
số nhược điểm Dưới đây là một số nhược điểm của đồng hồ kỹ thuật số:
• Khó sửa chữa: Khi Digital Clock gặp sự cố, việc sửa chữa có thể phức tạp và đòi hỏi kỹ thuật chuyên môn Trong một số trường hợp, việc thay thế toàn bộ đồng hồ có thể dễ dàng và kinh tế hơn so với việc sửa chữa
• Với chủ đề về Digital Clock do hạn chế về thời gian nên nhóm vẫn chưa thể hiện thực thêm chức năng cho đồng hồ như là báo thức, lịch, đo nhiệt độ và các tính năng thông minh khác
• Thiết kế chưa tối ưu khi phải sử dụng nhiều output dẫn đến lúc lắp mạch xuất hiện nhiều sai sót
[1] ASIC Verilog tutorial https://www.asic-world.com/
[2] FPGA Tutorial Available: https://fpgatutorial.com/verilog/ [3] 7-segment-Display-Basic-Electronics-Tutorials and Revision., https:// electronics-tutorials.ws/blog/7-segment-display-tutorial html
Trang 14[4] Arty Z7 - Digilent Reference https://digilent.com/reference/ programmable-logic/arty-z7/start
[5] Verilog code for Clock divider on FPGA , https://fpga4student.com/ 2017/08/verilog-code-for-clock-divider-on-fpga.html
[6] Electrical Engineering: Verilog - programmable clock divider https: //electronics.stackexchange.com
[7] Shirshendu Roy, Advanced Digital System Design, A Practical Guide to Verilog Based FPGA and ASIC Implementation