สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
นี่คือบทช่วยสอนเกี่ยวกับวิธีการสร้างนาฬิกาจับเวลาโดยใช้ VHDL และแผงวงจร FPGA เช่น บอร์ด Basy3 Atrix-7 นาฬิกาจับเวลาสามารถนับได้ตั้งแต่ 00.00 วินาที ถึง 99.99 วินาที มันใช้สองปุ่ม ปุ่มหนึ่งสำหรับปุ่มเริ่ม/หยุด และอีกปุ่มสำหรับปุ่มรีเซ็ต ตัวเลขจะแสดงบนจอแสดงผลเจ็ดส่วนของบอร์ดโดยใช้แอโนดและแคโทด จำเป็นต้องใช้ไฟล์ที่แตกต่างกันสามไฟล์เพื่อให้นาฬิกาจับเวลานี้ทำงาน
ขั้นตอนที่ 1: ฮาร์ดแวร์/ซอฟต์แวร์
- บอร์ด Basy3 Atrix-7 FPGA
- Vivado Design Suite จาก Xilinx
- USB 2.0 A ชายกับ Micro-B Male
ขั้นตอนที่ 2: บล็อกไดอะแกรม
นาฬิกาจับเวลาโดยรวมมีสามอินพุตและสองเอาต์พุต อินพุตสามช่อง ได้แก่ เริ่ม/หยุด รีเซ็ต และนาฬิกา ปุ่มเริ่ม/หยุดและรีเซ็ตเป็นปุ่ม และนาฬิกาคือนาฬิกา 100MHz ของบอร์ด เอาต์พุตทั้งสองคือแอโนดและแคโทดสำหรับจอแสดงผลเจ็ดส่วน
โมดูลแรก (ตัวแบ่งนาฬิกา) มีหนึ่งอินพุตและเอาต์พุตสองช่อง อินพุตคือนาฬิกา 100MHz ของบอร์ดและเอาต์พุตเป็นนาฬิกาแยก 2 ตัว อันหนึ่งทำงานที่ 480Hz และอีกอันทำงาน 0.5MHz
โมดูลที่สอง (จอแสดงผล) มีห้าอินพุตและสองเอาต์พุต อินพุตคือนาฬิกา 100MHz ของบอร์ด นาฬิกาสองตัวจากโมดูลตัวแบ่งนาฬิกา และปุ่มเริ่ม/หยุดและรีเซ็ต เอาต์พุตคือแอโนดและแคโทด
โมดูลสุดท้าย (สร้างแบบจำลองโดยบล็อกไดอะแกรมทั้งหมด) มีสามอินพุตและสองเอาต์พุต นี่คือไฟล์ที่รวบรวมทุกอย่างไว้ด้วยกัน อินพุตคือ 100MHz ของบอร์ดและปุ่มเริ่ม/หยุดและรีเซ็ต เอาต์พุตคือแอโนดและแคโทดที่ควบคุมการแสดงผลเจ็ดส่วน อินพุตและเอาต์พุตทั้งหมดอยู่บนบอร์ดสำหรับโมดูลสุดท้าย
ขั้นตอนที่ 3: ไดอะแกรมสถานะ
ภาพด้านบนแสดงไดอะแกรมสถานะสำหรับการทำงานของนาฬิกาจับเวลา การกดปุ่มรีเซ็ตจะไม่มีผลกับสถานะของนาฬิกาจับเวลา สถานะถัดไปถูกกำหนดโดยปุ่มเริ่ม/หยุด เริ่ม/หยุดคือ "สูง" เมื่อกดลง แต่ไม่ใช่เมื่อกดค้างไว้ และ "ต่ำ" เมื่อปุ่มดีดกลับหรือกดค้างไว้หลังจากที่ "สูง" ชั่วขณะ
หากนาฬิกาจับเวลากำลังนับและปุ่มเริ่ม/หยุดไปที่ "สูง" จะหยุดนับ หากนาฬิกาจับเวลาหยุดเดินและปุ่มเริ่ม/หยุดขึ้น "สูง" ระบบจะเริ่มนับใหม่อีกครั้ง สำหรับทั้งสองสถานะ หากปุ่มเริ่ม/หยุดเป็น "ต่ำ" ปุ่มจะอยู่ในสถานะที่เป็นอยู่ในปัจจุบัน
ขั้นตอนที่ 4: โมดูลตัวแบ่งนาฬิกา
โมดูลตัวแบ่งนาฬิกามีหนึ่งอินพุต นาฬิกา 100MHz ของบอร์ด และสองเอาต์พุต นาฬิกา 480Hz และ 0.5MHz นาฬิกา 480Hz ใช้เพื่อให้ LED ทั้งหมดบนจอแสดงผลเจ็ดส่วน "เปิด" พร้อมกันโดยสลับผ่านสี่ส่วนอย่างรวดเร็ว นาฬิกา 0.5MHz ใช้สำหรับนาฬิกาจับเวลาเพื่อนับหน่วยเป็นเซนติเมตร
ขั้นตอนที่ 5: โมดูลแสดงผล
โมดูลแสดงผลนี้มีห้าอินพุต นาฬิกา 100MHz ของบอร์ด นาฬิกาสองตัวจากโมดูลนาฬิกา และปุ่มเริ่มต้น/หยุดและรีเซ็ต และเอาต์พุตสองช่อง ได้แก่ แอโนดและแคโทด โมดูลนี้ยังมี "ตรรกะ" สำหรับการนับนาฬิกาจับเวลาและรวมเอาเครื่องสถานะจำกัด
ขั้นตอนที่ 6: การผูกโมดูล
โมดูลสุดท้ายนี้เป็นโมดูลที่รวมอีกสองโมดูลเข้าด้วยกัน มีอินพุตสามตัว นาฬิกา 100MHz ของบอร์ดและปุ่มเริ่ม/หยุดและรีเซ็ต และเอาต์พุตสองช่อง ได้แก่ แอโนดและแคโทด นาฬิกา 100MHz ไปที่โมดูลตัวแบ่งนาฬิกาและโมดูลแสดงผล และปุ่มเริ่ม/หยุดและรีเซ็ตจะไปที่โมดูลแสดงผล เอาต์พุตของโมดูลตัวแบ่งนาฬิกา (480Hz และ 0.5MHz) ไปที่อินพุตนาฬิกาสองช่องของโมดูลแสดงผล เอาต์พุตของโมดูลแสดงผล (แอโนดและแคโทด) ไปที่เอาต์พุตของโมดูลสุดท้าย
ขั้นตอนที่ 7: ข้อจำกัด
อินพุตทั้งสองสามารถเป็นปุ่มใดก็ได้บนบอร์ด FPGA ของ Basys3 Atrix-7 และเอาต์พุตจะเป็นสี่ขั้วบวกและแปดขั้ว (เพราะคุณต้องการจุดทศนิยมระหว่างวินาทีและมิลลิวินาที) สำหรับการแสดงผลเจ็ดส่วน
ขั้นตอนที่ 8: เสร็จแล้ว
อัปโหลดโปรแกรมไปยังบอร์ด FPGA ของ Basy3 Atrix-7 แล้วกดปุ่มเริ่ม/หยุดเพื่อให้นาฬิกาจับเวลาทำงานต่อไป!