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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Library, package και subprograms

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

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

Structural VHDL. Structural VHDL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

VHDL Introduction. Subtitle

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

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

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

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

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

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

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


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

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

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

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

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

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

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

Ελίνα Μακρή

Οι Βιβλιοθήκες IEEE και παραδείγµατα functions

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Καθιερωµένα Γραφικά Σύµβολα. ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο 2005

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

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

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

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

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

ΗΜΥ 210: Σχεδιασμό Ψηφιακών Συστημάτων, Χειμερινό Εξάμηνο 2008

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

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

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

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

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

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

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

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

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

(Peter Ashenden, The Students Guide to VHDL)

Περίληψη. ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο Μετρητής Ριπής (Ripple Counter) Μετρητές (Counters) Μετρητής Ριπής (συν.

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


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

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

1 Περίληψη Η εργασία έγινε στα πλαίσια του μαθήματος των Ψηφιακών Ηλεκτρονικών Συστημάτων με σκοπό αρχικά την εκμάθηση της γλώσσας VHDL (Very High Spe

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 18: Διαδικασία Σχεδίασης Ψηφιακών Συστηµάτων - Επανάληψη

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 13: Διαδικασία Σχεδιασµού Ακολουθιακών Κυκλωµάτων (Κεφάλαιο 6.

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

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

ΑΣΚΗΣΗ 9. Tα Flip-Flop

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

Transcript:

VHDL για Σχεδιασµό Συνδυαστικών και Ακολουθιακών Ψηφιακών Κυκλωµάτων Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήµιο Κύπρου Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών VHDL (Very high speed integrated circuits Hardware Description Language) n Γλώσσα προγραµµατισµού για την περιγραφή και προσοµοίωση υλικού (λογικών σχεδιασµών). n Επιχορηγήθηκε από ΙEEE και DoD (Department of Defense των ΗΠΑ) στις αρχές του 80. n Βασικά χαρακτηριστικά: n Ιεραρχικός σχεδιασµός n Περιγραφή Διασυνδέσεων και Συµπεριφοράς µε ακρίβεια (και ξεχωριστά) n Περιγραφή συµπεριφοράς: αλγοριθµικά ή µε δοµικό (structural) τρόπο n Μοντελοποίηση Χρονισµού (Timing) και Ταυτοχρονισµού (Concurrency) à Σχεδιασµοί µπορούν να προσοµοιωθούν µε ακρίβεια 30/01/15 MKM - 2 1

Μοντελοποίηση n Μια πλήρης περιγραφή ενός στοιχείου (component) µε VHDL απαιτεί: n Entity (Οντότητα) : καθορίζει τις διασυνδέσεις (interface) ενός στοιχείου (όνοµα, εισόδους, εξόδους). n Architecture (Αρχιτεκτονική): καθορίζει την λειτουργία/συµπεριφορά (function) ενός στοιχείου. n Σε κάθε στοιχείο αντιστοιχεί ένα µόνο entity και τουλάχιστον ένα architecture (πολλαπλά architecture είναι δυνατά). 30/01/15 MKM - 3 Απλό παράδειγµα: Entity entity My_Component is -- My_Component : όνοµα port (X,Y: in BIT; -- προδιαγραφές διασυνδέσεων Z: out BIT); end My_Component; Εντολή port καθορίζει εισόδους και εξόδους Σχόλια (comments) Y Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type) X My_Component Z 30/01/15 MKM - 4 2

Απλό παράδειγµα:αρχιτεκτονική entity My_Component is -- My_Component : όνοµα Port (X,Y: in BIT; -- προδιαγραφές διασυνδέσεων Z: out BIT); end My_Component; Architecture My_Component_Arch of My_Component is Z <= 1 when X= 1 and Y= 0 else 0 ; end My_Component_Arch; Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type) Αντίστοιχη οντότητα (entity) Z = X Y 30/01/15 MKM - 5 Άλλο Παράδειγµα: πύλη AND entity My_AND is Port (X,Y: in BIT; Z: out BIT); end My_END; -- My_AND : όνοµα -- προδιαγραφές διασυνδέσεων Architecture My_AND_Arch of My_AND is Z <= 1 when X= 1 and Y= 1 else 0 ; end My_AND_Arch; Σχόλια (comments) Λέξεις κλειδιά VHDL (keywords) Αναγνωριστικό (identifier) Λειτουργία θύρας (port mode) Τύπος δεδοµένων (data type) Z = X Y 30/01/15 MKM - 6 3

Στοιχεία γλώσσας VHDL n Σχόλια (Comments) n ξεκινούν µε --, ισχύουν µέχρι το τέλος της γραµµής n Δεσµευµένες Λέξεις (Keywords) n π.χ. entity, port, is, in, out, end, architecture,, end, when, else, n Αναγνωριστικά (Identifiers) n Μεταβλητές, ονόµατα στοιχείων, κτλ 30/01/15 MKM - 7 Αναγνωριστικά (Identifiers) n Μπορούν να περιέχουν A-Z, a-z, 0-9, _ n Πρέπει να ξεκινούν µε γράµµα n Δεν µπορούν να τελειώσουν µε _ n Δεν µπορούν να περιέχουν 2 συνεχόµενες _ n Η VHDL είναι case-insensitive n Sel, sel και SEL αναφέρονται στο ίδιο αντικείµενο 30/01/15 MKM - 8 4

Παραδείγµατα Αναγνωριστικών n A2G n έγκυρο n 8bit_counter n άκυρο ξεκινά µε αριθµό n _NewValue n άκυρο ξεκινά µε _ n first# n άκυρο περιέχει µη-αποδεκτό χαρακτήρα 30/01/15 MKM - 9 VHDL Αντικείµενα Δεδοµένων (Data Objects) n Σταθερές (Constants) n Μεταβλητές (Variables) n Σήµατα (Signals) n Αρχεία (Files*) * Δεν υποστηρίζονται από εργαλεία σύνθεσης 30/01/15 MKM - 10 5

Χαρακτήρες και Συµβολοσειρές n Χαρακτήρες (Characters) n A, 0, 1, $, x, * n Συµβολοσειρές (Strings) n string of characters n 00101101 n 0X110ZZ1 n Δυαδικές (Bit) Συµβολοσειρές n B 011111010110 n O 3726 n X 7D6 30/01/15 MKM - 11 n Scalar VHDL Τύποι Δεδοµένων (Data Types) n Integers n Enumerated n Reals (floating point)* n Composite (σύνθετοι) n Arrays (πίνακες/διατάξεις) n Records n Access (pointers -- δείκτες)* * Δεν υποστηρίζονται από εργαλεία σύνθεσης 30/01/15 MKM - 12 6

Τύποι Δεδοµένων Scalar: Integer n Μικρότερο εύρος για κάθε υλοποίηση, όπως καθορίζεται από σχετικό πρότυπο: - 2,147,483,647 + 2,147,483,647 n Παράδειγµα: αναθέσεις σε µεταβλητή τύπου integer : ARCHITECTURE test_int OF test IS BEGIN PROCESS (X) VARIABLE a: INTEGER; BEGIN a := 1; -- OK a := -1; -- OK a := 1.0; -- άκυρο END PROCESS; END test_int; 30/01/15 MKM - 13 Τύποι Δεδοµένων Scalar: Integer (συν.) n Μπορούµε επίσης να ορίσουµε integers µε µικρότερο εύρος (sub-ranges) n Παραδείγµατα: type CountValue is range 0 to 15; type Twenties is range 20 to 29; type Thirties is range 39 downto 30; 30/01/15 MKM - 14 7

Τύποι Δεδοµένων Scalar: Enumerated n Ο χρήστης ορίζει τη λίστα πιθανών τιµών n Παράδειγµα: TYPE binary IS ( ON, OFF );... κάποιες εντολές... ARCHITECTURE test_enum OF test IS BEGIN PROCESS (X) VARIABLE a: binary; BEGIN a := ON; -- OK... επιπρόσθετες εντολές... a := OFF; -- OK... επιπρόσθετες εντολές... END PROCESS; END test_enum; 30/01/15 MKM - 15 Τύποι Δεδοµένων Scalar: Enumerated à Boolean type boolean is (false, true);... κάποιες εντολές... variable A,B,C: boolean;... κάποιες εντολές... C := not A C := A and B C := A or B C := A nand B C := A nor B C := A xor B C := A xnor B aντικείµενο (object) VHDL Τελεστής ανάθεσης για µεταβλητές 30/01/15 MKM - 16 8

Τύποι Δεδοµένων Scalar: Enumerated à Bit type bit is ( 0, 1 );... κάποιες εντολές... signal x,y,z: bit;... κάποιες εντολές... x <= 0 ; y <= 1 ; z <= x and y; aντικείµενο (object) VHDL Τελεστής ανάθεσης για σήµατα 30/01/15 MKM - 17 Τύποι Δεδοµένων Scalar: Enumerated à Standard Logic type std_logic is ( U, -- Uninitialized (µη-αρχικοποιηµένο) X -- Unknown (άγνωστο) 0 -- Zero (µηδέν) 1 ); -- One (ένα) n std_logic είναι µέρος του πακέτου ieee n Πακέτα (Packages): ήδη-µεταγλωττισµένος κώδικας VHDL που αποθηκεύεται σε βασικό κατάλογο (library) library IEEE; use IEEE.std_logic_1164.all; Πρέπει να περιλαµβάνεται στο κώδικά σας, πριν τη δήλωση τύπων δεδοµένων std_logic 30/01/15 MKM - 18 9

Σύνθετοι Τύποι Δεδοµένων (Composite Data Types) n Array (Πίνακες/Διατάξεις): n Χρησιµοποιείται για οµαδοποίηση δεδοµένων του ιδίου τύπου σε ένα ενιαίο αντικείµενο VHDL n Το εύρος µπορεί να είναι ακαθόριστο (=απεριόριστο) στη δήλωση (declaration) à καθορίζεται µόλις ο πίνακας χρησιµοποιηθεί n Παράδειγµα: δήλωση πίνακα µίας-διάστασης (one-dimensional array (vector)) TYPE data_bus IS ARRAY(0 TO 31) OF BIT; VARIABLE X : data_bus; VARIABLE Y : BIT; 0... δείκτες 31 στοιχείων......τιμές στοιχείων πίνακα... 0 1 Y := X(12); -- το Y παίρνει την τιµή του στοιχείου µε δείκτη 12 του Χ 30/01/15 MKM - 19 Αρχιτεκτονική VHDL architecture name_arch of name is Signal assignments Ταυτόχρονες εντολές (concurrent statements) Process 1 Ταυτόχρονες εντολές (concurrent statements) Process 2 Ταυτόχρονες εντολές (concurrent statements) end name_arch; Το κάθε process περιέχει ακολουθιακές εντολές (sequential statements), αλλά όλα τα processes εκτελούνται ταυτόχρονα 30/01/15 MKM - 20 10

VHDL Process P1: process (<sensitivity list>) <variable declarations> <sequential statements> end process P1; Μέσα σε ένα process: Ανάθεση µεταβλητών (variables) Προαιρετική σήµανση µε := και άµεση ενηµέρωση. Ανάθεση σηµάτων (signals) µε <= και η ενηµέρωση γίνετε στο τέλος του process. 30/01/15 MKM - 21 Αρχιτεκτονική VHDL (συν.) n Στο κάθε entity (µοναδικό ανά στοιχείο) αντιστοιχεί τουλάχιστον µια περιγραφή αρχιτεκτονικής (architecture) n Υπάρχουν 3 τρόποι περιγραφής της αρχιτεκτονικής: n Structural (Δοµική): λεπτοµερής περιγραφή σε επίπεδο πυλών/βασικών στοιχείων n Data Flow (Ροή Δεδοµένων): περιγραφή βάση του τρόπου µεταφοράς δεδοµένων µεταξύ των στοιχείων/σηµάτων n Behavioral (Συµπεριφορά): αλγοριθµική περιγραφή υψηλό επίπεδο χωρίς λεπτοµέρειες n Θα δούµε διάφορα παραδείγµατα 30/01/15 MKM - 22 11

2-to-4 DEC σε VHDL: Διάγραµµα σε επίπεδο πυλών 30/01/15 MKM - 23 2-to-4 DEC σε VHDL: Δήλωση Οντότητας (Entity Declaration) -- 2-to-4 Line Decoder: Structural VHDL Description library ieee, lcdf_vhdl; use ieee.std_logic_1164.all, lcdf_vhdl.func_prims.all; entity decoder_2_to_4 is Είσοδοι & Έξοδοι port(e_n, A0, A1: in std_logic; D0_n, D1_n, D2_n, D3_n: out std_logic); end decoder_2_to_4; Εισαγόµενος κώδικας από βιβλιοθήκες 30/01/15 MKM - 24 12

2-to-4 DEC σε VHDL: Αρχιτεκτονική Δοµική Περιγραφή (Structural) architecture structural_1 of decoder_2_to_4 is component NOT1 port(in1: in std_logic; out1: out std_logic); end component; component NAND3 port(in1, in2, in3: in std_logic; out1: out std_logic); end component; Δήλωση απαραίτητων component (διαθέσιµα από τις βιβλιοθήκες) 30/01/15 MKM - 25 2-to-4 DEC σε VHDL: Αρχιτεκτονική Δοµική Περιγραφή (Structural) (συν.) signal E, A0_n, A1_n: std_logic; Τοπικά σήµατα g0: NOT1 port map (in1 => A0, out1 => A0_n); g1: NOT1 port map (in1 => A1, out1 => A1_n); g2: NOT1 port map (in1 => E_n, out1 => E); g2: NAND3 port map (in1 => A0_n, in2 => A1_n, in3 => E, out1 => D0); g3: NAND3 port map (in1 => A0, in2 => A1_n, in3 => E, out1 => D1); g4: NAND3 port map (in1 => A0_n, in2 => A1, in3 => E, out1 => D2); g5: NAND3 port map (in1 => A0, in2 => A1, in3 => E, out1 => D3); end structural_1; 30/01/15 MKM - 26 13

2-to-4 DEC σε VHDL: Αρχιτεκτονική Περιγραφή Ροής Δεδοµένων (Dataflow) architecture dataflow_1 of decoder_2_to_4 is signal A0_n, A1_n: std_logic; A0_n <= not A0; A1_n <= not A1; E_n <= not E; D0_n <= not (A0_n and A1_n and E); D1_n <= not (A0 and A1_n and E); D2_n <= not (A0_n and A1 and E); D3_n <= not (A0 and A1 and E); end dataflow_1; 30/01/15 MKM - 27 Άλλο Παράδειγµα: n-bit 4-σε-1 MUX a(n-1:0) b(n-1 :0) c(n-1 :0) d(n-1 :0) n n n n n-bit 4-σε-1 MUX n y(n-1 :0) Sel y 00 a 01 b 10 c 11 d 2 Sel(1:0) 30/01/15 MKM - 28 14

n-bit 4-σε-1 MUX: Δήλωση Οντότητας (Entity declaration) library IEEE; use IEEE.std_logic_1164.all; entity mux4g is generic(width:positive); port ( a: in STD_LOGIC_VECTOR (width-1 downto 0); b: in STD_LOGIC_VECTOR (width-1 downto 0); c: in STD_LOGIC_VECTOR (width-1 downto 0); d: in STD_LOGIC_VECTOR (width-1 downto 0); sel: in STD_LOGIC_VECTOR (1 downto 0); y: out STD_LOGIC_VECTOR (width-1 downto 0) ); end mux4g; 30/01/15 MKM - 29 n-bit 4-σε-1 MUX: Αρχιτεκτονική: Περιγραφή Ροής Δεδοµένων µε χρήση εντολής CASE architecture mux4g_arch of mux4g is process (sel, a, b, c, d) case sel is when "00" => y <= a; when "01" => y <= b; when "10" => y <= c; when others => y <= d; end case; end process; end mux4g_arch; Sel y 00 a 01 b 10 c 11 d Η εντολή CASE πρέπει να περιέχει ΟΛΕΣ τις πιθανότητες τιµών. 30/01/15 MKM - 30 15

Παράδειγµα απλής συνδυαστικής συνάρτησης: Περιγραφή Ροής Δεδοµένων library ieee; use ieee.std_logic_1164.all; entity func2 is port (x1,x2,x3: in std_logic; f: out std_logic ); end func2; architecture dataflow of func2 is f <= (not x1 and not x2 and x3) or (x1 and not x2 and not x3) or (x1 and not x2 and x3) or (x1 and x2 and not x3); end logicfunc; 30/01/15 MKM - 31 Ηµιαθροιστής n Πρόβληµα: Σχεδιάστε ένα ηµιαθροιστή 1-bit µε κρατούµενο (carry) και σήµα ενεργοποίησης (enable). n Προδιαγραφές n Είσοδοι και έξοδοι είναι 1-bit n Όταν το enable είναι 1, το αποτέλεσµα είναι η πρόσθεση x+y µε carry n Έξοδοι 0 όταν το enable είναι 0 x y enable carry Ημιαθροιστής result 30/01/15 MKM - 32 16

Ηµιαθροιστής: Δήλωση Οντότητας n Η οντότητα περιγράφει τις διασυνδέσεις του component -- δηλώνονται θύρες (ports) εισόδων και εξόδων ENTITY half_adder IS PORT( x, y, enable: IN bit; carry, result: OUT bit); END half_adder; x y enable Ημιαθροιστής carry result 30/01/15 MKM - 33 Ηµιαθροιστής: Αρχιτεκτονική µε Περιγραφή Συµπεριφοράς (Behavioral) n Μπορούµε να χρησιµοποιήσουµε µια περιγραφή υψηλού επιπέδου για την συνάρτηση που υλοποιεί το κύκλωµα ARCHITECTURE half_adder_a of half_adder IS BEGIN PROCESS (x, y, enable) BEGIN IF enable = 1 THEN result <= x XOR y; carry <= x AND y; ELSE END IF; END PROCESS; END half_adder_a; Αυτό το µοντέλο µπορεί να προσοµοιωθεί έτσι ώστε να επαληθευτεί η σωστή λειτουργία του κυκλώµατος 30/01/15 MKM - 34 17

Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (Structural) n Εναλλακτικά, µπορούµε να χρησιµοποιήσουµε µια δοµική περιγραφή (βάση διαθέσιµων components που έχουν ήδη δηλωθεί) x y enable carry result Αυτό το µοντέλο µπορεί επίσης να προσοµοιωθεί έτσι ώστε να επαληθευτεί η σωστή λειτουργία του κυκλώµατος 30/01/15 MKM - 35 Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (συν.) ARCHITECTURE half_adder_c of half_adder_nty IS COMPONENT and2 PORT (in0, in1 : IN BIT; out0 : OUT BIT); END COMPONENT; COMPONENT and3 PORT (in0, in1, in2 : IN BIT; out0 : OUT BIT); END COMPONENT; COMPONENT xor2 PORT (in0, in1 : IN BIT; out0 : OUT BIT); END COMPONENT; FOR ALL : and2 USE ENTITY gate_lib.and2_nty(and2_a); FOR ALL : and3 USE ENTITY gate_lib.and3_nty(and3_a); FOR ALL : xor2 USE ENTITY gate_lib.xor2_nty(xor2_a); -- η περιγραφή συνεχίζεται στην επόµενη διαφάνεια 30/01/15 MKM - 36 18

Ηµιαθροιστής: Δοµική Περιγραφή Αρχιτεκτονικής (συν.) -- συνεχιζόµενη περιγραφή half_adder_c SIGNAL xor_res : bit; -- εσωτερικό σήµα -- τα υπόλοιπα σήµατα έχουν ήδη δηλωθεί στο entity BEGIN A0 : and2 PORT MAP (enable, xor_res, result); A1 : and3 PORT MAP (x, y, enable, carry); X0 : xor2 PORT MAP (x, y, xor_res); END half_adder_c; 30/01/15 MKM - 37 Ηµιαθροιστής: Αρχιτεκτονική µε Περιγραφή Ροής Δεδοµένων (Dataflow) n Μια τρίτη µέθοδος περιγραφής της αρχιτεκτονικής ενός component χρησιµοποιεί λογικές εξισώσεις για να αναπτύξει µια περιγραφή ροής δεδοµένων ARCHITECTURE half_adder_b of half_adder_nty IS BEGIN carry <= enable AND (x AND y); result <= enable AND (x XOR y); END half_adder_b; Ξανά, το µοντέλο αυτό µπορεί να προσοµοιωθεί σε αυτό το επίπεδο για να επιβεβαιωθούν οι λογικές εξισώσεις. 30/01/15 MKM - 38 19

Παράδειγµα Αθροιστή 4ων-bit: Δήλωση Οντότητας -- Αθροιστής 4ων-bit library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity adder_4_b is port(b, A : in std_logic_vector(3 downto 0); C0 : in std_logic; S : out std_logic_vector(3 downto 0); C4 : out std_logic); end adder_4_b; 30/01/15 MKM - 39 Αθροιστής 4ων-bit:Αρχιτεκτονική µε Περιγραφή Συµπεριφοράς (Behavioral) architecture behavioral of adder_4_b is signal sum : std_logic_vector(4 downto 0); sum <= ('0' & A) + ('0' & B) + ("0000" & C0); C4 <= sum(4); S <= sum(3 downto 0); end behavioral; Είναι πλήρης αθροιστής; 0A 3 A 2 A 1 A 0 0B 3 B 2 B 1 B 0 0000C 0 30/01/15 MKM - 40 20

Αθροιστής 1-bit:Αρχιτεκτονική µε Περιγραφή Ροής Δεδοµένων (Dataflow) library ieee; use ieee.std_logic_1164.all; entity fulladd is port (Cin, x, y: in std_logic; s, Cout: out std_logic); end fulladd; architecture logicfunc of fulladd is s <= x xor y xor Cin; Cout <= (x and y) or (Cin and x) or (Cin and y); end logicfunc; 30/01/15 MKM - 41 Αθροιστής 4ων-bit: Δήλωση Οντότητας library ieee; use ieee.std_logic_1164.all; entity adder4 is -- s = x+y port ( Cin: in std_logic; x3,x2,x1,x0: in std_logic; y3,y2,y1,y0: in std_logic; s3,s2,s1,s0: out std_logic; Cout: out std_logic ); end adder4; 30/01/15 MKM - 42 21

Αθροιστής 4ων-bit: Δοµική Περιγραφή Αρχιτεκτονικής (Structural) architecture structural of adder4 is signal c1,c2,c3: std_logic; component fulladd port (Cin,x,y: in std_logic; s,cout: out std_logic); end component; Ίδια σειρά όπως στη δήλωση του entity stage0: fulladd port map (Cin,x0,y0,s0,c1); stage1: fulladd port map (c1,x1,y1,s1,c2); stage2: fulladd port map (c2,x2,y2,s2,c3); Προσαρµοσµένη σειρά stage3: fulladd port map (Cin=>c3,Cout=cout,x=>x3,y=>y3,s=>s3); end structural; 30/01/15 MKM - 43 2-σε-1 MUX library ieee; use ieee.std_logic_1164.all; entity mux2to1 is port (d0,d1,s: in std_logic; y: out std_logic); end mux2to1; architecture behavioral of mux2to1 is with s select y <= d0 when 0, d1 when others; end behavioral; 30/01/15 MKM - 44 22

Αποκωδικοποιητής 2-σε-4 library ieee; use ieee.std_logic_1164.all; entity dec2to4 is port (w: in std_logic_vector(1 downto 0); e: in std_logic; y: out std_logic_vector(0 to 3)); end dec2to4; 30/01/15 MKM - 45 Αποκωδικοποιητής 2-σε-4 (συν.) architecture behavioral of dec2to4 is signal ew: std_logic_vector(2 downto 0); ew <= e & w; -- concatenation! with ew select y <= 1000 when 100, 0100 when 101, 0010 when 110, 0001 when 111, 0000 when others; end behavioral; 30/01/15 MKM - 46 23

Ακολουθιακά Κυκλώµατα n VHDL Processes n Εντολές If-Then-Else και CASE n Περιγραφή Flip-Flop µε VHDL n Περιγραφή Ακολουθιακού Κυκλώµατος (βάσει πίνακα/διαγράµµατος καταστάσεων) µε VHDL n Συγχρονισµός µεταξύ Processes 30/01/15 MKM - 47 VHDL Process n Ένα σύνολο από εντολές VHDL το οποίο «εκτελείται» όταν ένα signal (από ένα συγκεκριµένο σύνολο) αλλάζει τιµή. n Ο «κορµός» ( body ) ενός process υλοποιεί ένα σειριακό (sequential) πρόγραµµα, δηλ. οι τιµές των signals ανανεώνονται µόνο όταν ολοκληρωθεί η εκτέλεση του προγράµµατος. n Μπορεί επίσης να χρησιµοποιήσει variables, των οποίων η τιµή ανανεώνεται αµέσως. 30/01/15 MKM - 48 24

Αρχιτεκτονική VHDL architecture name_arch of name is Signal/Variable declaration Component declaration Ταυτόχρονες εντολές (concurrent statements) Process 1 Ταυτόχρονες εντολές (concurrent statements) Process 2 Ταυτόχρονες εντολές (concurrent statements) end name_arch; Το κάθε process περιέχει ακολουθιακές εντολές (sequential statements), αλλά όλα τα processes εκτελούνται ταυτόχρονα 30/01/15 MKM - 49 VHDL Process P1: process (<sensitivity list>) <variable declarations> <sequential statements> end process P1; Μέσα σε ένα process: Ανάθεση µεταβλητών (variables) Προαιρετική σήµανση µε := και άµεση ενηµέρωση. Ανάθεση σηµάτων (signals) µε <= και η ενηµέρωση γίνετε στο τέλος του process. 30/01/15 MKM - 50 25

Signals Vs Variables σε ένα Process Θεωρείστε ότι A, B, και C είναι ακέραιοι µε A=1, B=5, και C=10. A, B, C: signals A, B, C: variables process process B <= A; B := A; C <= B; C := B; end process; end process; B = 1 και C = 5 B = 1 και C = 1 ( χρησιµοποιεί την ( χρησιµοποιεί την αρχική τιµή του νέα τιµή B (=5) όταν του B (=1) όταν υπολογίζει το C ) υπολογίζει το C ) 30/01/15 MKM - 51 Εντολή If-Then-Else [if_label:] if boolean_expression then { sequential_statement; } { elsif boolean_expression then { sequential_statement; } } [ else { sequential_statement; } ] end if [ if_label ]; Σύµβαση: [ ] -- προαιρετικό { } επανάληψη δυνατή 30/01/15 MKM - 52 26

Εντολή CASE [case_label:] case expression is { when choice => { sequential statement; } } [ when others => { sequential statement; } ] end case [case_label]; 30/01/15 MKM - 53 Περιγραφή Flip-Flop µε VHDL: Θετικά Ακµοπυροδοτούµενο D-FF µε Ασύγχρονη Αρχικοποίηση n Δήλωση Οντότητας: -- Positive Edge-Triggered D Flip-Flop with Reset: -- VHDL Process Description library ieee; use ieee.std_logic_1164.all; entity dff is port(clk, RESET, D: in std_logic; Q, Q_n: out std_logic); end dff; RESET D dff Q Q_n CLK 30/01/15 MKM - 54 27

Περιγραφή Flip-Flop µε VHDL: Θετικά Ακµοπυροδοτούµενο D-FF µε Ασύγχρονη Αρχικοποίηση n Αρχιτεκτονική: architecture pet_pr of dff is -- Implements positive edge-triggered bit state storage -- with asynchronous reset. signal state: std_logic; Q <= state; Q_n <= not state; process (CLK, RESET) if (RESET = '1') then state <= '0'; else Καθορίζει τον τύπο πυροδότησης του FF RESET if (CLK'event and CLK = '1') then state <= D; end if; CLK end if; end process; Q(t+1) = D(t).RESET end pet_pr; 30/01/15 MKM - 55 D dff Q Q_n Ακολουθιακό Κύκλωµα σε VHDL Ανιχνευτής Ακολουθίας n Θυµηθείτε το παράδειγµα του ανιχνευτή της ακολουθίας 0101, µε µία είσοδο (X) και µία έξοδο (Z). Διάγραµµα Καταστάσεων: 1/0 0/0 1/1 0/0 1/0 0/0 Α Β C D 1/0 0/0 30/01/15 MKM - 56 28

Ανιχνευτής Ακολουθίας σε VHDL (συν.) n Χρησιµοποιούµε 3 ξεχωριστά processes, τα οποία εκτελούνται παράλληλα. n Ο συγχρονισµός µεταξύ των διαφόρων processes επιτυγχάνεται από την αλληλοεπίδραση κοινών signals. n 3 processes: n Στοιχεία Μνήµης (storage cct) state_register n Λογική Εισόδων FFs (next state logic) next_state_func n Λογική Εξόδων (primary output logic) output_func 30/01/15 MKM - 57 Ανιχνευτής Ακολουθίας σε VHDL (συν.) n Ορίζουµε ένα scalar enumeration type για αναπαράσταση των 4 ων καταστάσεων: n type state_type is (A, B, C, D); n Ακολούθως, δηλώνουµε signals ή variables για την παρούσα και την επόµενη κατάσταση: n signal state, next_state : state_type; n state και next_state µπορούν να πάρουν µόνο την τιµή A, B, C, ή D. Προσπάθεια ανάθεσης οποιασδήποτε άλλης τιµής θα δώσει λάθος στην συµβολοµετάφραση. 30/01/15 MKM - 58 29

Δήλωση Οντότητας & Αρχιτεκτονικής -- Sequence Recognizer: VHDL Process Description library ieee; use ieee.std_logic_1164.all; entity seq_rec is port(clk, RESET, X: in std_logic; Z: out std_logic); end seq_rec; architecture process_3 of seq_rec is type state_type is (A, B, C, D); signal state, next_state : state_type; end; 30/01/15 MKM - 59 Process για Στοιχεία Μνήµης (State Register) -- Process 1 - state_register: implements positive edge-triggered -- state storage with asynchronous reset. state_register: process (CLK, RESET) if (RESET = '1') then state <= A; else if (CLK'event and ClK = '1') then state <= next_state; end if; end if; end process; n Πόσα FFs; Εξαρτάται από τον αριθµό των τιµών που µπορούν να πάρουν τα signals state & next_state! Για αυτή την περίπτωση, υπάρχουν 4 δυνατές καταστάσεις (A, B, C, D) και, εποµένως, θα χρησιµοποιηθούν 2 FFs. 30/01/15 MKM - 60 30

Process για Συναρτήσεις Επόµενης Κατάστασης (Next State Functions) -- Process 2 - next_state_function: implements -- next state as function of input X and state. next_state_func: process (X, state) case state is when A => if X = '1' then next_state <= B; else next_state <= A; end if; when B => if X = '1' then next_state <= C; else next_state <= A; end if; when C => if X = '1' then next_state <= C; else next_state <= D; end if; when D => if X = '1' then next_state <= B; else next_state <= A; end if; end case; end process; Πίνακας Καταστάσεων next_state Z state X=1 X=0 X=1 X=0 A B A 0 0 B C A 0 0 C C D 0 0 D B A 1 0 30/01/15 MKM - 61 Process για Συνάρτηση Εξόδου (Output State Function) -- Process 3 - output_function: -- implements output as function of -- input X and state. output_func: process (X, state) case state is when A => Z <= '0'; when B => Z <= '0'; when C => Z <= '0'; when D => if X = '1' then Z <= '1'; else Z <= '0'; end if; end case; end process; Υπονοεί µοντέλο Mealy Πίνακας Καταστάσεων next_state Z state X=1 X=0 X=1 X=0 A B A 0 0 B C A 0 0 C C D 0 0 D B A 1 0 30/01/15 MKM - 62 31

Συγχρονισµός µεταξύ των processes n state_register: process (CLK, RESET) n state ανανεώνεται βάσει των CLK και RESET n next_state_func: process (X, state) n next_state ανανεώνεται βάσει των X και state n output_func: process (X, state) n Z ανανεώνεται βάσει των X και state 30/01/15 MKM - 63 Συγχρονισµός (συν.) n Θεωρείστε την ακόλουθη περίπτωση: χρόνος t 0 χρόνος t 1 χρόνος t 2 state = D X=0 X=1 X=1 Z=1 next_state = A next_state =? RESET=0 Z=0 Z=? CLK=0 RESET=0 RESET=0 CLK=0 CLK=0 Χρησιµοποιεί τις τιµές των state και X στον χρόνο t 0 για να υπολογίσει το next_state 30/01/15 MKM - 64 32

Συγχρονισµός (συν.) n Θεωρείστε την ακόλουθη περίπτωση : χρόνος t 0 χρόνος t 1 χρόνος t 2 state = D X=0 X=1 X=1 Z=1 next_state = A next_state = A RESET=0 Z=0 Z=0 CLK=0 RESET=0 RESET=0 CLK=0 CLK=0 Χρησιµοποιεί τις τιµές των state και X στον χρόνο t 0 για να υπολογίσει το next_state αφού CLK 30/01/15 MKM - 65 33