Skip to content

Latest commit

 

History

History
77 lines (59 loc) · 3.22 KB

PartC-VHDL.asciidoc

File metadata and controls

77 lines (59 loc) · 3.22 KB

Βασικά στοιχεία

Η VHDL (VHSIC hardware description language) είναι μία γλώσσα περιγραφής υλικού που χρησιμοποιείται για σχεδίαση ψηφιακών συστημάτων όπως ολοκληρωμένα κυκλώματα κλπ.

Τα βασικά εργαλεία που χρειαζόμαστε για να εργαστούμε με την VHDL σε μια διανομή Linux είναι τα παρακάτω:

  • Επεξεργαστής κειμένου (editor)

  • Έναν προσομοιωτή για VHDL

  • Προαιρετικά ένα πρόγραμμα που να απεικονίζει γραφικά τα σήματα

Ως επεξεργαστή κειμένου μπορούμε να χρησιμοποιήσουμε οποιονδήποτε προτιμάμε, πχ vim, nano, gedit, κλπ. Για κονσόλα επίσης κάνει οποιαδήποτε, πχ gnome-terminal, kterm, xterm, κλπ.

Προσομοίωση (Simulation)

Για τη προσομοίωση θα χρειαστούμε έναν προσομοιωτή VHDL. Μία επιλογή ανοιχτού κώδικα είναι ο GHDL.

Ο GHDL είναι βασισμένος στο GCC και λειτουργεί σε Linux, Mac και Windows. Διατίθεται υπό την άδεια GPL.

Γραφική Απεικόνιση Σημάτων

Για να ελέγξουμε το σχέδιο που έχουμε φτιάξει σε VHDL, πολλές φορές είναι χρήσιμη μία γραφική απεικόνιση των σημάτων μας.

Για τη γραφική απεικόνιση των σημάτων μπορούμε να χρησιμοποιήσουμε ένα πρόγραμμα που απεικονίζει γραφικά κυματομορφές. Μία επιλογή που είναι το GTKWave που μπορεί να συνδυαστεί εύκολα με το GHDL.

Συγγραφή Προγραμμάτων

--  Hello world program.
 use std.textio.all; --  Imports the standard textio package.

 --  Defines a design entity, without any ports.
 entity hello_world is
 end hello_world;

 architecture behaviour of hello_world is
 begin
	process
	   variable l : line;
	begin
	   write (l, String'("Hello world!"));
	   writeline (output, l);
	   wait;
	end process;
 end behaviour;

Αφού γράψουμε το κώδικα μας, αποθηκεύουμε το αρχείο με κατάληξη .vhdl. Για να μεταγλωττίσουμε το κώδικα μας τρέχουμε σε ένα τερματικό:

 $ ghdl -a hello.vhdl	# παράγει αρχείο που περιγράφει την αρχιτεκτονική
 $ ghdl -e hello_world	# παράγει το εκτελέσιμο αρχείο

 $ ghdl -r hello_world	# εκτέλεση του αρχείου
 > Hello world!

 # Εναλλακτικά για γραφική απεικόνιση των σημάτων
 $ ghdl -r hello_world --vcd=hello_world.vcd
 $ gtkwave hello_world.vcd