Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL Γενικά χαρακτηριστικά, σύνταξη και τύποι Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 1 -
Περίγραµµα διάλεξης Τι είναι η VHDL? Πλεονεκτήµατα της VHDL στη σχεδίαση κυκλωµάτων VLSI Βασική δοµή κώδικα VHDL Τύποι δεδοµένων της VHDL Τύποι σηµάτων της VHDL Καταστάσεις σηµάτων θύρας της VHDL Τελεστές της VHDL Περιγραφή ροής δεδοµένων στη VHDL 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 2
Τι είναι η VHDL? Ακρωνύµιο της VHSIC (Very High Speed Integrated Circuit) Hardware Description Language Γλώσσα περιγραφής κυκλωµάτων ή υλικού (HDL) Περιγραφή κυκλωµάτων ως προς τη δοµή (structure), τη ροή δεδοµένων (dataflow) ή τη συµπεριφορά (behavior) υνατότητα περιγραφής της χρονικής συµπεριφοράς ή χρονισµού (timing) των κυκλωµάτων για εκτέλεση προσοµοίωσης Χρησιµοποιείται σε συνδυασµό µε έναν µεταφραστή (compiler) για σύνθεση κυκλωµάτων σε ολοκληρωµένα ειδικής σχεδίασης (custom design) ή υλοποίηση σε κάποια διάταξη προγραµµατιζόµενης λογικής (PLD ή FPGA), καθώς και από εργαλεία προσοµοίωσης λειτουργίας 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 3
Πλεονεκτήµατα της VHDL στη σχεδίαση κυκλωµάτων VLSI (1) Αποτελεί βιοµηχανικό πρότυπο (IEEE 1164 standard - 1993) και ως εκ τούτου είναι ανεξάρτητη του εργαλείου σχεδίασης CAD και του κατασκευαστή ή/και τρόπου υλοποίησης του κυκλώµατος (παρέχει δηλαδή φορητότητα και συµβατότητα σχεδίασης) Η χρήση προγράµµατος (κώδικα) αντί σχηµατικών είναι αποτελεσµατικότερη για τη σχεδίαση µεγάλων και πολύπλοκων κυκλωµάτων, τόσο λόγω ταχύτερης σύλληψης (capture) όσο και ευκολότερης διαχείρισης και τροποποίησης της σχεδίασης υνατότητα επαναχρησιµοποίησης σχεδιάσεων και πρόσβαση σε έτοιµες βιβλιοθήκες τρίτων Περιγραφή συµπεριφοράς (εκτός από δοµή) επιτρέπει τη σχεδίαση σε υψηλότερα επίπεδα αφαίρεσης, όπου ο µεταφραστής δηµιουργεί αυτόµατα το κύκλωµα µε τη χρήση έτοιµων βιβλιοθηκών και τεχνικών σύνθεσης 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 4
Πλεονεκτήµατα της VHDL στη σχεδίαση κυκλωµάτων VLSI (2) Γνωστές δοµές γλωσσών προγραµµατισµού - αν και µε διαφορετική φιλοσοφία καθώς όλες οι έννοιες που ενσωµατώνει αφορούν το υλικό Όλα τα γνωστά πλεονεκτήµατα των υψηλού επιπέδου γλωσσών προγραµµατισµού: όµηση Παραµετροποίηση Βρόχοι επανάληψης Εντολές συνθήκης Ιεράρχηση (µε τον ορισµό υποενοτήτων) Πλέον στην πράξη η ανάπτυξη ψηφιακών κυκλωµάτων γίνεται σχεδόν αποκλειστικά σε γλώσσες περιγραφής υλικού, µε κυριότερη εξ αυτών τη VHDL 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 5
Βασική δοµή κώδικα VHDL ENTITY entity_name IS PORT (signal_name [,signal_name] : {mode} {type} [; signal_name [,signal_name] : {mode} {type} ]); END entity_name; Ports Design Entity Architecture Ports ARCHITECTURE architecture_name OF entity_name IS [SIGNAL declarations;] [CONSTANT declarations;] [TYPE declarations;] [COMPONENT declarations;] BEGIN [COMPONENT instantiation statements;] [concurrent assignment statements;] [PROCESS statements;] END architecture_name; Design Entity Entity Declaration Architecture Body Component Instances Concurrent Statements 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 6
Παρατηρήσεις (1) Η VHDL δεν είναι case-sensitive (για παράδειγµα η δήλωση entity είναι ίδια µε τη δήλωση ENTITY) Στο σώµα της αρχιτεκτονικής γίνεται η περιγραφή του κυκλώµατος ανάλογα µε τον επιθυµητό τρόπο (δοµή, ροή δεδοµένων ή συµπεριφορά), ενώ µια οντότητα σχεδίασης µπορεί να έχει περισσότερες της µιας αρχιτεκτονικές που περιγράφουν µε άλλο τρόπο το ίδιο κύκλωµα Η αρχιτεκτονική µπορεί να έχει οποιοδήποτε όνοµα αλλά συνήθως δίνουµε κάποιο που να αντιπροσωπεύει τον τρόπο περιγραφής του κυκλώµατος, π.χ. structure, dataflow, behavior 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 7
Παρατηρήσεις (2) Όλες οι εντολές που βρίσκονται στο κυρίως σώµα της αρχιτεκτονικής (οι οποίες αναφέρονται ως σύγχρονες ή concurrent) εκτελούνται παράλληλα από τον µεταφραστή για τη δηµιουργία του τελικού κυκλώµατος Οι µοναδικές ακολουθιακές (sequential) εντολές που εκτελούνται σειριακά από το µεταφραστή είναι αυτές που βρίσκονται φωλιασµένες µέσα σε µια εντολή τύπου PROCESS, η οποία όµως µε τη σειρά της αποτελεί µια σύγχρονη εντολή καθώς το τελικό της αποτέλεσµα εκτελείται παράλληλα µε τις άλλες σύγχρονες εντολές από το µεταφραστή Το τελικό κύκλωµα είναι µοναδικό και δηµιουργείται µετά το πέρας της επεξεργασίας όλων των εντολών (µε τον τρόπο που αυτές προβλέπεται να εκτελεστούν σύµφωνα µε τα ανωτέρω) από το µεταφραστή 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 8
Τύποι δεδοµένων της VHDL Ο κυριότερος τύπος δεδοµένων της VHDL είναι o τύπος σήµατος ή SIGNAL, ο οποίος για την περιγραφή υλικού παίζει το ρόλο που είχε ο τύπος της µεταβλητής στις συµβατικές γλώσσες προγραµατισµού Στη VHDL υπάρχουν επίσης και οι γνωστοί τύποι CONSTANT και VARIABLE, οι οποίοι όµως δεν αντιστοιχούν σε κάποια έννοια του υλικού και απλά δρουν βοηθητικά στη σύνταξη και τη µετάφραση του κώδικα Τύποι οριζόµενοι από το χρήστη µε τη δήλωση TYPE χρησιµοποιούνται στον ορισµό πινάκων (arrays) και σηµάτων απαρίθµησης (enumeration) για µηχανές πεπερασµένων καταστάσεων (FSM) Ο τύπος σήµατος της VHDL µπορεί να λάβει µε τη σειρά του διάφορους άλλους τύπους, όπως γίνεται και µε τις µεταβλητές στις συµβατικές γλώσσες προγραµµατισµού (π.χ. int, float) 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 9
Τύποι σηµάτων της VHDL (1) Οπιο συνηθισµένος τύπος σήµατος είναι o STD_LOGIC (και STD_LOGIC_VECTOR εάν πρόκειται για διάνυσµα σηµάτων), του οποίου οι δυνατές τιµές είναι 0, 1, Ζ (υψηλή σύνθετη αντίσταση), - (αδιάφορη ή don t care), L (ασθενής 0), H (ασθενής 1), U (µη αρχικοποιηµένη), X (άγνωστη), W (ασθενής άγνωστη) Αποτελεί επέκταση του παλαιότερου τύπου BIT (και BIT_VECTOR αντίστοιχα για διάνυσµα) ο οποίος µπορούσε να λάβει µόνο τις τιµές 0 και 1 Απαιτεί τις δηλώσεις βιβλιοθήκης: LIBRARY ieee; USE ieee.std_logic_1164.all; πριν από τη δήλωση της αρχικής οντότητας 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 10
Τύποι σηµάτων της VHDL (2) Τρόποι ορισµού διανυσµάτων: STD_LOGIC_VECTOR(low_index TO high_index) ή STD_LOGIC_VECTOR(high_index DOWNTO low_index) π.χ. STD_LOGIC_VECTOR(1 TO 4) ή STD_LOGIC_VECTOR(7 DOWNTO 0) Ο δεύτερος τρόπος χρησιµοποιείται όταν το διάνυσµα σηµάτων αντιπροσωπεύει έναν δυαδικό αριθµό Σε ένα διάνυσµα σηµάτων τύπου STD_LOGIC_VECTOR µπορούµε να χρησιµοποιήσουµε οποιοδήποτε υποσύνολο bits ως ένα ξεχωριστό διάνυσµα (slice), π.χ. εάν έχουµε ορίσει: SIGNAL C : STD_LOGIC_VECTOR(7 DOWNTO 0) τότε εκτός από το πλήρες διάνυσµα C µπορούµε να χρησιµοποιήσουµε και διανύσµατα όπως τα C(7 DOWNTO 4), C(1 DOWNTO 0), C(5) (στην τελευταία περίπτωση έχουµε προφανώς ένα απλό σήµα τύπου STD_LOGIC) 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 11
Τύποι σηµάτων της VHDL (3) Ητιµή για τα δεδοµένα (ψηφία) µήκους 1-bit αναγράφεται πάντοτε µέσα σε αποστρόφους, π.χ. 0 ή 1, ενώ για τα δεδοµένα πολλών bits µέσα σε εισαγωγικά, π.χ. 1001, 10011000 Ένας ακόµη χρήσιµος (κυρίως για τη σχεδίαση µετρητών) τύπος σηµάτων της VHDL είναι ο τύπος INTEGER, ο οποίος αντιπροσωπεύει έναν δυαδικό αριθµό (είτε προσηµασµένο είτε µη προσηµασµένο) στη δεκαδική του αναπαράσταση Ορισµός σηµάτων τύπου INTEGER: INTEGER RANGE low_value TO high_value π.χ. INTEGER RANGE 0 TO 255 και INTEGER RANGE -127 TO 127 αντιπροσωπεύουν αντίστοιχα έναν µη προσηµασµένο και έναν προσηµασµένο δυαδικό αριθµό µήκους 8-bit Η τιµή για τα δεδοµένα τύπου INTEGER αναγράφεται όπως είναι, π.χ. 9, 152 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 12
Καταστάσεις σηµάτων θύρας (port) της VHDL IN: Σήµα εισόδου σε µία οντότητα OUT: Σήµα εξόδου από µία οντότητα. Η τιµή του δεν µπορεί να χρησιµοποιηθεί για ορισµό άλλου σήµατος µέσα στην ίδια οντότητα BUFFER: Σήµα εξόδου από µία οντότητα, το οποίο όµως ταυτόχρονα χρησιµοποιείται και στην παραγωγή άλλου (εσωτερικού) σήµατος µέσα στην ίδια οντότητα INOUT: Σήµα εισόδου και εξόδου ταυτόχρονα (αµφίδροµο ή bidirectional) σε µία οντότητα 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 13
Τελεστές της VHDL Αριθµητικοί: +, -, *, /, ** (ύψωση σε δύναµη), & (συνένωση ή concatenation), ABS (απόλυτη τιµή), REM ή MOD (υπόλοιπο) Σχεσιακοί ή συγκριτικοί: =, /=, <, <=, >, >= Λογικοί: NOT, AND, OR, NAND, NOR, XOR, XNOR Οι αριθµητικοί τελεστές έχουν την υψηλότερη σχετική προτεραιότητα και οι λογικοί (εκτός του NOT) τη χαµηλότερη Προσοχή: Οι λογικοί τελεστές δεν έχουν κάποια προτεραιτότητα µεταξύ τους (όπως συµβαίνει µε τις λογικές εκφράσεις όπου συνήθως η πράξη AND προηγείται της πράξης OR) και θα πρέπει να χρησιµοποιούνται παρενθέσεις για την περιγραφή της επιθυµητής λειτουργίας π.χ. A B + C' D A AND B OR NOT C AND D (A AND B) OR (NOT C AND D) 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 14
Περιγραφή ροής δεδοµένων στη VHDL (1) Γίνεται µε χρήση των λογικών τελεστών και ενός τελεστή ανάθεσης σήµατος (<=) προς σχηµατισµό της λογικής έκφρασης εξόδου του κυκλώµατος (µε τον ορισµό ενδεχοµένως κάποιων ενδιάµεσων σηµάτων) w0 s w1 Παράδειγµα: πολυπλέκτης 2-σε-1 ENTITY mux2to1 IS PORT (w0, w1,s : IN STD_LOGIC; f : OUT STD_LOGIC); END mux2to1; ARCHITECTURE dataflow OF mux2to1 IS BEGIN f <= (NOT s AND w0) OR (s AND w1); END dataflow; f 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 15
Περιγραφή ροής δεδοµένων στη VHDL (2) Τα σήµατα του τύπου STD_LOGIC_VECTOR µπορούν να χρησιµοποιηθούν σε συνδυασµό µε αριθµητικούς και συγκριτικούς τελεστές εάν περιληφθεί στο πρόγραµµα µια από τις ακόλουθες δηλώσεις (πριν από τη δήλωση της αρχικής οντότητας): USE ieee.std_logic_signed.all; ή USE ieee.std_logic_unsigned.all; οι οποίες τους επιτρέπουν να χρησιµοποιηθούν ως προσηµασµένοι ή µη προσηµασµένοι δυαδικοί αριθµοί αντίστοιχα Με τον τρόπο αυτό περιγράφονται κυκλώµατα όπως αθροιστές και συγκριτές που βρίσκονται σε υψηλότερα επίπεδα ιεραρχίας από το επίπεδο λογικής 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 16
Περιγραφή ροής δεδοµένων στη VHDL (3) Παράδειγµα: αθροιστής 4-bit ENTITY adder4 IS PORT (ci : IN STD_LOGIC; x, y : IN STD_LOGIC_VECTOR(3 DOWNTO 0); s : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); co : OUT STD_LOGIC); END adder4; ARCHITECTURE dataflow OF adder4 IS SIGNAL sum : STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN sum <= ( 0 & x) + y + ci; x(3:0) s <= sum(3 DOWNTO 0); co <= sum(4); y(3:0) END dataflow; π.χ. 0 & 1101 = 01101 ci + co s(3:0) 14-Οκτ-04 Ψηφιακή Σχεδίαση µε CAD ΙΙ ιαφ. 17