jak stworzyć swój pierwszy program VHDL: Hello World!
ucząc się nowego języka programowania, zawsze lubię zacząć od nauki drukowania. Kiedy opanujesz wyprowadzanie ” Hello World!”, wiesz, że masz środowisko pracy. Pokazuje również podstawowy szkielet języka, minimalny kod wymagany do wytworzenia dowolnego wyjścia.
możesz myśleć: ale VHDL jest językiem opisu sprzętu, jak może w ogóle wysyłać jakikolwiek tekst? Potrzebowałbyś ekranu podłączonego do FPGA lub czegoś takiego i wszelkiego rodzaju logiki pomiędzy nimi, a to nie byłoby wcale proste. Choć to wszystko prawda, zapomnijmy na chwilę o FPGA i ASIC i skupmy się na języku VHDL.
ten post na blogu jest częścią podstawowej serii samouczków VHDL.
VHDL można traktować jako język programowania równoległego, dlatego możemy wykorzystać podejście programisty do nauki go. Ponieważ używamy języka do opisywania układów cyfrowych, jedynym sposobem, w jaki możemy go uruchomić na naszym komputerze, jest użycie symulatora, a symulator jest zdecydowanie zdolny do wyprowadzenia „Hello World!”na ekran.
jak zainstalować symulator i edytor VHDL za darmo
ćwiczenie
ten samouczek wideo pokaże Ci, jak stworzyć swój pierwszy program VHDL:
ostateczny kod, który stworzyliśmy:
entity T01_HelloWorldTb isend entity;architecture sim of T01_HelloWorldTb isbegin process is begin report "Hello World!"; wait; end process;end architecture;
wyjście do konsoli symulatora po naciśnięciu przycisku Uruchom w ModelSim:
VSIM 2> run# ** Note: Hello World!# Time: 0 ns Iteration: 0 Instance: /t01_helloworld
Analiza
w dwóch pierwszych wierszach zadeklarowaliśmy podmiot. Jednostka modułu deklaruje swoje wejścia i wyjścia. Aby możliwe było uruchomienie modułu w symulatorze, nie może on mieć żadnych wejść ani wyjść. Dlatego nasz moduł nie ma niczego innego niż pusta deklaracja encji.
następnie zadeklarowaliśmy architekturę modułu. Podczas gdy entity jest interfejsem modułu do świata zewnętrznego, architektura jest jego wewnętrzną implementacją. Moduł może mieć kilka architektur, które mogą być używane z tą samą jednostką. Nie martwiłbym się zbytnio o te rzeczy w tym momencie, ponieważ są to zaawansowane funkcje VHDL.
wewnątrz architektury zadeklarowaliśmy proces. Na razie możemy myśleć o procesie jako wątku w naszym programie, gdzie rzeczy dzieją się kolejno.
wewnątrz procesu drukujemy „Hello World!”używając słowa kluczowego report
. W następnej linii znajduje się pojedynczy wait;
. Kiedy symulator uderzy w tę linię, nic więcej się nie stanie. Proces będzie tu czekał wiecznie.
kiedy symulowaliśmy ten projekt w ModelSim, mogliśmy zobaczyć, że ” Hello World!”został wydrukowany na wyjściu konsoli. Potem nic więcej się nie stało.
Takeaway
- możesz myśleć o procesie jako wątku programu
- Instrukcja
report
drukuje tekst do konsoli symulatora - wykonanie procesu będzie czekać wiecznie na instrukcji
wait;
przejdź do następnego samouczka „