Inhoudsopgave:

Letter-naar-morsecode-vertaler - Ajarnpa
Letter-naar-morsecode-vertaler - Ajarnpa

Video: Letter-naar-morsecode-vertaler - Ajarnpa

Video: Letter-naar-morsecode-vertaler - Ajarnpa
Video: Invention Of Morse Code | The Dr. Binocs Show | Best Learning Video for Kids | Preschool Learning 2024, Juli-
Anonim
Brief aan morsecodevertaler
Brief aan morsecodevertaler

Morsecode-representaties online zien om het te leren, is nuttig, maar kan niet worden vergeleken met het persoonlijk zien met echte flitsende lichten / geluiden. Met deze vertaler kunt u de letter kiezen die u in morsecode wilt leren en deze recht voor uw ogen vertalen door LED's te laten knipperen in het patroon dat het voor die specifieke letter vertegenwoordigt! Deze vertaler neemt een binaire weergave van een letter in het alfabet in (een grafiek kan later worden bekeken voor het binaire equivalent van elke letter, maar neem aan dat A - 01, B - 10, C - 11, enzovoort) en converteert het in een morsecode-equivalent door knipperende lichten voor de gebruiker. De decimale versie van het getal wordt echter ook weergegeven op een display met zeven segmenten, om u te laten weten dat u het juiste binaire equivalent maakt.

Het binaire getal wordt gemaakt met de schakelaars aan de rechterkant en stijgt vanaf het minst significante bit, net zoals je zou verwachten bij het maken van een binair getal. Het nummer dat u aanmaakt, wordt weergegeven op het display met zeven segmenten zoals eerder vermeld en bevindt zich aan de linkerkant van het bord, het zal u eenvoudig vertellen of u een fout hebt gemaakt of niet bij het weergeven van het binaire getal met de schakelaars, of bevestigen dat u het juiste nummer. Het neemt 1 letter tegelijk in, slaat het op in het geheugen en drukt vervolgens de morsecode af wanneer de gebruiker klaar is door de "Print-schakelaar" helemaal links op het BASYS3-bord te activeren (dit is gewoon een andere schakelaar die we toegewezen als de "Print Switch", of een andere switch als u een ander type FPGA-kaart gebruikt en een andere switch toewijst (zie stap 3.) Het wordt aanbevolen dat u een BASYS3-kaart gebruikt voor de eenvoud, maar dit is niet vereist.

Stap 1: Stap 1: Verzamel uw materialen

Voor dit project heb je alleen het volgende nodig:

Hardware- Basys3-kaart (of een gelijkwaardige FPGA die u dienovereenkomstig kunt bedraden)

-(OPTIONEEL) Draden als u van plan bent extra LED's of andere schakelaars aan te sluiten op een alternatieve FPGA

Software-Vivado Design Suite (We raden 2014+ aan)

Stap 2: Stap 2: Maak een bestand

Dit is het bestand dat in VHDL is geschreven om de Morse Code 1 Bit-vertaler in Vivado uit te voeren. Dit bestand werkt met alle versies van Vivado. Als er problemen zijn met het downloaden van het bestand, kan een tekstweergave van de code worden gevonden in een ander bestand hieronder en kan deze eenvoudig worden gekopieerd en geplakt in de bestandsmap die u aan het maken bent. Zorg ervoor dat zowel de hoofdbron als het bestand met beperkingen aanwezig zijn en in hun eigen afzonderlijke bronnen voordat u probeert een bitstream te genereren of iets te synthetiseren. Voor degenen die een meer diepgaande uitleg van de code willen begrijpen en wat het echt doet, bekijk stap 3. Als je gewoon ter zake wilt komen en wilt beginnen met vertalen, ga dan verder naar sectie 4.

Stap 3: Stap 3: de code

Onze code bevat 4 afzonderlijke processen die allemaal gelijktijdig worden uitgevoerd. Elk van de volgende subsecties in deze stap gaat dieper in op wat elk van hen doet.

Proces 1:

Het eerste proces dat we hebben gemaakt, maakte gebruik van een klokverdeler om de weergave met zeven segmenten voor twee segmenten te laten werken om het binaire equivalent te tonen van de letter die de persoon aan het maken was. We moesten ervoor zorgen dat de klok het nummer correct weergaf aan de juiste zeven segmentsecties die we wilden. We hebben de segmenten dienovereenkomstig toegewezen, zodat ze bepaalde cijfers zouden weergeven wanneer we ze ook vroegen, en de laatste 2 cijfers hadden doorlopen omdat we er maar 2 nodig hadden om alle cijfers in het alfabet weer te geven. We hebben de weergave met zeven segmenten in het decimale nummersysteem gemaakt, zodat het voor mensen gemakkelijker was om te zien welke letter ze probeerden te vertegenwoordigen, aangezien de meerderheid van de bevolking basiscijfersystemen met 10 gebruikt.

proces 2:

Het tweede proces creëert onze klok voor de LED's om op te lopen, zodat we de pulsen duidelijk kunnen zien en onderscheid kunnen maken tussen de Dot en Dash, samen met voldoende tijd tussen elk deel van de morsecode. We gebruikten een signaal om een bus vol met morsecode-LED-uitgangen door te geven buiten het proces en naar de LED's op het bord, zodat we meerdere tegelijk konden oplichten, in plaats van slechts één LED-flitser.

proces 3:

Ons derde proces kijkt naar de huidige toestanden van de schakelaars en wijst de letter toe aan de binaire weergave die op dat moment wordt weergegeven. Dit gaat door elk van de letters, samen met een spatie, een punt en een komma. Dit proces eindigt hier en alle onderdelen worden verzameld in het vierde proces om de vertaling af te ronden.

Proces 4:

Het vierde proces is het "vertaler"-proces, dat alle informatie opneemt die we tot nu toe hebben verzameld, zoals of de winkelknop al dan niet is geactiveerd, of de printschakelaar aan of uit staat en welk nummer wordt weergegeven. weergegeven door de schakelaars. Dit kijkt vervolgens naar een array die we hebben gemaakt, die representaties in morsecodes heeft van wat de uitvoer zou zijn met enen en nullen die gelijk zijn aan Aan/Uit-commando's voor de LED's. In plaats van twee afzonderlijke klokken met een duty cycle te gebruiken, hebben we een enkele 50% duty cycle-klok gemaakt waarvan we dachten dat het een goede snelheid was voor morsecode, en lieten het een punt uitvoeren met 1 hoge "puls" en een streepje voor 3 hoge " pulsen." Om de code te vereenvoudigen en sneller te laten werken, hebben we zojuist een punt gelijk aan "010" en een streepje gelijk aan "01110" gemaakt.

Stap 4: Stap 4: Genereer de Bistream en implementeer

Dit project is heel eenvoudig in te stellen als je een BASYS3-bord hebt, omdat alle benodigde schakelaars en knoppen al op het bord aanwezig zijn om te gebruiken, samen met de beperkingen die vooraf zijn ingesteld voor de pinnen die je wilt. Als u een andere FPGA gebruikt, moet u de code ingaan en de beperkingen vinden en deze omleiden naar de juiste beperkingen voor uw FPGA. Dit geldt ook als u van plan bent andere LED's en schakelaars op uw bord aan te sluiten voor gebruik. We zullen niet ingaan op voorbeelden hiervan, maar het gebruik van de handleiding van uw specifieke FPGA zou zeer nuttig zijn om te bepalen hoe alles naar de juiste pinnen moet worden bedraad en geleid.

Op dit punt, zodra u de code hebt gedownload en het bestand geopend, genereert u eenvoudig de bitstream in Vivado en programmeert u uw apparaat. Zodra u dit hebt gedaan, kunt u beginnen met het invoeren van letters die naar morsecode moeten worden vertaald! Genieten van!

*OPMERKING: De "Print Switch" bevindt zich helemaal links op het bord (Switch R2 voor het BASYS3-bord) en de "Opslaan-knop" is knop U18 (de middelste knop in het BASYS3-bord) als de beperkingen rechtstreeks worden overgenomen van onze voorbeeldcode.

Stap 5: Problemen/Problemen oplossen

Als u problemen ondervindt bij het downloaden van het bestand, kunt u de code handmatig kopiëren vanuit dit Word-bestand. Er is ook een bijlage die u kunt bekijken voor eenvoudige conversies tussen binair naar de letter en wat de letter moet vertegenwoordigen, dus we raden u aan deze te bekijken! Als u het BASYS3-bord gebruikt, zou u deze instructies moeten kunnen volgen en de code zonder problemen kunnen downloaden en zonder problemen kunnen implementeren nadat u het bord hebt aangesloten en geprogrammeerd.

*OPMERKING: als u merkt dat uw vertaler traag lijkt te werken, is dit normaal! Er is een kleine vertraging tussen het moment waarop u op afdrukken drukt en het moment waarop u de morsecode-representatie ervan ziet. Als u de cyclus pauzeert door de printschakelaar uit te zetten, moet de code de cyclus voltooien voordat de nieuwe letter wordt afgedrukt, zodat u wacht tot de cyclus is voltooid en de volgende letter begint.