Cuprins:

Sistem buzzer competitiv: 5 pași
Sistem buzzer competitiv: 5 pași

Video: Sistem buzzer competitiv: 5 pași

Video: Sistem buzzer competitiv: 5 pași
Video: Car-அ விட்டு இறங்குனதும் Parthiban அடித்த Counter 🥳 சிரிச்சுட்டே வந்த CM Stalin, Udhay 🤩 2024, Noiembrie
Anonim
Image
Image
Materiale
Materiale

Sistemul buzzer competitiv proiectat în acest proiect funcționează similar cu sistemele buzzer utilizate în competițiile regionale și naționale de boluri științifice. Acest proiect a fost inspirat de implicarea mea cu echipa de liceu științific de trei ani. Am avut întotdeauna dorința de a recrea sistemul de sonerie de blocare cu un temporizator de 5 și 20 de secunde.

Pentru a oferi o serie de informații despre sistemul de sonerie, sonerele de boluri științifice sunt programate să introducă maximum 8 jucători (cu 8 sonerii separate). Odată apăsat un buzzer, buzzer-ul primei persoane va fi aprins pentru a indica care jucător primește întrebarea. Restul jucătorilor vor fi „blocați”, ceea ce înseamnă că sonerii lor nu vor răspunde până când moderatorul nu resetează sistemul de sonerie.

După ce moderatorul citește întrebările, va apăsa un buton pentru a porni cronometrul care va fi afișat pe afișajul cu șapte segmente. După o întrebare „ridicată”, moderatorul poate apăsa butonul din dreapta pentru a începe numărătoarea inversă de la 5 secunde. Între timp, după o întrebare „bonus”, moderatorul poate apăsa butonul din stânga pentru a începe numărătoarea inversă de la 20 de secunde. Odată ce cronometrul ajunge la zero, un sonor va indica faptul că jucătorul a rămas fără timp.

Pentru a reseta sistemul și temporizatorul de numărătoare inversă, moderatorul poate apăsa butonul central. Pentru a reseta mecanismul de blocare și LED-urile playerului, comutatoarele pentru playerul 1 și playerul 2 trebuie să fie aprinse.

Pasul 1: Materiale

Veți avea nevoie de următoarele:

  • Placă Basys3 (sau placă FPGA echivalentă)
  • Cablu USB Micro-B
  • Difuzor (am folosit un difuzor pasiv)
  • 2 fire
  • Software de implementat pe FPGA (am folosit Vivado)
  • Fișier Sistem Buzzer competitiv

Pasul 2: Diagrama cutiei negre

Diagrama cutiei negre
Diagrama cutiei negre

Diagrama cutiei negre prezintă intrările și ieșirile care vor fi utilizate în acest sistem sonor.

INTRĂRI:

player1, player2 Aceste intrări sunt conectate la două comutatoare de pe placa Basys3. Pentru comoditate, vor fi utilizate comutatoarele din stânga și din dreapta.

resetare Butonul central va fi folosit pentru a reprezenta butonul de resetare.

count_down_20_sec Butonul din stânga va fi folosit pentru a reprezenta butonul cu temporizator de 20 de secunde.

count_down_5_sec Butonul din dreapta va fi utilizat pentru a reprezenta butonul cu temporizator de 20 de secunde. Pentru a vă asigura că pornesc atât temporizatorul de 20 de secunde, cât și cel de 5 secunde, țineți apăsat butonul până când afișajul cu șapte segmente afișează temporizatorul.

CLK Placa FPGA va genera un ceas care rulează cu o frecvență de 10 ns.

IEȘIRI:

difuzor Ieșirea difuzorului este conectată la un buzzer sau difuzor extern. Va trebui să conectați difuzorul la porturile JA pmod ale plăcii Basys3. Acest pas va fi prezentat mai jos.

speaker_LED Această ieșire este conectată la un LED din centrul plăcii și va indica doar când ieșirea difuzorului FPGA este mare. Puteți utiliza acest lucru pentru a testa difuzorul extern. Rețineți că este posibil ca unele dintre porturile pmod să nu funcționeze bine, deci puteți încerca altele diferite și puteți utiliza LED-ul pentru a verifica dacă difuzorul ar trebui să fie aprins.

SEGMENTE Această ieșire este conectată la cele opt segmente individuale de pe afișajul cu șapte segmente, inclusiv punctul zecimal.

DISP_EN Această ieșire este conectată la cei patru anodi de pe afișajul cu șapte segmente.

player_LED Această ieșire este un semnal de 2 pachete care este conectat la LED-urile de deasupra comutatoarelor player1 și player2. Primul jucător care își întoarce comutatorul corespunzător va fi indicat de LED. Rețineți că ambele LED-uri nu pot fi aprinse simultan.

Pasul 3: Conectarea difuzorului extern

Conectarea difuzorului extern
Conectarea difuzorului extern

Pentru a conecta difuzorul extern la placa Basys3, luați cele două fire și atașați-le așa cum este indicat în imaginea de mai sus. Linia albă conectează terminalul negativ al difuzorului la portul de masă de pe placă. Linia roșie conectează terminalul pozitiv al difuzorului la portul JA10 pmod de pe placă.

Fișierul de constrângeri este conceput astfel încât orice port de la JA1 la JA10 să funcționeze. Cu toate acestea, unele pini de pe placă nu răspund, deci dacă JA10 nu funcționează, puteți încerca celelalte porturi.

Pasul 4: Diagrama structurală

Diagrama structurală
Diagrama structurală

Imaginea de mai sus prezintă diagrama structurală a sistemului buzzer competitiv, inclusiv toate componentele care alcătuiesc modulul principal. Descrierile lor sunt după cum urmează:

player_lockout_LED1 Componenta LED de blocare a playerului este o mașină cu stare finită care utilizează o codificare cu un singur hot. Are patru intrări: player1, player2, reset și CLK. Conține un player de biți de ieșire pe 2 biți_LED. Intrările și ieșirile componentei player_lockout_LED1 sunt toate conectate direct la intrările și ieșirile denumite identic ale modulului principal.

buzzer_tone1 Componenta buzzer se bazează pe acest cod postat pe un forum

stackoverflow.com/questions/22767256/vhdl-… Cu toate acestea, a fost modificat pentru a emite un sunet continuu cu o frecvență de 440 Hz (o notă). Intrarea de activare este conectată la un semnal buzzer_enable care este o ieșire a componentei down_counter_FSM1.

clk_div1 Componenta divizorului de ceas este o versiune modificată a divizorului de ceas al profesorului Bryan Mealy furnizat pe PolyLearn. Acesta încetinește ceasul, astfel încât perioada de ieșire este de 1 secundă.

down_counter_FSM1 Contorul down este un FSM conceput pentru a număra în jos până la zero. Cei doi timpi de pornire posibili sunt 20 sau 5, care este ales de intrarea utilizatorului. Se afișează „1” când cronometrul a ajuns la zero pentru a indica faptul că timpul s-a epuizat. Această ieșire acționează ca o activare pentru componenta tonului sonor. Contorul emite, de asemenea, un semnal de 8 biți care trimite un BCD de 8 biți care este trimis către decodorul de segment. O altă ieșire este counter_on, care este, de asemenea, conectat la intrarea validă pe decodorul de segment.

sseg_dec1 Componenta decodificatorului cu șapte segmente este furnizată pe PolyLearn și a fost scrisă de profesorul Bryan Mealy. Folosește o intrare BCD furnizată de down_counter_FSM1 și scoate echivalentul zecimal pe afișajul cu șapte segmente. Când contorul este pornit, atunci intrarea validă este mare. Aceasta permite decodorului să afișeze numărul zecimal pe afișajul cu șapte segmente. Când contorul este oprit, atunci intrarea validă este redusă. Afișajul cu șapte segmente va afișa apoi doar patru liniuțe.

Pasul 5: Diagrama mașinii de stat finit (FSM)

Diagrama mașinii de stat finit (FSM)
Diagrama mașinii de stat finit (FSM)

Lista de sensibilitate pentru mașina cu stări finite include player1, player2, resetare și ceas. Ieșirea FSM este un player de 2 biți bundled_LED conectat la două LED-uri de pe placa Basys3. Mașina cu stări finite prezintă următoarele trei stări:

ST0 este starea de pornire. În această stare, cele două LED-uri sunt stinse. FSM va rămâne în această stare dacă atât jucătorul 1, cât și jucătorul 2 sunt scăzute. O resetare asincronă stabilește, de asemenea, starea la ST0. Când comutatorul player1 este setat la înalt, următoarea stare va fi ST1. Dacă comutatorul player2 este setat la înalt, următoarea stare va fi ST2.

ST1 este starea pentru care LED-ul player1 este aprins. FSM va rămâne în această stare pentru orice intrare. Aceasta înseamnă că, chiar și când comutatorul player2 este setat la înalt imediat după ce comutatorul player1 este ridicat, acesta va rămâne în ST1. Numai resetarea asincronă poate seta următoarea stare la ST0.

ST2 este starea pentru care LED-ul player2 este aprins. Similar cu ST !, FSM va rămâne în această stare pentru orice intrare, chiar și când comutatorul player1 este setat la ridicat imediat după ce comutatorul player2 este ridicat. Din nou, numai resetarea asincronă poate seta următoarea stare la ST0.

Recomandat: