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

Σχετικά έγγραφα
Library, package και subprograms

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

Structural VHDL. Structural VHDL

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

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

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

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

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

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

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Πράξεις με δυαδικούς αριθμούς

Δομημένος Προγραμματισμός (ΤΛ1006)

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

Διαδικασιακός Προγραμματισμός

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

Προγραμματισμός Ι (ΗΥ120)

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

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

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

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

Προγραμματισμός Ι (HY120)

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

Πράξεις με δυαδικούς αριθμούς

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

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

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

Προγραμματισμός Ι (ΗΥ120)

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

VHDL Introduction. Subtitle

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

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

(Peter Ashenden, The Students Guide to VHDL)

Προγραμματισμός I (Θ)

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

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

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

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

Αριθμητική Υπολογιστών (Κεφάλαιο 3)

ΠΛΗ21 Κεφάλαιο 2. ΠΛΗ21 Ψηφιακά Συστήματα: Τόμος Α Κεφάλαιο: Παράσταση Προσημασμένων Αριθμών Συμπληρώματα

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

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

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

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

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

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

Κεφάλαιο 2 Η έννοια και η παράσταση της πληροφορίας στον ΗΥ. Εφ. Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος 1

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Εισαγωγή στον Προγραμματισμό

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

Στοιχειώδης προγραμματισμός σε C++

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

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

Εκτέλεση πράξεων. Ψηφιακά Ηλεκτρονικά και Δυαδική Λογική. Πράξεις με δυαδικούς αριθμούς. Πράξεις με δυαδικούς αριθμούς

Λύσεις Ασκήσεων ΣΕΙΡΑ 1 η. Πρόσημο και μέγεθος

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Εντολές του MIPS (2)

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

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

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Transcript:

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

ΔΟΜΗ ΠΑΡΟΥΣΙΑΣΗΣ Προκαθορισμένοι τύποι δεδομένων Τύποι δεδομένων οριζόμενοι από το χρήστη Πίνακες Signed και Unsigned τύποι Μετατροπή δεδομένων Τελεστές Ιδιότητες Η εντολή Generic 2

ΠΡΟΚΑΘΟΡΙΣΜΕΝΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (1/6) Bit: Λογική δύο επιπέδων (0, 1) Bit_vector: Μονοδιάστατος πίνακας (διάνυσμα) από bits signal x: Bit -- το x δηλώνεται ως σήμα ενός ψηφίου τύπου bit signal y: bit_vector(3 downto 0) -- το y είναι διάνυσμα των 4-bit με MSB το αριστερότερο signal z: bit_vector(0 to 5) -- το z είναι διάνυσμα των 6-bit με MSB το δεξιότερο x<= 0 ; Y<= 0011 ; --MSB= 0 z<= 011011 ; --MSB= 1 3

ΠΡΟΚΑΘΟΡΙΣΜΕΝΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (2/6) std_ulogic και std_ulogic_vector: Παρουσιάστηκε στο πρότυπο IEEE 1164. Η διένεξη λογικών επιπέδων (π.χ. κατά την οδήγηση μιας τιμής από διαφορετικές πηγές) δεν μπορούν να επιλυθούν Ο τύπος std_logic (όμοια με πριν αλλά χωρίς την U, επιτρέπει αυτόματη λύση Επίπεδο Ερμηνεία U X Μη επιλύσιμη Ισχυρή άγνωστη (συνθέσιμη) 0 Ισχυρή χαμηλή (συνθέσιμη) 1 Ισχυρή υψηλή (συνθέσιμη) Z W L H Υψηλή εμπέδηση (συνθέσιμη) Αδύναμη άγνωστη Αδύναμη χαμηλή Αδύναμη υψηλή - Αδιάφορη κατάσταση 4

ΠΡΟΚΑΘΟΡΙΣΜΕΝΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (3/6) Boolean (λογικός): TRUE (Αληθής), FALSE (Ψευδής) Integer (Ακέραιος): Αριθμοί των 32-bit (το πολύ). Από -2.147.483.647 έως τον +2.147.483.647 Natural (Φυσικός): Μη αρνητικοί ακέραιοι. Από 0 έως +2.147.483.647 Real (πραγματικός): Από -1.0Ε38 έως τον +1.0Ε38. Μη συνθέσιμος 5

ΠΡΟΚΑΘΟΡΙΣΜΕΝΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (4/6) signed (προσημασμένος) και unsigned (μη προσημασμένος) O signed έχει εύρος τιμών από (2 n-1-1) έως +(2 n-1-1) (χρησιμοποιείται για αναπαράσταση συμπληρώματος ως προς 2) O unsigned έχει εύρος τιμών από 0 έως +2 n -1 Χρήση παρόμοια με την std_logic_vector αλλά δέχονται αριθμητικές πράξεις Π.χ signal x : signed(3 downto 0); signal y: unsigned(3 downto 0).. x<= 1100 ; -- είναι ο -4 y<= 1100 ; -- είναι ο 12 6

ΠΡΟΚΑΘΟΡΙΣΜΕΝΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (5/6) Οι προκαθορισμένοι τύποι δεδομένων προσδιορίζονται από τα πρότυπα IEEE 1076 και IEEE 1164 Πακέτο standard της βιβλιοθήκης std Περιέχει τύπους δεδομένων όπως Bit, Boolean, Integer και Real Πακέτο std_logic_1164 της βιβλιοθήκης ieee Περιέχει τύπους δεδομένων όπως std_logic και std_ulogic 7

ΠΡΟΚΑΘΟΡΙΣΜΕΝΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (6/6) Πακέτο std_logic_arith της βιβλιοθήκης ieee Περιέχει τύπους δεδομένων όπως signed και unsigned Και συναρτήσεις μετατροπής δεδομένων conv_integer(p), conv_unsigned(p,b), conv_signed(p,b) και conv_std_logic_vector(p,b) Πακέτο std_logic_signed και std_logic_unsigned της βιβλιοθήκης ieee Επιτρέπει εκτέλεση πράξεων με δεδομένα τύπου std_logic_vector σαν να ήταν δεδομένα τύπου signed ή unsigned 8

ΠΑΡΑΔΕΙΓΜΑ (1/2) Στο παράδειγμα αυτό θα δούμε τη διαφορά μεταξύ απόδοσης τιμής σε ένα bit και στην απόδοση τιμής σε ένα διάνυσμα από bit (δηλαδή bit vs bit_vector ή std_logic vs std_logic_vector ή std_ulogic vs std_ulogic_vector) 9

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

ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΟΡΙΖΟΜΕΝΟΙ ΑΠΟ ΤΟΝ ΧΡΗΣΤΗ Προκαθορισμένος Type integer is range -2147483647 to +2147483647; Οριζόμενος από τον χρήστη Type my_integer is range -32 to 32; Type student_grade is range 0 to 100; 11

ΠΙΝΑΚΕΣ (1/2) Οι πίνακες είναι μια συλλογή από αντικείμενα του ίδιου τύπου δεδομένων και είναι ή Μονοδιάστατοι (1Δ) ή Δισδιάστατοι (2Δ) ή Μονοδιάστατοι επί μονοδιάστατοι (1Δ x 1Δ) α) βαθμωτό στοιχείο, β) 1Δ, γ) 1Δx1Δ και δ) 2Δ 12

ΠΙΝΑΚΕΣ (2/2) Ορισμός νέου τύπου πίνακα Type όνομα_πινακα Is Array (προδιαγραφή) Of τύπος_δεδομένων; Για να χρησιμοποιήσουμε το νέο πίνακα Signal όνομα_σήματος: τύπος_σήματος [:=αρχική_τιμή]; H αρχική τιμή είναι προαιρετική και χρησιμοποιείται μόνο για τη εξομοίωση 13

ΠΙΝΑΚΕΣ: ΠΑΡΑΔΕΙΓΜΑΤΑ Παράδειγμα 1 Type row Is Array (7 downto 0) Of std_logic; Type matrix Is Array (0 to 3) of row; Signal x: matrix; Παράδειγμα 2 Type matrix Is Array (0 to 3) of std_logic_vector(7 downto 0); 14

SIGNED ΚΑΙ UNSIGNED ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (1/4) Και οι δύο τύποι βρίσκονται στο πακέτο std_logic_arith Π.χ signal x : signed(3 downto 0); signal y: unsigned(0 to 3). x<= 1100 ; -- είναι ο -4 x<= 0101 ; -- είναι ο 5 y<= 1100 ; -- είναι ο 12 Y<= 0101 ; -- είναι ο 5 15

SIGNED ΚΑΙ UNSIGNED ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (2/4) Χρησιμοποιούνται ΜΟΝΟ για αριθμητικές πράξεις και ΟΧΙ για λογικές Αντίθετα οι std_logic_vector δέχονται λογικές και ΟΧΙ αριθμητικές πράξεις 16

SIGNED ΚΑΙ UNSIGNED ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (3/4) Παράδειγμα Library IEEE; Use Ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all;. signal a: In signed(4 downto 0); signal b: In signed(4 downto 0); signal x: Out signed(4 downto 0);. v<= a + b ; --Επιτρεπόμενη πράξη (είναι αριθμητική) w<= a AND b ; --Μη επιτρεπόμενη πράξη (είναι λογική) 17

SIGNED ΚΑΙ UNSIGNED ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ (4/4) Παράδειγμα Library IEEE; Use Ieee.std_logic_1164.all;. signal a: In std_logic_vector(4 downto 0); signal b: In std_logic_vector (4 downto 0); signal x: Out std_logic_vector (4 downto 0);. v<= a + b ; --Μη επιτρεπόμενη πράξη (είναι αριθμητική) w<= a AND b ; --Επιτρεπόμενη πράξη (είναι λογική) 18

STD_LOGIC_VECTOR vs SIGNED Ή UNSIGNED Όμως τα δεδομένα τύπου std_logic_vector μπορούν να συμμετάσχουν σε αριθμητικές σαν να είναι δεδομένα signed ή unsigned. Πως??? Με χρήση των πακέτων std_logic_signed και std_logic_unsigned αντίστοιχα Library IEEE; Use Ieee.std_logic_1164.all; Use Ieee.std_logic_unsigned.all;. signal a: In std_logic_vector(4 downto 0); signal b: In std_logic_vector (4 downto 0); signal x: Out std_logic_vector (4 downto 0);. v<= a + b ; --Επιτρεπόμενη πράξη (είναι αριθμητική) w<= a AND b ; --Επιτρεπόμενη πράξη (είναι λογική) 19

ΜΕΤΑΤΡΟΠΕΣ ΔΕΔΟΜΕΝΩΝ Το πακέτο std_logic_arith περιέχονται συναρτήσεις μετατροπής δεδομένων Conv_integer(p): μετατρέπει την παράμετρο p τύπου integer, unsigned, signed ή std_ulogic σε τιμή τύπου integer Conv_unsigned(p, b): μετατρέπει την παράμετρο p τύπου integer, unsigned, signed ή std_ulogic σε τιμή τύπου unsigned μεγέθους b- bit Conv_signed(p, b): μετατρέπει την παράμετρο p τύπου integer, unsigned, signed ή std_ulogic σε τιμή τύπου signed μεγέθους b- bit Conv_std_logic_vector(p, b): μετατρέπει την παράμετρο p τύπου integer, unsigned, signed ή std_logic σε τιμή τύπου std_logic_vector μεγέθους b- bit 20

ΜΕΤΑΤΡΟΠΕΣ ΔΕΔΟΜΕΝΩΝ: ΠΑΡΑΔΕΙΓΜΑ Library IEEE; Use Ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all;. signal a: In unsigned(4 downto 0); signal b: In unsigned(4 downto 0); signal x: Out std_logic_vector(4 downto 0);. x<= conv_std_logic_vector((a + b), 5); 21

ΣΥΝΘΕΣΙΜΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ 22

ΤΕΛΕΣΤΕΣ H VHDL παρέχει διάφορους τύπους προκαθορισμένων τελεστών Τελεστές απόδοσης (ανάθεσης) τιμής Λογικοί τελεστές Αριθμητικοί τελεστές Τελεστές σύγκρισης Τελεστές ολίσθησης Τελεστές συνένωσης 23

ΤΕΛΕΣΤΕΣ ΑΠΟΔΟΣΗΣ ΤΙΜΗΣ <= Χρησιμοποιείται για την απόδοση τιμής σε ένα σήμα (signal) := Χρησιμοποιείται για την απόδοση τιμής σε μια μεταβλητή (variable), σταθερά (constant) ή generic (γενική παράμετρος). Χρησιμοποιείται επίσης για την απόδοση αρχικών τιμών => Χρησιμοποιείται για την απόδοση τιμών σε μεμονωμένα στοιχεία διανύσματος, με την εντολή others ή στην εντολή port map 24

ΛΟΓΙΚΟΙ ΤΕΛΕΣΤΕΣ Εκτέλεση λογικών πράξεων Τα δεδομένα πρέπει να είναι τύπου bit, std_logic ή std_ulogic (ή τα αντίστοιχα διανύσματα) NOT, AND, OR, NAND, NOR, XOR, XNOR O τελεστής NOT έχει προτεραιότητα έναντι όλων των άλλων 25

ΑΡΙΘΜΗΤΙΚΟΙ ΤΕΛΕΣΤΕΣ Τα δεδομένα πρέπει να είναι τύπου integer, signed, unsigned, real ή std_logic_vector (με χρήση του std_logic_signed ή std_logic_unsigned) +, -, *, /, **, MOD, REM, ABS 26

ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Οι τελεστές σύγκρισης είναι οι παρακάτω = (ίσο), /= (όχι ίσο), < (μικρότερο), > (μεγαλύτερο), <= (μικρότερο ή ίσο), >= (μεγαλύτερο ή ίσο) 27

ΤΕΛΕΣΤΕΣ ΟΛΙΣΘΗΣΗΣ Σύνταξη <αριστερός τελεστέος> <πράξη ολίσθησης> <δεξιός τελεστέος> Ο αριστερός τελεστέος πρέπει να είναι bit_vector ενώ ο δεξιός τελεστέος πρέπει να είναι τύπου integer (με πρόσημο + ή αν θέλουμε) Sll (λογική ολίσθηση αριστερά) Srl (λογική ολίσθηση δεξιά) Sla (αριθμητική ολίσθηση αριστερά) Sra (αριθμητική ολίσθηση δεξιά) Rol (λογική αριστερή περιστροφή) Ror (λογική δεξιά περιστροφή) 28

ΤΕΛΕΣΤΕΣ ΣΥΝΕΝΩΣΗΣ Χρησιμοποιούνται για την ομαδοποίηση τιμών & (,,, ) Π.χ. z <= x & 1101010 ; z<= ( 1, 1, 0, 1, 0 ); -- z<= 11010 ; 29

ΠΑΡΑΔΕΙΓΜΑ (1/2) ------------------------------------------ LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ------------------------------------------ ENTITY adder1 IS PORT (a, b : IN SIGNED (3 DOWNTO 0); sum : OUT SIGNED (4 DOWNTO 0)); END adder1; ------------------------------------------ ARCHITECTURE adder1 OF adder1 IS BEGIN sum <= a + b; END adder1; ------------------------------------------ ------------------------------------------ LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ------------------------------------------ ENTITY adder2 IS PORT (a, b : IN SIGNED (3 DOWNTO 0); sum : OUT INTEGER RANGE -16 TO 15); END adder2; ------------------------------------------ ARCHITECTURE adder2 OF adder2 IS BEGIN sum <= CONV_INTEGER(a + b); END adder2; ------------------------------------------ 30

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

ΙΔΙΟΤΗΤΕΣ ΔΕΔΟΜΕΝΩΝ Οι συνθέσιμες ιδιότητες δεδομένων είναι d low: επιστρέφει το χαμηλότερο δείκτη του πίνακα d high: επιστρέφει τον υψηλότερο δείκτη του πίνακα d left: επιστρέφει τον αριστερότερο δείκτη του πίνακα d right: επιστρέφει τον δεξιότερο δείκτη του πίνακα d length: επιστρέφει το μέγεθος του διανύσματος d range: επιστρέφει το εύρος του διανύσματος d reverse_range: επιστρέφει το εύρος του διανύσματος σε αντίστροφη σειρά Π.χ. Signal d: std_logic_vector(8 downto 1) Τότε d low=1, d high=8, d left=8, d right=1, d length=8, d range=(8 downto 1), d reverse_range=(1 to 8) 32

Έστω ένα σήμα s, τότε ΙΔΙΟΤΗΤΕΣ ΣΗΜΑΤΩΝ s event: Επιστρέφει τιμή true όταν προκύπτει κάποιο συμβάν στο s (συνθέσιμη) s stable: Επιστρέφει τιμή true όταν δεν προκύψει κάποιο συμβάν στο s (συνθέσιμη) s active: Επιστρέφει τιμή true όταν s= 1 s quiet <time>: Επιστρέφει τιμή true όταν δεν έχει προκύψει κάποιο συμβάν στο s εντός του time s last_event: Επιστρέφει το χρόνο που έχει περάσει από το τελευταίο συμβάν s last_active: Επιστρέφει το χρόνο που έχει περάσει από τη τελευταία φορά που s=1 s last_value: Επιστρέφει τη τιμή του s από το τελευταίο συμβάν 33

Η ΕΝΤΟΛΗ GENERIC Με την Generic (Γενική παράμετρος) ορίζουμε μια παράμετρο. Τη δηλώνουμε στην Entity οπότε είναι ορατή από ολόκληρο τον σχεδιασμό Generic (όνομα_παραμέτρου: τύπος_παραμέτρου :=τιμή_παραμέτρου); Π.χ Entity my_entity is Generic (n:integer:=8); Port( ); End my_entity; Architecture my_architecture of my_entity is End my_architecture; 34

ΠΑΡΑΔΕΙΓΜΑ 1 -------------------------------------------- ENTITY parity_det IS GENERIC (n : INTEGER := 7); PORT (input: IN BIT_VECTOR (n DOWNTO 0); output: OUT BIT); END parity_det; -------------------------------------------- ARCHITECTURE parity OF parity_det IS BEGIN PROCESS (input) VARIABLE temp: BIT; BEGIN temp := '0'; FOR i IN input'range LOOP temp := temp XOR input(i); END LOOP; output <= temp; END PROCESS; END parity; -------------------------------------------- 35

ΠΑΡΑΔΕΙΓΜΑ 2 -------------------------------------------- ENTITY parity_gen IS GENERIC (n : INTEGER := 7); PORT (input: IN BIT_VECTOR (n-1 DOWNTO 0); END parity_gen; ----------------------------------------------- ARCHITECTURE parity OF parity_gen IS BEGIN PROCESS (input) BEGIN output: OUT BIT_VECTOR (n DOWNTO 0)); VARIABLE temp1: BIT; VARIABLE temp2: BIT_VECTOR (output'range); temp1 := '0'; FOR i IN input'range LOOP END LOOP; temp1 := temp1 XOR input(i); temp2(i) := input(i); temp2(output'high) := temp1; output <= temp2; END PROCESS; END parity; ----------------------------------------------- 36

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