สารบัญ:

VHDL หนึ่งนาทีนาฬิกาจับเวลา: 5 ขั้นตอน
VHDL หนึ่งนาทีนาฬิกาจับเวลา: 5 ขั้นตอน

วีดีโอ: VHDL หนึ่งนาทีนาฬิกาจับเวลา: 5 ขั้นตอน

วีดีโอ: VHDL หนึ่งนาทีนาฬิกาจับเวลา: 5 ขั้นตอน
วีดีโอ: How to create a timer in VHDL 2024, พฤศจิกายน
Anonim
Image
Image

นี่คือบทช่วยสอนเกี่ยวกับวิธีสร้างนาฬิกาจับเวลาหนึ่งนาทีโดยใช้ VHDL และบอร์ด Basys 3 อุปกรณ์ดังกล่าวเหมาะอย่างยิ่งสำหรับเกมที่ผู้เล่นแต่ละคนมีเวลาสูงสุดหนึ่งนาทีในการเคลื่อนไหว นาฬิกาจับเวลาจะแสดงวินาทีและมิลลิวินาทีบนจอแสดงผลเจ็ดส่วนได้อย่างแม่นยำ โดยเริ่มต้นที่ 0 วินาทีและ 0 มิลลิวินาที สูงสุด 60 วินาทีและ 0 มิลลิวินาที นอกจากนี้ยังใช้ปุ่มสองปุ่ม ได้แก่ ปุ่มกลาง ใช้เพื่อเริ่ม หยุด และดำเนินการจับเวลาต่อ และปุ่มขวาใช้เพื่อเริ่มจับเวลาใหม่ เมื่อเปรียบเทียบอุปกรณ์แบบเคียงข้างกันกับนาฬิกาจับเวลาในตัวของสมาร์ทโฟน ความแม่นยำของนาฬิกาจะสังเกตเห็นได้ชัดเจน

ขั้นตอนที่ 1: รับฮาร์ดแวร์/ซอฟต์แวร์

บล็อกไดอะแกรม
บล็อกไดอะแกรม

1. Basys 3 Artix-7 FPGA Trainer Board จาก Digilent พร้อมสาย Micro-USB เป็น USB

2. Vivado 2016.2 Design Suite จาก Xilinx

ขั้นตอนที่ 2: บล็อกไดอะแกรม

วงจรนี้สร้างขึ้นตามพฤติกรรมและใช้ส่วนประกอบ Xilinx ในตัว แต่ยังสามารถอธิบายเชิงโครงสร้างได้ดังที่แสดงโดยแผนภาพโครงสร้างทั่วไปด้านบน จากแผนภาพจะเห็นได้ว่าวงจรขับเคลื่อนด้วยตัวแบ่งความถี่สองตัว ตัวแบ่งความถี่ตัวใดตัวหนึ่งทำงานที่ 1 เซนติเมตรและขับตัวนับแคโทดที่ใช้เป็นตัวเลขที่แสดงบนจอแสดงผลเจ็ดส่วน ตัวแบ่งความถี่ที่สองทำงานที่ 240Hz และใช้เพื่อขับเคลื่อนตัวนับแอโนดที่หมุนผ่านแอโนดเพื่อให้ตัวเลขทั้งหมดแสดงอย่างถูกต้องบนจอแสดงผลเจ็ดส่วน ตัวเข้ารหัสใช้ตรรกะแคโทดจากตัวนับแคโทดและตรรกะแอโนดจากตัวนับแอโนด และเข้ารหัสไปยังแคโทดและแอโนดของเอาต์พุตที่เรียกใช้การแสดงผลเจ็ดส่วน หน้าที่ของตัวเข้ารหัสนี้มีไว้สำหรับเอาต์พุตแคโทดเพื่อเปลี่ยนทุกครั้งที่เอาต์พุตแอโนดเปลี่ยนแปลง ไม่สามารถรันเอาต์พุตแคโทดแยกจากตัวนับได้ เนื่องจากแอโนดต้องหมุนผ่านตัวเลข 4 หลักแยกกัน

ขั้นตอนที่ 3: โมดูลโครงการ

ประการแรก บล็อกกระบวนการสำหรับ CEN ถูกสร้างขึ้นเพื่อที่ว่าเมื่อตรวจพบการกดปุ่ม ENABLE จะสลับไปมา ทำหน้าที่เป็นจุดหยุด/เริ่มต้นของตัวนับแคโทด

ในบล็อกกระบวนการถัดไป สัญญาณนาฬิกาในหน่วยเซนติเมตรและ 240Hz จะถูกตั้งค่าเพื่อให้ตัวนับเพิ่มขึ้น 1 ทุกครั้งที่นาฬิกาภายใน 100mHz ถึงขอบที่เพิ่มขึ้น เมื่อตัวนับเซนติเมตรถึง 500,000 มันจะรีเซ็ตกลับเป็น 0 ในขณะเดียวกันตัวนับ 240Hz จะรีเซ็ตเมื่อจำนวนถึง 41667

สำหรับส่วนแคโทดของโค้ด ถ้า ENABLE เป็น '0' การนับแคโทดจะหยุดชั่วคราว หากกดปุ่มรีเซ็ตในช่วงเวลานี้ การนับทั้งหมดจะรีเซ็ตเป็น "0000" ในขณะเดียวกัน หาก ENABLE เป็น '1' การนับแคโทดจะดำเนินต่อไปจนกว่าจำนวนแคโทดจะถึง 60.00 ซึ่งจะทริกเกอร์สัญญาณหยุดเป็น '1' สัญญาณหยุดจะกลับไปที่บล็อกกระบวนการ CEN และทำให้ ENABLE เป็น '0' ในขณะที่สัญญาณหยุดเป็น '1' และจะไม่เปลี่ยนแปลงจนกว่าจะกดปุ่มรีเซ็ต

สุดท้าย การแสดงเจ็ดเซ็กเมนต์ได้รับการตั้งค่าโดยให้ 4 แอโนดเชื่อมต่ออย่างถูกต้องกับแคโทดทั้ง 8 อัน เพื่อแสดงตัวเลข 0-9 ตามลำดับพร้อมกัน

ขั้นตอนที่ 4: ข้อจำกัด

ข้อจำกัด
ข้อจำกัด

ไฟล์ข้อจำกัดนี้เชื่อมต่ออินพุตและเอาต์พุตที่ระบุจาก VHDL เข้ากับส่วนทางกายภาพที่จำเป็นของบอร์ด Basy สำหรับโปรเจ็กต์นี้ ส่วนประกอบต่างๆ จะประกอบด้วยแอโนดสี่ตัวและแคโทดทั้งแปดตัวสำหรับการแสดงผลเจ็ดส่วน นาฬิกาภายใน 100 mHz ปุ่มกลาง และปุ่มขวา

ขั้นตอนที่ 5: ทดสอบ

เมื่อคุณทำโค้ดเสร็จแล้ว คุณสามารถตั้งโปรแกรม FPGA ผ่านสาย USB ได้ การแสดงเจ็ดส่วนควรแสดง 0.00 ทดสอบเพื่อดูว่าปุ่มทำงานหรือไม่โดยกดปุ่มกลางเพื่อเริ่มจับเวลาจนถึง 60.00 และหยุด คุณสามารถกดปุ่มกลางอีกครั้งเพื่อหยุดชั่วคราวได้ตลอดเวลา เมื่อหยุดชั่วคราว คุณสามารถกดปุ่มขวาเพื่อรีเซ็ตตัวจับเวลากลับเป็น 0.00 หากทุกอย่างถูกต้อง ขอแสดงความยินดีที่คุณได้สร้างตัวจับเวลาหนึ่งนาที!

แนะนำ: