Inhoudsopgave:

Competitief zoemersysteem: 5 stappen
Competitief zoemersysteem: 5 stappen

Video: Competitief zoemersysteem: 5 stappen

Video: Competitief zoemersysteem: 5 stappen
Video: 5 Stappenplan Moisture 2024, November
Anonim
Image
Image
Materialen
Materialen

Het competitieve zoemersysteem dat in dit project is ontworpen, werkt op dezelfde manier als de zoemersystemen die worden gebruikt in de regionale en nationale wetenschappelijke komcompetities. Dit project werd geïnspireerd door mijn betrokkenheid bij het science bowl-team van mijn middelbare school gedurende drie jaar. We hebben altijd de wens gehad om het lock-out zoemersysteem opnieuw te creëren met een timer van 5 seconden en 20 seconden.

Om wat achtergrondinformatie te geven over het zoemersysteem, zijn de wetenschappelijke bowl-zoemers geprogrammeerd om maximaal 8 spelers in te voeren (met 8 afzonderlijke zoemers). Zodra er op één zoemer is gedrukt, gaat de zoemer van de eerste persoon branden om aan te geven welke speler de vraag ontvangt. De rest van de spelers wordt "uitgesloten", wat betekent dat hun zoemers niet reageren totdat de moderator het zoemersysteem reset.

Nadat de moderator de vragen heeft gelezen, drukt hij op een knop om de afteltimer te starten die wordt weergegeven op het display met zeven segmenten. Na een "opgooi"-vraag kan de moderator op de rechterknop drukken om het aftellen vanaf 5 seconden te laten beginnen. Ondertussen kan de moderator na een "bonus"-vraag op de linkerknop drukken om het aftellen vanaf 20 seconden te starten. Zodra de timer nul bereikt, geeft een geluidszoemer aan dat de speler geen tijd meer heeft.

Om het systeem en de afteltimer te resetten, kan de moderator op de middelste knop drukken. Om het vergrendelingsmechanisme en de speler-LED's te resetten, moeten de schakelaars voor speler 1 en speler 2 op laag staan.

Stap 1: Materialen

Je hebt het volgende nodig:

  • Basys3-bord (of gelijkwaardig FPGA-bord)
  • Micro-B USB-kabel
  • Luidspreker (ik gebruikte een passieve luidspreker)
  • 2 draden
  • Software om te implementeren op de FPGA (ik gebruikte Vivado)
  • Competitief zoemersysteembestand

Stap 2: Black Box-diagram

Black Box-diagram
Black Box-diagram

Het black box-diagram toont de in- en uitgangen die in dit zoemersysteem zullen worden gebruikt.

INGANGEN:

player1, player2 Deze ingangen zijn verbonden met twee schakelaars op het Basys3-bord. Voor het gemak worden de meest linkse en meest rechtse schakelaars gebruikt.

reset De middelste knop wordt gebruikt om de resetknop weer te geven.

count_down_20_sec De linkerknop wordt gebruikt om de 20-seconden timerknop weer te geven.

count_down_5_sec De rechterknop wordt gebruikt om de 20-seconden timerknop weer te geven. Om ervoor te zorgen dat zowel de 20-seconden als de 5-seconden timer start, houdt u de knop ingedrukt totdat het zevensegmentendisplay de timer toont.

CLK Het FPGA-bord genereert een klok die loopt met een frequentie van 10 ns.

UITGANGEN:

luidspreker De luidsprekeruitgang is aangesloten op een externe zoemer of luidspreker. U moet de luidspreker aansluiten op de Basys3-kaart JA pmod-poorten. Deze stap wordt hieronder beschreven.

speaker_LED Deze uitgang is verbonden met een LED in het midden van het bord, en geeft alleen aan wanneer de luidsprekeruitgang van de FPGA hoog is. Deze kun je gebruiken om je externe speaker te testen. Houd er rekening mee dat sommige van de pmod-poorten mogelijk niet goed werken, dus u kunt verschillende proberen en de LED gebruiken om te controleren of de luidspreker aan moet staan.

SEGMENTEN Deze uitgang is verbonden met de acht afzonderlijke segmenten op het zevensegmentendisplay, inclusief de komma.

DISP_EN Deze uitgang wordt aangesloten op de vier anodes op het zevensegmentendisplay.

player_LED Deze uitgang is een 2-bundel signaal dat wordt aangesloten op de LED's boven de player1 en player2 schakelaars. De eerste speler die de bijbehorende schakelaar omdraait, wordt aangegeven door de LED. Houd er rekening mee dat beide LED's niet tegelijkertijd kunnen branden.

Stap 3: De externe luidspreker aansluiten

De externe luidspreker aansluiten
De externe luidspreker aansluiten

Om de externe luidspreker op het Basys3-bord aan te sluiten, neemt u uw twee draden en bevestigt u ze zoals aangegeven in de bovenstaande afbeelding. De witte lijn verbindt de negatieve pool van de luidspreker met de massapoort op het bord. De rode lijn verbindt de positieve pool van de luidspreker met de JA10 pmod-poort op het bord.

Het bestand met beperkingen is zo ontworpen dat elke poort van JA1 tot JA10 zou moeten werken. Sommige pinnen op het bord reageren echter niet, dus als JA10 niet werkt, kunt u de andere poorten proberen.

Stap 4: Structureel diagram

Structureel diagram
Structureel diagram

De afbeelding hierboven toont het structurele diagram van het concurrerende zoemersysteem inclusief alle componenten waaruit de hoofdmodule bestaat. Hun beschrijvingen zijn als volgt:

player_lockout_LED1 De speler lockout LED component is een eindige toestand machine die gebruik maakt van one-hot codering. Het heeft vier ingangen: speler1, speler2, reset en CLK. Het bevat een 2-bits bundeluitvoer player_LED. De inputs en outputs van de player_lockout_LED1 component zijn allemaal direct verbonden met de gelijknamige inputs en outputs van de hoofdmodule.

buzzer_tone1 De zoemercomponent is gebaseerd op deze code die op een forum is gepost

stackoverflow.com/questions/22767256/vhdl-… Het is echter aangepast om een continu geluid uit te voeren met een frequentie van 440 Hz (A-noot). De activeringsingang is verbonden met een zoemer_enable-signaal dat een uitgang is van de down_counter_FSM1-component.

clk_div1 De klokverdeler is een aangepaste versie van de klokverdeler van professor Bryan Mealy die op PolyLearn wordt geleverd. Het vertraagt de klok, dus de uitvoerperiode is 1 seconde.

down_counter_FSM1 De afteller is een FSM die is ontworpen om af te tellen tot nul. De twee mogelijke starttijden zijn 20 of 5 die worden gekozen door de gebruikersinvoer. Het geeft '1' af wanneer de timer nul heeft bereikt om aan te geven dat de tijd om is. Deze uitgang werkt als een vrijgave voor de zoemertooncomponent. De teller voert ook een 8-bits bundelsignaal uit dat een 8-bits BCD stuurt die naar de segmentdecoder wordt gestuurd. Een andere uitgang is de counter_on die ook verbonden is met de geldige ingang op de segmentdecoder.

sseg_dec1 De decodercomponent met zeven segmenten wordt geleverd op PolyLearn en is geschreven door professor Bryan Mealy. Het gebruikt een BCD-invoer die wordt geleverd door de down_counter_FSM1 en geeft het decimale equivalent weer op het display met zeven segmenten. Als de teller aan staat, is de geldige ingang hoog. Hierdoor kan de decoder het decimale getal weergeven op het zevensegmentendisplay. Als de teller uit staat, is de geldige ingang laag. Het zevensegmentendisplay toont dan slechts vier streepjes.

Stap 5: Eindige-toestandsmachine (FSM) diagram

Eindige-toestandsmachine (FSM)-diagram
Eindige-toestandsmachine (FSM)-diagram

De gevoeligheidslijst voor de eindige-toestandsmachine omvat speler1, speler2, reset en de klok. De FSM-uitgang is een 2-bits bundel player_LED die is aangesloten op twee LED's op het Basys3-bord. De Finite State Machine toont de volgende drie toestanden:

ST0 is de startstatus. In deze toestand zijn de twee LED's uitgeschakeld. De FSM blijft in deze toestand als zowel speler1 als speler2 laag zijn. Een asynchrone reset stelt de status ook in op ST0. Als de speler1 schakelaar op hoog staat, is de volgende status ST1. Als de speler2-schakelaar op hoog staat, is de volgende status ST2.

ST1 is de status waarvoor de player1 LED brandt. De FSM blijft in deze status voor elke invoer. Dit betekent dat zelfs wanneer de player2 switch direct nadat de player1 switch hoog staat op hoog staat, deze op ST1 blijft staan. Alleen de asynchrone reset kan de volgende status op ST0 zetten.

ST2 is de status waarvoor de player2 LED brandt. Net als bij ST!, blijft de FSM voor elke ingang in deze toestand, zelfs als de schakelaar van speler1 direct nadat de schakelaar van speler2 op hoog staat, op hoog wordt gezet. Nogmaals, alleen de asynchrone reset kan de volgende status op ST0 zetten.

Aanbevolen: