สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: ไดอะแกรมกล่องดำ
- ขั้นตอนที่ 3: การเชื่อมต่อลำโพงภายนอก
- ขั้นตอนที่ 4: ไดอะแกรมโครงสร้าง
- ขั้นตอนที่ 5: ไดอะแกรมเครื่องไฟไนต์สเตต (FSM)
วีดีโอ: ระบบ Buzzer ที่แข่งขันได้: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ระบบออดสำหรับการแข่งขันที่ออกแบบในโครงการนี้ทำงานคล้ายกับระบบออดที่ใช้ในการแข่งขันชามวิทยาศาสตร์ระดับภูมิภาคและระดับชาติ โครงงานนี้ได้รับแรงบันดาลใจจากการมีส่วนร่วมกับทีมชามวิทยาศาสตร์ของโรงเรียนมัธยมศึกษาตอนปลายเป็นเวลาสามปี เรามีความปรารถนาเสมอที่จะสร้างระบบออดล็อคเอาต์ขึ้นมาใหม่ด้วยตัวจับเวลา 5 วินาทีและ 20 วินาที
เพื่อให้ข้อมูลพื้นฐานเกี่ยวกับระบบออด ออดชามวิทยาศาสตร์ได้รับการตั้งโปรแกรมให้ป้อนผู้เล่นสูงสุด 8 คน (มีออด 8 ตัวแยกกัน) เมื่อกดปุ่ม Buzzer หนึ่งเสียง Buzzer ของคนแรกจะสว่างขึ้นเพื่อระบุว่าผู้เล่นคนใดได้รับคำถาม ผู้เล่นที่เหลือจะถูก "ล็อกเอาต์" ซึ่งหมายความว่า Buzzer ของพวกเขาจะไม่ตอบสนองจนกว่าผู้ดูแลจะรีเซ็ตระบบ Buzzer
หลังจากที่ผู้ดูแลอ่านคำถามแล้ว เขาจะกดปุ่มเพื่อเริ่มจับเวลาถอยหลังที่จะแสดงบนจอแสดงผลเจ็ดส่วน หลังจากคำถาม "โยนขึ้น" ผู้กลั่นกรองสามารถกดปุ่มขวาเพื่อเริ่มนับถอยหลังจาก 5 วินาที ในขณะเดียวกัน หลังจากคำถาม "โบนัส" ผู้ดำเนินรายการสามารถกดปุ่มซ้ายเพื่อเริ่มนับถอยหลังจาก 20 วินาที เมื่อตัวจับเวลาถึงศูนย์ เสียงกริ่งจะแจ้งว่าเครื่องเล่นหมดเวลา
ในการรีเซ็ตระบบและตัวนับเวลาถอยหลัง ผู้กลั่นกรองสามารถกดปุ่มตรงกลางได้ ในการรีเซ็ตกลไกการล็อกและไฟ LED ของเครื่องเล่น สวิตช์สำหรับผู้เล่น 1 และผู้เล่น 2 ต้องต่ำ
ขั้นตอนที่ 1: วัสดุ
คุณจะต้องมีสิ่งต่อไปนี้:
- บอร์ด Basy3 (หรือบอร์ด FPGA ที่เทียบเท่า)
- สาย Micro-B USB
- ลำโพง (ฉันใช้ลำโพงแบบพาสซีฟ)
- 2 สาย
- ซอฟต์แวร์ที่จะนำไปใช้กับ FPGA (ฉันใช้ Vivado)
- ไฟล์ระบบ Buzzer ที่แข่งขันได้
ขั้นตอนที่ 2: ไดอะแกรมกล่องดำ
ไดอะแกรมกล่องดำแสดงอินพุตและเอาต์พุตที่จะใช้ในระบบออดนี้
อินพุต:
player1, player2 อินพุตเหล่านี้เชื่อมต่อกับสวิตช์สองตัวบนบอร์ด Basy3 เพื่อความสะดวก จะใช้สวิตช์ซ้ายสุดและขวาสุด
รีเซ็ต ปุ่มกลางจะใช้แทนปุ่มรีเซ็ต
count_down_20_sec ปุ่มซ้ายจะใช้แทนปุ่มตัวจับเวลา 20 วินาที
count_down_5_sec ปุ่มขวาจะใช้แทนปุ่มตัวจับเวลา 20 วินาที เพื่อให้แน่ใจว่าการจับเวลาทั้ง 20 วินาทีและ 5 วินาทีเริ่มต้นขึ้น ให้กดปุ่มค้างไว้จนกว่าหน้าจอเจ็ดส่วนจะแสดงตัวจับเวลา
CLK บอร์ด FPGA จะสร้างนาฬิกาที่ทำงานด้วยความถี่ 10 ns
ผลลัพธ์:
ลําโพง เอาต์พุตของลําโพงเชื่อมต่อกับออดภายนอกหรือลําโพง คุณจะต้องเชื่อมต่อลำโพงกับพอร์ต JA pmod ของบอร์ด Basy3 ขั้นตอนนี้จะอธิบายไว้ด้านล่าง
speaker_LED เอาต์พุตนี้เชื่อมต่อกับ LED ที่กึ่งกลางของบอร์ด และจะแสดงเมื่อเอาต์พุตของลำโพงของ FPGA อยู่ในระดับสูง คุณสามารถใช้สิ่งนี้เพื่อทดสอบลำโพงภายนอกของคุณ โปรดทราบว่าพอร์ต pmod บางพอร์ตอาจทำงานได้ไม่ดี คุณจึงลองใช้พอร์ตอื่นและใช้ไฟ LED เพื่อตรวจสอบว่าควรเปิดลำโพงหรือไม่
เซ็กเมนต์ เอาต์พุตนี้เชื่อมต่อกับส่วนต่างๆ แปดส่วนบนจอแสดงผลเจ็ดส่วน รวมถึงจุดทศนิยม
DISP_EN เอาต์พุตนี้เชื่อมต่อกับแอโนดสี่ตัวบนจอแสดงผลเจ็ดส่วน
player_LED เอาต์พุตนี้เป็นสัญญาณ 2 มัดที่เชื่อมต่อกับไฟ LED เหนือสวิตช์ player1 และ player2 ผู้เล่นคนแรกที่พลิกสวิตช์ที่เกี่ยวข้องจะมีไฟ LED ระบุ โปรดทราบว่า LED ทั้งสองไม่สามารถเปิดพร้อมกันได้
ขั้นตอนที่ 3: การเชื่อมต่อลำโพงภายนอก
ในการเชื่อมต่อลำโพงภายนอกเข้ากับบอร์ด Basy3 ให้นำสายไฟสองเส้นของคุณมาต่อเข้าด้วยกันตามที่ระบุในภาพด้านบน เส้นสีขาวเชื่อมต่อขั้วลบของลำโพงกับพอร์ตกราวด์บนบอร์ด เส้นสีแดงเชื่อมต่อขั้วบวกของลำโพงกับพอร์ต JA10 pmod บนบอร์ด
ไฟล์ข้อ จำกัด ได้รับการออกแบบเพื่อให้พอร์ตใด ๆ จาก JA1 ถึง JA10 ควรทำงาน อย่างไรก็ตาม หมุดบางตัวบนบอร์ดไม่ตอบสนอง ดังนั้นหาก JA10 ไม่ทำงาน คุณอาจลองใช้พอร์ตอื่น
ขั้นตอนที่ 4: ไดอะแกรมโครงสร้าง
ภาพด้านบนแสดงไดอะแกรมโครงสร้างของระบบออดสำหรับการแข่งขัน รวมถึงส่วนประกอบทั้งหมดที่ประกอบเป็นโมดูลหลัก คำอธิบายของพวกเขามีดังนี้:
player_lockout_LED1 คอมโพเนนต์ LED ล็อกเอาต์ของเครื่องเล่นเป็นเครื่องสถานะจำกัดที่ใช้การเข้ารหัสแบบร้อนครั้งเดียว มีสี่อินพุต: player1, player2, reset และ CLK ประกอบด้วย player_LED เอาต์พุตมัด 2 บิต อินพุตและเอาต์พุตของส่วนประกอบ player_lockout_LED1 ทั้งหมดเชื่อมต่อโดยตรงกับอินพุตและเอาต์พุตที่มีชื่อเหมือนกันของโมดูลหลัก
buzzer_tone1 องค์ประกอบของออดขึ้นอยู่กับรหัสนี้ที่โพสต์ในฟอรัม
stackoverflow.com/questions/22767256/vhdl-… อย่างไรก็ตาม ได้มีการปรับเปลี่ยนให้ส่งสัญญาณเสียงต่อเนื่องด้วยความถี่ 440 Hz (หมายเหตุ) อินพุตที่เปิดใช้งานเชื่อมต่อกับสัญญาณ buzzer_enable ซึ่งเป็นเอาต์พุตของส่วนประกอบ down_counter_FSM1
clk_div1 ส่วนประกอบของตัวแบ่งนาฬิกาเป็นเวอร์ชันแก้ไขของตัวแบ่งนาฬิกาของ Professor Bryan Mealy ที่ให้ไว้ใน PolyLearn มันทำให้นาฬิกาช้าลงดังนั้นระยะเวลาการส่งออกคือ 1 วินาที
down_counter_FSM1 ตัวนับลงเป็น FSM ที่ออกแบบมาเพื่อนับถอยหลังสู่ศูนย์ เวลาเริ่มต้นที่เป็นไปได้สองครั้งคือ 20 หรือ 5 ซึ่งเลือกโดยอินพุตของผู้ใช้ โดยจะแสดงเป็น '1' เมื่อตัวจับเวลาถึงศูนย์เพื่อระบุว่าหมดเวลาแล้ว เอาต์พุตนี้ทำหน้าที่เป็นการเปิดใช้งานส่วนประกอบเสียงกริ่ง ตัวนับยังส่งสัญญาณบันเดิล 8 บิตที่ส่ง BCD 8 บิตที่ส่งไปยังตัวถอดรหัสเซ็กเมนต์ เอาต์พุตอื่นคือ counter_on ซึ่งเชื่อมต่อกับอินพุตที่ถูกต้องในตัวถอดรหัสเซ็กเมนต์
sseg_dec1 คอมโพเนนต์ตัวถอดรหัสเจ็ดส่วนมีอยู่ใน PolyLearn และเขียนโดยศาสตราจารย์ Bryan Mealy มันใช้อินพุต BCD ที่จัดเตรียมโดย down_counter_FSM1 และส่งออกค่าทศนิยมที่เท่ากันบนจอแสดงผลเจ็ดส่วน เมื่อตัวนับเปิดอยู่ อินพุตที่ถูกต้องจะสูง ซึ่งช่วยให้ตัวถอดรหัสแสดงตัวเลขทศนิยมบนจอแสดงผลเจ็ดส่วนได้ เมื่อตัวนับปิดอยู่ อินพุตที่ถูกต้องจะต่ำ การแสดงเจ็ดส่วนจะแสดงเพียงสี่ขีด
ขั้นตอนที่ 5: ไดอะแกรมเครื่องไฟไนต์สเตต (FSM)
รายการความไวสำหรับเครื่องสถานะจำกัดประกอบด้วย player1, player2, reset และนาฬิกา เอาต์พุต FSM คือ player_LED มัด 2 บิตที่เชื่อมต่อกับ LED สองดวงบนบอร์ด Basy3 เครื่องไฟไนต์สเตทแมชชีนแสดงสถานะสามสถานะต่อไปนี้:
ST0 เป็นสถานะเริ่มต้น ในสถานะนี้ ไฟ LED สองดวงจะดับลง FSM จะยังคงอยู่ในสถานะนี้หากทั้ง player1 และ player2 อยู่ในระดับต่ำ การรีเซ็ตแบบอะซิงโครนัสยังตั้งค่าสถานะเป็น ST0 เมื่อสวิตช์ player1 ถูกตั้งค่าเป็นสูง สถานะถัดไปจะเป็น ST1 หากสวิตช์ player2 ถูกตั้งไว้ที่สูง สถานะถัดไปจะเป็น ST2
ST1 คือสถานะที่ไฟ LED ของ player1 เปิดอยู่ FSM จะยังคงอยู่ในสถานะนี้สำหรับข้อมูลใดๆ ซึ่งหมายความว่าแม้เมื่อสวิตช์ player2 ถูกตั้งค่าเป็น high ทันทีหลังจากที่สวิตช์ player1 อยู่ในระดับสูง สวิตช์จะยังคงอยู่ใน ST1 เฉพาะการรีเซ็ตแบบอะซิงโครนัสเท่านั้นที่สามารถตั้งค่าสถานะถัดไปเป็น ST0
ST2 คือสถานะที่ LED ของ player2 เปิดอยู่ เช่นเดียวกับ ST! FSM จะยังคงอยู่ในสถานะนี้สำหรับอินพุตใดๆ แม้ว่าสวิตช์ player1 จะถูกตั้งค่าเป็น high ทันทีหลังจากที่สวิตช์ player2 อยู่ในระดับสูง อีกครั้ง เฉพาะการรีเซ็ตแบบอะซิงโครนัสเท่านั้นที่สามารถตั้งค่าสถานะถัดไปเป็น ST0
แนะนำ:
ระบบ RFID แบบอิง PIC16F877A: 5 ขั้นตอน
ระบบ RFID แบบอิง PIC16F877A: ระบบ RFID เป็นระบบที่ระบุตัวนักเรียน พนักงาน และอื่นๆ โดยใช้แท็ก RFID เพื่อตรวจสอบการมีอยู่ การทำงาน เวลาทำงาน และอื่นๆ อีกมากมาย บทความนี้อยู่ในสปอนเซอร์กับ JLCPCB ฉันขอขอบคุณ JLCPCB สำหรับสปอน
ระบบ Inteligente De Monitoramento De Enchentes (SIME): 4 ขั้นตอน
ระบบ Inteligente การมอนิเตอร์amento De Enchentes (SIME): ธีมและ Proposta:Foi dado o tema Serviços Públicos aos participantes do Hackathom Qualcomm Facens com no m´ximo 32 horas paraplanejamento e execuil. placa Dragonboard 410c com um Kit Qual
ระบบ DIY LoRa: 5 ขั้นตอน
ระบบ DIY LoRa: ในโครงการนี้ ฉันจะแสดงวิธีสร้างเครื่องส่งและเครื่องรับ LoRa ขนาดเล็กโดยใช้บอร์ดพัฒนา STM32 และโมดูล RFM95 LoRa ระบบ LoRa นี้สามารถส่งสัญญาณเตือนภัยจากโรงรถของฉันไปยังอพาร์ตเมนต์ของฉันแบบไร้สายได้
ระบบ Ambilight สำหรับทุกอินพุตที่เชื่อมต่อกับทีวีของคุณ WS2812B Arduino UNO Raspberry Pi HDMI (อัปเดตเมื่อ 12.2019): 12 ขั้นตอน (พร้อมรูปภาพ)
ระบบ Ambilight สำหรับทุกอินพุตที่เชื่อมต่อกับทีวีของคุณ WS2812B Arduino UNO Raspberry Pi HDMI (อัปเดตเมื่อ 12.2019): ฉันต้องการเพิ่มบรรยากาศให้กับทีวีของฉันเสมอ มันดูเท่มาก! ในที่สุดฉันก็ทำได้และฉันก็ไม่ผิดหวัง! ฉันได้เห็นวิดีโอมากมายและบทช่วยสอนมากมายเกี่ยวกับการสร้างระบบ Ambilight สำหรับทีวีของคุณ แต่ฉันไม่เคยพบบทช่วยสอนแบบเต็มสำหรับ nee
MOS - IoT: ระบบ Fogponic ที่เชื่อมต่อของคุณ: 4 ขั้นตอน
MOS - IoT: ระบบ Fogponic ที่เชื่อมต่อของคุณ: การบรรเทาการกระแทกโดย Superflux: เว็บไซต์ของเราคำแนะนำนี้เป็นความต่อเนื่องของระบบ Fogponic หนึ่ง ที่นี่ คุณจะสามารถมีตัวเลือกเพิ่มเติมในการวัดข้อมูลจากคอมพิวเตอร์เรือนกระจกของคุณและควบคุมการทำงานหลายอย่างเช่น wate