สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: การตั้งค่าอินพุตและเอาต์พุต
- ขั้นตอนที่ 3: ทำนาฬิกา
- ขั้นตอนที่ 4: นับถึงสิบ
- ขั้นตอนที่ 5: การแสดงตัวเลข
- ขั้นตอนที่ 6: วิธีแสดงนาฬิกาจับเวลา
- ขั้นตอนที่ 7: นำทุกอย่างมารวมกัน
- ขั้นตอนที่ 8: ข้อจำกัด
- ขั้นตอนที่ 9: การทดสอบ
วีดีโอ: นาฬิกาจับเวลาพื้นฐานที่ใช้บอร์ด VHDL และ Basy3: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ยินดีต้อนรับสู่คำแนะนำเกี่ยวกับวิธีการสร้างนาฬิกาจับเวลาโดยใช้บอร์ด VHDL พื้นฐานและ Basy 3 เรารู้สึกตื่นเต้นที่จะแบ่งปันโครงการของเรากับคุณ! นี่เป็นโครงการสุดท้ายสำหรับหลักสูตร CPE 133 (Digital Design) ที่ Cal Poly, SLO ในฤดูใบไม้ร่วงปี 2016 โครงการที่เราสร้างขึ้นคือนาฬิกาจับเวลาแบบเรียบง่ายที่เริ่ม รีเซ็ต และหยุดเวลาชั่วคราว ใช้ปุ่มกดสามปุ่มบนบอร์ด Basy3 เป็นอินพุต และเวลาจะแสดงบนจอแสดงผลเจ็ดส่วนสี่หลักของบอร์ด เวลาที่ผ่านไปจะแสดงเป็นวินาที: รูปแบบเซนติเมตร ใช้นาฬิการะบบของบอร์ดเป็นอินพุตเพื่อติดตามเวลาที่ผ่านไปและส่งออกเวลาเป็นตัวเลขสี่หลักในการแสดงผลเจ็ดส่วน
ขั้นตอนที่ 1: วัสดุ
วัสดุที่คุณต้องการสำหรับโครงการนี้:
- คอมพิวเตอร์ 1 เครื่องที่ติดตั้ง Vivado Design Suite WebPack จาก Xilinx (ต้องการเวอร์ชัน 2016.2)
- 1 Digilent Basys3 Xilinx Artix-7 FPGA บอร์ด
- สาย USB 1 พอร์ต
ขั้นตอนที่ 2: การตั้งค่าอินพุตและเอาต์พุต
รูปด้านบนแสดงไดอะแกรมบล็อกระดับบนสุดของโมดูลนาฬิกาจับเวลาหลัก นาฬิกาจับเวลารับอินพุต "CLK" (นาฬิกา), "S1" (ปุ่มเริ่มต้น), "S2" (ปุ่มหยุดชั่วคราว) และ "RST" (รีเซ็ต) และมีเอาต์พุต "Anodes" 4 บิต, 7 บิต เอาต์พุต "ส่วน" และเอาต์พุตบิตเดียว "DP" (จุดทศนิยม) เมื่ออินพุต "S1" สูง นาฬิกาจับเวลาจะเริ่มนับเวลา เมื่อ "S2" ต่ำ นาฬิกาจับเวลาจะหยุดเวลาชั่วคราว เมื่อ "RST" สูง นาฬิกาจับเวลาจะหยุดและรีเซ็ตเวลา ภายในวงจรมีโมดูลย่อยสี่โมดูล: ตัวแบ่งนาฬิกา ตัวนับหลัก ไดรเวอร์การแสดงผลเจ็ดส่วน และตัวเข้ารหัสการแสดงผลเจ็ดส่วน โมดูลหลักของนาฬิกาจับเวลาจะเชื่อมโยงโมดูลย่อยทั้งหมดเข้าด้วยกันและเข้ากับอินพุตและเอาต์พุต
ขั้นตอนที่ 3: ทำนาฬิกา
โมดูลตัวแบ่งนาฬิกาใช้นาฬิกาของระบบและใช้อินพุตตัวหารเพื่อสร้างนาฬิกาที่มีความเร็วไม่เกินความเร็วของนาฬิการะบบ นาฬิกาจับเวลาใช้โมดูลนาฬิกาสองโมดูล อันหนึ่งสร้างนาฬิกา 500 Hz และอีกโมดูลหนึ่งสร้างนาฬิกา 100 Hz แผนผังสำหรับตัวแบ่งนาฬิกาแสดงในรูปด้านบน ตัวแบ่งนาฬิการับอินพุตแบบบิตเดียว "CLK" และอินพุต "ตัวหาร" แบบ 32 บิตและเอาต์พุตแบบบิตเดียว "CLKOUT" "CLK" คือนาฬิการะบบและ "CLKOUT" คือนาฬิกาผลลัพธ์ โมดูลนี้ยังมีเกท NOT ซึ่งจะสลับสัญญาณ "CLKTOG" เมื่อการนับถึงค่าของตัวหาร
ขั้นตอนที่ 4: นับถึงสิบ
ตัวนับหลักจะนับแต่ละหลักตั้งแต่ 0 ถึง 10 และสร้างนาฬิกาอีกตัวสำหรับหลักถัดไปเพื่อทำงานจากการสั่นเมื่อนับถึง 10 โมดูลรับอินพุต 3 บิตเดี่ยว "S", "RST" และ "CLK " และผลลัพธ์ในเอาต์พุตบิตเดียว "N" และเอาต์พุต 4 บิต "D" อินพุต "S" คือการเปิดใช้งานในอินพุต นาฬิกาจะเปิดเมื่อ "S" สูงและปิดเมื่อ "S" ต่ำ "RST" เป็นอินพุตรีเซ็ต ดังนั้นนาฬิกาจะรีเซ็ตเมื่อ "RST" สูง "CLK" คืออินพุตนาฬิกาสำหรับตัวนับหลัก "N" คือเอาต์พุตนาฬิกาที่กลายเป็นนาฬิกาอินพุตสำหรับหลักถัดไป เอาต์พุต "D" แสดงค่าไบนารีของตัวเลขที่ตัวนับอยู่
ขั้นตอนที่ 5: การแสดงตัวเลข
ตัวเข้ารหัสการแสดงผลเจ็ดส่วนจะเข้ารหัสเลขฐานสองที่ได้รับจากโมดูลไดรเวอร์การแสดงผลเจ็ดส่วน และเปลี่ยนเป็นกระแสข้อมูลของบิตที่จะถูกตีความว่าเป็นค่า '1' หรือ '0' สำหรับแต่ละส่วนของจอแสดงผล โมดูลได้รับเลขฐานสองเป็น "ตัวเลข" อินพุต 4 บิต และส่งผลให้ "เซ็กเมนต์" เอาต์พุต 7 บิต โมดูลประกอบด้วยบล็อกกระบวนการเคสเดียวที่กำหนดสตรีม 7 บิตเฉพาะสำหรับแต่ละค่าอินพุตที่เป็นไปได้ตั้งแต่ 0 ถึง 9 แต่ละบิตในสตรีมเจ็ดบิตแสดงถึงหนึ่งในเจ็ดส่วนของตัวเลขบนจอแสดงผล ลำดับของเซ็กเมนต์ในสตรีมคือ "abcdefg" โดยที่ '0' แสดงถึงเซ็กเมนต์ที่สว่างขึ้นสำหรับตัวเลขที่ระบุ
ขั้นตอนที่ 6: วิธีแสดงนาฬิกาจับเวลา
ในโมดูลไดรเวอร์การแสดงผลเจ็ดส่วน มีอินพุต 4 บิต "D0", "D1", "D2" และ "D3" สี่ช่อง โดยแต่ละรายการจะแสดงตัวเลขสี่หลักที่จะแสดง อินพุต "CLK" คืออินพุตนาฬิกาของระบบ เอาต์พุตแบบบิตเดียว "DP" แทนจุดทศนิยมบนจอแสดงผลเจ็ดส่วน เอาต์พุต 4 บิต "Anodes" กำหนดว่าจะแสดงตัวเลขใดบนจอแสดงผลเจ็ดส่วน และเอาต์พุต "ชั่วคราว" 4 บิตขึ้นอยู่กับสถานะของอินพุตควบคุม 2 บิต "SEL" โมดูลนี้ใช้มัลติเพล็กเซอร์ 4 ตัวสำหรับอินพุตควบคุม "SEL" และเอาต์พุตสามตัว "แอโนด", "อุณหภูมิ" และ "DP"
ขั้นตอนที่ 7: นำทุกอย่างมารวมกัน
บล็อกกระบวนการ 'if' ที่ทำงานโดยนาฬิกา 500Hz ถูกใช้เพื่อสร้างปุ่มเริ่มต้นและหยุดชั่วคราว จากนั้นเชื่อมโยงโมดูลย่อยทั้งหมดเข้าด้วยกันในโมดูลหลักของนาฬิกาจับเวลาโดยการประกาศส่วนประกอบของแต่ละโมดูลย่อยและใช้สัญญาณต่างๆ โมดูลย่อยหลักรับเอาท์พุตสัญญาณนาฬิกาของโมดูลย่อยหลักก่อนหน้า โดยโมดูลย่อยแรกรับในนาฬิกา 100Hz เอาต์พุต "D" ของโมดูลย่อยตัวเลขจะกลายเป็นอินพุต "D" ของโมดูลไดรเวอร์การแสดงผลเจ็ดส่วน และสุดท้าย เอาต์พุต "ชั่วคราว" ของโมดูลไดรเวอร์การแสดงผลเจ็ดส่วนจะกลายเป็นอินพุต "ชั่วคราว" ของโมดูลตัวเข้ารหัสเจ็ดส่วน
ขั้นตอนที่ 8: ข้อจำกัด
ใช้ปุ่มกด 3 ปุ่ม (W19, T17 และ U18) สำหรับอินพุต "RST", "S1" และ "S2" W19 คือปุ่มรีเซ็ต T17 คือปุ่มเริ่มต้น (S1) และ U18 คือปุ่มหยุดชั่วคราว (S2) จำเป็นต้องมีข้อจำกัดสำหรับอินพุตนาฬิกาโดยใช้พอร์ต W5 นอกจากนี้ อย่าลืมเพิ่มบรรทัดนี้ในข้อจำกัดนาฬิกา:
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]
เชื่อมโยงแอโนดและเซ็กเมนต์เข้ากับบอร์ดด้วย เพื่อให้นาฬิกาจับเวลาแสดงบนจอแสดงผลเจ็ดส่วนดังที่เห็นในไฟล์ข้อจำกัด
ขั้นตอนที่ 9: การทดสอบ
ตรวจสอบให้แน่ใจว่าอุปกรณ์ของคุณทำงานโดยใช้ปุ่มสามปุ่ม: กดปุ่มตามลำดับที่เป็นไปได้เพื่อค้นหาปัญหาที่อาจเกิดขึ้นกับรหัสของคุณ
แนะนำ:
DIY VR Treadmill- Basy3 FPGA-Digilent Contest: 3 ขั้นตอน
DIY VR Treadmill- Basys3 FPGA-Digilent Contest: คุณต้องการสร้าง VR Treadmill ซึ่งคุณสามารถเรียกใช้แอปพลิเคชันเดสก์ท็อปและเกมของคุณหรือไม่? ถ้าอย่างนั้นคุณมาถูกที่แล้ว! ในเกมทั่วไป คุณใช้เมาส์และคีย์บอร์ดเพื่อโต้ตอบกับสิ่งแวดล้อม จึงต้องส่ง
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
VHDL Basy3: เชื่อมต่อ 4 เกม: 5 ขั้นตอน
VHDL Basys3: Connect 4 Game: บทนำ: นี่คือเกม Connect 4 Digital Logic ที่ออกแบบใน VHDL โดยใช้ซอฟต์แวร์ Vivado และตั้งโปรแกรมไว้ที่บอร์ด Basy3 การก่อสร้างและการออกแบบของโครงการนี้เป็นขั้นกลาง แต่ผู้มาใหม่สามารถคัดลอกขั้นตอนและสร้างกา
Basy3 FPGA Digital Audio Synthesizer: 5 ขั้นตอน
Basys3 FPGA Digital Audio Synthesizer: ซินธิไซเซอร์คีย์บอร์ดคลื่นไซน์ดิจิตอลนี้จะนำอินพุตของผู้ใช้ผ่านชุดสวิตช์ชั่วขณะที่วางเหมือนแป้นพิมพ์และส่งสัญญาณเสียงผ่านลำโพง ตามอินพุตของผู้ใช้ อุปกรณ์จะสร้างคลื่นไซน์ของความถี่ต่างๆ