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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Library, package και subprograms

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

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

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο Διάλεξη 8 η : Μηχανές Πεπερασμένων Κaταστάσεων σε FPGAs

Structural VHDL. Structural VHDL

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

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

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

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

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

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

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

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

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

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

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

(Peter Ashenden, The Students Guide to VHDL)

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

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

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


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

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

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

Ελίνα Μακρή

VHDL Introduction. Subtitle

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

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

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

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

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

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

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

ΣΧΕΔΙΑΣΜΟΣ ΚΥΚΛΩΜΑΤΩΝ ΠΑΡΑΜΕΤΡΙΚΗΣ ΜΕΤΑΒΟΛΗΣ ΣΥΧΝΟΤΗΤΑΣ ΚΑΙ DUTY CYCLE ΠΑΛΜΟΥ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL

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

Κεφάλαιο 5 ο Προγραμματισμός Ολοκληρωμένων Κυκλωμάτων


K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops

inputs outputs Σχήμα 3.1: Σχηματική παράσταση της λειτουργίας του testbench

Μετρητής Ριπής ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ. Αναφορά 9 ης. εργαστηριακής άσκησης: ΑΦΡΟΔΙΤΗ ΤΟΥΦΑ Α.Μ.:

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

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

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

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

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

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ

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

ΗΥ220: Εργαστήριο σχεδίασης ψηφιακών κυκλωμάτων Χριστόφορος Κάχρης

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ (Τ.Ε.Ι.) ΚΡΗΤΗΣ Τµήµα Εφαρµοσµένης Πληροφορικής & Πολυµέσων. Ψηφιακή Σχεδίαση. Κεφάλαιο 5: Σύγχρονη Ακολουθιακή

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

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

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

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

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

Κεφάλαιο 6. Σύγχρονα και ασύγχρονα ακολουθιακά κυκλώματα

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

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

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

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

Κεφάλαιο 4 ο Σχεδίαση Κυκλωμάτων με χρήση της γλώσσας VHDL

Πρότυπο περιφερειακής ολίσθησης για ψηφιακά. Std ) Δημήτρης Νικολός, Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής, Παν.

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

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

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

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

Σχεδίαση κυκλωμάτων επικοινωνίας με απλές οθόνες, με τη γλώσσα VHDL και υλοποίηση στις αναπτυξιακές πλακέτες LP-2900 και DE2.

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

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

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

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

Transcript:

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Ακολουθιακός Κώδικας Παρασκευάς Κίτσος http://diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Tμήμα Μηχανικών Πληροφορικής ΤΕ E-mail: pkitsos@teimes.gr Αντίρριο 25/11/2016 1

ΔΟΜΗ ΠΑΡΟΥΣΙΑΣΗΣ Συνδυαστική και ακολουθιακή σχεδίαση Διεργασία (process) Σήματα και μεταβλητές Η εντολή If Η εντολή Wait Η εντολή Case Η εντολή Loop Case έναντι If Case έναντι When Χρονισμός ρολογιού Σχεδιασμός συνδυαστικών κυκλωμάτων με ακολουθιακό κώδικα 2

ΣΥΝΔΥΑΣΤΙΚΗ ΚΑΙ ΑΚΟΛΟΥΘΙΑΚΗ ΛΟΓΙΚΗ Είσοδος Συνδυαστικό Λογικό Κύκλωμα Έξοδος Είσοδος Συνδυαστικό Λογικό Κύκλωμα Έξοδος Κατάσταση Συνδυαστικό Ακολουθιακό Στο συνδυαστικό κύκλωμα οι έξοδοι εξαρτώνται αποκλειστικά από τις παρούσες εισόδους Στο ακολουθιακό κύκλωμα οι έξοδοι εξαρτώνται από προηγούμενες εισόδους Οπότε απαιτείται ένα στοιχείο μνήμης το οποίο συνδέεται με το συνδυαστικό κύκλωμα μέσω ενός μονοπατιού ανάδρασης 3

ΤΡΟΠΟΙ ΠΕΡΙΓΡΑΦΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Τύποι περιγραφής VHDL συντρέχων dataflow εκτελείται παράλληλα με χρήση υποκυκλωμάτων structural υποκυκλώματα και διασυνδέσεις Testbenches ακολουθιακός behavioral (sequential) εκτελείται ακολουθιακά Registers State machines Instruction decoders Κώδικας κατάλληλος για σύνθεση 4

ΣΥΝΤΡΕΧΩΝ ΚΑΙ ΑΚΟΛΟΥΘΙΑΚΟΣ ΚΩΔΙΚΑΣ Ο VHDL κώδικας είναι από τη φύση του συντρέχων (εκτελείται παράλληλα) Μόνο ο κώδικας μέσα στις εντολές process, function και procedure εκτελείται σειριακά (ακολουθιακά) Συνολικά όμως οι παραπάνω εντολές εκτελούνται παράλληλα με τα υπόλοιπα τμήματα του κώδικα 5

ΔΙΕΡΓΑΣΙΑ (PROCESS) H διεργασία εκτελείται ακολουθιακά Χαρακτηρίζεται από την παρουσία εντολών If, Wait, Case και Loop Και από την ύπαρξη μιας λίστας ευαισθησίας Εκτελείται κάθε φορά που αλλάζει τιμή κάποιο σήμα στη λίστα ευαισθησίας Συντάσσεται όπως βλέπουμε παρακάτω [ετικέτα]: Process (λίστα ευαισθησίας) begin [variable όνομα τύπος [εύρος] [:=αρχική τιμή;]] (ακολουθιακός κώδικας) End process [ετικέτα]; Η χρήση των μεταβλητών είναι προαιρετική 6

ΠΑΡΑΔΕΙΓΜΑ -------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; -------------------------------------- ENTITY dff IS END dff; PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC); -------------------------------------- ARCHITECTURE behavior OF dff IS PROCESS (clk, rst) IF (rst= 1 ) THEN q <= 0 ; ELSIF (clk EVENT AND clk= 1 ) THEN END IF; END PROCESS; END behavior; q <= d; 7

ΣΗΜΑΤΑ ΚΑΙ ΜΕΤΑΒΛΗΤΕΣ Τα σήματα (signals) και οι μεταβλητές (variables) χρησιμοποιούνται για τη μεταβίβαση στατικών τιμών Το σήμα μπορεί να δηλωθεί σε ένα πακέτο (package) σε μια οντότητα (entity) ή σε μια architecture Το σήμα έχει καθολική εμβέλεια Η μεταβλητή έχει τοπική εμβέλεια Δεν μπορεί να μεταδοθεί έξω από τη διεργασία που χρησιμοποιείται Η ενημέρωση ενός αντικειμένου τύπου variable μπορεί να γίνει άμεσα (στην επόμενη γραμμή) Το σήμα αντίθετα (μέσα σε μια process) δεν μπορεί να μεταδοθεί άμεσα 8

Η ΕΝΤΟΛΗ IF H εντολή If συντάσσεται όπως παρακάτω Ιf συνθήκες Then αποδόσεις τιμών; Elsif συνθήκες Then αποδόσεις τιμών; Else αποδόσεις τιμών; End if; H άσκοπη χρήση έχει αρνητικές συνέπειες Η εντολή if/else μπορεί να οδηγήσει στη δημιουργία ενός μη απαραίτητου κωδικοποιητή προτεραιότητας 9

LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------------- ENTITY counter IS PORT (clk : IN STD_LOGIC; END counter; ΠΑΡΑΔΕΙΓΜΑ digit : OUT INTEGER RANGE 0 TO 9); --------------------------------------------- ARCHITECTURE counter OF counter IS count: PROCESS(clk) VARIABLE temp : INTEGER RANGE 0 TO 10; IF (clk EVENT AND clk= 1 ) THEN END IF; digit <= temp; END PROCESS count; END counter; temp := temp + 1; IF (temp=10) THEN END IF; temp := 0; 10

Η ΕΝΤΟΛΗ WAIT H εντολή Wait συντάσσεται όπως παρακάτω (τρείς περιπτώσεις) Wait Until συνθήκη_σήματος; ή ή Wait On σήμα1 [,σήμα2, ]; Wait For χρόνος; Όταν χρησιμοποιείται η εντολή wait η διεργασία δεν πρέπει να έχει λίστα ευαισθησίας Η εντολή wait for χρησιμοποιείται μόνο για προσομοίωση του κυκλώματος 11

ΠΑΡΑΔΕΙΓΜΑ LIBRARY ieee; USE ieee.std_logic_1164.all; -------------------------------------- ENTITY dff IS PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC); END dff; -------------------------------------- ARCHITECTURE dff OF dff IS PROCESS WAIT ON rst, clk; IF (rst= 1 ) THEN q <= 0 ; ELSIF (clk EVENT AND clk= 1 ) THEN q <= d; END IF; END PROCESS; END dff; 12

Η ΕΝΤΟΛΗ CASE (1/2) H εντολή Case συντάσσεται όπως παρακάτω Case αναγνωριστικό is When τιμή => αποδόσεις τιμών; When τιμή => αποδόσεις τιμών; End Case; Στις αποδόσεις των τιμών (when τιμή) πρέπει να εξεταστούν όλοι οι δυνατοί συνδυασμοί του αναγνωριστικού Χρησιμοποιείται η λέξη-κλειδί others Επίσης χρησιμοποιείται η λέξη null όταν δε πρόκειται να συμβεί καμιά πράξη 13

Η ΕΝΤΟΛΗ CASE (2/2) Η τιμή When μπορεί να πάρει τρεις μορφές When τιμή --Μοναδική τιμή When τιμή1 to τιμή2 -Εύρος When τιμή1 τιμή2 --Τιμή1 ή τιμή2 ή 14

ΠΑΡΑΔΕΙΓΜΑ ---------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; ---------------------------------------------- ENTITY dff IS PORT (d, clk, rst: IN BIT; q: OUT BIT); END dff; ---------------------------------------------- ARCHITECTURE dff3 OF dff IS PROCESS (clk, rst) CASE rst IS WHEN 1 => q<= 0 ; WHEN 0 => IF (clk EVENT AND clk= 1 ) THEN q <= d; END IF; WHEN OTHERS => NULL; -- Unnecessary, rst is of type BIT END CASE; END PROCESS; END dff3; 15

Η ΕΝΤΟΛΗ LOOP (1/2) H εντολή Loop (βρόχος) είναι χρήσιμη όταν πρέπει να χρησιμοποιηθεί ένα τμήμα κώδικα πολλές φορές Υπάρχουν διάφοροι τρόποι χρήσης της Loop For/Loop (επαναλαμβάνει συγκεκριμένο αριθμό φορών) [ετικέτα:] For ταυτοποιητής In εύρος Loop (ακολουθιακές εντολές) End Loop [ετικέτα]; 16

Η ΕΝΤΟΛΗ LOOP (2/2) While/loop (Ο βρόχος επαναλαμβάνεται όσο ισχύει κάποια συνθήκη) [ετικέτα:] While συνθήκη Loop (ακολουθιακές εντολές); End Loop [ετικέτα]; Exit (χρησιμοποιείται για τον τερματισμό της εκτέλεσης του βρόχου) [ετικέτα:] EXIT [ετικέτα] [συνθήκη when]; NEXT: Χρησιμοποιείται για την παράλειψη βημάτων του βρόχου [ετικέτα:] NEXT [ετικέτα_βρόχου] [συνθήκη when]; 17

ΠΑΡΑΔΕΙΓΜΑ 1 ------------------------------------------------ LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------------ ENTITY adder IS GENERIC (length : INTEGER := 8); PORT (a, b: IN STD_LOGIC_VECTOR (length-1 DOWNTO 0); cin: IN STD_LOGIC; s: OUT STD_LOGIC_VECTOR (length-1 DOWNTO 0); cout: OUT STD_LOGIC); END adder; ------------------------------------------------ ARCHITECTURE adder OF adder IS PROCESS (a, b, cin) VARIABLE carry : STD_LOGIC_VECTOR (length DOWNTO 0); carry(0) := cin; FOR i IN 0 TO length-1 LOOP s(i) <= a(i) XOR b(i) XOR carry(i); carry(i+1) := (a(i) AND b(i)) OR (a(i) AND carry(i)) OR (b(i) AND carry(i)); END LOOP; cout <= carry(length); END PROCESS; END adder; ------------------------------------------------ 18

ΠΑΡΑΔΕΙΓΜΑ 2 --------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------------- ENTITY barrel IS GENERIC (n: INTEGER := 8); PORT (inp: IN STD_LOGIC_VECTOR (n-1 DOWNTO 0); shift: IN INTEGER RANGE 0 TO 1; outp: OUT STD_LOGIC_VECTOR (n-1 DOWNTO 0)); END barrel; --------------------------------------------- ARCHITECTURE RTL OF barrel IS PROCESS (inp, shift) IF (shift=0) THEN outp <= inp; ELSE outp(0) <= '0'; FOR i IN 1 TO inp'high LOOP outp(i) <= inp(i-1); END LOOP; END IF; END PROCESS; END RTL; 19

CASE ΕΝΑΝΤΙ IF Η εντολή If/Else μπορεί να οδηγήσει στην υλοποίηση ενός κωδικοποιητή προτεραιότητας Σε μερικά σύγχρονα εργαλεία βελτιστοποίησης αυτό δεν συμβαίνει Όταν χρησιμοποιείται για τη περιγραφή ενός συνδυαστικού κυκλώματος προκύπτει συνήθως ένας πολυπλέκτης Με την εντολή Case αυτό δεν συμβαίνει Οι παρακάτω κώδικες υλοποιούν το ίδιο φυσικό κύκλωμα πολυπλέκτη 20

CASE ΕΝΑΝΤΙ WHEN Οι παρακάτω κώδικες οδηγούν στο ίδιο κύκλωμα 21

ΚΑΚΟΣ ΧΡΟΝΙΣΜΟΣ ΡΟΛΟΓΙΟΥ Ο μεταγλωττιστής δε μπορεί να συνθέσει κώδικα που περιέχει αποδόσεις τιμών και στις δύο μεταβάσεις του ίδιου σήματος αναφοράς (ρολόι) Η παρακάτω περίπτωση δεν μπορεί να συντεθεί Όταν απαιτείται τέτοιας μορφής κώδικας χρησιμοποιούνται τεχνικές όπως παρακάτω 22

ΑΚΟΛΟΥΘΙΑΚΟΣ ΚΩΔΙΚΑΣ ΓΙΑ ΣΧΕΔΙΑΣΜΟ ΣΥΝΔΥΑΣΤΙΚΟΥ ΚΥΚΛΩΜΑΤΟΣ Αν ο κώδικας προορίζεται για συνδυαστικό κύκλωμα πρέπει όλος ο πίνακας αλήθειας του να περιγράφεται πλήρως στον κώδικα Θα πρέπει όλα τα σήματα εισόδου που χρησιμοποιούνται στη διεργασία να υπάρχουν στη λίστα ευαισθησίας Θα πρέπει όλοι οι συνδυασμοί των σημάτων εισόδου/εξόδου να περιλαμβάνονται στον κώδικα 23

Σύμβολο D Q Clock D LATCH Πίνακας αλήθειας Clock D 0 1 0 1 1 Q(t+1) Q(t) 0 1 Διάγραμμα χρονισμού Clock D Q t 1 t 2 t 3 t 4 Time 24

Σύμβολο D Q Clock D FLIP-FLOP Πίνακας αλήθειας Clk D 0 1 0 1 Q(t+1) 0 1 Q(t) Q(t) Διάγραμμα χρονισμού Clock D Q t 1 t 2 t 3 t 4 Time 25

ΔΗΜΙΟΥΡΓΙΑ ΚΑΤΑΧΩΡΗΤΩΝ Flip flop παράγεται όταν γίνεται απόδοση τιμής σε ένα αντικείμενο τύπου signal τη στιγμή που κάποιο άλλο σήμα αλλάζει κατάσταση Δηλαδή όταν συμβαίνει μια σύγχρονη απόδοση τιμής Μια τέτοια απόδοση τιμής, είναι σύγχρονη, και παρουσιάζεται μόνο σε μια διεργασία, συνάρτηση ή διαδικασία (με δήλωση if signal event ή wait until ) H variable δεν θα δημιουργήσει απαραίτητα flip flop αν η τιμή του δεν χρησιμοποιηθεί έξω από τη διεργασία (ή τη συνάρτηση ή τη διαδικασία) Αν όμως μια variable παίρνει τιμή τη στιγμή που κάποιο άλλο σήμα αλλάζει κατάσταση και αυτή η τιμή μεταβιβάζεται σε ένα signal τότε παράγεται flip flop H variable παράγει καταχωρητή όταν διαβάζεται πριν αποδοθεί τιμή σε αυτό 26

D FLIP FLOP (1 η ΛΥΣΗ ΛΑΝΘΑΣΜΕΝΗ): ΔΥΟ FLIP FLOP ----------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY dff IS END dff; PORT (d, clk: IN STD_LOGIC; q: BUFFER STD_LOGIC; qbar: OUT STD_LOGIC); ----------------------------------------- ARCHITECTURE two_dff OF dff IS PROCESS (clk) IF (clk EVENT AND clk= 1 ) THEN END IF; END PROCESS; END two_dff; q <= d; qbar <= NOT d; ----------------------------------------- -- generates a register -- generates a register 27

D FLIP FLOP (2 η ΛΥΣΗ ΣΩΣΤΗ): ENA FLIP FLOP ----------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; ----------------------------------------- ENTITY dff IS END dff; PORT (d, clk: IN STD_LOGIC; q: BUFFER STD_LOGIC; qbar: OUT STD_LOGIC); ----------------------------------------- ARCHITECTURE one_dff OF dff IS PROCESS (clk) IF (clk EVENT AND clk= 1 ) THEN END IF; END PROCESS; qbar <= NOT q; END one_dff; q <= d; ----------------------------------------- -- generates a register -- uses logic gate (no register) 28

ΚΥΚΛΩΜΑΤΑ ΤΩΝ ΔΥΟ ΠΑΡΑΔΕΙΓΜΑΤΩΝ 29

ΚΩΔΙΚΑΣ D LATCH LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY latch IS PORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END latch ; D Clock Q ARCHITECTURE behavioral OF latch IS PROCESS ( D, Clock ) IF Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END behavioral; 30

ΚΩΔΙΚΑΣ D FLIP-FLOP LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; D Q Clock ARCHITECTURE behavioral OF flipflop IS PROCESS ( Clock ) IF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END behavioral ; 31

ΚΩΔΙΚΑΣ D FLIP-FLOP LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; D Q Clock ARCHITECTURE behavioral2 OF flipflop IS PROCESS ( Clock ) IF rising_edge(clock) THEN Q <= D ; END IF ; END PROCESS ; END behavioral2; 32

ΚΩΔΙΚΑΣ D FLIP-FLOP LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; D Q Clock ARCHITECTURE behavioral3 OF flipflop IS PROCESS WAIT UNTIL rising_edge(clock) ; Q <= D ; END PROCESS ; END behavioral3 ; 33

D FLIP-FLOP ΜΕ ΑΣΥΓΧΡΟΝH LIBRARY ieee ; USE ieee.std_logic_1164.all ; ΕΠΑΝΑΦΟΡΑ (RESET) ENTITY flipflop_ar IS PORT ( D, Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop_ar ; D Q Clock Resetn ARCHITECTURE behavioral OF flipflop_ar IS PROCESS ( Resetn, Clock ) IF Resetn = 1' THEN Q <= '0' ; ELSIF rising_edge(clock) THEN Q <= D ; END IF ; END PROCESS ; END behavioral ; 34

D FLIP-FLOP ΜΕ ΣΥΓΧΡΟΝΗ ΕΠΑΝΑΦΟΡΑ (RESET) LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop_sr IS PORT ( D, Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop_sr ; ARCHITECTURE behavioral OF flipflop_sr IS PROCESS(Clock) IF rising_edge(clock) THEN IF Resetn = 1' THEN Q <= '0' ; ELSE Q <= D ; END IF ; END IF; END PROCESS ; END behavioral ; D Q Clock Resetn 35

ΣΥΓΧΡΟΝΟ ΕΝΑΝΤΙ ΑΣΥΓΧΡΟΝΟ Στην εντολή IF η ασύγχρονη δήλωση γίνεται Πριν τη δήλωση rising_edge(clock) Στην εντολή IF η σύγχρονη δήλωση γίνεται Μετά τη δήλωση rising_edge(clock) 36

8-BIT ΚΑΤΑΧΩΡΗΤΗΣ ΜΕ ΑΣΥΓΧΡΟΝΟ LIBRARY ieee ; USE ieee.std_logic_1164.all ; RESET ENTITY reg8 IS PORT ( D : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; END reg8 ; ARCHITECTURE behavioral OF reg8 IS PROCESS ( Resetn, Clock ) IF Resetn = '0' THEN Q <= "00000000" ; ELSIF rising_edge(clock) THEN Q <= D ; END IF ; END PROCESS ; END behavioral ;` 8 Resetn 8 D Q Clock reg8 37

8-BIT ΚΑΤΑΧΩΡΗΤΗΣ ΜΕ ΣΗΜΑ LIBRARY ieee ; USE ieee.std_logic_1164.all ; ΕΠΙΤΡΕΨΗΣ (ENABLE) ENTITY regne IS GENERIC ( N : INTEGER := 8 ) ; PORT ( D : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Enable, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END regne ; ARCHITECTURE behavioral OF regne IS PROCESS (Clock) IF rising_edge(clock) THEN IF Enable = '1' THEN Q <= D ; END IF ; END IF; END PROCESS ; END behavioral ; N Enable D Q Clock regn N 38

Απορίες???? 39