Πίνακας περιεχομένων:

Ανταγωνιστικό σύστημα βομβητή: 5 βήματα
Ανταγωνιστικό σύστημα βομβητή: 5 βήματα

Βίντεο: Ανταγωνιστικό σύστημα βομβητή: 5 βήματα

Βίντεο: Ανταγωνιστικό σύστημα βομβητή: 5 βήματα
Βίντεο: Πως να ΜΗΝ χάσεις ΤΙΠΟΤΑ ΞΑΝΑ ⚪️ | AirTags Review Greek 2024, Νοέμβριος
Anonim
Image
Image
Υλικά
Υλικά

Το ανταγωνιστικό σύστημα βομβητή που σχεδιάστηκε σε αυτό το έργο λειτουργεί παρόμοια με τα συστήματα βομβητή που χρησιμοποιούνται στους Περιφερειακούς και Εθνικούς Διαγωνισμούς Επιστημονικών Μπολ. Αυτό το έργο ήταν εμπνευσμένο από τη συμμετοχή μου με την ομάδα γυμνασίου στο γυμνάσιο για τρία χρόνια. Πάντα είχαμε την επιθυμία να αναδημιουργήσουμε το σύστημα βομβητή κλειδώματος με χρονοδιακόπτη 5 δευτερολέπτων και 20 δευτερολέπτων.

Για να δώσετε κάποιο υπόβαθρο στο σύστημα βομβητή, οι βομβητές του επιστημονικού μπολ είναι προγραμματισμένοι να εισάγουν το πολύ 8 παίκτες (με 8 ξεχωριστά βομβητή). Μόλις πατηθεί ένας βομβητής, ο βομβητής του πρώτου ατόμου θα ανάψει για να δείξει ποιος παίκτης λαμβάνει την ερώτηση. Οι υπόλοιποι παίκτες θα "κλειδωθούν", πράγμα που σημαίνει ότι οι βομβητές τους δεν θα ανταποκριθούν έως ότου ο συντονιστής επαναφέρει το σύστημα βομβητή.

Αφού ο συντονιστής διαβάσει τις ερωτήσεις, θα πατήσει ένα κουμπί για να ξεκινήσει το χρονόμετρο αντίστροφης μέτρησης που θα εμφανιστεί στην οθόνη των επτά τμημάτων. Μετά από μια ερώτηση "toss-up", ο συντονιστής μπορεί να πατήσει το δεξί κουμπί για να ξεκινήσει η αντίστροφη μέτρηση από 5 δευτερόλεπτα. Εν τω μεταξύ, μετά από μια ερώτηση "μπόνους", ο συντονιστής μπορεί να πατήσει το αριστερό κουμπί για να ξεκινήσει η αντίστροφη μέτρηση από 20 δευτερόλεπτα. Μόλις το χρονόμετρο φτάσει στο μηδέν, ένας βομβητής ήχου θα υποδείξει ότι η συσκευή αναπαραγωγής έχει εξαντληθεί.

Για να επαναφέρετε το σύστημα και το χρονόμετρο αντίστροφης μέτρησης, ο συντονιστής μπορεί να πατήσει το κεντρικό κουμπί. Για να επαναφέρετε τον μηχανισμό κλειδώματος και τις λυχνίες LED της συσκευής αναπαραγωγής, οι διακόπτες για τη συσκευή αναπαραγωγής 1 και τη συσκευή αναπαραγωγής 2 πρέπει να είναι χαμηλά.

Βήμα 1: Υλικά

Θα χρειαστείτε τα εξής:

  • Πίνακας Basys3 (ή ισοδύναμος πίνακας FPGA)
  • Καλώδιο Micro-B USB
  • Ηχείο (χρησιμοποίησα παθητικό ηχείο)
  • 2 καλώδια
  • Λογισμικό για εφαρμογή στο FPGA (χρησιμοποίησα το Vivado)
  • Ανταγωνιστικό αρχείο συστήματος Buzzer

Βήμα 2: Διάγραμμα μαύρου κουτιού

Διάγραμμα μαύρου κουτιού
Διάγραμμα μαύρου κουτιού

Το διάγραμμα μαύρου κουτιού δείχνει τις εισόδους και τις εξόδους που θα χρησιμοποιηθούν σε αυτό το σύστημα βομβητή.

ΕΙΣΟΔΟΣ:

player1, player2 Αυτές οι είσοδοι συνδέονται με δύο διακόπτες στον πίνακα Basys3. Για ευκολία, θα χρησιμοποιηθούν οι αριστερότεροι και οι δεξιότεροι διακόπτες.

Επαναφορά Το κεντρικό κουμπί θα χρησιμοποιηθεί για την αναπαράσταση του κουμπιού επαναφοράς.

count_down_20_sec Το αριστερό κουμπί θα χρησιμοποιηθεί για την αναπαράσταση του κουμπιού χρονοδιακόπτη 20 δευτερολέπτων.

count_down_5_sec Το δεξί κουμπί θα χρησιμοποιηθεί για την αναπαράσταση του κουμπιού χρονοδιακόπτη 20 δευτερολέπτων. Για να βεβαιωθείτε ότι ξεκινά ο χρονοδιακόπτης 20 δευτερολέπτων και 5 δευτερολέπτων, κρατήστε πατημένο το κουμπί έως ότου η οθόνη επτά τμημάτων εμφανίσει το χρονόμετρο.

CLK Ο πίνακας FPGA θα δημιουργήσει ένα ρολόι που λειτουργεί με συχνότητα 10 ns.

ΕΞΟΔΟΙ:

ηχείο Η έξοδος του ηχείου είναι συνδεδεμένη με εξωτερικό βομβητή ή ηχείο. Θα πρέπει να συνδέσετε το ηχείο στις θύρες του πίνακα Basys3 JA pmod. Αυτό το βήμα θα περιγραφεί παρακάτω.

speaker_LED Αυτή η έξοδος είναι συνδεδεμένη με μια λυχνία LED στο κέντρο της πλακέτας και θα δείχνει μόνο πότε η έξοδος ηχείων του FPGA είναι υψηλή. Μπορείτε να το χρησιμοποιήσετε για τον έλεγχο του εξωτερικού ηχείου σας. Λάβετε υπόψη ότι ορισμένες από τις θύρες pmod ενδέχεται να μην λειτουργούν καλά, οπότε μπορείτε να δοκιμάσετε διαφορετικές και να χρησιμοποιήσετε τη λυχνία LED για να ελέγξετε εάν το ηχείο πρέπει να είναι ενεργοποιημένο.

ΤΜΗΜΑΤΑ Αυτή η έξοδος συνδέεται με τα οκτώ μεμονωμένα τμήματα στην οθόνη των επτά τμημάτων, συμπεριλαμβανομένης της υποδιαστολής.

DISP_EL Αυτή η έξοδος συνδέεται με τις τέσσερις ανόδους στην οθόνη των επτά τμημάτων.

player_LED Αυτή η έξοδος είναι ένα σήμα 2 πακέτων που συνδέεται με τα LED πάνω από τους διακόπτες player1 και player2. Ο πρώτος παίκτης που θα αναστρέψει τον αντίστοιχο διακόπτη θα υποδεικνύεται από το LED. Σημειώστε ότι και οι δύο λυχνίες LED δεν μπορούν να είναι αναμμένες ταυτόχρονα.

Βήμα 3: Σύνδεση του εξωτερικού ηχείου

Σύνδεση του εξωτερικού ηχείου
Σύνδεση του εξωτερικού ηχείου

Για να συνδέσετε το εξωτερικό ηχείο στην πλακέτα Basys3, πάρτε τα δύο καλώδια σας και συνδέστε τα όπως υποδεικνύεται στην παραπάνω εικόνα. Η λευκή γραμμή συνδέει τον αρνητικό ακροδέκτη του ηχείου με τη θύρα γείωσης της πλακέτας. Η κόκκινη γραμμή συνδέει το θετικό τερματικό του ηχείου με τη θύρα pmod JA10 στον πίνακα.

Το αρχείο περιορισμών έχει σχεδιαστεί έτσι ώστε οποιαδήποτε θύρα από JA1 έως JA10 να λειτουργεί. Ωστόσο, ορισμένες ακίδες στον πίνακα δεν ανταποκρίνονται, οπότε αν το JA10 δεν λειτουργεί, μπορείτε να δοκιμάσετε τις άλλες θύρες.

Βήμα 4: Δομικό διάγραμμα

Δομικό Διάγραμμα
Δομικό Διάγραμμα

Η παραπάνω εικόνα δείχνει το δομικό διάγραμμα του ανταγωνιστικού συστήματος βομβητή που περιλαμβάνει όλα τα στοιχεία που αποτελούν την κύρια μονάδα. Οι περιγραφές τους έχουν ως εξής:

player_lockout_LED1 Το στοιχείο κλειδώματος LED της συσκευής αναπαραγωγής είναι ένα μηχάνημα πεπερασμένης κατάστασης που χρησιμοποιεί κωδικοποίηση μίας θερμότητας. Έχει τέσσερις εισόδους: player1, player2, reset και CLK. Περιέχει ένα πακέτο εξόδου 2-bit player_LED. Οι είσοδοι και οι έξοδοι του στοιχείου player_lockout_LED1 συνδέονται άμεσα με τις πανομοιότυπα εισόδους και εξόδους της κύριας μονάδας.

buzzer_tone1 Το στοιχείο βομβητή βασίζεται σε αυτόν τον κώδικα που δημοσιεύτηκε σε ένα φόρουμ

stackoverflow.com/questions/22767256/vhdl-… Ωστόσο, τροποποιήθηκε για να παράγει έναν συνεχή ήχο με συχνότητα 440 Hz (Σημείωση). Η είσοδος ενεργοποίησης συνδέεται με ένα σήμα buzzer_enable, το οποίο είναι έξοδος του στοιχείου down_counter_FSM1.

clk_div1 Το στοιχείο διαίρεσης ρολογιού είναι μια τροποποιημένη έκδοση του διαχωριστή ρολογιού του καθηγητή Bryan Mealy που παρέχεται στο PolyLearn. Επιβραδύνει το ρολόι, οπότε η περίοδος εξόδου είναι 1 δευτερόλεπτο.

down_counter_FSM1 Ο κάτω μετρητής είναι ένας FSM που έχει σχεδιαστεί για να μετρά αντίστροφα στο μηδέν. Οι δύο πιθανές ώρες έναρξης είναι 20 ή 5, η οποία επιλέγεται από την είσοδο του χρήστη. Βγαίνει '1' όταν ο χρονοδιακόπτης έχει φτάσει στο μηδέν για να δείξει ότι ο χρόνος έχει τελειώσει. Αυτή η έξοδος λειτουργεί ως ενεργοποίηση για το στοιχείο ήχου βομβητή. Ο μετρητής εξάγει επίσης ένα σήμα δέσμης 8 bit που στέλνει ένα BCD 8 bit που αποστέλλεται στον αποκωδικοποιητή τμήματος. Μια άλλη έξοδος είναι το counter_on το οποίο είναι επίσης συνδεδεμένο με την έγκυρη είσοδο στον αποκωδικοποιητή τμήματος.

sseg_dec1 Το στοιχείο αποκωδικοποίησης επτά τμημάτων παρέχεται στο PolyLearn και γράφτηκε από τον καθηγητή Bryan Mealy. Χρησιμοποιεί μια είσοδο BCD που παρέχεται από το down_counter_FSM1 και εξάγει το δεκαδικό ισοδύναμο στην οθόνη επτά τμημάτων. Όταν ο μετρητής είναι ενεργοποιημένος, τότε η έγκυρη είσοδος είναι υψηλή. Αυτό επιτρέπει στον αποκωδικοποιητή να εμφανίζει τον δεκαδικό αριθμό στην οθόνη επτά τμημάτων. Όταν ο μετρητής είναι απενεργοποιημένος, τότε η έγκυρη είσοδος είναι χαμηλή. Στη συνέχεια, η οθόνη επτά τμημάτων θα εμφανίζει μόνο τέσσερις παύλες.

Βήμα 5: Διάγραμμα μηχανών πεπερασμένης κατάστασης (FSM)

Διάγραμμα Πεπερασμένης Κατάστασης Μηχανής (FSM)
Διάγραμμα Πεπερασμένης Κατάστασης Μηχανής (FSM)

Η λίστα ευαισθησίας για το μηχάνημα πεπερασμένης κατάστασης περιλαμβάνει το player1, το player2, το reset και το ρολόι. Η έξοδος FSM είναι ένα πακέτο 2-bit player_LED που συνδέεται με δύο LED στην πλακέτα Basys3. Η Μηχανή Πεπερασμένης Κατάστασης εμφανίζει τις ακόλουθες τρεις καταστάσεις:

Το ST0 είναι η κατάσταση έναρξης. Σε αυτήν την κατάσταση, τα δύο LED είναι απενεργοποιημένα. Ο FSM θα παραμείνει σε αυτήν την κατάσταση εάν τόσο ο παίκτης1 όσο και ο παίκτης2 είναι χαμηλοί. Μια ασύγχρονη επαναφορά θέτει επίσης την κατάσταση σε ST0. Όταν ο διακόπτης player1 έχει οριστεί σε υψηλό, η επόμενη κατάσταση θα είναι ST1. Εάν ο διακόπτης player2 έχει οριστεί σε υψηλή, η επόμενη κατάσταση θα είναι ST2.

ST1 είναι η κατάσταση για την οποία είναι αναμμένη η λυχνία LED player1. Ο FSM θα παραμείνει σε αυτήν την κατάσταση για οποιαδήποτε είσοδο. Αυτό σημαίνει ότι ακόμη και όταν ο διακόπτης player2 έχει ρυθμιστεί σε υψηλό αμέσως μόλις ο διακόπτης player1 είναι ψηλός, θα παραμείνει στο ST1. Μόνο η ασύγχρονη επαναφορά μπορεί να ορίσει την επόμενη κατάσταση σε ST0.

ST2 είναι η κατάσταση στην οποία είναι αναμμένη η λυχνία LED player2. Παρόμοια με το ST !, Το FSM θα παραμείνει σε αυτήν την κατάσταση για οποιαδήποτε είσοδο, ακόμη και όταν ο διακόπτης player1 έχει ρυθμιστεί σε υψηλό αμέσως μετά το διακόπτη player2 είναι ψηλά. Και πάλι, μόνο η ασύγχρονη επαναφορά μπορεί να ορίσει την επόμενη κατάσταση σε ST0.

Συνιστάται: