constant number_of_bytes : integer := 4; constant number_of_bits : integer := 8 * number_of_bytes;



Σχετικά έγγραφα
Ακολουθιακές εντολές. (Peter Ashenden, The Students Guide to VHDL)

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Ακολουθιακός Κώδικας

Κυκλωμάτων» Χειμερινό εξάμηνο

Σχεδίαση Ψηφιακών Συστημάτων

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Βασικές εντολές και η περιγραφή συνδυαστικών κυκλωµάτων. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 2 -

Προσοµοίωση Συστηµάτων µε VHDL. (Peter Ashenden, The Students Guide to VHDL)

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Καταχωρητές και χρονισμός με ρολόι

Library, package και subprograms

Μοντελοποίηση Επιπέδου Πύλης. (Peter Ashenden, The Students Guide to VHDL)

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Πακέτα και Συστατικά Στοιχεία (Υποκυκλώματα)

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 Συµπληρωµατική ΔΙΑΛΕΞΗ 14: Περιγραφή Ακολουθιακών Κυκλωµάτων στη VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Βασικές οµές Μοντελοποίησης. (Peter Ashenden, The Students Guide to VHDL)

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συντρέχων Κώδικας

Εισαγωγή στη γλώσσα περιγραφής υλικού VHDL. Γενικά χαρακτηριστικά, σύνταξη και τύποι. Ψηφιακή Σχεδίαση µε CAD ΙΙ - ιάλεξη 1 -

ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συναρτήσεις, Διαδικασίες και Δομές Ελέγχου Λειτουργίας Κυκλωμάτων (testbenches)

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1

Σχεδίαση Ψηφιακών Συστημάτων

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Μηχανές Πεπερασμένων Καταστάσεων

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

VHDL. ΗΜΥ-210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Απλό παράδειγµα: Entity. Μοντελοποίηση. Απλό παράδειγµα:αρχιτεκτονική. Στοιχεία γλώσσας VHDL

VHDL Introduction. Subtitle

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Οντότητες και συντρέχουσες δηλώσεις

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ψηφιακή Σχεδίαση. Ενότητα 13: Εισαγωγή στην VHDL

Σύνθετοι τύποι και λειτουργίες. (Peter Ashenden, The Students Guide to VHDL)

Εισαγωγή Η VHDL υποστηρίζει τους εξής τρείς βασικούς και διαφορετικούς τρόπους περιγραφής

Structural VHDL. Structural VHDL

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers)

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Δομική περιγραφή και περιγραφή Μηχανών Πεπερασμένων Καταστάσεων

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

8 η Θεµατική Ενότητα : Εισαγωγή στις Γλώσσες Περιγραφής Υλικού: Μοντέλα Συνδυαστικών Κυκλωµάτων

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Παράδειγµα: Καταχωρητής 2-bit. Καταχωρητής 4-bit. Μνήµη Καταχωρητών

Μελέτη και σχεδίαση µιας υποτυπώδους κεντρικής µονάδας επεξεργασίας στα 32 µπιτ.

26-Nov-09. ΗΜΥ 210: Λογικός Σχεδιασμός, Χειμερινό Εξάμηνο Καταχωρητές 1. Διδάσκουσα: Μαρία Κ. Μιχαήλ


(Peter Ashenden, The Students Guide to VHDL)

VERILOG. Γενικά περί γλώσσας

ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων, Χειμερινό Εξάμηνο Νοε-09. Διδάσκουσα: Μαρία Κ. Μιχαήλ

ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Τύποι Δεδομένων και Τελεστές

H γλώσσα περιγραφής κυκλωµάτων VHDL

Πανεπιστήμιο Πατρών. Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών. Εργαστήριο Σχεδίασης Ολοκληρωμένων Κυκλωμάτων

Γλώσσα Περιγραφής Υλικού VHDL Μέρος Α: Σωστή Σύνθεση

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Προχωρημένα Θέματα Σχεδιασμού με VHDL

ΠΑΡΑΡΤΗΜΑ Β. Verification

ΛΥΣΕΙΣ 3 ης ΓΡΑΠΤΗΣ ΕΡΓΑΣΙΑΣ

ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών

VHDL Εισαγωγικές έννοιες

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 10: Συµπληρωµατική Διάλεξη Flip-Flops (Basics) και VHDL)

Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Εισαγωγικές έννοιες για σχεδιασμό με τη VHDL

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Σχεδίαση Ψηφιακών Συστημάτων

Introduction to IP Cores

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Σχεδίαση Ψηφιακών Συστημάτων. Ενότητα: ΚΑΤΑΧΩΡΗΤΕΣ - ΑΠΑΡΙΘΜΗΤΕΣ

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων

ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τµήµα Ηλεκτρονικής & Μηχανικών Υπολογιστών Εργαστήριο Μικροεπεξεργαστών & Υλικού Πολυτεχνειούπολη Χανίων Τ.Κ.

Σχεδιασμός Ψηφιακών Συστημάτων

Εισαγωγή στη VHDL Υλοποίηση στο Quartus

Σχεδίαση Ψηφιακών Συστημάτων

VHDL για Σχεδιασµό Συνδυαστικών και Ακολουθιακών Ψηφιακών Κυκλωµάτων

Κεφάλαιο 7 ο. Γ. Τσιατούχας. VLSI Technology and Computer Architecture Lab. Ακολουθιακή Λογική 2

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Γλώσσα περιγραφής υλικού: Verilog

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

HY430 Εργαστήριο Ψηφιακών Κυκλωμάτων. Πολυπλέκτες Καμπύλη Παρέτο. Κωδικοποιητές/Από-κωδικοποιητές D FF

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών

Σχεδίαση CMOS Ψηφιακών Ολοκληρωμένων Κυκλωμάτων

Κεφάλαιο 10 ο. Γ. Τσιατούχας. VLSI Systems and Computer Architecture Lab. Ακολουθιακή Λογική 2

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Σχεδίαση Υπολογιστικών

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

7 η Θεµατική Ενότητα : Εισαγωγή στις Γλώσσες Περιγραφής Υλικού

Πρόλογος...13 I ΣΧΕ ΙΑΣΜΟΣ ΣΕ ΕΠΙΠΕ Ο ΚΥΚΛΩΜΑΤΟΣ Εισαγωγή... 19

Σχεδιασμός Ψηφιακών Συστημάτων Χειμερινό Εξάμηνο VHDL (revisited)

ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΠΛΕ- 027 Μικροεπεξεργαστές 5ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση ενός κύκλου

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

Πρόγραμμα Μεταπτυχιακών Σπουδών «Πληροφορική και Εφαρμογές»

Ακολουθιακά Κυκλώµατα. ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ακολουθιακά Κυκλώµατα (συν.) Ακολουθιακή Λογική: Έννοια

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

HY330 Ψηφιακά Κυκλώματα - Εισαγωγή στα Συστήματα VLSI. 1 ΗΥ330 - Διάλεξη 7η - Ακολουθιακά Κυκλώματα

Εισαγωγή στη Γλώσσα VHDL

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Σχεδίαση κυκλωμάτων με VHDL: 1o μέρος

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

i Το τρανζίστορ αυτό είναι τύπου NMOS. Υπάρχει και το συμπληρωματικό PMOS. ; Τι συμβαίνει στο τρανζίστορ PMOS; Το τρανζίστορ MOS(FET)

ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ένα συνδυαστικό κύκλωµα µπορεί να περιγραφεί από: Φεβ-05. n-είσοδοι

Transcript:

Σχεδίαση Υπολογιστικών Συστηµάτων Μοντελοποίηση και προσοµοίωση στην VHDL Μιχάλης Ψαράκης 3-1 Αντικείµενα στη VHDL Σταθερές (constants) Μεταβλητές (variables) Σήµατα (signals) Θύρες (ports) 3-2

ηλώσεις σταθερών Οι σταθερές αποδίδουν όνοµα και ρητά καθορισµένο τύπο σε µια τιµή Η χρήση σταθερών αποτελεί σωστή σχεδιαστική πρακτική Οι σταθερές µπορούν να δηλωθούν σε διαφορετικά µέρη ενός VHDL µοντέλου Παραδείγµατα: constant number_of_bytes : integer := 4; constant number_of_bits : integer := 8 * number_of_bytes; 3-3 ηλώσεις µεταβλητών Οι µεταβλητές δεν µπορεί να δηλωθούν σε σηµείο του VHDL µοντέλου ώστε να είναι προσπελάσιµες από περισσότερες από µια διεργασίες Εξαίρεση: κοινόχρηστες µεταβλητές (shared variables). εν θα ασχοληθούµε µε κοινόχρηστες µεταβλητές Θα δηλώνουµε µεταβλητές µόνο στο τµήµα δήλωσης των διεργασιών Ορατές µόνο εντός της διεργασίας Η αρχικοποίηση της µεταβλητής είναι προαιρετική Εάν παραληφθεί, η εξ ορισµού (default) αρχική τιµή είναι η αριστερότερη τιµή του τύπου variable index : integer := 0; 3-4

Ανάθεση µεταβλητής Παραδείγµατα: program_counter := 0; index := index + 1; Προσοχή! Υπάρχει διαφορά µεταξύ της ανάθεσης µεταβλητής (:=) και της ανάθεσης σήµατος (<=) Ανάθεση µεταβλητής (variable assignment): ενηµερώνει αµέσως τη µεταβλητή µε τη νέα τιµή Ανάθεση σήµατος (signal assignment): χρονοπρογραµµατίζει την εφαρµογή της νέας τιµής στο σήµα σε κάποια µελλοντική χρονική στιγµή 3-5 Ανάθεση σήµατος (signal assignment) Καθορισµός χρόνου καθυστέρησης (προαιρετικός) y <= not or_a_b after 5 ns; Μοντελοποιεί ζητήµατα χρονισµού (timing issues) Προδιαγράφει την καθυστέρηση διάδοσης (propagation delay) της λειτουργικής µονάδας Στην προσοµοίωση, προδιαγράφει πότε θα ανατεθεί η νέα τιµή στο σήµα Εάν παραληφθεί ο χρόνος καθυστέρησης, ο προκαθορισµένος χρόνος είναι 0 fs (delta delay) 3-6

Ανάθεση σήµατος Παράδειγµα: παλµός πλάτους T_pw clk <= '1' after T_pw, '0' after 2*T_pw; Εάν T_pw = 10ns, αρχική τιµή του clk = 0 και η πρόταση εκτελεστεί σε χρόνο 10 ns 0 10 20 30 40 50 Χρονοπρογραµµατίζει συναλλαγές (transactions) για το clk Εκτέλεση εντολής Οι συναλλαγές παράγουν γεγονότα (events) 3-7 Σήµατα (signals) & θύρες (ports) Τα σήµατα µεταφέρουν δεδοµένα εντός της αρχιτεκτονικής Οι θύρες αποτελούν τα σήµατα επικοινωνίας της οντότητας µε τον «έξω κόσµο» entity circuit is port (port specification); end entity circuit; architecture arch of circuit is signal declaration... end architecture arch; 3-8

Παράλληλο πεδίο (concurrent domain) και ακολουθιακό πεδίο (sequential domain) Οι εντολές της γλώσσας που βρίσκονται στο παράλληλο πεδίο εκτελούνται παράλληλα Oι εντολές της γλώσσας που βρίσκονται στο ακολουθιακό πεδίο εκτελούνται µε την σειρά όπως στις γλώσσες προγραµµατισµού το πιο ισχυρό κοµµάτι της γλώσσας Οι όροι παράλληλη και ακολουθιακή εκτέλεση προτάσεων αφορούν την εξοµοίωση το υλικό εκτελεί παράλληλα 3-9 Παράλληλη & ακολουθιακή VHDL architecture rtl of ex is concurrent declaration part concurrent VHDL process( ) sequential declaration part sequential VHDL end process; Process (διεργασία) = concurrent statement concurrent VHDL end architecture rtl; 3-10

Παράλληλη & ακολουθιακή VHDL : δηλώσεις Παράλληλη VHDL δήλωση σηµάτων Ακολουθιακή VHDL δήλωση µεταβλητών Παράλληλη/Ακολουθιακή VHDL δήλωση τύπων, σταθερών 3-11 Παράλληλη & ακολουθιακή VHDL : εντολές Παράλληλη VHDL process component when-else, withselect Ακολουθιακή VHDL variable assignment if-then-else case wait loop Παράλληλη/Ακολουθιακή VHDL signal assignment assertion, report 3-12

ιεργασία (process) process sensitivity list declaration part statement part end process; Λίστα ευαισθησίας (sensitivity list) λίστα σηµάτων στα οποία η διεργασία είναι ευαίσθητη Τµήµα δηλώσεων (declaration part) τοπικές µεταβλητές, δεν είναι ορατές έξω από τη διεργασία Τµήµα προτάσεων (statement part) περιέχει τις ακολουθιακές εντολές 3-13 Λίστα ευαισθησίας (sensitivity list) Οι διεργασίες εκτελούνται σαν ένας ατέρµονος βρόχος όταν τελειώσει η εκτέλεση των εντολών της διεργασίας, η εξοµοίωση αρχίζει από την αρχή Η εκτέλεση των εντολών της διεργασίας ξεκινάει όταν συµβεί ένα γεγονός (event) σε ένα από τα σήµατα της λίστας ευαισθησίας γεγονός = αλλαγή τιµής όταν τελειώσει η εκτέλεση των εντολών της διεργασίας, η διεργασία «αναστέλλεται» µέχρι να συµβεί ένα γεγονός στην λίστα ευαισθησίας 3-14

Παράδειγµα Ανάθεση σηµάτων (signal assignment) Προσοµοίωση βασισµένη σε γεγονότα (event-driven VHDL simulation) 0 10 20 30 40 50 a b t xn event event 40+1dt 10+1dt 10+2dt 40+2dt ns entity nor2 is port (a,b : in bit; xn : out bit); end entity nor2; architecture beh of nor2 is signal t : bit; t <= a or b; xn <= not t; end architecture beh; 3-15 Παράδειγµα ιεργασίες (process) Ανάθεση σηµάτων (signal assignment) entity and_or_inv is port ( a1,a2,b1,b2 : in bit := '1'; y : out bit ); end entity and_or_inv; architecture prim of and_or_inv is signal and_a,and_b : bit; signal or_a_b : bit; and_gate_a : process (a1, a2) is and_a <= a1 and a2; end process and_gate_a; and_gate_b : process (b1, b2) is and_b <= b1 and b2; end process and_gate_b; -- cont. or_gate :process (and_a,and_b) is or_a_b <= and_a or and_b; end process or_gate; inv : process (or_a_b) is y <= not or_a_b; end process inv; end architecture prim; 3-16

Παράδειγµα Μοντελοποίηση ενός µανταλωτή (latch) SR entity latch_sr is port ( S, R : in bit; Q, Qn : out bit ); end entity latch_sr; architecture prim of latch_sr is S R Q Q P1: process (R,Qn) Q <= R nor Qn; end process; P2: process (S,Q) Qn <= S nor Q; end process; end architecture prim; S R Q Qn 0 0 last Q last Qn 0 1 0 1 1 0 1 0 1 1 0 0 3-17 Σήµατα εναντίον µεταβλητών signal sum1, sum2: integer; p1: process (din) sum1 <= din + 1; sum2 <= sum1 + 1; end process; Time din Sum1 Sum2 0 0 0 t1 1 0 0 t1+1dt 1 2 1 t2 2 2 1 t2+1dt 2 3 3 p2: process (din) variable sum1,sum2: integer; sum1 := din + 1; sum2 := sum1 + 1; end process; Time din Sum1 Sum2 0 0 0 t1 1 2 3 t1+1dt 1 2 3 t2 2 3 4 t2+1dt 2 3 4 Τί θα συµβεί αν αλλάξουµε τη σειρά των εντολών µέσα στις διεργασίες p1 και p2; 3-18

Ακολουθιακές εντολές Εντολές if Εντολές case Εντολές loop Εντολές assert Εντολές wait 3-19 Εντολές if Απλή εντολή if Φράση else Πολλαπλές ακολουθ. εντολές if en = '1' then stored_value := data_in; end if; if sel = 0 then result <= input_0; else result <= input_1; end if; if opcode = halt_opcode then PC := effective_address; executing := false; halt_indicator <= true; end if; Πολλαπλές φράσεις elsif if mode = immediate then operand := immed_operand; elsif opcode = load or opcode = add or opcode = subtract then operand := memory_operand; else operand := address_operand; end if; Ένθετες (nested) εντολές if if phase = wash then if cycle_select = delicate_cycle then agitator_speed <= slow; else agitator_speed <= fast; end if; agitator_on <= true; end if; 3-20

Εντολές case Μοντέλο ALU (Arithmetic & Logic Unit) -- οι λειτουργίες της ALU type alu_func is (pass1, pass2, add, subtract); -- το σήµα ελέγχου της ALU signal func : alu_func; case func is when pass1 => result := operand1; when pass2 => result := operand2; when add => result := operand1 + operand2; when subtract => result := operand1 operand2; end case; 3-21 While loop Μοντέλο της συνάρτησης συνηµιτόνου (cosine function) µε χρήση της σειράς entity cos is port (theta: in real; result: out real;); end entity; 2 4 6 θ θ θ cosθ = 1 + +... 2! 4! 6! architecture series of cos is P1: process (theta) is variable sum, term, n: real; sum := 1.0; term := 1.0; n := 0.0; while abs term > abs (sum/1.0e6) loop n := n + 2.0; term := (-term)*(theta**2)/((n-1)*n); sum := sum + term; end loop; result <= sum; end process; Άθροιση διαδοχικών όρων της σειράς έως ότου οι όροι να γίνουν µικρότεροι από το ένα 1/1.0Ε6 του αποτελέσµατος end architecture; 3-22

For loop Μοντέλο της συνάρτησης συνηµιτόνου (cosine function) µε χρήση της σειράς architecture fixed_length_series of cos is summation : process (theta) is variable sum, term : real; sum := 1.0; term := 1.0; for n in 1 to 9 loop term := ( term)*theta**2/real(((2*n 1)*2*n)); sum := sum + term; end loop; result <= sum; end process summation; end architecture fixed_length_series; 2 4 6 θ θ θ cosθ = 1 + +... 2! 4! 6! Άθροιση των 10 πρώτων όρων της σειράς 3-23 Εντολές assert Οι εντολές ισχυρισµού (assert statement) χρησιµοποιούνται για την επαλήθευση του µοντέλου Παράδειγµα: assertcondition; Ισχυριζόµαστε ότι ηcondition είναι πάντα αληθής (όποτε εκτελείται η assertion) Εάν δεν είναι αληθής παραβίαση ισχυρισµού Ο προσοµοιωτής αναφέρει το γεγονός Οι εντολές assert χρησιµοποιούνται από: Εργαλεία σύνθεσης (synthesizer) Για βελτιστοποίηση του αποτελέσµατος Εργαλεία τυπικής επαλήθευσης (formal verifier) Αποδεικνύουν ότι ισχύει για όλα τα πιθανά ερεθίσµατα εισόδου (input stimuli) 3-24

Φράσεις report, severity Φράση αναφοράς (report clause) assert initial_value <= max_value report "initial value too large"; Για να ξέρουµε ποιος ισχυρισµός παραβιάστηκε Φράση αυστηρότητας (severity clause) assert initial_value <= max_value report "initial value too large" severity warning; Πόσο επηρεάζει η παραβίαση του ισχυρισµού το µοντέλο µας; Οι προσοµοιωτές µας επιτρέπουν να καθορίσουµεένα severity threshold Πάνω από το threshold σταµατούν την προσοµοίωση Default threshold = error Προκαθορισµένος τύπος απαρίθµησης type severity_level is (note, warning, error, failure); 3-25 Παράδειγµα: SR latch Πρόταση ισχυρισµού: Οι είσοδοι S και R δεν πρέπει να είναι και οι δύο 1 entity SR_flipflop is port (S,R : in bit; Q : out bit ); end entity SR_flipflop; architecture checking of SR_flipflop is set_reset : process (S, R) is assert S = '1' nand R = '1'; if S = '1' then Q <= '1'; end if; if R = '1' then Q <= '0'; end if; end process set_reset; end architecture checking; Η πρόταση assert θα ανιχνεύσει παραβίαση ισχυρισµού εάν το µοντέλο χρησιµοποιηθεί λανθασµένα 3-26

Παράδειγµα entity max3 is port (a,b,c : in integer; z : out integer ); end entity max3; architecture check_error of max3 is maximizer : process (a, b, c) variable result : integer; if a > b then if a > c then result := a; else result := a; -- Ουπς! Θα έπρεπε να είναι: end if; -- result := c; elsif b > c then result := b; else result := c; end if; assert result >= a and result >= b and result >= c report "inconsistent result for maximum" severity failure; z <= result; end process maximizer; end architecture check_error; Κύκλωµα επιλογής της µέγιστη τιµής µεταξύτων 3 εισόδων του Πρότασηισχυρισµού: Ηέξοδοςπρέπεινα είναι µεγαλύτερη ή ίση και από τις 3 εισόδους Η πρόταση assert θα ανιχνεύσει παραβίαση ισχυρισµού εάν το µοντέλο δεν έχει υλοποιηθεί σωστά 3-27 Εντολές wait Ακολουθιακή πρόταση: αναστέλλει την εκτέλεση της διεργασίας Μια πρόταση wait συντάσσεται µε: Φράση ευαισθησίας (sensitivity clause): wait on Φράση συνθήκης (condition clause): wait until Φράση χρονικής υπέρβασης (timeout clause): wait for 3-28

Εντολή wait on Αναστέλλει τη διεργασία έως ότου ένα γεγονός συµβεί σε ένα από τα σήµατα της λίστας Η λίστα των σηµάτων ονοµάζεται λίστα ευαισθησίας (sensitivity list) Χρήσιµη σε διεργασίες που µοντελοποιούν µπλοκ συνδυαστικής λογικής half_add : process is sum <= a xor b after T_pd; carry <= a and b after T_pd; wait on a, b; end process half_add; Ισοδύναµες διεργασίες half_add : process (a,b) is sum <= a xor b after T_pd; carry <= a and b after T_pd; end process half_add; 3-29 Εντολή wait until Αναστέλλει τη διεργασία έως ότου ικανοποιηθεί η συνθήκη Η συνθήκη ελέγχεται κάθε φορά που συµβαίνει γεγονός σε οποιοδήποτε σήµα της συνθήκης clock_gen : process is clk <= '1' after T_pw, '0' after 2*T_pw; wait until clk = '0'; end process clock_gen; 3-30

Εντολή wait for Αναστέλλει τη διεργασία για το χρονικό διάστηµα που ορίζεται στην πρόταση clock_gen : process is clk <= '1' after T_pw, '0' after 2*T_pw; wait for 2*T_pw; end process clock_gen; 3-31 Μικτές προτάσεις wait wait onsensitivity_list untilcondition; Αναστέλλει τη διεργασία έως ότου συµβεί ένα γεγονός και η συνθήκη είναι αληθής wait onsensitivity_list fortime_period; Αναστέλλει τη διεργασία έως ότου συµβεί ένα γεγονός ή λήξει το χρονικό διάστηµα wait untilcondition fortime_period; Αναστέλλει τη διεργασία έως ότου ικανοποιηθεί η συνθήκη ή λήξει το χρονικό διάστηµα 3-32

Σχεδίαση συνδυαστικών κυκλωµάτων Προσοχή: όταν χρησιµοποιούµε διεργασίες για την υλοποίηση ενός συνδυαστικού κυκλώµατος Όλες οι είσοδοι πρέπει να είναι στη λίστα ευαισθησίας Σε διαφορετική περίπτωση υπάρχει διαφορά µεταξύ του µοντέλου προσοµοίωσης και του µοντέλου που προκύπτει από τη σύνθεση Σε όλα τα σήµατα εξόδου πρέπει να ανατεθεί µία τιµή κάθε φορά που εκτελείται η διεργασία Σε διαφορετική περίπτωση το µοντέλο που προκύπτει από τη σύνθεση θα περιέχει στοιχεία µνήµης (latches) εποµένως θα είναι ακολουθιακό κύκλωµα 3-33 Παράδειγµα Τι θα συµβεί στο µοντέλο προσοµοίωσης του παρακάτω αθροιστή; entity adder is port ( a,b : in integer range 0 to 15; x : out integer range 0 to 31 ); end entity adder; architecture beh of adder is p: process (a) x <= a + b; end process; end architecture beh; 3-34

Παράδειγµα Πολύ συχνό σχεδιαστικό λάθος Ελλιπής πρόταση if: δεν αναθέτει τιµή για κάποιο σήµα σε κάποια διακλάδωση της πρότασης if εν περιγράφει συνδυαστική λογική Υπάρχει ανάδραση στο κύκλωµα Περιγράφει ακολουθιακή λογική entity inc_if is port ( a, b, en : in bit; z, y : out bit); end entity inc_if; architecture beh of inc_if is p: process (a,b,en) if en = '1' then z <= a; else y <= b; end if; end process; end architecture beh; 3-35 Παράλληλες αναθέσεις σηµάτων Παράλληλες προτάσεις ανάθεσης σήµατος (concurrent signal assignment statement) Χρησιµοποιούνται στο παράλληλο πεδίο της γλώσσας Χρησιµοποιούνται για τη µοντελοποίηση συνδυαστικών κυκλωµάτων Συνδυαστικός µετασχηµατισµός των εισόδων στις εξόδους Μπορούν να αντικαταστήσουν διεργασίες κάνοντας το µοντέλο πιο ευανάγνωστο ύο µορφές παράλληλων αναθέσεων σηµάτων Ανάθεση σήµατος υπό συνθήκη (conditional signal assignment) Ανάθεση σήµατος µε επιλογή (selected signal assignment) 3-36

Ανάθεση σήµατος υπό συνθήκη Μοντέλο πολυπλέκτη 4-σε-1 zmux : z <= d0 when sel1 = '0' and sel0 = '0' else d1 when sel1 = '0' and sel0 = '1' else d2 when sel1 = '1' and sel0 = '0' else d3; zmux : process is if sel1 = '0' and sel0 = '0' then z <= d0; elsif sel1 = '0' and sel0 = '1' then z <= d1; elsif sel1 = '1' and sel0 = '0' then z <= d2; else z <= d3; end if; wait on d0, d1, d2, d3, sel0, sel1; end process zmux; Ισοδύναµη διεργασία 3-37 Παραδείγµατα Ανάθεση σήµατος χωρίς συνθήκη PC_incr : next_pc <= PC + 4 after 5 ns; PC_incr : process is next_pc <= PC + 4 after 5 ns; wait on PC; end process PC_incr; Παραγωγή ενός σήµατος reset στην αρχή της προσοµοίωσης reset_gen : reset <= '1', '0' after 200 ns when extended_reset else '1', '0' after 50 ns; reset_gen : process is if extended_reset then reset <= '1', '0' after 200 ns; else reset <= '1', '0' after 50 ns; end if; wait; end process reset_gen; 3-38

Ανάθεση σήµατος µε επιλογή Μοντέλο ALU alu : with alu_function select result <= a + b after Tpd when alu_add alu_add_unsigned, a b after Tpd when alu_sub alu_sub_unsigned, a and b after Tpd when alu_and, a or b after Tpd when alu_or, a after Tpd when alu_pass_a; alu : process is case alu_function is when alu_add alu_add_unsigned => result <= a + b after Tpd; when alu_sub alu_sub_unsigned => result <= a b after Tpd; when alu_and => result <= a and b after Tpd; when alu_or => result <= a or b after Tpd; when alu_pass_a => result <= a after Tpd; end case; wait on alu_function, a, b; end process alu; Ισοδύναµη διεργασία 3-39 Περιγραφές δοµής (structural descriptions) Η ιεραρχική σχεδίαση βασίζεται στην περιγραφή δοµής Περιγραφή δοµής: περιγράφει τα συστατικά (components) του κυκλώµατος και πως αυτά συνδέονται µεταξύ τους Περιγραφή δοµής στη VHDL: Υλοποιείται µε χρήση της πρότασης εµφάνισης στιγµιότυπου συστατικού (component instantiation) 3-40

Στιγµιότυπο συστατικού (component instance) ήλωση της οντότητας DRAM_controller και της αρχιτεκτονικής fpld entity DRAM_controller is port (rd, wr, mem : in bit; ras, cas, we, ready : out bit) end entity DRAM_controller; Στιγµιότυπο συστατικού main_memory_controller: entity work.dram_controller(fpld) port map (cpu_rd, cpu_wr, cpu_mem, cpu_ras, cpu_cas, cpu_we, cpu_ready); 3-41 Στιγµιότυπο συστατικού (component instance) Συσχέτισης θέσης (positional association) main_memory_controller: entity work.dram_controller(fpld) port map (cpu_rd, cpu_wr, cpu_mem, cpu_ras, cpu_cas, cpu_we, cpu_ready); Συσχέτιση ονόµατος (named association) main_memory_controller: entity work.dram_controller(fpld) port map (rd => cpu_rd, wr => cpu_wr, mem = >cpu_mem, we => cpu_we, ready => cpu_ready, ras => cpu_ras, cas => cpu_cas); 3-42

Παράδειγµα: καταχωρητής 4-bit entity reg4 is port( clk, clr: in bit d0, d1, d2, d3 : in bit; q0, q1, q2, q3 : out bit) end entity reg4; architecture struct of reg4 is bit0 : entity work.d_ff(beh) port map (d0, clk, clr, q0); bit1 : entity work.d_ff(beh) port map (d1, clk, clr, q1); bit2 : entity work.d_ff(beh) port map (d2, clk, clr, q2); bit3 : entity work.d_ff(beh) port map (d3, clk, clr, q3); end architecture struct; d0 d q q0 clk clk clr d1 d q q1 d2 clk clr d q q2 d3 clk clr d q q3 clk clr clr 3-43 Παράδειγµα: αθροιστής 4-bit entity Full_adder is port (A,B,Cin : in bit; Sum,Cout : out bit); end entity Full_adder; architecture beh of Full_adder is end architecture beh; entity ripple_adder is port (a,b : in bit_vector(3 downto 0); cin : in bit; sum : out bit_vector(3 downto 0); cout : out bit); end entity ripple_adder; architecture struct of ripple_adder is end architecture struct; 3-44

Παράδειγµα: αθροιστής 4-bit architecture struct of ripple_adder is signal c1,c2,c3 : bit; bit0: entity work.full_adder(beh) port map (a=>a(0), b=>b(0), cin=>cin,sum=>sum(0), cout=>c1); bit1: entity work.full_adder(beh) port map (a=>a(1), b=>b(1), cin=>c1, sum=>sum(1), cout=>c2); bit2: entity work.full_adder(beh) port map (a=>a(2), b=>b(2), cin=>c2, sum=>sum(2), cout=>c3); bit3: entity work.full_adder(beh) port map (a=>a(3), b=>b(3), cin=>c3, sum=>sum(3), cout=>cout); end architecture struct; 3-45 Παραµετροποιηµένες µονάδες Σχεδίαση παραµετροποιηµένων µονάδων µε τη χρήση generic ήλωση οντότητας Γεννήτρια ρολογιού µε µεταβλητή περίοδο και διάρκεια παλµού entity clock is generic (period, pulse : time); port (clk : out bit); end entity clock; architecture beh of clock is p1: process is clk <= 1 ; wait for pulse; clk <= 0 ; wait for (period-pulse); end process; end architecture; Στιγµιότυπο συστατικού Περίοδος 10 ns και διάρκεια παλµού 5 ns clock_u1: entity work.clock(beh) generic map (period => 10ns, pulse => 5ns) port map (clk => clk); 3-46

Παραµετροποιηµένες µονάδες ήλωση οντότητας Πράξη AND µεταξύ διανυσµάτων bit µήκους width Στιγµιότυπο συστατικού Πράξη AND µεταξύ 8-bit διανυσµάτων entity and_bv is generic (width : integer); port(a: in bit_vector(0 to width-1); b: in bit_vector(0 to width-1); z: out bit_vector(0 to width-1)); end entity and_bv; and_bv_u1: entity work.and_bv generic map (width => 8) port map (in1, in2, z); architecture beh of and_bv is and_op : process (a, b) is for index in 0 to width-1 z(index) := a(index) and b(index); end loop; end process and_op; end architecture beh; 3-47