EDITING VHDL DESIGNS

Μία σωστή VHDL σχεδίαση θα έχει μαζί μία οντότητα (entity) και μία αρχιτεκτονική (architecture). Μπορούμε να τις βάλουμε στο ίδιο αρχείο ή σε ξεχωριστά αρχεία. Αυτή είναι προσωπική επιλογή. Στο παράδειγμά μας θα υποθέσουμε ότι η οντότητα και οι αρχιτεκτονικές είναι σε διαφορετικά αρχεία.

Σε αυτό το παράδειγμα θα κατασκευάσουμε και θα εξομοιώσουμε έναν 4-bit καταχωρητή. Τα παρακάτω βήματα θα μας οδηγήσουν στην διαδικασία της δημιουργίας και compilation της οντότητας και αρχιτεκτονικών του καταχωρητή.

Για ευκολία όλα τα δεδομένα της σχεδίασης είναι τοποθετημένα στο παρακάτω directory στο CEC: $CLASS/ee560/qv_tutorial. Εσείς πρέπει να αντιγράψετε όλα τα δεδομένα σε αυτό το directory στο δικό σας τοπικό directory, που εσείς θέλετε να τοποθετήσετε τα εκπαιδευτικά (tutorial) δεδομένα (προτεινόμενο directory : ~/mentor/VHDL/tutorial. Ο κατάλογος mentor θα υπάρχει ήδη, αλλά εσείς πρέπει να δημιουργήσετε τους άλλους. Μπορείτε επίσης να εισάγετε τα δεδομένα μόνοι σας όπως αυτά θα αναπαραχθούν σε αυτό το tutorial.

1. Το πρώτο πράγμα που έχουμε να κάνουμε είναι να εισάγουμε την περιγραφή της οντότητας του καταχωρητή. Μπορούμε να χρησιμοποιήσουμε οποιοδήποτε κειμενογράφο (editor) που παράγει καθαρά ASCII αρχεία. Η οντότητα για τον 4-bit καταχωρητή είναι:

entity reg4 is

port (d0, d1, d2, d3, en, clk : in bit ;

q0, q1, q2, q3 : out bit ) ;

end entity reg4 ;

2. Τώρα μπορούμε να εισάγουμε την αρχιτεκτονική για αυτό το εξάρτημα. Θα χρησιμοποιήσουμε το μοντέλο συμπεριφοράς και θα ονομάσουμε αυτήν την αρχιτεκτονική behav .

architecture behav of reg4 is

begin

storage : process

variable stored_d0, stored_d1, stored_d2, stored_d3 : bit ;

begin

if en = ‘1’ and clk = ‘1’ then

stored_d0 := d0 ;

stored_d1 := d1 ;

stored_d2 := d2 ;

stored_d3 := d3 ;

end if ;

q0 <= stored_d0 after 5 ns ;

q1 <= stored_d1 after 5 ns ;

q2 <= stored_d2 after 5 ns ;

q3 <= stored_d3 after 5 ns ;

wait on d0, d1, d2, d3, en, clk ;

end process ;

end architecture ;

  1. Αν θέλουμε να προσθέσουμε και άλλες αρχιτεκτονικές τώρα, μπορούμε να το κάνουμε. Αυτό γίνεται με τον ίδιο τρόπο όπως και παραπάνω.
  2. Τέλος, ας εισάγουμε έναν “δοκιμαστικό πάγκο” (test bench) όπου θα δοκιμάσουμε το μοντέλο μας. Για το δοκιμαστικό πάγκο (test bench) , είναι κοινό να έχουμε μαζί, την οντότητα και την αρχιτεκτονική σε ένα πηγαίο αρχείο (source file) από την στιγμή που η οντότητα είναι άδεια.

entity test_bench is

end entity test_bench ;

architecture test_reg4 of test_bench is

signal d0, d1, d2, d3, en, clk, q0, q1, q2, q3 : bit ;

begin

dut : entity work.reg4(behav)

port map (d0, d1, d2, d3, en, clk, q0, q1, q2, q3 ) ;

stimulus : process

begin

d0 <= ‘1’ ; d1<=’1’ ; d2<=’1’ ; d3<= ‘1’ ;

en <= ‘0’ ; clk <= ‘0’ ;

wait for 20 ns ;

en <= ‘1’ ; wait for 20 ns ;

clk <= ‘1’ ; wait for 20 ns;

d0 <= ‘0’ ; d1<=’0’ ; d2<=’0’ ; d3<= ‘0’ ; wait for 20 ns ;

en <= ‘0’ ; wait for 20 ns;

--…

wait ;

end process stimulus ;

end architecture test_reg4 ;

 

 

Επιστροφή στην Εισαγωγή στη VHDL