DATA FLOW DESCRIPTIONS

4. Άλλοι Τύποι

Στις προηγούμενες παραγράφους όλα τα σήματα του παραδείγματος ήταν τύπου bit. Η VHDL παρέχει και κάποιους άλλους τύπους, μερικούς από τους οποίους θα περιγράψουμε εδώ. Συχνά χρησιμοποιούμε μερικά σήματα bit μαζί για να αναπαραστήσουμε έναν δυαδικό αριθμό σε μία σχεδίαση. Η VHDL παρέχει έναν μηχανισμό για να ορίσουμε νέους τύπους που αναπαριστούν μία συλλογή από τεμάχια δεδομένων (data items) του ίδιου τύπου. Αυτά τα είδη των τύπων καλούνται πίνακες (arrays). Υπάρχει ένας προκαθορισμένος τύπος πίνακα ο οποίος καλείται bit_vector και ο οποίος αναπαριστά μία συλλογή από bits. Το παρακάτω παράδειγμα μας δείχνει πως ο τύπος bit_vector μπορεί να χρησιμοποιηθεί για να ορίσουμε έναν 1-to-4 line demultiplexer.

entity demux is

port (e: in bit_vector ( 3 downto 0 ); -- enables for each output

s: in bit_vector ( 1 downto 0 ); -- select signals

d: out bit_vector (3 downto 0); -- four output signals

end demux ;

architecture rtl of demux is

signal t : bit_vector ( 3 downto 0); -- an internal signal

begin

t(3)<=s(1) and s(0);

t(2)<=s(1) and not s(0);

t(1)<=not s(1) and s(0);

t(0)<=not s(1) and not s(0);

d<=e and t ;

end rtl;

Σχόλια μπορούμε να προσθέσουμε στο τέλος μίας πρότασης VHDL ή σε μία γραμμή χρησιμοποιώντας το σύμβολο " --".

Παρατηρούμε πώς ο τύπος bit_vector χρησιμοποιείται στον ορισμό των σημάτων. Ο ορισμός του s μας δείχνει ότι είναι bit_vector και ότι το τμήμα (1 downto 0) καθορίζει ότι το s περιέχει δύο bit αριθμημένα 1 έως 0. Ομοίως, τα d και e είναι πίνακες 4 bit αριθμημένα από 3 έως 0. Επίσης παρατηρούμε ότι σήματα όπως το t μπορούν να δηλωθούν μέσα σε μία architecture τα οποία δεν είναι ορατά έξω από αυτήν την οντότητα. Αυτά τα εσωτερικά σήματα μπορούν να δημιουργηθούν με δηλώσεις σήματος (signal declarations) όπως αυτή του παραδείγματος. Περιέχουν την λέξη κλειδί signal ακολουθούμενη (α) από μία λίστα με τα ονόματα των σημάτων που θα δημιουργήσει και (β) από τον τύπο των σημάτων.

Παρατηρούμε ακόμη ότι η architecture αναφέρεται στα χωριστά bits στα t και s με αριθμούς. Τα δύο bits στο s είναι αριθμημένα 1 και 0, έτσι αυτά αναφέρονται ως s(1) και s(0). Τέλος παρατηρούμε ότι ο τελευταίος ορισμός σήματος (signal assignment) " d<=e and t ; " ότι πράξεις (operations) μπορούν να εκτελεσθούν σε έναν ολόκληρο πίνακα δεδομένων με την μία. Αυτή η πρόταση είναι ισοδύναμη με τις επόμενες τέσσερις προτάσεις:

d(3) <= e(3) and t(3);

d(2) <= e(2) and t(2);

d(1) <= e(1) and t(1);

d(0) <= e(0) and t(0);

 

Κάθε τεμάχιο δεδομένων (data item) ονομάζεται στοιχείο (element). Ο αριθμός των στοιχείων δείχνεται με την σειρά που ακολουθεί το όνομα του τύπου. Τα στοιχεία αριθμούνται σύμφωνα με τη σειρά αυτή και αναφερόμαστε ατομικά σε κάθε στοιχείο αριθμητικά. Πράξεις μπορούν να γίνουν σε έναν ολόκληρο πίνακα (επιδρώντας σε όλα τα στοιχεία του πίνακα) ή να γίνουν χρησιμοποιώντας ατομικά στοιχεία ενός πίνακα , ανεξάρτητα από τα άλλα.

Όταν εκτελούνται πράξεις σε ολόκληρα διανύσματα (vectors) , τα διανύσματα πρέπει να έχουν τον ίδιο αριθμό στοιχείων. Αν δεν έχουν το ίδιο πλήθος στοιχείων τότε ο εξομοιωτής θα αναφέρει κάποιο λάθος και θα σταματήσει την εξομοίωση. Σε μία πράξη μεταξύ διανυσμάτων, τα στοιχεία ταιριάζουν όπως αυτά είναι αριθμημένα από τα αριστερά προς τα δεξιά. Έτσι, αν μία μεταβλητή ν1 έχει στοιχεία από 0 έως 1 και μία μεταβλητή ν2 έχει στοιχεία από 1 έως 0 , τότε

ν1:=ν2 ;

ορίζει το ν2(1) στο ν1(0) και το ν2(0) στο ν1(1).

Ένας άλλος προκαθορισμένος τύπος είναι ο τύπος time. Αυτός ο τύπος χρησιμοποιείται γιά να αναπαραστήσει τιμές χρόνου. Ήδη έχουμε χρησιμοποιήσει σταθερές αυτού του τύπου στην ρήτρα after. Ο τύπος time είναι ένα παράδειγμα φυσικού τύπου ( physical type). Όλες οι τιμές ενός φυσικού τύπου έχουν δύο μέρη, έναν αριθμό και ένα όνομα μονάδας (unit name). Ο τύπος time περιέχει τα παρακάτω προκαθορισμένα ονόματα μονάδων : sec (seconds), ms (milliseconds), us (microseconds), ns (nanoseconds), ps (picoseconds) and fs (femtoseconds). Υπάρχουν και μερικοί άλλοι προκαθορισμένοι τύποι στην VHDL, όπως τύποι για ακέραιους και πραγματικούς αριθμούς, στους οποίους θα αναφερθούμε αργότερα στην ενότητα που αφορά την behavioral descriptions.

 

Επιστροφή στη Data Flow Description