jak vytvořit svůj první program VHDL: Hello World!
když se učím nový programovací jazyk, vždy se rád začnu tím, že se naučím tisknout. Když zvládnete výstup “ Ahoj světe!“, víte, že máte prostředí pracující. Také vám ukáže základní kostru jazyka, minimální kód potřebný k vytvoření jakéhokoli výstupu.
možná si myslíte: ale VHDL je jazyk popisu hardwaru, jak může vůbec vydávat jakýkoli text? Budete potřebovat obrazovku připojenou k FPGA nebo tak něco a všechny druhy logiky mezi tím, a to by nebylo vůbec jednoduché. I když je to všechno pravda, zapomeňme na FPGA a ASIC jen na chvíli a zaměřme naši pozornost na jazyk VHDL.
tento blogový příspěvek je součástí základní série VHDL Tutorials.
VHDL lze považovat za paralelní programovací jazyk, a proto můžeme tento programátorský přístup použít k jeho učení. Vzhledem k tomu, že používáme jazyk k popisu digitálních obvodů, jediný způsob, jak jej můžeme spustit na našem počítači, je použití simulátoru a simulátor je určitě schopen výstup “ Hello World!“na obrazovku.
jak nainstalovat simulátor a editor VHDL zdarma
cvičení
toto video tutoriál vám ukáže, jak vytvořit svůj první program VHDL:
konečný kód, který jsme vytvořili:
entity T01_HelloWorldTb isend entity;architecture sim of T01_HelloWorldTb isbegin process is begin report "Hello World!"; wait; end process;end architecture;
výstup do konzoly simulátoru, když jsme stiskli tlačítko Spustit v ModelSim:
VSIM 2> run# ** Note: Hello World!# Time: 0 ns Iteration: 0 Instance: /t01_helloworld
analýza
na prvních dvou řádcích jsme deklarovali entitu. Entita modulu deklaruje své vstupy a výstupy. Aby bylo možné spustit modul v simulátoru, nemůže mít žádné vstupy ani výstupy. Proto náš modul nemá nic jiného než prázdné prohlášení entity.
dále jsme deklarovali architekturu modulu. Zatímco entita je rozhraním modulu s vnějším světem, architektura je jeho vnitřní implementací. Modul může mít několik architektur, které mohou být použity se stejnou entitou. V tuto chvíli bych se o tyto věci příliš nestaral, protože se jedná o pokročilé funkce VHDL.
uvnitř architektury jsme deklarovali proces. Prozatím můžeme považovat proces za vlákno v našem programu, kde se věci dějí postupně.
uvnitř procesu tiskneme “ Hello World!“pomocí klíčového slova report
. Na dalším řádku je jeden wait;
. Když simulátor zasáhne tento řádek, nic víc se nestane. Proces zde bude čekat navždy.
když jsme simulovali tento design v ModelSim, mohli jsme vidět, že “ Hello World!“byl vytištěn na výstup konzoly. Poté se už nic nestalo.
stánek s jídlem
- proces můžete považovat za podproces programu
- příkaz
report
vytiskne text do konzoly simulátoru - provedení procesu bude čekat věčně na příkaz
wait;
přejděte na další tutoriál “