Inhoudsopgave:

VHDL één minuut stopwatch - Ajarnpa
VHDL één minuut stopwatch - Ajarnpa

Video: VHDL één minuut stopwatch - Ajarnpa

Video: VHDL één minuut stopwatch - Ajarnpa
Video: Воздушный стартер - шедевры советского авиапрома 2024, November
Anonim
Image
Image

Dit is een tutorial over het bouwen van een stopwatch van één minuut met VHDL en een Basys 3-bord. Zo'n apparaat is ideaal voor spellen waarbij elke speler maximaal één minuut de tijd heeft om zijn zet te doen. De stopwatch geeft seconden en milliseconden nauwkeurig weer op het zevensegmentendisplay, beginnend bij 0 seconden en 0 milliseconden, tot 60 seconden en 0 milliseconden. Er worden ook twee knoppen gebruikt: de centrale knop, die wordt gebruikt om de timer te starten, stoppen en voort te zetten, en de rechterknop, die wordt gebruikt om de timer opnieuw te starten. Wanneer het apparaat zij aan zij wordt vergeleken met de ingebouwde stopwatch van een smartphone, valt de nauwkeurigheid van de klok op.

Stap 1: hardware/software verkrijgen

Blokdiagram
Blokdiagram

1. Basys 3 Artix-7 FPGA Trainer Board van Digilent met Micro-USB naar USB-kabel

2. Vivado 2016.2 Design Suite van Xilinx

Stap 2: Blokdiagram

Dit circuit is gedragsmatig geconstrueerd en maakt gebruik van ingebouwde Xilinx-componenten, maar kan ook structureel worden beschreven, zoals weergegeven in het algemene structurele diagram hierboven. Uit het diagram is te zien dat het circuit wordt aangedreven door twee frequentiedelers. Een van de frequentiedelers loopt op 1 centiseconde en stuurt de kathodeteller aan die worden gebruikt als de getallen die worden weergegeven op het zevensegmentendisplay. De tweede frequentiedeler werkt op 240 Hz en wordt gebruikt om de anodeteller aan te sturen die door de anodes draait, zodat alle cijfers correct worden weergegeven op het zevensegmentendisplay. De encoder neemt de kathodelogica van de kathodeteller en de anodelogica van de anodeteller en codeert deze naar de kathode en anode van de uitgang die het zevensegmentendisplay aansturen. De functie van deze encoder is dat de kathode-uitgang verandert telkens wanneer de anode-uitgang verandert. De kathode-uitgang kan niet onafhankelijk van de teller lopen omdat de anodes door de 4 afzonderlijke cijfers moeten draaien.

Stap 3: Projectmodule

Ten eerste wordt een procesblokkering voor CEN gemaakt, zodat wanneer een druk op de knop wordt gedetecteerd, de ENABLE wordt omgeschakeld. Deze dient als stop/start van de kathodeteller.

In het volgende procesblok worden de centiseconde- en 240Hz-kloksignalen zo ingesteld dat hun respectievelijke tellers met 1 toenemen elke keer dat de interne 100mHz-klok een stijgende flank bereikt. Zodra de teller van de centiseconden 500000 bereikt, wordt deze teruggezet naar 0. Ondertussen zou de 240 Hz-teller worden gereset zodra de telling 41667 bereikt.

Voor het kathodegedeelte van de code, als ENABLE '0' is, wordt het tellen van de kathode onderbroken. Als de resetknop gedurende deze tijd wordt ingedrukt, worden alle tellingen teruggezet naar "0000". Ondertussen, als ENABLE '1' is, zal de kathodetelling doorgaan totdat de kathodetelling 60,00 bereikt, waarbij het het stopsignaal triggert om '1' te zijn. Het stopsignaal gaat terug naar het CEN-procesblok en zorgt ervoor dat ENABLE '0' is, terwijl het stopsignaal '1' is en niet verandert totdat de resetknop wordt ingedrukt.

Ten slotte wordt het display met zeven segmenten ingesteld door de 4 anoden correct te verbinden met elk van hun 8 kathodes om hun respectieve cijfers 0-9 tegelijkertijd weer te geven.

Stap 4: Beperkingen

Beperkingen
Beperkingen

Dit beperkingenbestand verbindt de gespecificeerde inputs en outputs van VHDL met de noodzakelijke, fysieke delen van het Basys-bord. Voor dit project omvatten de componenten de vier anodes en elk van hun acht kathoden voor het zevensegmentendisplay, de interne 100 mHz-klok, de middelste knop en de rechterknop.

Stap 5: Testen

Nadat je de code hebt ingevuld, kun je nu de FPGA programmeren via de USB-kabel. Het display met zeven segmenten moet 0.00 weergeven. Test of de knoppen werken door op de centrale knop te drukken om de timer te starten totdat deze 60.00 bereikt en stopt; op elk moment daartussenin kun je nogmaals op de centrale knop drukken om het te pauzeren. Zodra het is gepauzeerd, kunt u op de rechterknop drukken om de timer terug te zetten naar 0.00. Als alles correct werkt, gefeliciteerd, je hebt zojuist een timer van één minuut gebouwd!

Aanbevolen: