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

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

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

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

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

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

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

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

Library, package και subprograms

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

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

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

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

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

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

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

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

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

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

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

Structural VHDL. Structural VHDL

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

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

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

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

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

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

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

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήµιο Θεσσαλίας

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


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

VHDL Introduction. Subtitle

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

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

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

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

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

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

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

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

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

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


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

(Peter Ashenden, The Students Guide to VHDL)

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

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

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

Σχεδιασμος Ολοκληρωμένων Κυκλωμάτων με Χρήση VHDL: Πρακτικά Θέματα

Τυπικζσ Γλϊςςεσ Περιγραφισ Υλικοφ Διάλεξθ 4

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ

Ενσωματωμένα Συστήματα

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

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

Σχεδιασµός Συστηµάτων µε VHDL. (Peter Ashenden, The Students Guide to VHDL)

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

Ενςωματωμένα Συςτήματα Υλοποίηςη του SDES ςε Hardware

Ενσωματωμένα Συστήματα

Σχεδίαση σε VHDL και υλοποίηση σε FPGA Μονάδας Παραγωγής Μουσικού Σήματος

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

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

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

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

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

Λογική Σχεδίαση Ι - Εξεταστική Φεβρουαρίου 2013 Διάρκεια εξέτασης : 160 Ονοματεπώνυμο : Α. Μ. Έτος σπουδών:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ, ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ

Ενότητα 6 ΑΝΑΛΥΣΗ & ΣΥΝΘΕΣΗ ΣΥΝΔΥΑΣΤΙΚΗΣ ΛΟΓΙΚΗΣ ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ ΠΟΛΛΩΝ ΕΠΙΠΕΔΩΝ

Βαζικές Δνόηηηες VHDL

ΨΗΦΙΑΚΗ ΣΧΔΓΙΑΣΗ (Θεωπία) Θέμαηα Δξεηάζεων

Transcript:

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

ΔΟΜΗ ΠΑΡΟΥΣΙΑΣΗΣ Συνδυαστική και ακολουθιακή σχεδίαση Συντρέχων κώδικας Ακολουθιακός κώδικας Η εντολή when Η εντολή generate Η εντολή block Βασικά ακολουθιακά κυκλώματα 2

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

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

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

ΠΑΡΑΔΕΙΓΜΑ Έστω τρεις εντολές stat1, stat2, stat3 που εκτελούνται παράλληλα Τότε όλες οι παρακάτω δηλώσεις stat1 ή stat2 ή stat3 κλπ stat2 ή stat1 ή stat1 stat3 ή stat3 ή stat2 περιγράφουν το ίδιο ακριβώς κύκλωμα!!! Εκ κατακλείδι, όταν επιθυμείται περιγραφή συνδυαστικού κυκλώματος χρησιμοποιείται συντρέχων γραφή κώδικα 6

ΤΕΛΕΣΤΕΣ 7

ΤΕΛΕΣΤΕΣ: ΠΑΡΑΔΕΙΓΜΑ --------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------- ENTITY mux IS END mux; PORT (a, b, c, d, s, s1: IN STD_LOGIC; y: OUT STD_LOGIC); --------------------------------------- ARCHITECTURE pure_logic OF mux IS BEGIN y <= END pure_logic; (a AND NOT s1 AND NOT s) OR (b AND NOT s1 AND s) OR (c AND s1 AND NOT s) OR (d AND s1 AND s); --------------------------------------- 8

Η ΕΝΤΟΛΗ WHEN Η εντολή when μπορεί να χρησιμοποιηθεί με δύο μορφές Η απλή when (when/else) Με δυνατότητα επιλογής (with/select/when) H απλή when συντάσσεται όπως παρακάτω εκχώρηση WHEN συνθήκη ELSE εκχώρηση WHEN συνθήκη ELSE...; 9

ΠΑΡΑΔΕΙΓΜΑ 1 outp <= "" WHEN (inp='' OR reset='1') ELSE "1" WHEN ctl='1' ELSE "1"; 1

ΠΑΡΑΔΕΙΓΜΑ 2 LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------- ENTITY mux IS END mux; PORT (a, b, c, d: IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR (1 DOWNTO ); y: OUT STD_LOGIC); ------------------------------------------- ARCHITECTURE mux1 OF mux IS BEGIN y <= a WHEN sel= ELSE b WHEN sel= 1 ELSE c WHEN sel= 1 ELSE d; END mux1; ------------------------------------------- 11

ΠΑΡΑΔΕΙΓΜΑ 3 12

ΠΑΡΑΔΕΙΓΜΑ 4 (1/2) 13

ΠΑΡΑΔΕΙΓΜΑ 4 (2/2) 14

Η ΕΝΤΟΛΗ WHEN ΜΕ ΕΠΙΛΟΓΗ Συντάσσεται όπως παρακάτω WITH αναγνωριστικό SELECT εκχώρηση WHEN τιμή, εκχώρηση WHEN τιμή,...; Πρέπει να ελέγχονται όλες οι περιπτώσεις Αλλιώς πρέπει να χρησιμοποιείται το others 15

ΠΑΡΑΔΕΙΓΜΑ 1 ------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------- ENTITY mux IS PORT (a, b, c, d: IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR (1 DOWNTO ); y: OUT STD_LOGIC); END mux; ------------------------------------------- ARCHITECTURE mux2 OF mux IS BEGIN WITH sel SELECT y <= a WHEN, -- notice, instead of ; b WHEN 1, c WHEN 1, d WHEN OTHERS; -- cannot be d WHEN 11 END mux2; -------------------------------------------- 16

ΠΑΡΑΔΕΙΓΜΑ 2 ---------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; ---------------------------------------------- ENTITY mux IS PORT (a, b, c, d: IN STD_LOGIC; sel: IN INTEGER RANGE TO 3; y: OUT STD_LOGIC); END mux; ---------------------------------------------- ARCHITECTURE mux3 OF mux IS BEGIN WITH sel SELECT y <= a WHEN, b WHEN 1, c WHEN 2, d WHEN 3; -- here, 3 or OTHERS are equivalent, END mux3; -- for all options are tested anyway ----------------------------------------------- 17

ΠΑΡΑΔΕΙΓΜΑ 3 ---------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.all; ---------------------------------------------- ENTITY tri_state IS PORT (ena: IN STD_LOGIC; input: IN STD_LOGIC_VECTOR (7 DOWNTO ); output: OUT STD_LOGIC_VECTOR (7 DOWNTO )); END tri_state; ---------------------------------------------- ARCHITECTURE tri_state OF tri_state IS BEGIN output <= input WHEN (ena='') ELSE (OTHERS => Z ); END tri_state; ---------------------------------------------- 18

ΠΡΟΣΟΜΟΙΩΣΗ 19

ΠΑΡΑΔΕΙΓΜΑ 4 LIBRARY ieee; USE ieee.std_logic_1164.all; --------------------------------------------- ENTITY encoder IS PORT (x: IN STD_LOGIC_VECTOR (7 DOWNTO ); END encoder; y: OUT STD_LOGIC_VECTOR (2 DOWNTO )); --------------------------------------------- ARCHITECTURE encoder2 OF encoder IS BEGIN WITH x SELECT y <= "" WHEN "1", END encoder2; --------------------------------------------- "1" WHEN "1", "1" WHEN "1", "11" WHEN "1", "1" WHEN "1", "11" WHEN "1", "11" WHEN "1", "111" WHEN "1", "ZZZ" WHEN OTHERS; 2

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ (1/4) 21

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ (2/4) 22

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ (3/4) 2 LIBRARY ieee; 3 USE ieee.std_logic_1164.all; 4 USE ieee.std_logic_unsigned.all; 5 ---------------------------------------------- 6 ENTITY ALU IS 7 PORT (a, b: IN STD_LOGIC_VECTOR (7 DOWNTO ); 8 sel: IN STD_LOGIC_VECTOR (3 DOWNTO ); 9 cin: IN STD_LOGIC; 1 y: OUT STD_LOGIC_VECTOR (7 DOWNTO )); 11 END ALU; 12 ---------------------------------------------- 13 ARCHITECTURE dataflow OF ALU IS 14 SIGNAL arith, logic: STD_LOGIC_VECTOR (7 DOWNTO ); 15 BEGIN 16 ----- Arithmetic unit: ------ 17 WITH sel(2 DOWNTO ) SELECT 18 arith <= a WHEN "", 19 a+1 WHEN "1", 2 a-1 WHEN "1", 21 b WHEN "11", 23

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ (4/4) 22 b+1 WHEN "1", 23 b-1 WHEN "11", 24 a+b WHEN "11", 25 a+b+cin WHEN OTHERS; 26 ----- Logic unit: ----------- 27 WITH sel(2 DOWNTO ) SELECT 28 logic <= NOT a WHEN "", 29 NOT b WHEN "1", 3 a AND b WHEN "1", 31 a OR b WHEN "11", 32 a NAND b WHEN "1", 33 a NOR b WHEN "11", 34 a XOR b WHEN "11", 35 NOT (a XOR b) WHEN OTHERS; 36 -------- Mux: --------------- 37 WITH sel(3) SELECT 38 y <= arith WHEN '', 39 logic WHEN OTHERS; 4 END dataflow; 41 ---------------------------------------------- 24

ΠΡΟΣΟΜΟΙΩΣΗ 25

Η ΕΝΤΟΛΗ GENERATE Η εντολή generate μπορεί να χρησιμοποιηθεί με δύο μορφές Η απλή generate (for/generate) Με δυνατότητα συνθήκης (if/generate) Στη generate θα πρέπει πάντα να χρησιμοποιείται ετικέτα H απλή generate συντάσσεται όπως παρακάτω ετικέτα: FOR αναγνωριστικό IN εύρος GENERATE δηλώσεις END GENERATE; 26

ΠΑΡΑΔΕΙΓΜΑ 1 SIGNAL x: BIT_VECTOR (7 DOWNTO ); SIGNAL y: BIT_VECTOR (15 DOWNTO ); SIGNAL z: BIT_VECTOR (7 DOWNTO );... G1: FOR i IN x'range GENERATE z(i) <= x(i) AND y(i+8); END GENERATE; 27

ΠΑΡΑΔΕΙΓΜΑ 2 ------------------------------------------------ LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------------ ENTITY shifter IS PORT (inp: IN STD_LOGIC_VECTOR (3 DOWNTO ); sel: IN INTEGER RANGE TO 4; outp: OUT STD_LOGIC_VECTOR (7 DOWNTO )); END shifter; ------------------------------------------------ ARCHITECTURE shifter OF shifter IS SUBTYPE vector IS STD_LOGIC_VECTOR (7 DOWNTO ); TYPE matrix IS ARRAY (4 DOWNTO ) OF vector; SIGNAL row: matrix; BEGIN row() <= "" & inp; G1: FOR i IN 1 TO 4 GENERATE row(i) <= row(i-1)(6 DOWNTO ) & ''; END GENERATE; outp <= row(sel); END shifter; ------------------------------------------------ 28

ΠΡΟΣΟΜΟΙΩΣΗ 29

GENERATE ΜΕ ΣΥΝΘΗΚΗ Συντάσσεται όπως παρακάτω ετικέτα1: FOR αναγνωριστικό IN εύρος GENERATE... ετικέτα 2: IF συνθήκη GENERATE δηλώσεις END GENERATE; END GENERATE; Μπορεί να χρησιμοποιηθεί και με αντίθετη σειρά 3

Η ΕΝΤΟΛΗ BLOCK Η εντολή block μπορεί να χρησιμοποιηθεί με δύο μορφές Την απλή block (simple block) Την φρουρούμενη block (guarded block) Η απλή block χρησιμοποιείται για ομαδοποίηση του κώδικα Χρησιμοποιείται σε μεγάλα τμήματα ενός ευρήτερου κώδικα Συντάσσεται όπως παρακάτω Ετικέτα: BLOCK [τμήμα δηλώσεων] BEGIN (παράλληλες δηλώσεις κώδικα) END BLOCK ετικέτα; 31

ΠΑΡΑΔΕΙΓΜΑ 1 ARCHITECTURE example... BEGIN... block1: BLOCK BEGIN... END BLOCK block1... block2: BLOCK BEGIN... END BLOCK block2;... END example; 32

ΠΑΡΑΔΕΙΓΜΑ 2 b1: BLOCK SIGNAL a: STD_LOGIC; BEGIN a <= input_sig WHEN ena='1' ELSE 'Z'; END BLOCK b1; 33

ΦΡΟΥΡΟΥΜΕΝΗ BLOCK H φρουρούμενη block εμπεριέχει μια επιπλέον παράμετρο που καλείται «φρουρός» Η εντολή εκτελείται όταν ικανοποιείται ο «φρουρός» Συντάσσεται όπως παρακάτω ετικέτα: BLOCK (έκφραση) [δηλώσεις] BEGIN (παράλληλες φρουρούμενες ή όχι δηλώσεις) END BLOCK ετικέτα; 34

1 ------------------------------- ΠΑΡΑΔΕΙΓΜΑ 2 LIBRARY ieee; 3 USE ieee.std_logic_1164.all; 4 ------------------------------- 5 ENTITY dff IS 6 PORT ( d, clk, rst: IN STD_LOGIC; 7 q: OUT STD_LOGIC); 8 END dff; 9 ------------------------------- 1 ARCHITECTURE dff OF dff IS 11 BEGIN 12 b1: BLOCK (clk'event AND clk='1') 13 BEGIN 14 q <= GUARDED '' WHEN rst='1' ELSE d; 15 END BLOCK b1; 16 END dff; 35

ΣΥΝΕΝΩΣΗ ΚΑΛΩΔΙΩΝ a b 5 4 1 d c SIGNAL a: STD_LOGIC_VECTOR(3 DOWNTO ); SIGNAL b: STD_LOGIC_VECTOR(4 DOWNTO ); SIGNAL c: STD_LOGIC; SIGNAL d: STD_LOGIC_VECTOR(9 DOWNTO ); d <= a & b & c; 36

ΔΙΑΣΠΑΣΗ ΚΑΛΩΔΙΩΝ d 1 4 5 a b c SIGNAL a: STD_LOGIC_VECTOR(3 DOWNTO ); SIGNAL b: STD_LOGIC_VECTOR(4 DOWNTO ); SIGNAL c: STD_LOGIC; SIGNAL d: STD_LOGIC_VECTOR(9 DOWNTO ); a <= d(9 downto 6); b <= d(5 downto 1); c <= d(); 37

ΣΤΑΘΕΡΗ ΟΛΙΣΘΗΣΗ ΣΤΗ VHDL SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO ); SIGNAL AshiftR: STD_LOGIC_VECTOR(3 DOWNTO ); A>>1 A(3) A(2) A(1) A() A A(3) A(2) A(1) AshiftR AshiftR (3)<= ; AshiftR (2 downto )<=A(3 DOWNTO 1); 38

ΣΤΑΘΕΡΗ ΠΕΡΙΣΤΡΟΦΗ ΣΤΗ VHDL SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO ); SIGNAL ArotL: STD_LOGIC_VECTOR(3 DOWNTO ); A(3) A(2) A(1) A() A A<<<1 ArotL A(2) A(1) A() A(3) ArotL() <=A(3); ArotL(3 DOWNTO 1) <=A(2 DOWNTO ); 39

ΔΙΑΔΟΧΙΚΟΙ ΠΟΛΥΠΛΕΚΤΕΣ (1/2) w 3 w 2 1 y w 1 1 s2 s1 4

ΔΙΑΔΟΧΙΚΟΙ ΠΟΛΥΠΛΕΚΤΕΣ (2/2) LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY mux_cascade IS PORT (w1, w2, w3: IN STD_LOGIC ; s1, s2 : IN STD_LOGIC ; y : OUT STD_LOGIC ) ; END mux_cascade ; ARCHITECTURE dataflow OF mux_cascade IS BEGIN y <= w1 WHEN s1 = 1' ELSE w2 WHEN s2 = 1 ELSE w3 ; END dataflow ; 41

2 σε 4 ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ (1/2) En w 1 w y 3 y 2 y 1 y 1 1 w 1 y 3 1 1 1 w y 2 1 1 1 y 1 1 1 1 1 En y x x 42

2 σε 4 ΑΠΟΚΩΔΙΚΟΠΟΙΗΤΗΣ (2/2) LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY dec2to4 IS PORT ( w : IN STD_LOGIC_VECTOR(1 DOWNTO ) ; En : IN STD_LOGIC ; y : OUT STD_LOGIC_VECTOR(3 DOWNTO ) ) ; END dec2to4 ; ARCHITECTURE dataflow OF dec2to4 IS SIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO ) ; BEGIN Enw <= En & w ; WITH Enw SELECT y <= 1" WHEN "1", "1" WHEN "11", "1" WHEN "11", 1" WHEN "111", "" WHEN OTHERS ; END dataflow ; 43

ΚΩΔΙΚΟΠΟΙΗΤΗΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ (1/2) w w 1 w 2 w 3 y y 1 z w 3 w 2 w 1 w y 1 y z 1 1 x 1 x x 1 x x x d 1 d 1 1 1 1 1 1 1 44

ΚΩΔΙΚΟΠΟΙΗΤΗΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ LIBRARY ieee ; USE ieee.std_logic_1164.all ; (2/2) ENTITY priority IS PORT ( w : IN STD_LOGIC_VECTOR(3 DOWNTO ) ; y : OUT STD_LOGIC_VECTOR(1 DOWNTO ) ; z : OUT STD_LOGIC ) ; END priority ; ARCHITECTURE dataflow OF priority IS BEGIN y <= "11" WHEN w(3) = '1' ELSE "1" WHEN w(2) = '1' ELSE "1" WHEN w(1) = '1' ELSE "" ; z <= '' WHEN w = "" ELSE '1' ; END dataflow ; 45

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