hur du skapar ditt första VHDL-program: Hej världen!
när jag lär mig ett nytt programmeringsspråk vill jag alltid börja med att lära mig att skriva ut. När du behärskar utmatning ”Hej världen!”, du vet att du har miljön som fungerar. Det visar också språkets grundläggande skelett, den minsta minimikoden som krävs för att producera någon utmatning.
du kanske tänker: men VHDL är ett hårdvarubeskrivningsspråk, hur kan det mata ut någon text alls? Du skulle behöva en skärm ansluten till en FPGA eller något och all slags logik däremellan, och det skulle inte vara enkelt alls. Medan allt detta är sant, låt oss glömma FPGA och ASIC bara ett ögonblick och fokusera vår uppmärksamhet på VHDL-språket.
detta blogginlägg är en del av den grundläggande VHDL Tutorials serien.
VHDL kan ses som ett parallellt programmeringsspråk, och därför kan vi använda programmerarens tillvägagångssätt för att lära oss det. Eftersom vi använder språket för att beskriva digitala kretsar är det enda sättet vi kan köra det på vår dator genom att använda en simulator, och simulatorn kan definitivt mata ut ”Hej världen!”till skärmen.
så här installerar du en VHDL-simulator och redigerare gratis
övning
denna videohandledning visar dig hur du skapar ditt allra första VHDL-program:
den slutliga koden som vi skapade:
entity T01_HelloWorldTb isend entity;architecture sim of T01_HelloWorldTb isbegin process is begin report "Hello World!"; wait; end process;end architecture;
utgången till simulatorkonsolen när vi tryckte på knappen Kör i ModelSim:
VSIM 2> run# ** Note: Hello World!# Time: 0 ns Iteration: 0 Instance: /t01_helloworld
analys
på de två första raderna förklarade Vi enheten. Enheten i en modul deklarerar sina In-och utgångar. För att det ska vara möjligt att köra en modul i en simulator kan den inte ha några ingångar eller utgångar. Därför har vår modul inte något annat än en tom entitetsdeklaration.
därefter förklarade vi modulens arkitektur. Medan enheten är en moduls gränssnitt till omvärlden, är arkitekturen dess interna implementering. En modul kan ha flera arkitekturer som kan användas med samma enhet. Jag skulle inte oroa mig för mycket om dessa saker just nu eftersom de är avancerade VHDL-funktioner.
inuti arkitekturen förklarade vi en process. För tillfället kan vi tänka på en process som en tråd i vårt program, där saker händer i följd.
inuti processen skriver vi ut ” Hej världen!”använda nyckelordet report
. På nästa rad finns en enda wait;
. När simulatorn träffar den här linjen kommer inget mer att hända. Processen kommer att vänta här för alltid.
när vi simulerade denna design I ModelSim kunde vi se att ” Hej världen!”trycktes till konsolen utgång. Efter det hände inget mer.
Takeaway
- du kan tänka på en process som en programtråd
report
uttalandet skriver ut text till simulatorkonsolen- utförande av en process kommer att vänta för alltid på en
wait;
uttalande
gå till nästa handledning ”