Hoe u uw eerste VHDL-programma maakt:Hello World!
Als ik een nieuwe programmeertaal leer, begin ik altijd graag met het leren printen. Als je het uitvoeren van "Hallo wereld!" onder de knie hebt, weet je dat de omgeving werkt. Het toont je ook het basisskelet van de taal, de absolute minimumcode die nodig is om output te produceren.
Je denkt misschien:maar VHDL is een hardwarebeschrijvingstaal, hoe kan het überhaupt tekst uitvoeren? Je zou een scherm nodig hebben dat is aangesloten op een FPGA of zoiets en allerlei logica daartussenin, en dat zou helemaal niet eenvoudig zijn. Hoewel dit allemaal waar is, laten we FPGA's en ASIC's even vergeten en onze aandacht richten op de VHDL-taal.
Deze blogpost maakt deel uit van de serie Basic VHDL Tutorials.
VHDL kan worden gezien als een parallelle programmeertaal en daarom kunnen we de benadering van deze programmeur gebruiken om het te leren. Aangezien we de taal gebruiken om digitale circuits te beschrijven, kunnen we het alleen op onze computer uitvoeren door een simulator te gebruiken. , en de simulator is zeker in staat om "Hello World!" naar het scherm.
Een gratis VHDL-simulator en -editor installeren
Oefening
Deze video-tutorial laat je zien hoe je je allereerste VHDL-programma maakt:
De laatste code die we hebben gemaakt:
entity T01_HelloWorldTb is end entity; architecture sim of T01_HelloWorldTb is begin process is begin report "Hello World!"; wait; end process; end architecture;
De uitvoer naar de simulatorconsole toen we op de run-knop in ModelSim drukten:
VSIM 2> run # ** Note: Hello World! # Time: 0 ns Iteration: 0 Instance: /t01_helloworld
Analyse
Op de eerste twee regels hebben we de entiteit . aangegeven . De entiteit van een module declareert zijn ingangen en uitgangen. Om een module in een simulator te kunnen draaien, mag deze geen in- of uitgangen hebben. Daarom heeft onze module niets anders dan een lege entiteitsverklaring.
Vervolgens verklaarden we de architectuur van de module. Terwijl de entiteit de interface van een module naar de buitenwereld is, is de architectuur de interne implementatie ervan. Een module kan verschillende architecturen hebben die met dezelfde entiteit kunnen worden gebruikt. Ik zou me op dit moment niet al te veel zorgen maken over deze dingen, aangezien het geavanceerde VHDL-functies zijn.
Binnenin de architectuur hebben we een proces gedeclareerd . Voor nu kunnen we een proces zien als een rode draad in ons programma, waar dingen opeenvolgend gebeuren.
Binnen het proces drukken we "Hello World!" met behulp van de report
trefwoord. Op de volgende regel staat een enkele wait;
. Wanneer de simulator deze lijn raakt, gebeurt er niets meer. Het proces zal hier voor altijd wachten.
Toen we dit ontwerp in ModelSim simuleerden, konden we zien dat "Hello World!" is afgedrukt naar de console-uitvoer. Daarna gebeurde er niets meer.
Afhaalmaaltijden
- Je kunt een proces zien als een programmathread
- De
report
statement drukt tekst af naar de simulatorconsole - Uitvoering van een proces wacht eeuwig op een
wait;
verklaring
Ga naar de volgende tutorial »
VHDL
- Tutorial:je eerste FPGA-programma:een led-knipperlicht
- C# Hello World - Uw eerste C#-programma
- Java Hallo Wereld-programma
- Een lijst met strings maken in VHDL
- Hoe maak je een Tcl-gestuurde testbench voor een VHDL-codeslotmodule?
- Een PWM-controller maken in VHDL
- Hoe maak je een ringbuffer FIFO in VHDL
- Een gekoppelde lijst maken in VHDL
- Een procedure gebruiken in een proces in VHDL
- Een functie gebruiken in VHDL
- Hoe prototypes uw productieproces verbeteren