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

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

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

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

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

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

Library, package και subprograms

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

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

Structural VHDL. Structural VHDL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

VHDL Introduction. Subtitle

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

(Peter Ashenden, The Students Guide to VHDL)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Μοντελοποίηση Λογικών Κυκλωμάτων

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

Ψηφιακή Λογική και Σχεδίαση

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

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

Παράρτηµα Γ. Τα Βασικά της Λογικής Σχεδίασης. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

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

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

Introduction to IP Cores

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

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

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

Σχεδίαση και υλοποίηση σε FPGA παράλληλης επεξεργασίας μετασχηματισμού Fourier με τεχνική in-place

Σχεδίαση µε CAD tools

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

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

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

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

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

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

ΑΣΚΗΣΗ 8 η -9 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΔΥΑΔΙΚΩΝ ΨΗΦΙΩΝ

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

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

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

ΑΤΕΙ ΚΑΛΑΜΑΤΑΣ ΠΑΡΑΡΤΗΜΑ ΣΠΑΡΤΗΣ. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ της φοιτήτριας: ΓΕΩΡΓΟΥΑΑΚΗ ΑΛΕΞΑΝΔΡΑ του ΣΤΑΥΡΟΥ

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

Προπτυχιακός φοιτητής Σχολής Θετικών Επιστημών τμήματος Φυσικής ΑΠΘ

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

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

Transcript:

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

ΔΟΜΗ ΠΑΡΟΥΣΙΑΣΗΣ Πακέτο Συστατικό στοιχείο Κώδικας με χρήση Συστατικών Στοιχείων Γενικευμένη αντιστοίχιση Παραδείγματα 2

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

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

ΘΕΜΕΛΙΩΔΕΙΣ ΜΟΝΑΔΕΣ ΚΩΔΙΚΑ VHDL 5

ΠΑΚΕΤΟ Στο πακέτο περιέχονται Συστατικά στοιχεία υποκυκλώματα (components) Συναρτήσεις (functions) Διαδικασίες (procedures) Ορισμοί τύπων δεδομένων (types) Σταθερές (constants) Με τα πακέτα επιτρέπεται η κοινοχρησία και η επαναχρησιμοποίηση του κώδικα 6

ΠΑΚΕΤΟ Το πακέτο συντάσσεται όπως παρακάτω PACKAGE όνομα_πακέτου IS (δηλώσεις) END όνομα_πακέτου; [PACKAGE BODY όνομα_πακέτου IS (περιγραφές Συναρτήσεων και Διαδικασιών) END όνομα_πακέτου;] Αποτελείται από δύο μέρη Το πακέτο Package Το σώμα του πακέτου Package Body 7

ΠΑΚΕΤΟ Το πρώτο μέρος (πακέτο) είναι υποχρεωτικό και περιέχει όλες τις δηλώσεις Το δεύτερο μέρος είναι υποχρεωτικό μόνο όταν στο πρώτο μέρος δηλώνονται ένα ή περισσότερα υποπρογράμματα (συναρτήσεις ή διαδικασίες) Τότε περιέχει τις περιγραφές («τα σώματα») των υποπρογραμμάτων Το πακέτο και το σώμα του πακέτου πρέπει να έχουν το ίδιο όνομα 8

ΠΑΡΑΔΕΙΓΜΑ ΑΠΛΟΥ ΠΑΚΕΤΟΥ Έχει όνομα my_package Και περιλαμβάνει μόνο δηλώσεις τύπων δεδομένων Και αντικείμενα τύπου constant Άρα δεν απαιτείται σώμα πακέτου 1 ------------------------------------------------ 4 ------------------------------------------------ 5 PACKAGE my_package IS 6 TYPE state IS (st1, st2, st3, st4); 7 TYPE color IS (red, green, blue); 8 CONSTANT vec: STD_LOGIC_VECTOR(7 DOWNTO 0) := "11111111"; 9 END my_package; 10 ------------------------------------------------ 9

ΠΑΡΑΔΕΙΓΜΑ ΠΑΚΕΤΟΥ ΜΕ ΣΥΝΑΡΤΗΣΗ Περιέχει μια συνάρτηση Άρα απαιτείται σώμα πακέτου 1 ------------------------------------------------- 4 ------------------------------------------------- 5 PACKAGE my_package IS 6 TYPE state IS (st1, st2, st3, st4); 7 TYPE color IS (red, green, blue); 8 CONSTANT vec: STD_LOGIC_VECTOR(7 DOWNTO 0) := "11111111"; 9 FUNCTION positive_edge(signal s: STD_LOGIC) RETURN BOOLEAN; 10 END my_package; 11 ------------------------------------------------- 12 PACKAGE BODY my_package IS 13 FUNCTION positive_edge(signal s: STD_LOGIC) RETURN BOOLEAN IS 14 BEGIN 15 RETURN (s'event AND s='1'); 16 END positive_edge; 17 END my_package; 10

ΤΡΟΠΟΣ ΧΡΗΣΗΣ ΠΑΚΕΤΟΥ Αρχικά το πακέτο μεταγλωττίζεται (στη work) Μετά προσθέτουμε μια USE στο κύριο κώδικα ------------------------------------ LIBRARY ieee; USE ieee.std_logic_1164.all; USE work.my_package.all; ------------------------------------ ENTITY...... ARCHITECTURE...... ------------------------------------ 11

ΣΥΣΤΑΤΙΚΟ ΣΤΟΙΧΕΙΟ (ΥΠΟΚΥΚΛΩΜΑ) Το συστατικό στοιχείο (υποκύκλωμα) είναι ένα τμήμα συμβατικού κώδικα Περιλαμβάνει δηλώσεις βιβλιοθηκών Οντότητες Αρχιτεκτονικές Η δήλωση αυτού του κώδικα με μορφή συστατικού επιτρέπει τη χρήση του σε ένα άλλο κύκλωμα Επιτρέπει τη δόμηση ιεραρχικών σχεδιασμών 12

ΣΥΣΤΑΤΙΚΟ ΣΤΟΙΧΕΙΟ (ΥΠΟΚΥΚΛΩΜΑ) Δίνει τη δυνατότητα επαναχρησιμοποίησης και κοινοχρησίας του κώδικα Flip-flops, πολυπλέκτες, αθροιστές, βασικά κυκλώματα τοποθετούνται μέσα σε μια βιβλιοθήκη και χρησιμοποιούνται όταν απαιτείται σε οποιαδήποτε σχεδιασμό χωρίς συγγραφή του αντίστοιχου κώδικα 13

ΧΡΗΣΗ ΣΥΣΤΑΤΙΚΟΥ ΣΤΟΙΧΕΙΟΥ Για να χρησιμοποιήσουμε ένα συστατικό στοιχείο πρέπει πρώτα να το δηλώσουμε COMPONENT όνομα_συστατικού_στοιχείου IS PORT ( port_name : signal_mode signal_type; port_name : signal_mode signal_type;...); END COMPONENT; Και μετά να δημιουργήσουμε ένα «στιγμιότυπο» του συστατικού στοιχείου ετικέτα: όνομα_συστατικού_στοιχείου PORT MAP (port_list); Η δήλωση του component είναι ακριβώς η ίδια με της process H λίστα_θυρών (port_list) είναι απλώς μια λίστα που συσχετίζει τις θύρες του συγκεκριμένου κυκλώματος με τις θύρες του προσχεδιασμένου στοιχείου που δημιουργήθηκε το στιγμιότυπο 14

ΑΝΤΙΣΤΟΙΧΙΣΗ ΛΙΣΤΑΣ ΘΥΡΩΝ Υπάρχουν δύο τρόποι για την αντιστοίχιση των θυρών Αντιστοίχιση με βάση τη θέση (positional mapping) Ονομαστική αντιστοίχιση (nomimal mapping) COMPONENT inverter IS PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC); END COMPONENT;... U1: inverter PORT MAP (x, y); --positional mapping: Οι θύρες x, y του ευρύτερου κυκλώματος αντιστοιχούν στις θύρες a, b του inverter. U1: inverter PORT MAP (a=>x, b=>y); --nomimal mapping Η positional mapping είναι πιο απλή στη σύνταξη αλλά η nomimal mapping είναι λιγότερο επισφαλής στα λάθη 15

ΣΥΣΤΑΤΙΚΑ ΣΤΟΙΧΕΙΑ ΔΗΛΩΜΕΝΑ ΣΤΟ ΚΩΔΙΚΑ (1/2) 1 ------ File inverter.vhd: ------------------- 4 ENTITY inverter IS 5 PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC); 6 END inverter; 7 ARCHITECTURE inverter OF inverter IS 1 ----- File nand_3.vhd: ---------------------- 8 BEGIN 9 b <= NOT a; 10 END inverter; 4 ENTITY nand_3 IS 5 PORT (a, b, c: IN STD_LOGIC; d: OUT STD_LOGIC); 6 END nand_3; 1 ------ File nand_2.vhd: --------------------- 7 ARCHITECTURE nand_3 OF nand_3 IS 8 BEGIN 9 d <= NOT (a AND b AND c); 4 ENTITY nand_2 IS 10 END nand_3; 5 PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC); 6 END nand_2; 7 ARCHITECTURE nand_2 OF nand_2 IS 8 BEGIN 9 c <= NOT (a AND b); 10 END nand_2; 16

ΣΥΣΤΑΤΙΚΑ ΣΤΟΙΧΕΙΑ ΔΗΛΩΜΕΝΑ ΣΤΟ ΚΩΔΙΚΑ (2/2) 1 ----- File project.vhd: --------------------- 4 ENTITY project IS 5 PORT (a, b, c, d: IN STD_LOGIC; 6 x, y: OUT STD_LOGIC); 7 END project; 8 ARCHITECTURE structural OF project IS 9 ------------- 10 COMPONENT inverter IS 11 PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC); 12 END COMPONENT; 13 ------------- 14 COMPONENT nand_2 IS 15 PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC); 16 END COMPONENT; 17 ------------- 18 COMPONENT nand_3 IS 19 PORT (a, b, c: IN STD_LOGIC; d: OUT STD_LOGIC); 20 END COMPONENT; 21 ------------- 22 SIGNAL w: STD_LOGIC; 23 BEGIN 24 U1: inverter PORT MAP (b, w); -- ή U1: inverter PORT MAP (a=>b, b=>w); 25 U2: nand_2 PORT MAP (a, b, x); -- ή U2: nand_2 PORT MAP (a=>a, b=>b, c=>x); 26 U3: nand_3 PORT MAP (w, c, d, y); -- ή U3: nand_3 PORT MAP (a=>w, b=>c, c=>d, d=>y); 27 END structural; w 17

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

ΣΥΣΤΑΤΙΚΑ ΣΤΟΙΧΕΙΑ ΔΗΛΩΜΕΝΑ ΣΕ ΠΑΚΕΤΟ (1/2) 1 ------ File inverter.vhd: ------------------- 4 ENTITY inverter IS 5 PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC); 6 END inverter; 7 ARCHITECTURE inverter OF inverter IS 1 ----- File nand_3.vhd: ---------------------- 8 BEGIN 9 b <= NOT a; 10 END inverter; 4 ENTITY nand_3 IS 5 PORT (a, b, c: IN STD_LOGIC; d: OUT STD_LOGIC); 6 END nand_3; 1 ------ File nand_2.vhd: --------------------- 7 ARCHITECTURE nand_3 OF nand_3 IS 8 BEGIN 9 d <= NOT (a AND b AND c); 4 ENTITY nand_2 IS 10 END nand_3; 5 PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC); 6 END nand_2; 7 ARCHITECTURE nand_2 OF nand_2 IS 8 BEGIN 9 c <= NOT (a AND b); 10 END nand_2; 19

ΣΥΣΤΑΤΙΚΑ ΣΤΟΙΧΕΙΑ ΔΗΛΩΜΕΝΑ ΣΕ ΠΑΚΕΤΟ (2/2) 1 ----- File my_components.vhd: --------------- 4 PACKAGE my_components IS 5 ------ inverter: ------- 6 COMPONENT inverter IS 7 PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC); 8 END COMPONENT; 9 ------ 2-input nand: --- 10 COMPONENT nand_2 IS 11 PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC); 12 END COMPONENT; 13 ------ 3-input nand: --- 14 COMPONENT nand_3 IS 15 PORT (a, b, c: IN STD_LOGIC; d: OUT STD_LOGIC); 16 END COMPONENT; 17 ------------------------ 18 END my_components; w 1 ----- File project.vhd: --------------------- 4 USE work.my_components.all; 5 --------------------------------- 6 ENTITY project IS 7 PORT ( a, b, c, d: IN STD_LOGIC; 8 x, y: OUT STD_LOGIC); 9 END project; 10 --------------------------------- 11 ARCHITECTURE structural OF project IS 12 SIGNAL w: STD_LOGIC; 13 BEGIN 14 U1: inverter PORT MAP (b, w); 15 U2: nand_2 PORT MAP (a, b, x); 16 U3: nand_3 PORT MAP (w, c, d, y); 17 END structural; 20

ΓΕΝΙΚΕΥΜΕΝΗ ΑΝΤΙΣΤΟΙΧΙΣΗ Με χρήση της εντολής Generic map είναι δυνατό να δημιουργηθεί μια γενικευμένη αντιστοίχιση Η Generic map συντάσσεται όπως παρακάτω ετικέτα: στοιχείο GENERIC MAP (λίστα_παραμ) PORT MAP (λίστα_θυρών); Όμοια σύνταξη με τα προηγούμενα Προστέθηκε η generic με τη λίστα παραμέτρων 21

ΠΑΡΑΔΕΙΓΜΑ ΧΡΗΣΗΣ ΓΕΝΙΚΕΥΜΕΝΗΣ ΑΝΤΙΣΤΟΙΧΙΣΗΣ (1/2) Γεννήτρια άρτιας ισοτιμίας: Η έξοδος πρέπει να έχει άρτιο αριθμό από 1 Προσθέτει bit 0 στην είσοδο αν ο αριθμός των 1 στην είσοδο είναι άρτιος Προσθέτει bit 1 στην είσοδο αν ο αριθμός των 1 στην είσοδο είναι περιττός 22

ΠΑΡΑΔΕΙΓΜΑ ΧΡΗΣΗΣ ΓΕΝΙΚΕΥΜΕΝΗΣ 1 ------ File parity_gen.vhd (component): ------------- 4 ENTITY parity_gen IS 5 GENERIC (n : POSITIVE := 7); -- default is 7 6 PORT ( input: IN BIT_VECTOR (n DOWNTO 0); 7 output: OUT BIT_VECTOR (n+1 DOWNTO 0)); 8 END parity_gen; 9 ----------------------------------- 10 ARCHITECTURE parity OF parity_gen IS 11 BEGIN 12 PROCESS (input) 13 VARIABLE temp1: BIT; ΑΝΤΙΣΤΟΙΧΙΣΗΣ (2/2) 1 ------ File my_code.vhd (actual project): ------------ 4 ENTITY my_code IS 5 GENERIC (n : POSITIVE := 2); -- 2 will overwrite 7 6 PORT ( inp: IN BIT_VECTOR (n DOWNTO 0); 7 outp: OUT BIT_VECTOR (n+1 DOWNTO 0)); 8 END my_code; 9 ----------------------------------- 14 VARIABLE temp2: BIT_VECTOR (output'range); 10 ARCHITECTURE my_arch OF my_code IS 15 BEGIN 11 COMPONENT parity_gen IS 16 temp1 := '0'; 12 GENERIC (n : POSITIVE); 13 PORT (input: IN BIT_VECTOR (n DOWNTO 0); 17 FOR i IN input'range LOOP 14 output: OUT BIT_VECTOR (n+1 DOWNTO 0)); 18 temp1 := temp1 XOR input(i); 15 END COMPONENT; 19 temp2(i) := input(i); 16 ------------------------ 20 END LOOP; 17 BEGIN 21 temp2(output'high) := temp1; 18 C1: parity_gen GENERIC MAP(n) PORT MAP(inp, outp); 22 output <= temp2; 19 END my_arch; 23 END PROCESS; 24 END parity; 23

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

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

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

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ (3/6) 1 -------- COMPONENT arith_unit: -------------------- 4 USE ieee.std_logic_unsigned.all; 6 ENTITY arith_unit IS 7 PORT ( a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); 8 sel: IN STD_LOGIC_VECTOR (2 DOWNTO 0); 9 cin: IN STD_LOGIC; 10 x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); 11 END arith_unit; 12 ----------------------------------------- 13 ARCHITECTURE arith_unit OF arith_unit IS 14 BEGIN 15 WITH sel SELECT 16 x <= a WHEN "000", 17 a+1 WHEN "001", 18 a-1 WHEN "010", 19 b WHEN "011", 20 b+1 WHEN "100", 21 b-1 WHEN "101", 22 a+b WHEN "110", 23 a+b+cin WHEN OTHERS; 24 END arith_unit; 27

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ (4/6) 1 -------- COMPONENT logic_unit: -------------------- 4 ENTITY logic_unit IS 5 PORT ( a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); 6 sel: IN STD_LOGIC_VECTOR (2 DOWNTO 0); 7 x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); 8 END logic_unit; 9 ----------------------------------------- 10 ARCHITECTURE logic_unit OF logic_unit IS 11 BEGIN 12 WITH sel SELECT 13 x <= NOT a WHEN "000", 14 NOT b WHEN "001", 15 a AND b WHEN "010", 16 a OR b WHEN "011", 17 a NAND b WHEN "100", 18 a NOR b WHEN "101", 19 a XOR b WHEN "110", 20 NOT (a XOR b) WHEN OTHERS; 21 END logic_unit; 28

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ (5/6) 1 -------- COMPONENT mux: --------------------------- 4 ENTITY mux IS 5 PORT ( a, b: IN STD_LOGIC_VECTOR (7 DOWNTO 0); 6 sel: IN STD_LOGIC; 7 x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); 8 END mux; 9 ----------------------------------------- 10 ARCHITECTURE mux OF mux IS 11 BEGIN 12 WITH sel SELECT 13 x <= a WHEN '0', 14 b WHEN OTHERS; 15 END mux; 29

ΑΡΙΘΜΗΤΙΚΗ ΚΑΙ ΛΟΓΙΚΗ ΜΟΝΑΔΑ 1 -------- Project ALU (main code): ----------------- 4 ENTITY alu IS 5 PORT ( a, b: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 6 cin: IN STD_LOGIC; 7 sel: IN STD_LOGIC_VECTOR(3 DOWNTO 0); 8 y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); 9 END alu; 10 ----------------------------------------- 11 ARCHITECTURE alu OF alu IS 12 ----------------------- 13 COMPONENT arith_unit IS 14 PORT ( a, b: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 15 cin: IN STD_LOGIC; 16 sel: IN STD_LOGIC_VECTOR(2 DOWNTO 0); 17 x: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); 18 END COMPONENT; 19 ----------------------- (6/6) 20 COMPONENT logic_unit IS 21 PORT ( a, b: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 22 sel: IN STD_LOGIC_VECTOR(2 DOWNTO 0); 23 x: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); 24 END COMPONENT; 25 ----------------------- 26 COMPONENT mux IS 27 PORT ( a, b: IN STD_LOGIC_VECTOR(7 DOWNTO 0); 28 sel: IN STD_LOGIC; 29 x: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); 30 END COMPONENT; 31 ----------------------- 32 SIGNAL x1, x2: STD_LOGIC_VECTOR(7 DOWNTO 0); 33 ----------------------- 34 BEGIN 35 U1: arith_unit PORT MAP (a, b, cin, sel(2 DOWNTO 0), x1); 36 U2: logic_unit PORT MAP (a, b, sel(2 DOWNTO 0), x2); 37 U3: mux PORT MAP (x1, x2, sel(3), y); 38 END alu; 30

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

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