สารบัญ:

ระบบ Buzzer ที่แข่งขันได้: 5 ขั้นตอน
ระบบ Buzzer ที่แข่งขันได้: 5 ขั้นตอน

วีดีโอ: ระบบ Buzzer ที่แข่งขันได้: 5 ขั้นตอน

วีดีโอ: ระบบ Buzzer ที่แข่งขันได้: 5 ขั้นตอน
วีดีโอ: สอนการใช้ Buzzer กับ Arduino 2024, พฤศจิกายน
Anonim
Image
Image
วัสดุ
วัสดุ

ระบบออดสำหรับการแข่งขันที่ออกแบบในโครงการนี้ทำงานคล้ายกับระบบออดที่ใช้ในการแข่งขันชามวิทยาศาสตร์ระดับภูมิภาคและระดับชาติ โครงงานนี้ได้รับแรงบันดาลใจจากการมีส่วนร่วมกับทีมชามวิทยาศาสตร์ของโรงเรียนมัธยมศึกษาตอนปลายเป็นเวลาสามปี เรามีความปรารถนาเสมอที่จะสร้างระบบออดล็อคเอาต์ขึ้นมาใหม่ด้วยตัวจับเวลา 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)

ไฟไนต์สเตทแมชชีน (FSM) ไดอะแกรม
ไฟไนต์สเตทแมชชีน (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

แนะนำ: