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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Απόστολος Φούρναρης, Παρασκευάς Κίτσος Τμήμα Μηχανικών Πληροφορικής ΤΕ, ΤΕΙ Δυτικής Ελλάδας Σχεδιασμος Ολοκληρωμένων Κυκλωμάτων με Χρήση VHDL: Πρακτικά Θέματα

2 Αθροιστές 1 Σκοπός Σε αυτή την εργαστηριακή άσκηση ο σπουδαστής θα εξοικειωθεί με τη VHDL Γλώσσα Περιγραφής Υλικού που θα χρησιμοποιήσει για το σχεδιασμό και την α- νάπτυξη ψηφιακών κυκλωμάτων καθώς και με το εργαλείο προσομοίωσης που θα χρησιμοποιήσει για την επιβεβαίωση της ορθής λειτουργίας των κυκλωμάτων που σχεδίασε. 1.1 Ημιαθροιστής Ο ημιαθροιστής έχει 2 εισόδους (προσθετέους) και 2 εξόδους (άθροισμα και κρατούμενο) όπως φαίνεται στο παρακάτω σχήμα (σχήμα 1.1). A B S Co Σχήμα 1.1 Κύκλωμα Ημιαθροιστή Ο κώδικας που περιγράφει τη λειτουργία του ημιαθροιστή (half_adder) είναι ο παρακάτω: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY half_adder IS PORT (A, B: IN STD_LOGIC; S: OUT STD_LOGIC; Co: OUT STD_LOGIC); END half_adder;

3 3 ARCHITECTURE half_adder_rtl OF half_adder IS BEGIN S <= A XOR B; -- Περιγραφή της εξόδου του αθροίσματος S Co <= A AND B; -- Περιγραφή του κρατούμενου εξόδου Co END half_adder_rtl; Ζητούμενο 1. Χρησιμοποιείστε έναν επεξεργαστή κειμένου (π.χ. notepad, notepad ++, wordpad ή ultraedit), αντιγράψτε τον παραπάνω κώδικα και αποθηκεύστε τον. Το αρχείο του κώδικα πρέπει να έχει επέκταση.vhd. 1.2 Πλήρης Αθροιστής του 1-bit Ο πλήρης αθροιστής του 1-bit είναι ένα συνδυαστικό κύκλωμα που υπολογίζει το άθροισμα τριών εισόδων του 1-bit. Οι δύο από τις εισόδους (A και Β) είναι οι α- ριθμοί του 1-bit που προστίθενται και η τρίτη είσοδος (Ci) του 1-bit είναι το κρατούμενο εισόδου. Το γεγονός αυτό τον καθιστά ικανό να διασυνδεθεί με προηγούμενες μονάδες πλήρων αθροιστών. Παρακάτω στο σχήμα 1.2 παρουσιάζεται το λογικό διάγραμμα και το σχήμα του πλήρoυς αθροιστή του 1-bit. Με S συμβολίζεται η έξοδος του αθροίσματος και με Co είναι το κρατούμενο εξόδου. A B S Ci Co A B Πλήρης Αθροιστής 1-bit S Co Ci Σχήμα 1.2 Κύκλωμα και Σχηματικό Πλήρη Αθροιστή

4 1.2.1 Τρόπος Εργασίας για τον Σχεδιασμό του Αθροιστή Στο structural μοντέλο σχεδίασης, περιγράφουμε το κύκλωμα όπως ακριβώς το βλέπουμε στο λογικό διάγραμμα. Αρχικά θεωρούμε το σχήμα του αθροιστή με τις εισόδους A, B και Ci και τις εξόδους S και Co. Αυτές οι είσοδοι και οι έξοδοι καθορίζουν τους ακροδέκτες εισόδων και εξόδων του κυκλώματος που θα δηλωθούν στην Οντότητα (Entity) του κώδικα. Το λογικό κύκλωμα αποτελεί το εσωτερικό του σχήματος του πλήρους αθροιστή, όπως φαίνεται και στο σχήμα 1.3. Για τη περιγραφή του κυκλώματος αρχικά ονομάζουμε τους εσωτερικούς κόμβους με τυχαία ονόματα π.χ. tmp1, tmp2, and_out, xor_out κλπ. xor_out A B S Ci and2_out Co and1_out Σχήμα 1.3 Ανάλυση Κυκλώματος πλήρη Αθροιστή Για το κύκλωμα της άσκησης ονομάζουμε τους εσωτερικούς κόμβους (σήματα) με τα ονόματα xor_out, and1_out και and2_out όπως φαίνεται στο παραπάνω διάγραμμα. Έπειτα περιγράφουμε με τη βοήθεια της VHDL τα σήματα που ονομάσαμε πιο πριν. Οι ακροδέκτες εισόδων και εξόδων θα είναι τύπου std_logic και γι αυτό το λόγο θα δηλωθεί το πακέτο std_logic_1164.all της ΙΕΕΕ στο αντίστοιχο τμήμα του κώδικα Ο Κώδικας του Πλήρους Αθροιστή του 1-bit Ο κώδικας που περιγράφει τη λειτουργία του πλήρους αθροιστή του 1-bit (adder1bit) είναι ο παρακάτω: LIBRARY ieee;

5 5 USE ieee.std_logic_1164.all; ENTITY adder1bit IS PORT (A, B: IN STD_LOGIC; Ci: IN STD_LOGIC; S: OUT STD_LOGIC; Co: OUT STD_LOGIC); END adder1bit; ARCHITECTURE adder_rtl OF adder1bit IS SIGNAL xor_out, and1_out, and2_out : STD_LOGIC; -- δήλωση των εσωτερικών σημάτων BEGIN xor_out <= A XOR B; -- Περιγραφή του εσωτερικού σήματος xor_out and1_out <= Α AND B; -- Περιγραφή του εσωτερικού σήματος and1_out and2_out <= Ci AND xor_out; -- Περιγραφή του εσωτερικού σήματος and2_out S <= xor_out XOR Ci; -- Περιγραφή της εξόδου του αθροίσματος S Co <= and1_out OR and2_out; -- Περιγραφή του κρατούμενου εξόδου Co END adder_rtl; Ζητούμενο 2. Χρησιμοποιείστε έναν επεξεργαστή κειμένου (π.χ. notepad, wordpad ή ultraedit), αντιγράψτε τον παραπάνω κώδικα και αποθηκεύστε τον. Το αρχείο του κώδικα πρέπει να έχει επέκταση.vhd. 1.3 Προσομοίωση του Αθροιστή Η λειτουργία ενός κυκλώματος μπορεί να προσομοιωθεί με τη χρήση κάποιου εργαλείου προσομοίωσης. Δύο τέτοια ευρέως χρησιμοποιούμενα εργαλεία είναι τα Questa και Modelsim της Mentor Graphics. Στα εργαλείο προσομοίωσης ορίζουμε τις εισόδους του κυκλώματος και παρατηρούμε τις εξόδους (απόκριση) καθώς και τις τιμές εσωτερικών σημάτων σε σχέση με το χρόνο με σκοπό την επιβεβαίωση της ορθής λειτουργίας του κυκλώματος. Οι είσοδοι του κυκλώματος θα πρέπει να λάβουν όλους τους πιθανούς συνδυασμούς τιμών. Παρακάτω θα γίνει περιγραφή του τρόπου εργασίας με το Questa:

6 1. Αρχικά θα δημιουργήσετε ένα φάκελο στον υπολογιστή μας με όνομα VHDL. Μέσα σε αυτόν θα έχετε υποφακέλους με ονόματα χαρακτηριστικά του κυκλώματος που υλοποιείτε (π.χ. adder, multiplier, DCT64 κ.λ.π.). Κάθε ένας από αυτούς περιέχει τον αντίστοιχο κώδικα. Σε αυτή την εργαστηριακή άσκηση στον φάκελο adder θα έχετε το αρχείο με τον κώδικα του αθροιστή adder1bit. 2. Έπειτα επιλέγετε το φάκελο με τον αντίστοιχο κώδικα. Στη άσκηση το φάκελο adder. Πηγαίνετε File Change Directory και στο παράθυρο Browse for Folder βρίσκουμε το φάκελο adder. 3. Μετά ορίζετε ένα νέο «έργο» (project). Πως; File New Project και στο παράθυρο που αναδύεται δίνετε το όνομα (adder1bit) και το αντίστοιχο μονοπάτι του υποφακέλου. Η διαδικασία φαίνεται στο σχήμα 1.4 Σχήμα 1.4 Δημιουργία Νέου project στο Questa 4. Τέλος, επιλέγετε Add Existing File αν έχετε ήδη έτοιμο τον κώδικα (εσείς το έχετε έτοιμο) ή Create New File αν θέλετε να δημιουργήσετε τον κώδικα. Στο

7 νέο παράθυρο επιλέγετε και βρίσκετε το αρχείο adder1bit.vhd. Επιλέγετε VHDL στο Add file as type και μετά ΟΚ. Μέχρι τώρα ορίστηκε ο φάκελος εργασίας (που περιέχεται ο κώδικας). Ορίστηκε το αντίστοιχο project, προστέθηκαν το/τα αρχείο/α κώδικα και δημιουργήθηκε η βιβλιοθήκη work (κοιτάξτε μέσα στο φάκελο). Στη work γίνεται η «συμβολομετάφραση (compilation)» του κώδικα (σχήμα 1.5). 5. Μετά θα συνεχίσετε με το Compilation (συμβολομετάφραση) του κώδικα. Πως; Στο project tab, επιλέγεται το αρχείο (στην άσκηση adder1bit) με δεξί click. Έπειτα Compile Compile Selected. 7 Σχήμα 1.5 Διαδικασία Compile στο Questa 6. Αν δεν υπάρχουν λάθη προχωρείτε στην εξομοίωση. Αν υπάρχουν βγάζει μήνυμα (ή μηνύματα) λάθους. Διπλό click πάνω στο μήνυμα και ανοίγει το παράθυ-

8 ρο που αναλύει το λάθος. «Σε ποια γραμμή και τι απαιτείται». Διορθώνετε το λάθος και μετά αφού αποθηκεύσετε το αποτέλεσμα κάνετε πάλι compile στο κώδικα. 7. Το κύκλωμα μπορεί να προσομοιωθεί κάνοντας ρυθμίσεις μέσω των διαφόρων μενου του εργαλείου είτε με αυτόματο τρόπο με μακροεντολές. Στον πρώτο τρόπο, μεταβείτε στο tab library στο οποίο στην βιβλιοθήκη work θα υπάρχει η οντότητα που έχει γίνει compile. Κάνοντας δεξί κλικ πάνω στην οντότητα adder1bit επιλέξτε την εντολή simulate, όπως φαίνεται στο σχήμα 1.6. Σχήμα 1.6 Εκκίνηση Εξομοίωσης στο Questa 8. Θα ανοίξει τότε ένα νέο παράθυρο με τα σήματα της αρχιτεκτονικής μας όπως φαίνεται στο σχήμα 1.7. Επιλέγοντας τα σήματα που μας ενδιαφέρουν στο παράθυρο Objects και κάνοντας δεξί κλικ και Add To Wave εμφανιστεί ένα με-

9 νού από το οποίο μπορούμε να εισάγουμε στην προσομοίωση επιλεγμένα σήματα (selected signals) ή όλα τα σήματα (signals in Design). Να επιλέξετε όλα τα σήματα. 9 Σχήμα 1.7. Μορφή παραθύρων για εξομοίωση στο Questa 9. Η παραπάνω επιλογή θα οδηγήσει ένα νέο παράθυρο (παράθυρο Wave, όπως φαίνεται στο σχήμα 1.8). Με κατάλληλες επιλογές σε αυτό το παράθυρο μπορούμε να δώσουμε αρχικές τιμές σε σήματα ή το ρολόι της αρχιτεκτονικής μας και να δούμε πως αυτά τα σήματα αλλάζουν στο χρόνο.

10 Σχήμα 1.8 Το παράθυρο Wave του Questa 10. Για να δώσουμε τιμές σε ένα σήμα, το επιλέγουμε στο παράθυρο Wave και κάνουμε δεξί κλικ πάνω του. Μετά επιλέγουμε το Force και στο αναδυόμενο παράθυρο που προκύπτει στην θέση Value βάζουμε σε δυαδική μορφή την επιθυμητή τιμή (σχήμα 1.9). Σχήμα 1.9 Δίνοντας τιμές σε σήματα και ορίζοντας το σήμα ρολογιού στο Questa

11 11. Αν το σήμα που αρχικοποιούμε λειτουργεί σαν ρολόι τότε πρέπει να γίνει δεξί κλικ πάνω του και να επιλεγεί το Clock. Στο παράθυρο που προκύπτει μπορεί να καθοριστεί η περίοδος του ρολογιού (σε nsec). 12. Αφού καθοριστούν όλες τις αρχικές τιμές για τα σήματα της αρχιτεκτονικής, μπορούμε να ορίσουμε το χρονικό διάστημα για το οποίο θα προσομοιωθεί η λειτουργία της αρχιτεκτονικής βάζοντας τιμές όπως φαίνεται στο σχήμα Χρονικό διάστημα προσομοίωσης 11 Εκτέλεση προσομοίωσης Σχήμα 1.10 Μια εξομοίωση στο Questa 13. Τέλος για να κάνετε την προσομοίωση του κυκλώματος με μακροεντολές. Στον φάκελο με τον κώδικά σας θα δημιουργήσετε ένα επιπλέον φάκελο με ό- νομα «do_files». Μέσα σε αυτόν θα αποθηκεύετε όλα τα.do αρχεία (macro εντολές) που θα χρησιμοποιείτε για το αντίστοιχο κύκλωμα. Παρακάτω φαίνεται ο αντίστοιχος κώδικας της macro εντολής που θα χρησιμοποιήσετε για την προσομοίωση του κυκλώματος του πλήρους αθροιστή του 1- bit που σχεδιάσατε. Το αρχείο θα έχει όνομα και επέκταση adder1bit.do.

12 vsim adder1bit add wave /adder1bit/* force -freeze /Α 0 0, 0 100, 1 200, force -freeze /Β 0 0, 1 100, 0 200, force -freeze /cin 0 0, 1 50, 0 100, 1 150, 0 200, 1 250, 0 300, run Εκτελούμε την εντολή αυτή πηγαίνοντας Tools Tcl Execute Macro, επιλέγουμε το αρχείο adder1bit.do και κάνοντας διπλό click. Όπως φαίνεται στο σχήμα Σχήμα 1.11 Εκτέλεση ενός αρχείου tcl εντολών στο Questa Η διαδικασία προσομοίωσης με το εργαλείο ModelSim ακολουθεί ακριβώς τα ίδια βήματα με τα παραπάνω.

13 1.4 Πλήρης Αθροιστής του 1-bit με Υποκυκλώματα (Components) Ο πλήρης αθροιστής του 1-bit μπορεί να προκύψει με την διασύνδεση δύο ημιαθροιστών σύμφωνα με το παρακάτω σχήμα (σχήμα 1.12). 13 Ci S A B S1 C2 Co C1 Ci A B HA S1 C1 HA C2 S Co Σχήμα 1.12 Πλήρης αθροιστής με υποκυκλώματα 2 Ημιαθροιστών Άρα απαιτούνται δύο υποκυκλώματα (component) του ημιαθροιστή (ΗΑ) για την υλοποίηση του πλήρους αθροιστή του 1-bit. Για το component του ημιαθροιστή θα γίνει χρήση του κώδικα που περιγράφεται στην 1.2 (entity half_adder). Σε αυτό το μοντέλο σχεδίασης, αρχικά θα δηλώσουμε τους ακροδέκτες εισόδων (A, B και Ci) και εξόδων (S και Co) του κυκλώματος που θα δηλωθούν στην Οντότητα (Entity) του κώδικα και θα κάνουμε χρήση του component (half_adder) δύο φορές. Για τη περιγραφή του κυκλώματος ονομάζουμε τους εσωτερικούς κόμβους με ονόματα S1 (για την έξοδου αθροίσματος του πρώτου ημιαθροιστή), C1 (για την έξοδο κρατουμένου του πρώτου ημιαθροιστή) και C2 (για την έξοδο κρατουμένου του δεύτερου ημιαθροιστή). Οι ακροδέκτες εισόδων και εξόδων καθώς και τα σήματα των εσωτερικών κόμβων θα είναι τύπου std_logic και γι αυτό το λόγο θα δηλωθεί το πακέτο std_logic_1164.all της ΙΕΕΕ στο αντίστοιχο τμήμα του κώδικα. 1.5 Ο Κώδικας του Πλήρους Αθροιστή του 1-bit Ο κώδικας που περιγράφει τη λειτουργία του πλήρους αθροιστή του 1-bit (adder1bit1) με χρήση του component ΗΑ είναι ο παρακάτω:

14 LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY adder1bit1 IS PORT (A, B: IN STD_LOGIC; Ci: IN STD_LOGIC; S: OUT STD_LOGIC; Co: OUT STD_LOGIC); END adder1bit1; ARCHITECTURE adder1_rtl OF adder1bit1 IS COMPONENT half_adder PORT (A, B: IN STD_LOGIC; S: OUT STD_LOGIC; Co: OUT STD_LOGIC); END COMPONENT; SIGNAL S1,C1,C2 : STD_LOGIC; -- δήλωση των εσωτερικών σημάτων BEGIN block01: half_adder port map (A=>A,B=>B,S=>S1,Co=>C1); block02: half_adder port map (A=>Ci,B=>S1,S=>S,Co=>C2); Co <= C1 OR C2; END adder1_rtl; Ζητούμενο 3. Χρησιμοποιείστε έναν επεξεργαστή κειμένου (π.χ. notepad, notepad ++, wordpad ή ultraedit), αντιγράψτε τον παραπάνω κώδικα και αποθηκεύστε τον. Το αρχείο του κώδικα πρέπει να έχει επέκταση.vhd. 1.3 Προσομοίωση του Αθροιστή Τώρα απαιτείται προσομοίωση του αθροιστή σύμφωνα με τα βήματα που έχουν περιγραφεί στην παράγραφο 1.2. Απαιτείται να βρίσκονται στον ίδιο υποκατάλογο τόσο ο κώδικας του ημιαθροιστή (half_adder.vhd) όσο και ο κώδικας του αθροιστή του 1-bit (adder1bit1.vhd). Για το Compile των αρχείων πρέπει να διατηρηθεί η ιεραρχία του κάθε αρχείου.

15 15 Πως; Επιλέγετε το αρχείο (adder1bit1) με δεξί κλικ. Έπειτα Compile Compile order και τοποθετείτε την Entity half_adder πρώτη και από κάτω την Entity adder1bit1. Ζητούμενο 4. Αφού κάνετε Compilation στο κώδικά σας συνολικά προχωρείτε στην προσομοίωση κάνοντας χρήση του αρχείου.do που αναφέρθηκε πιο πριν με τις απαραίτητες διορθώσεις στο όνομα της Entity που θα προσομοιωθεί.

16 Παράλληλος Αθροιστής 2 Σκοπός Σε αυτή την εργαστηριακή άσκηση ο φοιτητής θα εξοικειωθεί περισσότερο με τη VHDL Γλώσσα Περιγραφής Υλικού καθώς και με το εργαλείο σύνθεσης (Xilinx Synthesis Tool XST) που αποτελεί μέρος της πλατφορμας Xilinx ISE. Το εργαλείο αυτό θα χρησιμοποιηθεί από τους φοιτητές για την υλοποίηση του κώδικα σε επαναπρογραμματιζόμενο ολοκληρωμένο (FPGA). 2.1 Παράλληλος Αθροιστής των 4-bit Ο Παράλληλος Αθροιστής είναι ένα συνδυαστικό κύκλωμα για την ταυτόχρονη (παράλληλη) πρόσθεση δυαδικών αριθμών των n bits (n>1). Το κύκλωμα αυτό μπορεί να κατασκευαστεί με την διαδοχική σύνδεση n μονάδων πλήρων αθροιστών του 1-bit όπως φαίνεται στο σχήμα 2.1 για τον παράλληλο αθροιστή των 4-bit. Α(3) Β(3) Α(2) Β(2) Α(1) Β(1) Α(0) Β(0) Πλήρης Αθροιστής C3 Πλήρης Αθροιστής C2 Πλήρης Αθροιστής C1 Πλήρης Αθροιστής Cin Cout S(3) S(2) S(1) S(0) Σχήμα 2.1 Ο Παράλληλος 4 bitsαθροιστής Για τις εισόδους των προσθετέων των 4-bit (Α, Β) καθώς και την έξοδο (S) επίσης των 4-bit θα γίνει χρήση διαύλου αρτηρίας (bus) των 4-bit οι οποίοι θα περιγραφούν στη VHDL σαν Vector τύπου std_logic.

17 2.2 Σχεδίαση Παράλληλου Αθροιστή με Structural Μοντέλο Σχεδίασης Οι είσοδοι των προσθετέων (Α και Β) καθώς και του αθροίσματος (S) θα είναι Vectors τύπου std_logic. Επίσης το κρατούμενο εισόδου (Cin) και το κρατούμενο εξόδου (Cout) θα είναι τύπου std_logic. Τέλος τα εσωτερικά σήματα C1, C2 και C3 που θα χρησιμοποιηθούν ως σήματα κρατουμένων μεταξύ των αθροιστών του 1-bit θα είναι επίσης τύπου std_logic. Για τους παραπάνω λόγους απαιτείται η χρήση του πακέτου std_logic_1164.all της βιβλιοθήκης IEEE. Ζητούμενο 5: Χρησιμοποιείστε τον πλήρη αθροιστή του 1-bit της πρώτης άσκησης (οντότητα adder1bit) και φτιάξτε τον κώδικα για τον παράλληλο αθροιστή των 4-bit που φαίνεται στο παραπάνω σχήμα με structural μοντέλο. Ονομάστε την Entity του αθροιστή adder4bits. Απάντηση Ζητούμενου. 17

18 2.3 Σχεδίαση Παράλληλου Αθροιστή με Χρήση Τελεστή Πρόσθεσης Οι είσοδοι των προσθετέων (Α και Β) καθώς και του αθροίσματος (S) θα είναι Vectors τύπου std_logic όπως και πριν. Η περιγραφή του αθροιστή των 4-bit θα γίνει με χρήση τελεστή πρόσθεσης (+). Για να είναι αυτό εφικτό θα πρέπει να γίνει χρήση του πακέτου std_logic_signed.all μια και με το πακέτο αυτό υπάρχει η δυνατότητα χρήσης σημάτων std_logic με αριθμητικούς τελεστές. Ο κώδικας που περιγράφει (συντρέχων περιγραφή - dataflow) τη λειτουργία του αθροιστή των 4- bit (adder4bits) είναι ο παρακάτω: LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_signed.all; ENTITY adder4bits IS PORT (A, B: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Ci: IN STD_LOGIC; S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Co: OUT STD_LOGIC); END adder4bits; ARCHITECTURE dataflow OF adder4bits IS SIGNAL SUM: STD_LOGIC_VECTOR(4 DOWNTO 0); -- δήλωση εσωτερικού σήματος άθροισης BEGIN SUM <= ( 0 & A) + ( 0 & B) + Ci; S <= SUM(3 DOWNTO 0); Co <= SUM(4); END dataflow; To σήμα SUM των 4-bit δηλώνεται στην αρχιτεκτονική. Το επιπλέον bit SUM(4) χρησιμοποιείται ως bit κρατουμένου εξόδου από τη θέση 3 του αθροιστή. Επίσης, για το σήμα SUM η έννοιες των όρων μέσα στις παρενθέσεις ( 0 & A) και ( 0 & B) είναι ότι συνδέεται (σε αλληλουχία στη περισσότερο σημαντική θέση ώστε να μην αλλοιωθεί ο αριθμός) το bit 0 (με τον τελεστή & ) στoυς A και Β για τη δημιουργία σημάτων των 4-bit. Ο λόγος αυτής της προσθήκης (του bit 0) είναι γιατί απαιτείται από τους όρους μιας αριθμητικής έκφρασης να έχουν τον ίδιο αριθμό

19 bits με το αποτέλεσμα. Επειδή λοιπόν το αποτέλεσμα είναι των 5-bit θα πρέπει να τροποποιηθούν οι A και Β (ή τουλάχιστον ένας από τους Α και Β) ώστε να έχουν μήκος 5-bit. Επίσης, η έξοδος του αθροιστή αντιστοιχεί στα τέσσερα λιγότερο σημαντικά bits του σήματος SUM, SUM(3 DOWNTO 0). Τέλος, το κρατούμενο εξόδου αντιστοιχεί στο περισσότερο σημαντικό ψηφίο, SUM(4). Ζητούμενο 6: Χρησιμοποιείστε έναν επεξεργαστή κειμένου (π.χ. notepad, wordpad ή ultraedit), αντιγράψτε τον παραπάνω κώδικα και αποθηκεύστε τον. Το αρχείο του κώδικα πρέπει να έχει επέκταση.vhd. 2.4 Σύνθεση του Αθροιστή Στο εργαλείο Σύνθεσης (Xilinx Synthesis Tool-XST) γίνεται η σύνθεση του κώδικα VHDL. Με τον όρο σύνθεση του κώδικα εννοείται περιγραφή του συστήματος στο επίπεδο μεταφοράς καταχωρητή (Register Transfer Level-RTL) και με τη χρήση των βιβλιοθηκών παράγεται το λογικό σχέδιο του συστήματος. Παρακάτω θα γίνει περιγραφή του τρόπου εργασίας με το XST: 1. Να δημιουργηθεί ένας φάκελος στον υπολογιστή με όνομα VHDL. Μέσα σε αυτόν θα δημιουργήσετε έναν υποφάκελο με όνομα XST_Projects όπου επίσης μέσα σε αυτόν θα δημιουργείτε υποφακέλους με ονόματα των αντίστοιχων projects που θα δουλέψετε. Κάθε ένας από αυτούς θα περιέχει τα αρχεία της VHDL και αυτά που δημιουργούνται από το XST (Παρατήρηση: Μην χρησιμοποιείτε ονόματα φακέλων και υποφακέλων με κενά διαστήματα). 2. Μετά ορίζετε ένα νέο «έργο» (project). Πως? File New Project και στο παράθυρο που αναδύεται δίνετε το όνομα στο Project Name (adder4bits), ορίζετε τη θέση του Project και στο Top-level Module επιλέγετε HDL. Μετά Next 3. Στην επόμενη καρτέλα πρέπει να οριστούν τα χαρακτηριστικά του FPGA ολοκληρωμένου που θα χρησιμοποιηθεί. Device Family: Spertan3, Device: xc3s700α, Package: fg484 και Speed Grade:

20 Τι είναι το Speed Grade? Καθορίζει τον χρόνο προσπέλασης των LUTs. Όσο μεγαλύτερο το νούμερο του speed grade, τόσο μικρότερος ο χρόνος προσπέλασης (μεγαλύτερη συχνότητα). Επίσης στην ίδια καρτέλα επιλέγουμε: Synthesis Tool: XST (VHDL/Verilog), Simulator: ModelSim και Generated Simulation Language: VHDL. Πατάτε Next Επίσης στην ίδια καρτέλα επιλέγουμε: Synthesis Tool: XST (VHDL/Verilog), Simulator: ISIM και Generated Simulation Language: VHDL. Πατάτε Next 4. Στο νέο παράθυρο θα οριστεί ο κώδικας που θα χρησιμοποιήσετε. Από το παράθυρο αυτό μπορείτε να προσθέσετε κάποιο νέο αρχείο VHDL που θα το «γράψετε» εξαρχής. Στην άσκηση θα κάνετε χρήση των αρχείων adder1bit.vhd (της άσκησης 1) και του αρχείου adder4bits.vhd και πατάτε Next 5. Στο νέο παράθυρο προσθέτουμε τον κώδικα που ήδη έχουμε γράψει για το project. Επιλέγουμε Add Source. Έπειτα το αρχείο adder1bit.vhd, στο Choose Source Type επιλέγουμε VHDL Design File και μετά OK. Είναι επιλεγμένο το Copy to Project και μετά προσθέτουμε το αρχείο adder4bits.vhd με ακριβώς την ίδια διαδικασία. Μετά πατάμε Next 6. Στο νέο παράθυρο παρατηρούμε όλες τις ρυθμίσεις που έχουμε κάνει μέχρι τώρα για την δημιουργία του Project και την εισαγωγή των απαραίτητων αρχείων σε αυτό. Επιλέγουμε Finish. 7. Στο παράθυρο Project (Sources in Project) φαίνονται τα αρχεία που έχουμε προσθέσει σε αυτό. Επιλέγετε το αρχείο του αθροιστή και φαίνεται ο κώδικας του. Στο παράθυρο Processes for Sources γίνονται όλες οι περεταίρω εργασίες (Εξομοίωση, προγραμματισμός του FPGA κ.λ.π.).

21 8. Εξομοίωση του κυκλώματος μέσω του εργαλείου ISIM του Xilinx ISE: Για να γίνει εξομοίωση του σχεδιασμού μέσω του εργαλείου ISIM μπορεί κανείς να αλλάξει στο tab Design το view σε Simulation αντί για Implementation. Τότε όπως φαίνεται στο παρακάτω σχήμα (Σχήμα 2.2), αν επιλέξουμε το κύριο αρχείο vhdl που ορίζει την αρχιτεκτονική που επιθυμούμε να εξομοιώσουμε, τότε στο design tab υπάρχουν επιλογές για τον ISIM εξομοιωτή. 21 Επιλογές: Σχήμα 2.2 Κεντρικό παράθυρο του XST με επιλογές εξομοίωσης a. Επιλέγουμε Simulate Behavioral Model, κάνουμε δεξί κλικ και run ώστε να εκκινήσει η διαδικασία της εξομοίωσης.

22 b. Ακολουθεί ένα νέο παράθυρο το οποίο περιλαμβάνει το γραφικό περιβάλλον του ISIM. Το οποίο μοιάζει όπως το παρακάτω σχήμα (σχήμα 2.3) και περιλαμβάνει υποπαράθυρα με τα αντικείμενα (τα εσωτερικά σήματα, τα σήματα εισόδων και τα σήματα εξόδων) που υπάρχουν στην αρχιτεκτονική που εξομοιώνεται (υποπαράθυρο objects) καθώς και υποπαράθυρο όπου εμφανίζονται οι κυματομορφές των σημάτων της αρχιτεκτονικής. Σχήμα 2.3. Κεντρικό Παράθυρο εξομοίωσης με το ISIM c. Παρόμοια με τη φιλοσοφία που διέπει το Questa ή Modelsim μπορούμε, αν δεν υπάρχει ένα σήμα στο παράθυρο κυματομορφών μπορούμε να το επιλέξουμε από το υποπαράθυρο objects και κάνοντας δεξί κλικ πάνω του να ζητήσουμε Add to Wave Window (η απλά να κάνουμε Alt-W). Επίσης, μπορούμε να αναθέσουμε συγκεκριμένες τιμές σε σήματα της αρχιτεκτονικής επιλέγοντας το σήμα που μας ενδιαφέρει από το υποπαράθυρο objects και με δεξί κλικ επιλέγουμε force

23 23 constant. Στο παράθυρο που προκύπτει, όπως φαίνεται στο σχήμα 2.4, στο πεδίο Force to Value μπορεί να δοθεί μια συγκεκριμένη τιμή στο σήμα αυτό. Σχήμα 2.4. Ανάθεση μιας συγκεκριμένης τιμής σε σήμα στον ISIM d. Αν το σήμα του οποίου θέλουμε να επηρεάσουμε την τιμή είναι ρολόι τότε, πρέπει να επιλεγεί το σήμα αυτό και μετά από δεξί κλίκ πάνω του επιλέγουμε Force clock. Στο παράθυρο που προκύπτει, όπως φαίνεται στο σχήμα 2.5, το Leading Edge Value αναφέρεται στην λογική τιμή που θα έχει το ρολόι όταν ξεκινάει (μπορούμε να βάλουμε 1) ενώ το Trailing Edge Value αναφέρεται στην τιμή που θα ακολουθεί (μπορούμε να βάλουμε 0). Το πεδίο Staring at Time Offset αναφέρεται στη χρονική στιγμή πέραν από την οποία θα ενεργοποιηθεί το σήμα ρολογιού ενώ το πεδίο Period αναφέρεται στην περίοδο του ρολογιού (αν δεν βάλουμε μονάδα μέτρησης εννοείται psec)

24 Σχήμα 2.5 Προσδιορισμός σήματος ρολογιού στον ISIM e. Αφού βάλουμε σωστά στα σήματα που μας ενδιαφέρουν τις σωστές τιμές τότε επιλέγουμε από το μενού Simulation το Run ώστε να εξομοιωθεί το κύκλωμά μας για το χρονικό διάστημα που έχουμε ορίσει στη γραμμή εργαλείων όπως φαίνεται στο παρακάτω σχήμα (σχήμα 2.6). Σχήμα 2.6. Ενεργοποίηση εξομοίωσης στη γραμμή εργαλείων 9. Μετά την ολοκλήρωση μιας εξομοίωσης, για τη σωστή σύνθεση των ψηφιακών συστημάτων σύμφωνα με τις συνθήκες που θέλει ο σχεδιαστής πρέπει να γίνουν οι απαραίτητες ρυθμίσεις. Στο παράθυρο των διεργασιών (Processes) επιλέγετε το Synthesize-XST. Δεξί κλικ και στο παράθυρο που

25 αναδύεται επιλέγετε Properties. Στο παράθυρο των ρυθμίσεων επιλέγονται όλες οι απαραίτητες ρυθμίσεις σχετικές με τη σύνθεση του κώδικα. a. Optimization Goal: Βελτιστοποίηση ως προς Area ή Time (αρχικά να επιλεγεί η βελτιστοποίηση ως προς area). b. Optimization Effort: Καθορίζει τις προσπάθειες βελτιστοποίησης c. Synthesis Constraints File: Είναι ένα αρχείο (.xcf) που δίνονται ό- λες οι ρυθμίσεις για την σύνθεση d. Use Synthesis Constraints File: Επιλογή για τη χρήση ή μη του.xcf αρχείου e. Global Optimization Goal: Δίνετε η δυνατότητα για βελτιστοποίηση σε διαφορετικά πεδία στο σχεδίου f. Generate RTL Schematic: Δημιουργία ή όχι του κυκλώματος (RTL) του συστήματος κατά τη σύνθεση 25 g. Write Timing Constraints: να αποθηκεύσει ή όχι τους χρονικούς περιορισμούς του συστήματος. Χρησιμοποιούνται τόσο στη βελτιστοποίηση όσο και στη χωροθέτηση 10. Για να ξεκινήσει η σύνθεση πρέπει να επιλέξετε Synthesize-XST. Δεξί click και στο παράθυρο που αναδύεται επιλέγετε Run. Όταν τελειώσει η σύνθεση βλέπεται το synthesis report με τα αντίστοιχα αποτελέσματα. Α- νατρέξτε στη Final Report παράγραφο και παρατηρήστε τα τελικά αποτελέσματα για τους πόρους υλικού (hardware recourses). Μας ενδιαφέρουν # of slices, # of bonded IOs καθώς επίσης και για τα χαρακτηριστικά του συστήματος ως προς τις απαιτήσεις χρόνου. 11. Τώρα μπορείτε να δείτε τα αποτελέσματα της σύνθεσης. Πως? Επιλέγετε το View Technology Schematic (double click). Ανοίξτε και παρατηρήστε τα σχηματικά που έχει δημιουργήσει για κάθε block του adder4bits.vhd αρχείου.

26 12. Να επαναληφθεί η διαδικασία επιλέγοντας βελτιστοποίηση ως προς time στις ρυθμίσεις σύνθεσης 13. Να ανατρέξετε στην νέα Final Report παράγραφο του synthesis report και να παρατηρήσετε τα τελικά αποτελέσματα για τους πόρους υλικού (hardware recourses). Ζητούμενο 7. Συγκρίνετε και σχολιάστε τυχόν διαφορές μεταξύ των reports του βήματος 10 με αυτό του βήματος 13 Απάντηση Ζητούμενου:

27 27

28 Απαριθμητής 3 Σκοπός Σε αυτή την εργαστηριακή άσκηση ο φοιτητής θα εξοικειωθεί: 1. Με τη χρήση ακολουθιακής λογικής και το μοντέλο περιγραφής συμπεριφοράς στην γλώσσα περιγραφής υλικού VHDL. 2. Με τη δημιουργία test bench για την εξομοίωση και τον έλεγχο της ορθής λειτουργίας του σχεδιασμού. 3.1 Απαριθμητής Ο Απαριθμητής είναι ένα ακολουθιακό κύκλωμα το οποίο σε κάθε παλμό του ρολογιού αυξάνει το περιεχόμενο ενός καταχωρητή κατά '1' (ή κατά κάποιο βήμα ορισμένο από πριν). Δέχεται επίσης ένα σήμα reset το οποίο μηδενίζει ή θέτει τον καταχωρητή σε μία επιθυμητή αρχική τιμή. Παρακάτω παρατίθεται το κύκλωμα ενός σύγχρονου απαριθμητή των 4-bits (Σχήμα 3.1). clk reset D Q bit3 Q D Q D Q D Q bit2 bit1 bit0 Q Q Q Q(3) Q(2) Q(1) Q(0) Σχήμα 3.1 Απαριθμητής 4 bits Παρατηρούμε ότι το ρολόι clk καταλήγει στο σχηματικό διάγραμμα σε ένα τρίγωνο, το οποίο σημαίνει ότι η είσοδος ή το σήμα αυτό είναι ακμοπυροδότητο.

29 3.2 Σχεδίαση του απαριθμητή σε μοντέλο περιγραφής Οι είσοδοι clk και reset είναι τύπου std_logic, ενώ η έξοδος του απαριθμητή reg_out είναι vector των 4 bit τύπου std_logic. Το σήμα count_reg, που προσημειώνει τον καταχωρητή απαρίθμησης, είναι εσωτερικό, ο τύπος του είναι std_logic και είναι vector των 4 bit. Ο VHDL κώδικας που περιγράφει τον απαριθμητή σε επίπεδο συμπεριφοράς δίνεται παρακάτω: LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; ENTITY counter4 IS PORT (clk, reset : IN STD_LOGIC; reg_out: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END counter4; ARCHITECTURE behavioral OF counter4 IS SIGNAL count_reg: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN P1: PROCESS (clk, reset) BEGIN IF reset = '1' THEN count_reg <= 0000 ; ELSIF (clk'event and clk = '1') THEN -- ακμοπυροδότηση count_reg <= count_reg + 1; END IF; END PROCESS P1; reg_out <= count_reg; END behavioral; Ζητούμενο 8: Να εισάγεται τον κώδικα του απαριθμητή στο εργαλείο ISE. Να εξομοιώσετε τον απαριθμητή με το κατάλληλο do αρχείο. Να χρησιμοποιήσετε ένα σήμα ρολογιού με περίοδο 200 nsec. Να περιγράψετε την λειτουργία του do αρχείου που φτιάξατε και να σχεδιάσετε την κυματομορφή που προκύπτει μετά την εξομοίωση. Να κάνετε σύνθεση του απαριθμητή και να παρατηρήστε το RTL σχηματικό και το σχηματικό τεχνολογίας για το FPGA Spartan 3A. Ποια είναι τα στοιχεία του κυκλώματος στο FPGA όπως αυτά προκύπτουν από το synthesis report; Απάντηση Ζητούμενου: 29

30 3.3 Σχεδίαση απαριθμητή μεταξύ αρχικής και τελικής τιμής Tο Σχήμα 3.2 παρουσιάζεται το διάγραμμα ενός απαριθμητή ο οποίος μπορεί να απαριθμεί από μία αρχική τιμή (init_val) έως μία τελική τιμή (last_val).

31 31 last_value 4 init_value reset clk 4 Απαριθμητής 4 output Σχήμα 3.2 Απαριθμητής 4 bits με init_val και last_val Οι είσοδοι int_val και last_val είναι διανύσματα των 4 bit και τύπου std_logic. Ζητούμενο 9: Τροποποιήστε τον κώδικα του απαριθμητή που δίνεται στο εδάφιο 3.2 ώστε να δημιουργήσετε τον απαριθμητή του παραπάνω σχήματος, ο οποίος μετράει μεταξύ των τιμών int_val και last_val. Όταν η τιμή μέτρησης (count_reg) φτάσει τη τιμή last_val τότε η μέτρηση ξεκινάει πάλι από την αρχική τιμή (int_val). Απάντηση Ζητούμενου: Ζητούμενο 10: Να εξομοιώσετε τον απαριθμητή που σχεδιάστηκε με χρήση του κατάλληλου do αρχείου. Να καταγράψετε τις κυματομορφές που προκύπτουν από την εξομοίωση. Θεωρήστε ότι

32 int_val <= 0101 και last_val <= 1010 Απάντηση Ζητούμενου: 3.4 Σχεδίαση απαριθμητή πάνω/κάτω μεταξύ αρχικής και τελικής τιμής Ο απαριθμητής πάνω/κάτω είναι ένας απαριθμητής ο οποίος μπορεί να μετράει κατά '1' προς τα πάνω (δηλαδή αυξάνοντας κατά 1 από int_val σε last_val) ή κατά '1' προς τα κάτω (δηλαδή μειώνοντας κατά 1 από last_val σε int_val). Η κατεύθυνση της μέτρησης ορίζεται από ένα εξωτερικό σήμα εισόδου (το ονομάζουμε direction), όπως παρουσιάζεται στο Σχήμα 3.3.

33 33 direction last_value init_value reset clk 4 4 Απαριθμητής 4 output Σχήμα 3.3 Απαριθμητής 4 bits πάνω/κάτω με σήμα κατεύθυνσης Ζητούμενο 11: Τροποποιήστε τον κώδικα του απαριθμητή μεταξύ αρχικής και τελικής τιμής που δίνεται στο εδάφιο ώστε να δημιουργήσετε τον απαριθμητή του σχήματος, ο οποίος μετράει προς τα πάνω αλλά και προς τα κάτω, μεταξύ των τιμών int_val και last_val. Όταν η κατεύθυνση μέτρησης είναι προς τα πάνω (direction = '1') και η τιμή μέτρησης (count_reg) φτάσει τη τιμή end_val τότε η μέτρηση ξεκινάει από τη τιμή int_val. Όταν η κατεύθυνση μέτρησης είναι προς τα κάτω (direction = '0') και η τιμή μέτρησης (count_reg) φτάσει τη τιμή int_val τότε η μέτρηση ξεκινάει από τη τιμή last_val. Υπόδειξη: Για τη μέτρηση προς τα κάτω να χρησιμοποιήσετε τη μείωση κατά '1' του περιεχομένου του count_reg: count_reg <= count_reg '1'; Απάντηση Ζητούμενου:

34 Ζητούμενο 12: Να γίνει εξομοίωση απαριθμητή που σχεδιάστηκε με χρήση του κατάλληλου do αρχείου έτσι ώστε ο απαριθμητής να μετράει για 38 παλμούς ρολογιού τους μισούς από τους οποίους προς τα πάνω και τους άλλους μισούς προς τα κάτω. Να καταγράψετε τις κυματομορφές που προκύπτουν από την εξομοίωση. Απάντηση Ζητούμενου:

35 35 Παραμετρικοί Καταχωρητές και Καταχωρητές Ολίσθησής. Επιβεβαίωση Ορθής Λειτουργίας με Testbench 4 Σκοπός Στόχος είναι η εξοικείωση του φοιτητή με την έννοια των Testbench σαν μέθοδο επιβεβαίωσης σωστής λειτουργίας ενός σχεδιασμού. Επίσης, στόχος είναι και η κατανόηση της παραμέτρου generate ως τρόπου δημιουργίας μεγάλου αριθμού από παρόμοια στοιχεία μιας αρχιτεκτονικής. 4.1 Παράγοντας Καταχωρητή και Καταχωρητη ολίσθησης από Στοιχεία DFF (Η Δήλωση Generate) Η VHDL μας επιτρέπει να επαναλάβουμε μεγάλο αριθμό από ίδια components που συνδέονται με παρόμοιο τρόπο μεταξύ τους χωρίς να πρέπει να γράψουμε ένα αντίστοιχο port map για καθένα από αυτά ξεχωριστά. Για να γίνει αυτό υπάρχει η δήλωση generate. Για παράδειγμα σε περίπτωση που θέλουμε να δημιουργήσουμε ένα καταχωρητή 128 bits με structural μεθοδολογία, όπως στο Σχήμα 4.1, είναι πολύ δύσκολο να γράψουμε κώδικα για κάθε ένα dff που θέλουμε ενώσουμε σε κύκλωμα. Η λύση δίνεται όπως φαίνεται παρακάτω με τη χρήση του generate Entity reg128 is Port (DIN: in std_logic_vector(127 downto 0); Clk: in std_logic; Reset: in std_logic; Q: out std_logic_vector(127 downto 0)); architecture GEN of reg128 is component DFF port(d,clk,reset : in std_logic; Q : out std_logic); end component;

36 begin GEN_REG: for I in 0 to 127 generate REGX : DFF port map (DIN(I), CLK, RESET, DOUT(I)); end generate GEN_REG; end GEN; DIN DFF 1 bit DFF 1 bit DFF 1 bit... DFF 1 bit DFF 1 bit clk reset Q Σχήμα 4.1 Αρχιτεκτονική ενός καταχωρητή 128 bits με χρήση DFFs Βασιζόμενοι στην ίδια λογική μπορούμε να σχεδιάσουμε και καταχωρητή ολίσθησης όπως αυτόν που φαίνεται στο παρακάτω σχήμα για 4 bit αριθμούς.

37 37 Σχήμα 4.2. Αρχιτεκτονική ενός καταχωρητή ολίσθησης με χρήση DFF για 4 bits Ο καταχωρητής μπορεί να κάνει ολίσθηση 1 bit δεξιά, να φορτώνει παράλληλα νεά δεδομένα (parallel Din) και να λαμβάνει την έξοδο είτε σειριακά (serial shift_out) είτε παράλληλα (parallel_out). Ζητούμενο 13: Με βάση την παραπάνω λογική να υλοποιήσετε σε VHDL ένα καταχωρητή ολίσθησης των 128 bits με structural μεθοδολογία ακολουθώντας το σχήμα 4.2. Απάντηση Ζητούμενου:

38 4.2 Tα Αρχεία Δοκιμών TestBench Αν θέλουμε να επιβεβαιώσουμε την ορθή λειτουργία ενός κυκλώματος, μια καλή ιδέα είναι να φτιάξουμε ένα αρχείο δοκιμών σε VHDL έτσι ώστε να δημιουργήσουμε σύνθετα σενάριο εισόδων (test vectors) και στην συνέχεια μέσω ενός προγράμματος εξομοίωσης να παρατηρήσουμε ή όχι την ορθή αυτή συμπεριφορά. Για την VHDL ένα αρχείο test bench είναι στην ουσία μια οντότητα χωρίς εισόδους και εξόδους που δημιουργεί ένα στιγμιότυπο του υπό δοκιμή σχεδιασμού ( Design Under Test (DUT) Unit Under Test (UUT)) μαζί με μία ή περισσότερες διεργασίες. Οι διεργασίες ελέγχουν τις εισόδους του υπό δοκιμή σχεδιασμού και εξετάζουμε αν αυτό λειτουργεί σωστά με την ανάλυση των αποτελεσμάτων του. Ένα test bench χαρακτηρίζεται πλήρες όταν λαμβάνει υπ' όψη του όλους τους διαφορετικούς συνδυασμούς των εισόδων και ισχυρό όταν από το υποσύνολο των διαφορετικών συνδυασμών των εισόδων μπορεί να προκύψει ότι ο σχεδιασμός που δοκιμάζεται λειτουργεί σωστά. Το testbench αρχείο έχει παρόμοια διάταξη με οποιοδήποτε άλλο αρχείο της VHDL. Αποτελείται όμως από 4 μέρη: Δήλωση βιβλιοθηκών Δήλωση οντότητας (στην οποία όμως εν αντίθεση με ένα κανονικό αρχείο vhdl δεν υπάρχουν είσοδοι και έξοδοι αφού πρόκειται για ένα εικονικό περιβάλλον δοκιμής) Την αρχιτεκτονική που αποτελείται από 2 τμήματα oτο τμήμα δήλωσης του κυκλώματος που πρόκειται να ελεγχθεί oτους συνδυασμούς των εισόδων που θέλουμε να δοκιμάσουμε. Οι συνδυασμοί αυτοί δίνονται συνήθως με εντολές ανάθεσης μιας τιμής σε είσοδο του προς ελέγχου κυκλώματος που ακολουθείται από μια εντολή wait for xx ns; ώστε να δίνεται κατάλληλη καθυστέρηση μεταξύ εισόδων. Παρακάτω δίνεται ένα παράδειγμα testbench για μια πύλη AND. library IEEE; USE IEEE.STD_LOGIC_1164.ALL;

39 39 USE IEEE.STD_LOGIC_unsigned.ALL; USE IEEE.STD_LOGIC_arith.ALL; USE IEEE.STD_LOGIC_textio.ALL; USE IEEE.NUMERIC_STD.ALL; library work; use work.all; entity AND_gateTB is --To entity δεν έχει κανένα σήμα εισόδου ή εξόδου end AND_gateTB; architecture arch of AND_gateTB is component AND_gate port( a: std_logic; b:std_logic; o:std_logic; ); end component; signal a,b,z:std_logic; begin AND_GATE_inst: AND_gate prot map (a,b,z); stim_proc: process is begin a<='0'; b<='0'; wait for 12ns; a<='0'; b<='1'; wait for 10ns; a<='1'; b<='0'; wait for 8ns; a<='1'; b<='1'; wait for 6ns; a<='0'; b<='0'; wait for 4ns; wait; end process stim_proc; end arch; Πέραν από συνδυαστικά κυκλώματα όπως το παραπάνω κύκλωμα της απλής AND πύλης μπορούμε να φτιάξουμε και testbenches ακολουθιακών κυκλωμάτων ή κυκλωμάτων με ρολόι. Παρακάτω ακολουθεί ένα testbench για απαριθμητή (counter) 4 bits σαν αυτόν που σχεδιάστηκε και υλοποιήθηκε στην άσκηση 3. Η διαδικασία

40 δημιουργίας testbench μπορεί να υποβοηθηθεί και μέσω του εργαλείου Xilinx ISE. Για παράδειγμα για την εξομοίωση του απαριθμητή μπορεί να δημιουργηθεί ένα testbench μέσω του ISE αν γίνουν οι παρακάτω ενέργειες. Από τη γραμμή menu του εργαλείου ISE επιλέγουμε Project New Source, με αποτέλεσμα να αναδύεται το παράθυρο του New Source Wizard. Από τις επιλογές του wizard διαλέγουμε τύπο αρχείου εισόδου VHDL Test Bench, δίνουμε όνομα αρχείου για το test bench και επιλέγουμε Next και Finish. Με τη διαδικασία αυτή θα προκύψει ένα VHDL αρχείο, όπως αυτό που παρουσιάζεται παρακάτω, στο οποίο μπορεί κανείς να συμπληρώσει τις διαφορετικές τιμές που θα πάρουν οι είσοδοι την κάθε χρονική στιγμή. Οι αναθέσεις των τιμών στα σήματα καθώς και οι χρονικές στιγμές δίνονται στον παρακάτω κώδικα με bold και italics. LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.all; ENTITY counter4_tb IS END counter4_tb; ARCHITECTURE behavior OF counter4_tb IS -- Component Declaration for the -- Unit Under Test (UUT) COMPONENT counter4 PORT( clk : IN std_logic; reset : IN std_logic; reg_out : OUT std_logic_vector(3 downto 0) ); END COMPONENT; --Inputs signal clk : std_logic := '0'; signal reset : std_logic := '0'; --Outputs signal reg_out : std_logic_vector(3 downto 0); -- Clock period definitions constant clk_period : time := 10ns; signal stop_the_clock: boolean;

41 41 BEGIN -- Instantiate the Unit Under Test (UUT) uut: counter4 PORT MAP ( clk => clk, reset => reset, reg_out => reg_out ); -- Clock process definitions clk_process :process begin while not stop_the_clock loop clk <= '0'; wait for clk_period/2; clk <= '1'; wait for clk_period/2; end loop; wait; end process; -- Stimulus process stim_proc: process begin reset <= '1'; wait for 5 ns; reset <= '0'; wait for 5 ns; -- Χρονισμός άλλων σημάτων wait for clk_period * 18; stop_the_clock <= true; wait; end process; END; Για να γίνει εξομοίωση χρησιμοποιώντας το testbench αρχείο μέσω του ISE, αφού αποθηκευτεί το testbench αρχείο, από το sources window μπορεί να επιλεγεί sources for: Simulation. Επιλέγοντας το test bench αρχείο, από το processes window εκτελούμε την εντολή Simulate Behavioural Model και θα ανοίξει το εργαλείο εξομοίωσης που έχουμε ορίσει στο Xilinx project μας (πχ. Modelsim, Questa,

42 ISIM) και στο παράθυρο Wave θα εμφανιστούν τα αποτελέσματα της εξομοίωσης. Ζητούμενο 14: Για το Κύκλωμα του καταχωρητή ολίσθησης που σχεδιάσατε και υλοποιήσατε σε VHDL να γράψετε κατάλληλο testbench το οποίο να οδηγεί σε έλεγχο όλων των δυνατών καταστάσεων στις οποίες μπορεί εισέρθει το προς εξέταση κύκλωμα (π.χ παράλληλη είσοδος σειριακή έξοδος, σειριακή είσοδος παράλληλε έξοδος κτλ). Απάντηση Ζητούμενου:

43 43 Αριθμητική και Λογική μονάδα 5 Σκοπός Σε αυτή την άσκηση θα κατασκευαστεί μια απλή αριθμητική μονάδα που θα είναι ικανή να πραγματοποιεί τόσο πρόσθεση όσο και αφαίρεση. Στη συνέχεια η μονάδα αυτή θα επεκταθεί με λογικές πράξεις. Στόχος είναι η εξοικείωση του φοιτητή με συνδυασμούς διαφορετικών κυκλωμάτων κάτω από μια κοινή αρχιτεκτονική. 5.1 Αριθμητική Μονάδα Ένα πολύ βασικό κύκλωμα σε συστήματα επεξεργαστών είναι η αριθμητική μονάδα, δηλαδή εκείνο το κομμάτι του επεξεργαστή που αναλαμβάνει να πραγματοποιεί όλες τις πράξεις που γίνονται μεταξύ αριθμών που βρίσκονται είτε σε καταχωρητές είτε στη μνήμη του επεξεργαστή αυτού. Τυπικά μια αριθμητική μονάδα συνδυάζεται και με μια λογική μονάδα η οποία είναι υπεύθυνη για τις λογικές πράξεις μεταξύ αριθμών. Για την Αριθμητική μονάδα μπορείτε να χρησιμοποιήσετε του αθροιστές που κατασκευάστηκαν στα προηγούμενα εργαστήρια. Οι αθροιστές αυτοί μπορούν πολύ εύκολα να μετατραπούν σε αθροιστές/αφαιρέτες ώστε με κατάλληλο σήμα ελέγχου να μπορούν να πραγματοποιούν αφαίρεση αντί για πρόσθεση. Ένα τέτοιο κύκλωμα αθροιστή/αφαιρέτη με σήμα ελέγχου ADD/SUB φαίνεται στο Σχήμα 5.1. Το κύκλωμα του σχήματος 5.1 βασίζεται σε ένα 4 bit αθροιστή κυμάτωσης κρατουμένου ο οποίος όμως στην είσοδό του Β έχει XOR πύλες. Κάθε bit του τελεστέου Β γίνεται XOR με το σήμα ελέγχου ADD/SUB. Αν η τιμή του ADD/SUB είναι 1 τότε λόγω της XOR πράξης η τιμή του Β αντιστρέφεται και μετατρέπεται σε συμπλήρωμα ως προς 2 δεδομένου ότι στον πλήρη αθροιστή του bit μηδέν η είσοδος carry in (CI) είναι 1 (όταν το ADD/SUB είναι 1 ). Σε αυτή την περίπτωση το κύκλωμα προσθέτει το Α+ (συμπλήρωμα ως προς 2 του Β) άρα κάνει αφαίρεση.

44 Σχήμα 5.1 Αρχιτεκτονική Αθροιστή/Αφαιρέτη με σήμα ελέγχου αριθμ. πράξης Ζητούμενο 15: Να υλοποιήσετε σε VHDL το παραπάνω κύκλωμα για 4 bits και για 16 bits με χρήση των components adder1bit που σχεδιάστηκαν σε προηγούμενη άσκηση. Απάντηση Ζητούμενου:

45 5.2 Αριθμητική Και Λογική Μονάδα Στο κύκλωμα της αριθμητικής μονάδας συχνά είναι επιθυμητό να υπάρχει και η δυνατότητα πραγματοποίησης λογικών πράξεων. Μπορεί να υπάρχει σήμα ελέγχου 4 bit το οποίο να μας επιτρέπει να οδηγήσουμε στην έξοδο το αποτέλεσμα μιας αριθμητικής ή λογικής πράξης. Ένα τέτοιο κύκλωμα θα μπορούσε να έχει την αρχιτεκτονική που φαίνεται στο παρακάτω σχήμα (σχήμα 5.2). A B 45 ADD/SUB Αθροιστής/ Αφαιρέτης Control bit Control bit Control bit Control bit 3 Εξοδος Σχήμα 5.2 Αρχιτεκτονική αριθμητικής και λογικής μονάδας. Στην παραπάνω αρχιτεκτονική, οι δυο τελεστέοι Α και Β εισάγονται στις διάφορες πράξεις που μπορεί να πραγματοποιηθούν (πρόσθεση/αφαίρεση, πράξη AND, OR XOR και ΝΟΤ της εισόδου Α). Η έξοδος των πράξεων επιλέγεται από μια σειρά πολυπλεκτών 2 σε 1 που ελέγχονται από ένα σήμα control με βάση την παρακάτω λογική (όπου Χ είναι αδιάφοροι όροι): Control (bit 3, bit 2, bit 1, bit 0) 0ΧΧΧ 10Χ0 10Χ1 110X 111X Πράξη Α +/- Β Α XOR B NOT A A AND B A OR B Ζητούμενο 16: Να σχεδιάσετε την αρχιτεκτονική ενός κυκλώματος για αριθμούς 4

46 bits σε επίπεδο καταχωρητή το οποία με κατάλληλο σήμα ελέγχου να μπορεί να πραγματοποιεί πρόσθεση/αφαίρεση και τις λογικές πράξεις AND, OR XOR, NOT με βάση το παραπάνω σχήμα. Απάντηση Ζητούμενου: Ζητούμενο 17: Να υλοποιηθεί σε VHDL ένα τέτοιο κύκλωμα για 16 bit αριθμούς χρησιμοποιώντας την παράμετρο generate όπου αυτή χρειάζεται.

47 47 Απάντηση Ζητούμενου: Ζητούμενο 18: Εξομοιώστε το κύκλωμα που υλοποιήσατε στο ModelSim και επιβεβαιώστε ότι γίνονται όλες οι πράξεις σωστά.

48 Απάντηση Ζητούμενου:

49 49 Σειριακός Αθροιστής 6 Σκοπός Σε αυτή την εργαστηριακή άσκηση ο φοιτητής θα εξοικειωθεί με τη μεθοδολογία του ιεραρχικού σχεδιασμού. 6.1 Σειριακός Αθροιστής των 4-bit Πολυπλέκτης Ο πολυπλέκτης 2 σε 1 είναι ένα συνδυαστικό κύκλωμα το οποίο ανάλογα με ένα σήμα ελέγχου επιτρέπει να περάσει στην έξοδό του η τιμή από μια από τις 2 εισόδους του, όπως φαίνεται στο σχήμα 6.1. input1 input2 M U X sel output Σχήμα 6.1 Σύμβολο Πολυπλέκτη 2 σε 1 Ζητούμενο 18: Φτιάξτε τον κώδικα ενός πολυπλέκτη 2 σε 1 του 1-bit. Οι δύο είσοδοι του πολυπλέκτη να έχουν ονόματα input1 και input2 αντίστοιχα, η έξοδός του να έχει όνομα output και το σήμα ελέγχου να έχει όνομα sel όπως φαίνεται στο παραπάνω σχήμα. Όταν το σήμα ελέγχου είναι ίσο με 0 στην έξοδο του πολυπλέκτη θα περνάει η είσοδος input1 ενώ όταν είναι ίσο με 1 στην έξοδο του πολυπλέκτη θα περνάει η είσοδος input2. Ονομάστε την Entity του πολυπλέκτη mux2in1.

50 Απάντηση Ζητούμενου: D Flip Flop Το D flip flop με σύγχρονο reset σαν αυτό που φαίνεται στο σχήμα 6.2, είναι ένα ακολουθιακό κύκλωμα στο οποίο η τιμή της εισόδου του D επιτρέπεται να περαστεί στην έξοδο του Q εφόσον έρθει το κατάλληλο σήμα ελέγχου το οποίο συνήθως είναι ένα σήμα ρολογιού. Τα περισσότερα D Flip Flops που χρησιμοποιούνται στην πράξη είναι ακμοπυροδοτητά, δηλαδή η τιμή της εισόδου τους περνά στην έξοδο κατά την ανερχόμενη ή κατερχόμενη παρυφή του σήματος ελέγχου (σήμα ρολογιού). Το σήμα ρολογιού, συνεπώς, ρόλο έχει να συγχρονίζει το πότε η είσοδος θα περνά στην έξοδο. Συνήθως υπάρχει και ένα σήμα reset το οποίο ρόλο έχει να μηδενίζει την τιμή της εξόδου ανεξαρτήτως του ποια είναι η τιμή της D εισόδου. Εφόσον η τιμή του reset λαμβάνεται υπόψη όταν κατά την ανερχόμενη ή κατερχομένη παρυφή του ρολογιού, το reset θεωρείται σύγχρονο με το ρολόι και το D flip flop χαρακτηρίζεται σαν «D flip flop με σύγχρονο reset». Clk D Q DFF reset Σχήμα 6.2 Σύμβολο D flop flop 1 bit

51 Ζητούμενο 19: Φτιάξτε τον κώδικα ενός D Flip Flop με σύγχρονο reset. Το Flip Flop θα έχει είσοδο δεδομένων του 1-bit με όνομα D, είσοδο ρολογιού με όνομα Clk, είσοδο για το reset και μια έξοδο δεδομένων με όνομα Q όπως φαίνεται στο παραπάνω σχήμα. Το Flip Flop θα το προγραμματίσετε ώστε να είναι active low λειτουργίας. Δηλαδή όταν το σήμα reset θα είναι ίσο με 1 θα αρχικοποιεί την έξοδό του στο 0, ενώ όταν το σήμα reset θα είναι ίσο με 0 θα λειτουργεί κανονικά και θα περνάει την είσοδο D στην έξοδο Q. Ονομάστε την Entity του D Flip Flop dff. Απάντηση Ζητούμενου: Καταχωρητής Ολίσθησης Παράλληλης Φόρτωσης 4bit Ο καταχωρητής ολίσθησης με παράλληλη φόρτωση 4 bits είναι ένα ακολουθιακό κύκλωμα το οποίο επιτρέπει την παράλληλη φόρτωση δεδομένων και στην συνέχεια με κατάλληλο σήμα ελέγχου κάνει ολίσθησή τους κατά 1 bit δεξιά. Το κύκλωμα φαίνεται στο σχήμα 6.3.

52 Mux3_out Mux2_out Mux1_out Mux1_out A(3) A(2) A(1) A(0) sel serial M U X D Q DFF M U X D Q DFF M U X D Q DFF M U X D Q DFF output Clock reset FF3_out FF2_out FF1_out Σχήμα 6.3. Αρχιτεκτονική Καταχωρητή ολίσθησης Παράλληλης φόρτωσης 1 bit Ο καταχωρητής έχει μία είσοδο παράλληλης φόρτωσης εύρους 4-bit (προσέξτε ότι το A(3) bit είναι το MSB ενώ το A(0) είναι το LSB), μία είσοδο σειριακής φόρτωσης (serial), μία είσοδο του σήματος ελέγχου (sel), μία είσοδο ρολογιού (Clock), μια είσοδο αρχικοποίησης (reset) και μία έξοδο ολίσθησης (output). Επίσης να χρησιμοποιήσετε την ονοματολογία που φαίνεται στο σχήμα για τα ενδιάμεσα σήματα (Mux3_out, Mux2_out, FF1_out κ.λ.π.). Η λειτουργία ενός καταχωρητή ολίσθησης με παράλληλη φόρτωση είναι η εξής: Όταν το σήμα ελέγχου είναι 0, τότε τα τέσσερα Flip Flops φορτώνονται παράλληλα από τις τέσσερις γραμμές της παράλληλης εισόδου (A(3)A(2)A(1)A(0)). Αντίθετα, όταν το σήμα ελέγχου είναι 1, ο καταχωρητής συμπεριφέρεται σαν κανονικός καταχωρητής ολίσθησης και το αριστερότερο Flip Flop φορτώνεται από την σειριακή είσοδο (serial), η έξοδος κάθε Flip Flop οδηγεί την είσοδο του επόμενου, ενώ η έξοδος του δεξιότερου Flip Flop είναι η σειριακή έξοδος του ολισθητή (output). Ζητούμενο 20: Χρησιμοποιώντας τον πολυπλέκτη και το D Flip Flop που έχετε φτιάξει δημιουργήστε τον κώδικα για έναν καταχωρητή ολίσθησης με παράλληλη φόρτωση των 4-bit του παραπάνω σχήματος. Ονομάστε την Entity του ολισθητή shifter. Απάντηση Ζητούμενου:

53 Σχεδιασμός Σειριακού Αθροιστή 4 bits Ο σειριακός αθροιστής των 4 bits είναι ένα κύκλωμα το οποίο υπολογίζει επανα-

54 ληπτικά ανα 1 bit το αποτέλεσμα μιας πρόσθεσης 2 4 bits αριθμών. Ένας τέτοιος αθροιστής φαίνεται στο σχήμα 6.4. A(3) shifter A(2) A(1) A(0) sel shifter1_out 0 M U X D Q DFF M U X D Q DFF M U X D Q DFF M U X D Q DFF Clock reset A sum B(3) shifter B(2) B(1) B(0) sel shifter2_out B 1-bit Adder Cout 0 M U X D Q DFF M U X D Q DFF M U X D Q DFF M U X D Q DFF Cin Q D DFF tmp_cout Clock reset tmp_cin Σχήμα 6.4 Αρχιτεκτονική Σειριακού Αθροιστή 4 bits Ο αθροιστής αυτός έχει δύο εισόδους τελουμένων εύρους 4-bit η καθεμία (Α και Β είναι οι γραμμές στις οποίες εισάγουμε τους δύο αριθμούς που θα αθροιστούν), μία είσοδο ρολογιού, μία είσοδο του σήματος ελέγχου και μία έξοδο εύρους 1-bit (Sum). Όταν το σήμα ελέγχου είναι 0, οι καταχωρητές φορτώνονται παράλληλα από τις εισόδους τελουμένων, ενώ όταν είναι 1 οι καταχωρητές ολισθαίνουν τα περιεχόμενα τους στον πλήρη αθροιστή 1 bit, όπου και αθροίζονται (η πρόσθεση των αριθμών ολοκληρώνεται μετά από τέσσερις κύκλους ρολογιού). Το πιο σημαντικό ψηφίο του αποτελέσματος βρίσκεται, μετά την ολοκλήρωση της άθροισης, στο Flip Flop κρατουμένου. Ζητούμενο 21: Χρησιμοποιώντας δύο καταχωρητές ολίσθησης των 4-bit, ένα D Flip Flop και τον αθροιστή του 1-bit (οντότητα adder1bit από τη πρώτη εργαστηριακή άσκηση) δημιουργήστε τον κώδικα του σειριακού αθροιστή των 4-bit του παραπάνω σχήματος. Προσέξτε ότι στο σχήμα αυτό, το σήμα Cout είναι σήμα εξόδου, αλλά επίσης χρησιμοποιείται και σαν εσωτερικό σήμα για την είσοδο του κρατουμένου της επόμενης βαθμίδας άθροισης. Για αυτό θα χρησιμοποιήσετε ένα εσωτερικό σήμα (έστω tmp_cout) για την έξοδο κρατουμένου από τον αθροιστή του 1-bit, το οποίο αφενός θα το οδηγήσετε σαν είσοδο στο Flip Flop κρατουμένου και αφετέρου στην έξοδο Cout του σειριακού αθροιστή των 4-bit.

55 55 Ονομάστε την Entity του σειριακού αθροιστή serial_adder. Απάντηση Ζητούμενου: 6.2 Προσομοίωση του Σειριακού Αθροιστή Για τη προσομοίωση του σειριακού αθροιστή θα δημιουργήσετε ένα do αρχείο

56 (macro εντολή) παρόμοιο με αυτό που δημιουργήσατε στην άσκηση 1. Παρακάτω περιγράφεται το σενάριο λειτουργίας του αθροιστή με του οποίου τη βοήθεια θα δημιουργήσετε το do αρχείο. α) Αρχικά θα αρχικοποιήσετε τον αθροιστή έτσι όλες οι είσοδοι και οι έξοδοί του να είναι μηδέν. Για να γίνει αυτό θα πρέπει για ένα παλμό ρολογιού να θέσετε το σήμα reset του αθροιστή ίσο με 1. Οι είσοδοι των τελουμένων Α και Β θα είναι ίσοι με Τη διαδικασία αυτή θα πρέπει να την κάνετε σε κάθε κύκλωμα που απαρτίζεται από καταχωρητές και ολισθητές. β) Στον επόμενο παλμό του ρολογιού αρχικά θα πρέπει να θέσετε τη τιμή του reset ίση με 0 έτσι ώστε κάθε Flip Flop να περνάει στην έξοδό του την αντίστοιχη είσοδό του και παράλληλα να δώσετε τις τιμές των αριθμών που θα αθροιστούν. Με το σήμα ελέγχου, sel, σε τιμή ίση με 0 δίνεται τις τιμές των Α και Β, έστω Α=Α(3)Α(2)Α(1)Α(0)=0101 και Β=Β(3)Β(2)Β(1)Β(0)=1010. γ) Στον επόμενο παλμό θα πρέπει το σήμα sel να πάρει τιμή ίση με 1 έτσι ώστε οι καταχωρητές να ολισθαίνουν τα περιεχόμενά τους στον αθροιστή του 1-bit. Μετά από τέσσερις παλμούς το αποτέλεσμα τις πρόσθεσης θα είναι διαθέσιμο στην έξοδο sum του αθροιστή. Το σήμα Cout δείχνει το MSB του αποτελέσματος. Ελέγξτε την ορθότητα των αποτελεσμάτων. δ) Για το σήμα του ρολογιού, Clock, δώστε τις παρακάτω εντολές στο do αρχείο force -freeze /clock 0 0, repeat 200 που σημαίνει δώσε στο σήμα του ρολογιού τιμή 0 τη χρονική στιγμή 0 (nsec), τιμή 1 τη χρονική στιγμή 100 (nsec) (δημιουργία τετραγωνικού παλμού) και επανέλαβε τη διαδικασία αυτή κάθε 200 nsec. Στη πραγματικότητα η συνολική περίοδος του παλμού του ρολογιού ορίζεται από τα αποτελέσματα της σύνθεσης του σειριακού αθροιστή. Ζητούμενο 22: Ο σωστός έλεγχος επιτάσσει δοκιμές με όλους τους δυνατούς συνδυασμούς των Α και Β. Για χάρη συντομίας, καλείστε να δοκιμάσετε τουλάχιστον άλλους δύο συνδυασμούς για τους τελούμενους Α και Β επαναλαμβάνοντας τη διαδικασία που προαναφέρθηκε. Απάντηση Ζητούμενου:

57 57

58 Ψευδοτυχαία Γέννηση αριθμών (Linear Feedback Shift Register) 7 Σκοπός Σκοπός της συγκεκριμένης άσκησης είναι η εισαγωγή του φοιτητή στη φιλοσοφία σχεδιασμού σύνθετων κυκλωμάτων. 7.1 Ο Γραμμικός Καταχωρητής Ολίσθησης με Ανάδραση Ο Γραμμικός Καταχωρητης Ολισθησης με Ανάδραση (Linear Feedback Shift Register) είναι ένα ακολουθιακό κύκλωμα καταχωρητή ολίσθησης το οποίο προκαλεί ένα ψευδοτυχαίο κύκλο τιμών μέσω μιας ακολουθίας από δυαδικές τιμές. Οι LFSRs βρίσκουν πολλές εφαρμογές, όπως: Κρυπτογράφησή και Αποκρυπτογράφηση δεδομένων Ανάλυση Ψηφιακών Σημάτων Ασύρματες Επικοινωνίες Built-in Self Test (BIST) Ακεραιότητα δεδομένων (Checksums) Συμπίεση δεδομένων Γεννήτριες ψευδοτυχαίων αριθμών Βελτιστοποιημένοι απαριθμητές Ένας LFSR αποτελείται από έναν καταχωρητή ολίσθησης και από ένα κύκλωμα ανάδρασης

59 Λειτουργία Η ανάδραση σε ένα LFSR προέρχεται από την επιλογή κάποιων σημείων σύνδεσης (taps) στην αλυσίδα των DFF του καταχωρητή ολίσθησης και στην πράξη XOR μεταξύ τους ώστε να παρέχονται νέες τιμές σαν είσοδο στον καταχωρητή ολίσθησης. Η επιλογή ποιων bits του καταχωρητή θα λειτουργήσουν ως taps καθορίζει πόσες τιμές θα έχει η ακολουθία μέχρι να ξεκινήσει να επαναλαμβάνεται. Ακολουθεί ένα σχήμα (Σχήμα 7.1) με την μορφή ενός απλού 8 bit LFSR που έχει taps στις θέσεις 1, 2 και 3 (από αριστερά) καθώς και τη θέση 7. DFF DFF DFF DFF DFF DFF DFF DFF Έξοδος clock reset Σχήμα 7.1 Αρχιτεκτονική ενός 8 bit LFSR τύπου Galois Επανάληψη Ακολουθιών Η επιλογή των θέσεων όπου θα υπάρχουν taps καθορίζει πόσες τιμές θα υπάρχουν στην ακολουθία ψευδοτυχαίων αριθμών πριν αυτή αρχίσει να επαναλαμβάνεται. Κάποιες θέσεις taps παρέχουν το μέγιστο μέγεθος ακολουθιών που είναι (2 N -1). Ο κάτωθι πίνακας (Πίνακας 7.1) μας δείχνει τον ελάχιστο αριθμό taps που παρέχουν μέγιστο μέγεθος LFSR για αριθμούς 2 έως 32 bit. n LFSR n LFSR , 17, 16, , 18, 17, , 19, 16, , 4, 3, , 20, 19, , 5, 3, , 19, 18, , 6, 5, , 22, 20, , 6, 5, , 23, 21, , 8, 6, , 24, 23, 22

60 10 10, 9, 7, , 25, 24, , 10, 9, , 26, 25, , 11, 8, , 27, 24, , 12, 10, , 28, 27, , 13, 11, , 29, 26, , 14, 13, , 30, 29, , 14, 13, , 30, 26, , 16, 15, 14 Πίνακας 7.1 Αριθμός Taps για μέγιστο μέγεθος LFSR Παράδειγμα ενός γενικού LFSR Υπάρχουν δύο είδη LFSR ανάλογα με το πώς συνδέεται η πύλη XOR στο κύκλωμα του καταχωρητή ολίσθησης. Το πρώτο είδος ονομάζεται Fibonacci LFSR ενώ το δεύτερο Galois LFSR. Η αρχιτεκτονική του Σχήματος 7.2 περιγράφει έναν LFSR τύπου Galois μήκους 5. load polyn(3) polyn(2) polyn(1) polyn(0) seed(4) seed(3) seed(2) seed(1) seed(0) DFF DFF DFF DFF DFF clock reset enable Σχήμα 7.2 Αρχιτεκτονική ενός 5 bit LFSR τύπου Galois Ο αντίστοιχος κώδικας VHDL περιγράφεται παρακάτω. Έχει μέγιστο μέγεθος (2 width -1), όπου width είναι ο αριθμός των DFF του καταχωρητή του LFSR. H ε- νεργοποίηση του σήματος "enable" στην ανερχόμενη παρυφή του ρολογιού εκκινήσει τον LFSR ώστε αυτός να ξεκινήσει να παράγει ακολουθία τυχαίων αριθμών. Πριν ο LFSR χρησιμοποιηθεί για πρώτη φορά πρέπει το σήμα "reset" (που ενεργοποιείται στο λογικό ένα) να ενεργοποιηθεί ώστε να αρχικοποιηθούν τα DFF του LFSR και να έχουν όλα τιμή λογικό 0. Το σήμα "load" ενεργοποιείται για έναν

61 παλμό ρολογιού ταυτόχρονα με το "enable" και αρχικοποιεί τα DFF στην αρχική τους κατάσταση που ορίζεται από την είσοδο "seed". Η είσοδος "polyn" αναφέρεται στο πολυώνυμο ανάδρασης που χρησιμοποιεί ο LFSR. Πρακτικά, όπου υπάρχει λογικό 1 στη δυαδική απεικόνιση της εισόδου "polyn" υπάρχει σημείο σύνδεσης (tap) και την έξοδο του τελευταίου DFF του LFSR θα τη χρησιμοποιήσουμε σαν είσοδο στη πύλη XOR της αντίστοιχης θέσης. Παρατηρώντας τον Πίνακα 7.1, βλέπουμε ότι για LFSR μήκους 5 πρέπει να έχουμε σημεία σύνδεσης στις θέσεις [5,4, 3,2] άρα η είσοδος "polyn" πρέπει να έχει την τιμή 1110 στο δυαδικό σύστημα. Η θέση 5 είναι πάντα συνδεδεμένη και περιγράφει την ανάδραση του τελευταίου DFF στην είσοδο του πρώτου DFF του LFSR. To σήμα "data_ready" ενεργοποιείται στο λογικό 1 όταν έχουν παραχθεί τα δεδομένα του LFSR. Library Ieee; Use Ieee.std_logic_1164.all; Entity LFSR is generic(width : integer :=5); port(seed : In std_logic_vector(width-1 downto 0); polyn : In std_logic_vector(width-2 downto 0); clock,reset,enable,load : In std_logic; data_ready : Out std_logic; result : Out std_logic_vector(width-1 downto 0)); End LFSR; Architecture structural of LFSR is Component d_ff port(d,clk,reset,enable : in std_logic; q : out std_logic); End component; Component mux2x1 port(a,b,sel : In std_logic; c : out std_logic); End component; Component xor_gate port(a, b : In std_logic; c : out std_logic); End component; Component and_gate port(a, b : In std_logic; 61

62 c : out std_logic); End component; Component cu generic(width : integer :=5); port(clock,reset,enable : In std_logic; data_ready : Out std_logic); End component; signal mux_out : std_logic_vector(width-1 downto 0); signal xor_out : std_logic_vector(width-2 downto 0); signal ff_out : std_logic_vector(width-1 downto 0); signal and_out : std_logic_vector(width-2 downto 0); begin mux_width_1: mux2x1 port map (a=>seed(width- 1),b=>ff_out(0),sel=>load,c=>mux_out(width-1)); mux_chain: For k in 0 to width-2 generate muxes: mux2x1 port map (a=>seed(k),b=>xor_out(k),sel=>load,c=>mux_out(k)); End generate; ff_chain: For i in 0 to width-1 generate latch_ff: d_ff port map (d=>mux_out(i),clk=>clock,reset=>reset,enable=>enable,q=>ff_out(i)); End generate; xor_chain: For l in 0 to width-2 generate xor_gates: xor_gate port map (a=>ff_out(l+1),b=>and_out(l),c=>xor_out(l)); End generate; and_chain: For j in 0 to width-2 generate and_gates: and_gate port map (a=>polyn(width- 2),b=>ff_out(0),c=>and_out(j)); End generate; result<=ff_out; control_unit: cu generic map (width=>width) port map (clock=>clock,reset=>reset,enable=>enable,data_ready=>data_re ady); End structural;

63 63 Για τη λειτουργία του κώδικα LFSR απαιτούντα οι κώδικες των πυλών AND και XOR, του πολυπλέκτη 2 σε 1, του DFF και της μονάδας ελέγχου του LFSR οι ο- ποίοι δύνονται παρακάτω. Library IEEE; Use IEEE.std_logic_1164.all; Entity and_gate is port(a, b : In std_logic; c : out std_logic); End and_gate; Architecture behavioral of and_gate is begin Process(a,b) begin c <= a and b; End process; End behavioral; Library IEEE; Use IEEE.std_logic_1164.all; Entity xor_gate is port(a, b : In std_logic; c : out std_logic); End xor_gate; Architecture behavioral of xor_gate is begin Process(a,b) begin c <= a xor b; End process; End behavioral; Library IEEE; Use IEEE.std_logic_1164.all;

64 Entity mux2x1 is port(a,b,sel : In std_logic; c : out std_logic); End mux2x1; Architecture behavioral of mux2x1 is begin Process(a,b,sel) begin Case sel is when '1' => c<=a; when others => c<=b; End case; End process; End behavioral; Library IEEE; Use IEEE.std_logic_1164.all; Entity d_ff is port(d,clk,reset,enable : in std_logic; q : out std_logic); End d_ff; Architecture behavioral of d_ff is begin Process(clk,reset) begin If reset = '1' then --active low q <= '0' ; elsif rising_edge(clk) then If enable = '1' then else q <= d ;

65 65 q <= '0'; End if; End if; End process; End behavioral; Library Ieee; Use Ieee.std_logic_1164.all; Entity cu is generic(width : integer :=5); port(clock,reset,enable : In std_logic; data_ready : Out std_logic); End cu; Architecture behavioral of cu is begin Process(clock,reset,enable) variable metr : integer range 0 to width+2; begin If reset = '1' then data_ready<='0'; metr:=0; elsif rising_edge(clock) then --active low If enable = '1' then else metr:=metr+1; If metr=width+2 then End if; data_ready<='1'; metr:=0;

66 data_ready<='0'; End if; End if; End process; End behavioral; Ζητούμενο 23: Να εξηγήσετε την αρχιτεκτονική του κυκλώματος του LFSR του Σχήματος 7.2 βάση των σημάτων "seed", "polyn" και "load". Απάντηση Ζητούμενου: Ζητούμενο 24: Τι αλλαγές πρέπει να γίνουν για να υλοποιήσετε δύο LFSR μήκους 17 και 32 bits σύμφωνα με τον Πίνακα 7.1; Απάντηση Ζητούμενου:

67 67

68 Ζητούμενο 25: Να φτιαχτούν κατάλληλα testbench και να εξομοιωθούν οι VHDL κώδικες του ζητούμενου 24. Σημειώστε σε πίνακα τις τυχαίες τιμές που προκύπτουν κάνοντας χρήση 5 διαφορετικών εισόδων "seed" για κάθε LFSR. Απάντηση Ζητούμενου:

69 69

70 Υλοποιώντας σύνθετα Συστήματα. Αλγόριθμοι Ροής Συμμετρικής Κρυπτογραφίας 8 Σκοπός Σκοπός της άσκησης είναι η δημιουργία σύνθετων κυκλωμάτων που έχουν σαν δομικά τους στοιχεία άλλα σύνθετα κυκλώματα. Σαν παράδειγμα χρήσης επιλέγεται η υλοποίηση ενός απλού κρυπτογραφικού συστήματος αλγορίθμων ροής Κρυπτογραφώντας με Αλγορίθμους Ροής Οι αλγόριθμοι κρυπτογράφησης ροής (stream cipher) μετατρέπουν ένα απλό κείμενο (plaintext) σε κρυπτογραφημένο (ciphertext) ανά ένα bit κάθε χρονική στιγμή. Παράδειγμα ενός απλού τέτοιου αλγορίθμου είναι η πύλη ΧOR. Μια γενική μορφή τέτοιου αλγορίθμου φαίνεται στο σχήμα 8.1, όπου ένα γεννήτορας κλειδιών αναλαμβάνει να εξάγει μια ακολουθία κλειδιών (keystream) k1, k2, k3,..., ki τα οποία στην συνέχεια θα γίνουν XOR με την ροή από bits του αρχικού μηνύματος (p1, p2, p3,..., pi) ώστε να παράγουν την ροή των bits του κρυπτογραφημένου μηνύματος. Η διαδικασία περιγράφεται από την σχέση: ci = pi xor ki Κατά την διαδικασία της αποκρυπτογράφησης, η ροή bits του κρυπτογραφημένου μηνύματος γίνεται XOR με μια ταυτόσημη ροή κλειδιών με αυτά της κρυπτογράφησης, δίνοντας έτσι τη σωστή ροή bits του αρχικού μηνύματος. Η διαδικασία περιγράφεται από την σχέση: pi = ci xor ki. Αποστολέας Δέκτης Γεννήτορας Ροής Κλειδιών Γεννήτορας Ροής Κλειδιών Αρχικό μήνυμα (Plaintext) Κρυπτογραφημένο μήνυμα (Ciphertext) Κρυπτογραφημένο μήνυμα (Ciphertext) Αρχικό μήνυμα (Plaintext) Σχήμα 8.1 Κρυπτογράφηση και αποκρυπτογράφηση με αλγόριθμους Ροής

71 8.2 Οι LFSR του Αλγορίθμου Ροής Για τους αλγόριθμους ροής ένας γεννήτορας ροής κλειδιών είναι απαραίτητος. Υπάρχουν πολλοί τρόποι ώστε να παράγουμε μια ροή κλειδιών οι οποίοι είναι στην ουσία ψευδοτυχαίες γεννήτριες αριθμών Ένα τρόπος για να δημιουργήσουμε ένα γεννήτορα ροής κλειδιών είναι μέσω LFSRs. Όπως είδαμε στην προηγούμενο εργαστηριακή άσκηση ένας LFSR αποτελείται ουσιαστικά από ένας καταχωρητή ολίσθησης και μια συνάρτηση ανάδρασης. Για τη γέννηση κλειδιών, ο καταχωρητής ολίσθησης τροφοδοτείται με n bits σαν είσοδο (seed) το οποία θεωρούμε σε ένα αλγόριθμο ροής σαν το κλειδί από το οποίο θα γεννηθεί η ακολουθία κλειδιών. Κάθε φορά που ένα τέτοιο κλειδί ροής χρειάζεται, τότε αρκεί να ολισθαίνει ο καταχωρητης ολίσθησης του LFSR κατά μια θέση δεξιά. Το ελάχιστα σημαντικό ψηφίο είναι η έξοδος (άρα και το κλειδί ροής). Το νέο πιο αριστερό bit υπολογίζεται σαν το αποτέλεσμα της XOR κάποιων από τα bit του καταχωρητή. Το νέο αριστερό πιο σημαντικό bit υπολογίζεται πραγματοποιώντας μια πράξη XOR μεταξύ συγκεκριμένων bits του καταχωρητή. Αυτή η διάταξη μπορεί να οδηγήσει στη γέννηση μιας 2n-1 μεγέθους bit ψευδοτυχαία ακολουθία αριθμών (που καλούμε περίοδο) πριν οι αριθμοί της ακολουθίας αρχίσουν να επαναλαμβάνονται. Για να μεγιστοποιήσουμε την περίοδο του LFSR, το πολυώνυμο που δημιουργείται από την tap ακολουθία (δηλ. Από τα bits που γίνονται XOR μεταξύ τους) συν μια σταθερά τιμή 1 πρέπει να είναι ένα πρωτογενές πολυώνυμο modulo 2. Ο βαθμός του πολυωνύμου είναι το μέγεθος bit του καταχωρητή ολίσθησης. Για παράδειγμα έστω ότι δίνεται ένας 8-bit καταχωρητής ολίσθησης με το πρωτογενές modulo 2 πολυώνυμο x 8 +x 4 +x 3 +x 2 +1, όπως φαίνεται στο σχήμα 8.2. Συνεπώς η tap ακολουθία αποτελείται από τα bit 8, bit 4, bit 3, και bit 2 (ή τα bit 7, bit 3, bit 2, και bit 1 αν ξεκινάμε να μετράμε τα bits από το 0). Κάνοντας XOR αυτά τα bits μεταξύ τους, ο προκύπτων LFSR θα έχει μέγιστο μήκος ακολουθίας, και οι τιμές του θα επαναλαμβάνονται ύστερα από νούμερα. 71 DFF DFF DFF DFF DFF DFF DFF DFF Έξοδος clock reset Σχήμα 8.2 Ένας 8 bit LFSR

72 Ζητούμενο 26. Τροποποιήσετε τους LFSR που φτιάξατε στη προηγούμενη εργαστηριακή άσκηση για 8, 11 και 13 bits κάνοντας χρήση των taps του Πίνακα 7.1. Απάντηση Ζητούμενου:

73 8.3 Γεννήτορας Ροής κλειδιών 73

74 Συνδυάζοντας LFSRs διαφορετικών μεγεθών (δηλ. με διαφορετικά πολυώνυμα ανάδρασης), μπορεί να φτιαχτεί ένας γεννήτορας ροής κλειδιών. Για να κατασκευαστεί ένας μέγιστου μεγέθους γεννήτορας, τα μεγέθη των επιμέρους LFSR πρέπει να είναι μεταξύ τους πρώτοι αριθμοί. Κάθε φορά που ζητείται ένα κλειδί ροής τότε όλοι οι LFSRs ολισθαίνουν μια θέση και το bit εξόδου τους συνδυάζεται ώστε να προκύψει το κλειδί ροής. Παράδειγμα ενός γεννήτορα ροής κλειδιών είναι ο Geffe γεννήτορας ο οποίος φαίνεται στο σχήμα 8.3. Αποτελείται από τρεις LFSRs που συνδυάζονται με μη γραμμικό τρόπο, όπως φαίνεται στο παρακάτω σχήμα. LFSR-1 LFSR-2 M U X LFSR-3 Σχήμα 8.3 O Geffe Γεννήτορας Δύο από τους LSFRs είναι είσοδοι ενός πολυπλέκτη και η έξοδος του τρίτου LFSR ελέγχει την έξοδο του πολυπλέκτη. Υποθέτοντας ότι a1, a2, και a3 είναι οι έξοδοι του κάθε ενός από τους τρεις LFSRs τότε η έξοδος του γεννήτορα Geffe είναι η ακόλουθη: b = (a1 ^ a2) xor ((~a1) ^ a3) όπου ^ αναπαριστά την λογική πράξη "AND" ~ αναπαριστά την λογική πράξη "NOT" Η περίοδος επανάληψης της ροής κλειδιών προκύπτει από το ελάχιστο κοινό πολλαπλάσιο των περίοδών των τριών LFSRs. Αν θεωρήσουμε ότι χρησιμοποιούμε LFSRs με μεγέθη 13, 11 και 8 bits και δεδομένου ότι τα μεγέθη είναι μεταξύ τους πρώτοι αριθμοί τότε η περίοδος του γεννήτορα θα είναι: n = n1 * n2 * n3 = 13 * 11 * 8 = 1144 Ζητούμενο 27: Να περιγράφει σε VHDL το κύκλωμα ενός πολυπλέκτη 2 σε 1 για χρήση στο παραπάνω κύκλωμα και να περιγράφει σε VHDL τo κύκλωμα του γεννήτορά ακολουθίας κλειδιών χρησιμοποιώντας σαν components τον πολυπλέκτη 2 σε 1 και τους τρεις LFSRs των 8, 11, και 13 bits. Να θεωρήσετε ότι ο LFSR-1 είναι

75 αυτός με μήκος 8 bits, ο LFSR-2 είναι αυτός με μήκος 13 bits και ο LFSR-3 είναι αυτός με μήκος 11 bits. Απάντηση Ζητούμενου: Πλήρης Κρυπτογραφικός αλγόριθμος Ροής Ζητούμενο 28: Χρησιμοποιώντας τα στοιχεία που φτιάξατε στις προηγούμενες

76 υποενότητες, να περιγράψετε σε VHDL το κύκλωμα του πλήρη Αλγορίθμου Ροής ακολουθώντας το σχήμα στην αρχή της άσκησης. Απάντηση Ζητούμενου: Ζητούμενο 29: Να φτιάξετε ένα testbench που να επιβεβαιώνει την ορθή λειτουργία του κυκλώματος που περιγράψατε και να κάνετε κατάλληλες εξομοιώσεις στο Questa ή ModelSim ή ISIM.

77 Απάντηση Ζητούμενου: 77

78 Μηχανές πεπερασμένων καταστάσεων 9 Σκοπός Σκοπός της άσκησης είναι η εκμάθηση της λογικής και τρόπου λειτουργίας των μηχανών πεπερασμένων καταστάσεων με τις οποίες μπορεί κανείς να αναπαραστήσει και εν τέλει να υλοποιήσει σύνθετες δομές ακολουθιακών κυκλωμάτων για έλεγχο συστημάτων υλικού. 9.1 Πεπερασμένες Καταστάσεις Μια μηχανή Πεπερασμένων Καταστάσεων (FSM Finite State Machine), είναι ένα μαθηματικό μοντέλο που πολλές φορές χρησιμοποιείται στo σχεδιασμό ψηφιακών κυκλωμάτων ή προγραμμάτων υπολογιστών. Είναι ένα μοντέλο συμπεριφοράς το οποίο αποτελείται από ένα πεπερασμένο αριθμό καταστάσεων, μεταβάσεων μεταξύ των καταστάσεων και ενεργειών. Έχει πεπερασμένη εσωτερική μνήμη, μπορεί να διαβάζει τις εισόδους του ακολουθιακά (σύμβολο προς σύμβολο) και έχει κάποιες εξόδους. Η λειτουργία ενός FSM είναι η εξής: Ξεκινάει από μια από τις καταστάσεις του (αρχική κατάσταση) και μεταβαίνει μεταξύ των καταστάσεων ανάλογα με τις τιμές των εισόδων και της κατάστασης που βρίσκεται σε κάθε στιγμή. Πιο συγκεκριμένα η παρούσα κατάσταση εξαρτάται από τις προηγούμενες του συστήματος. Ο αριθμός και τα ονόματα των καταστάσεων εξαρτώνται από τις πιθανές διαφορετικές καταστάσεις που μπορεί να βρεθεί το FSM, για παράδειγμα αν η μνήμη του έχει 3 δυαδικά ψηφία τότε είναι 8 οι πιθανές καταστάσεις στις οποίες μπορεί να βρεθεί. Μια μετάβαση από μια κατάσταση σε κάποια άλλη συμβαίνει όταν ικανοποιούνται κάποιες προϋποθέσεις. Μια κατάσταση απεικονίζεται με ένα κύκλο. Τα ονόματα των καταστάσεων τοποθετούνται μέσα στον κύκλο. Μια μετάβαση μεταξύ δύο καταστάσεων συμβολίζεται με μια ακμή από τον κύκλο της πρώτης κατάστασης στο κύκλο της δεύτερης. Πάνω στην ακμή σημειώνονται η προϋποθέσεις που πρέπει να ισχύουν για να γίνει μια μετάβαση. Για παράδειγμα, αν για την αλλαγή από την μία κατάσταση σε μια άλλη πρέπει η είσοδος w ναι είναι 0 τότε σημειώνουμε w=0. Οι FSMs μπορούν να χρησιμοποιηθούν για να επιλύσουν προβλήματα αυτοματισ-

79 μού, αναγνώρισης προτύπων κτλ. Οι FSMs διακρίνονται σε τύπου Moore και Mealy. Στα κυκλώματα τύπου Moore οι έξοδοι εξαρτώνται αποκλειστικά από την παρούσα κατάσταση του κυκλώματος ενώ σε αυτά τύπου Mealy, οι έξοδοι εξαρτώνται από την παρούσα κατάσταση του κυκλώματος και τις παρούσες τιμές των εισόδων. 9.2 Μηχανή Τύπου Moore Για να γίνει καλύτερη κατανόηση του τρόπου σχεδιασμού και υλοποίησης μιας μηχανής καταστάσεων τύπου Moore, πρόκειται να υλοποιηθεί η παρακάτω μελέτη περίπτωσης. Έστω ότι υπάρχει ένας κλειστός χώρος πάρκινγκ στον οποίο ο οδηγός ενός αυτοκινήτου έχει πρόσβαση αν ανοίξει μια γκαραζόπορτα. Η πόρτα αυτή ελέγχεται α- σύρματα από ένα τηλεχειριστήριο με δύο κουμπιά. Η γκαραζόπορτα μπορεί να είναι είτε ανοικτή είτε κλειστή ενώ υπάρχει και ένα φως ώστε να μπορεί να φωτίζεται ο χώρος καθώς το αυτοκίνητο παρκάρει στον κλειστό χώρο. Το φως μπορεί να είναι είτε αναμμένο είτε σβηστό. Αρχικά η πόρτα είναι κλειστή και ο φωτισμός του χώρου απενεργοποιημένος (η λάμπα φωτισμού είναι σβηστή). Όταν ο οδηγός θέλει να παρκάρει, πατάει το κουμπί Α και η πόρτα πρέπει να ανοίξει ενώ ο χώρος πρέπει να φωτιστεί ενεργοποιώντας την λάμπα φωτισμού. Αν ένας οδηγός πατήσει το κουμπί Β, τότε η πόρτα πρέπει να κλείσει και ο φωτισμός να σβήσει. Για όσο διάστημα ένα από τα κουμπιά είναι πατημένα η πόρτα και ο φωτισμός παραμένουν στην προηγούμενη κατάσταση. Στόχος μας είναι να φτιάξουμε ένα κύκλωμα που να εκτελεί όσα περιεγράφηκαν παραπάνω. Αρχικά αναγνωρίζουμε τις εισόδους και τις εξόδους που θα πρέπει να έχει το κύκλωμα. Θα πρέπει να ορίσουμε μια είσοδο για κάθε κουμπί (button Α και button B). Όταν είναι πατημένο το κάθε κουμπί τότε θεωρούμε ότι button Α ή button B είναι 1, αλλιώς θεωρούμε button Α ή button B είναι 0. Η πόρτα αποτελεί έξοδο του συστήματος και της δίνουμε το όνομα D. Όταν είναι ανοικτή τότε πρέπει το σήμα D να έχει την τιμή (D=1) αλλιώς όταν είναι κλειστή το D την τιμή 0. Ομοίως η λάμπα φωτισμού αποτελεί έξοδο του συστήματος και αντιστοιεί στο σήμα εξόδου L. Όταν το φώ είναι αναμένο τότε το L=1 ενώ όταν είναι σβηστό L=0. Στο σχήμα 9.1 ακολουθεί το διάγραμμα μιας μηχανής Moore που υλοποιεί το ζητούμενο και στην συνέχεια υπάρχει ο αντίστοιχος κώδικας VHDL. 79

80 Button A = 0 Button B = 0 Button A = 1 Button B = 0 Button A = 0 Button B = 0 S1: D=0 L=0 S2: D=1 L=1 Button A = 1 Button B = 1 Button A = 0 Button B = 1 Button A = 1 Button B = 1 Σχήμα 9.1 Διάγραμμα μηχανής Moore για το παράδειγμα της άσκησης Ο VHDL κώδικας:. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY garage_door_and_light IS PORT (clk, rst, button A, button B : IN STD_LOGIC; D, L: OUT STD_LOGIC); END garage_door_and_light; ARCHITECTURE Behavior OF garage_door_and_light IS TYPE State_type IS (S1, S2); SIGNAL current_state: State_type; BEGIN State_update:PROCESS (clk, rst) BEGIN IF rst= 1 THEN Current_state = S1; ELSE IF (clk'event AND clk = '1') THEN CASE current_state IS WHEN S1 => IF (button A = '1' and button B = '0') THEN current_state <= S2; ELSIF current_state <= S1; END IF; WHEN S2 => IF (button A = '0' and button B = '1') THEN current_state <= S1;

81 81 ELSE current_state <= S2; END IF; END CASE; END IF; END IF; END PROCESS State_update; L <= '1' WHEN current_state = S2 ELSE '0'; D <= '1' WHEN current_state = S2 ELSE '0'; END Behavior; Στον παραπάνω κώδικα παρατηρείστε ότι οι καταστάσεις ορίζονται σαν ένας νέος τύπος δεδομένων (τύπου State_type) ο οποίος παίρνει σαν τιμές το σύνολο των καταστάσεων που μπορεί να έχει ένα FSΜ. Η δημιουργία ενός τέτοιου τύπου δεδομένων γίνεται με την εντολή της vhdl TYPE State_type IS (A, B, C) ; (όπου στο παράδειγμα αυτό έχουμε τις καταστάσεις Α, Β και C). Επίσης ορίζεται ένα signal που είναι υπεύθυνο για την αποθήκευση της τρέχουσας κατάστασης στην οποία βρίσκεται το σύστημα FSM. Αυτό το σήμα είναι τύπου State_type (του τύπου δεδομένων που έχουμε ορίσει εμείς). Στον παραπάνω κώδικα το σήμα αυτό το ονομάζουμε current_state. Όλες οι FMS που είναι περιεγραμμένες σε vhdl περιέχουν μια process η οποία είναι συγχρονισμένη με το ρολόι του συστήματος και αναλαμβάνει να υλοποιήσει πως και πότε μεταβαίνει το σύστημα από την μια κατάσταση στην επόμενη. Αυτή η process στον παραπάνω κώδικα vhdl είναι η State_update και μέσα σε αυτή υ- πάρχει μια case δομή που βασιζόμενη στην τρέχουσα τιμή της current_state αναλόγως με την τιμή του σήματος button οδηγεί το σύστημα στην κατάσταση S1 ή S2. Η αλλαγή αυτή θα πραγματοποιηθεί στον επόμενο κύκλο ρολογιού. Συνήθως, πέραν από την process που αναλαμβάνει την αλλαγή από μια κατάσταση σε μια άλλη, υπάρχει και κάποιος κώδικας vhdl που είναι υπεύθυνος για τις τιμές των διαφόρων σημάτων του συστήματος μας σε κάθε κατάσταση. Στον κώδικα του παραπάνω παραδείγματος οι τιμές των σημάτων (εξόδου) δίνονται με concurrent εντολές L <= '1' WHEN current_state = S2 ELSE '0'; D <= '1' WHEN current_state = S2 ELSE '0'; Σε πιο σύνθετα FSM ο κώδικας που είναι υπεύθυνος για τις τιμές των εισόδων α- νάλογα με την κατάσταση του FSM μπορεί να υπάρχει σε κάποιο αυτόνομο process. Κάτι τέτοιο θα μπορούσε να έχει την παρακάτω μορφή για το παράδειγμά μας.

82 State_values: process () Begin CASE current_state is when S1 => L <= '0'; D <= '0'; When S2 => D <= '1'; L<= '1'; end case; end process State_values; Ζητούμενο 30: Εξομοιώσατε τον ανωτέρω κώδικα, επιβεβαιώνοντας με κάποιον από τους εξομοιωτές που χρησιμοποιούνται στο εργαστήριο την ορθή λειτουργία του συστήματος. Για την εξομοίωση πρέπει να δημιουργήσετε το σχετικό αρχείο do. Απάντηση Ζητούμενου:

83 Μηχανή τύπου Mealy Το μοντέλο μιας μηχανής τύπου Mealy για το παραπάνω παράδειγμα παρουσιάζεται στο παρακάτω σχήμα (σχήμα 9.2). Παρατηρήστε ότι τώρα οι έξοδοι εξαρτώνται και από την τιμή της εισόδου που έχει το κύκλωμα. Button A= 1 Button B= 0/ L=1, D=1 Button A= 0 Button B= 1/ L=0, D=0 S Σχήμα 9.2 Διάγραμμα μηχανής Mealy για το παράδειγμα της άσκησης Ζητούμενο 31: Γράψτε το κώδικα VHDL που υλοποιεί τη μηχανή Mealy του πα-

84 ραπάνω σχήματος. Στη συνέχεια εξομοιώστε τον κώδικα, επιβεβαιώνοντας την ορθή λειτουργία του. Για την εξομοίωση πρέπει να δημιουργήσετε το σχετικό αρχείο do. Απάντηση Ζητούμενου: Ζητούμενο 32: Επεκτείνετε το παράδειγμα ώστε o φωτισμός του γκαράζ να αναβοσβήνει για το διάστημα κατά το οποίο η πόρτα είναι ανοικτή. Να σχεδιαστεί η μηχανές τύπου Moore για το σύστημα να εξομοιωθεί καταλλήλως. Απάντηση Ζητούμενου:

85 85 Ζητούμενο 33: Για το παράδειγμα του προηγουμένου ζητούμενου να σχεδιαστεί η μηχανή τύπου Mealy για το σύστημα και να εξομοιωθεί καταλλήλως. Απάντηση Ζητούμενου:

86

87 87 Μνήμη Τυχαίας Προσπέλασης (RAM) 10 Σκοπός Σε αυτή την εργαστηριακή άσκηση ο φοιτητής θα εξοικειωθεί με: 1. τον ορισμό νέων τύπων στην VHDL 2. την ανάπτυξη και διαχείριση της μνήμης τυχαίας προσπέλασης (RAM) 10.1 Μνήμες RAM Οι μνήμες είναι τα βασικά στοιχεία αποθήκευσης ενός υπολογιστικού συστήματος και είναι απαραίτητες για στην αρχιτεκτονική ενός υπολογιστή. Ένας πολύ βασικός τύπος μνήμης είναι η μνήμη τυχαίας προσπέλασης. Σε αυτή την μνήμη αποθηκεύονται δυαδικές πληροφορίες σε ομάδες από bits (τις οποίες αποκαλούμε «λέξεις») που είναι πολλαπλάσια των 8 bits (ενός Byte). Το πλήθος των λέξεων που χωράει μια μνήμη το ονομάζουμε χωρητικότητα της μνήμης αυτής. Κάθε λέξη της μνήμης μπορεί να προσπελαστεί για εγγραφή (αλλαγή της τιμής της) ή ανάγνωση μέσω της διεύθυνσής δηλαδή της θέσης που βρίσκεται μέσα στην μνήμη. Αναφερόμαστε συνήθως στη θέση αυτή σαν ένα κελί μνήμης που έχει συγκεκριμένη διεύθυνση και περιέχει δεδομένα. Βασικός κανόνας μιας μνήμης RAM είναι ότι όλα τα κελιά της πρέπει να είναι προσπελάσιμα μέσω της διεύθυνσής τους Μνήμη τυχαίας προσπέλασης μονού διαύλου δεδομένων (Single Port Ram) Η μνήμη τυχαίας προσπέλασης μονού διαύλου δεδομένων, όπως αυτή που φαίνεται στο σχήμα 10.1, αποτελεί ένα είδος RAM μνήμης που μας επιτρέπει μία ανάγνωση ή εγγραφή σε ένα κελί μνήμης ανά προσπέλαση. Αποτελεί τον πιο κοινό τύπου μνήμης τυχαίας προσπέλασης και χρησιμοποιείται πολύ συχνά σε υπολογιστές και συστήματα ολοκληρωμένων κυκλωμάτων γενικού σκοπού. Το διάγραμμα της μιας τέτοιας μνήμης τυχαίας προσπέλασης για λέξεις 8 bits και χωρητικότητα 32 λέξεων φαίνεται στο παρακάτω σχήμα. Για αυτή την μνήμη οι 32 λέξεις των 8 bit (32 γραμμές) προσπελαύνονται από ένα address port των 5 bit,

88 ένα data port (inout λειτουργία) και ένα σήμα ελέγχου ανάγνωσης/εγγραφής (Read/Write, R/W). Address value Address Register 8 Data Value Data Register 8 32 x 8 RAM R/W DFF clock Σχήμα 10.1 Αρχιτεκτονική Μνήμης τυχαίας προσπέλασης μονού διαύλου Η λειτουργία της παραπάνω RAM η οποία είναι σύγχρονη με το ρολόι CLK έχει ως εξής: Αν το σήμα R/W είναι στο λογικό 1 τότε έχουμε λειτουργία εγγραφής και στη θέση Address της μνήμης αποθηκεύονται τα δεδομένα που υπάρχουν στο Data bus στην θετική ακμή του ρολογιού CLK. Αν το σήμα R/W είναι στο λογικό 0 τότε έχουμε λειτουργία ανάγνωσης και στην θετική ακμή του ρολογιού CLK εκβάλουν στο Data bus τα δεδομένα που είναι αποθηκευμένα στη θέση Address της μνήμης. Η τιμή της διεύθυνσης του κελιού που θέλουμε να προσπελαστεί καθώς και τα δεδομένα που θα εγγραφούν ή θα αναγνωστούν από το κελί με την διεύθυνση αυτή αποθηκεύονται σε κατάλληλους καταχωρητές (Address Register, Data Register) ώστε οι διαδικασίες αυτές να λειτουργούν σύγχρονα με το ρολόι. Το ίδιο ισχύει και για το σήμα ελέγχου R/W (η τιμή του αποθηκεύεται σε ένα DFF).

89 Προκειμένου να υλοποιηθεί η μνήμη RAM σε VHDL θα πρέπει στην αρχιτεκτονική να χρησιμοποιήσετε τη δήλωση τύπου: TYPE RAM_TYPE IS ARRAY (0 TO 31) OF std_logic_vector (7 DOWNTO 0); SIGNAL RAM : RAM_TYPE; Mε την παραπάνω δήλωση της VHDL δημιουργούμε ένα νέο τύπο δεδομένων που αποτελεί πίνακα (array) από διανύσματα std_logic_vectors. Το μέγεθος των std_logic_vector διανυσμάτων αποτελεί το μέγεθος της λέξης του κάθε κελιού της μνήμης RAM ενώ ο αριθμός των στοιχείων του μονοδιάστατος πίνακα array αποτελεί την χωρητικότητα της μνήμης. Στη συνέχεια στον παραπάνω κώδικα δημιουργούμε ένα σήμα signal τύπου RAM_TYPE το οποίο πλέον μπορούμε να χρησιμοποιούμε στον VHDL κώδικά μας σαν τον πυρήνα της μνήμης τυχαίας προσπέλασης μονού διαύλου δεδομένων. Παρακάτω παρουσιάζεται σε VHDL ο κώδικας για την υλοποίηση της μνήμης RAM μονού διαύλου δεδομένων. Στην αρχιτεκτονική μνήμης που υλοποιούμε, περιλαμβάνεται και ένα επιπλέον σήμα (σήμα chip_sel) το οποίο μας επιτρέπει να απενεργοποιούμε την μνήμη όταν το επιθυμούμε δίνοντας στο σήμα αυτό λογικό 0. LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ENTITY single_port_ram IS PORT ( clk: IN std_logic; databus: INOUT std_logic_vector(7 DOWNTO 0); address: IN std_logic_vector(4 DOWNTO 0); R_W: IN std_logic; chip_sel: IN std_logic ); END single_port_ram; ARCHITECTURE behavioural OF single_port_ram IS TYPE RAM IS ARRAY(0 TO 31) OF std_logic_vector(7 DOWNTO 0); SIGNAL ram_block : RAM; BEGIN PROCESS (clk) BEGIN IF (clk'event AND clk = '1') THEN IF (chip_sel = '1') THEN 89

90 IF (R_W = '1') THEN ram_block(to_integer(unsigned(address))) <= databus; ELSE databus <= ram_block(to_integer(unsigned(address))); END IF; END IF; END IF; END PROCESS; END behavioural; Ζητούμενο 28: Επιβεβαιώστε στο modelsim ή το Isim την ορθή λειτουργία του παραπάνω κώδικα. Η επιβεβαίωση να γίνει με την χρήση του παρακάτω σεναρίου. Εγγραφή στις διευθύνσεις μνήμης έως (οι διευθύνσεις είναι στο δυαδικό σύστημα) κατά αύξουσα σειρά τους αριθμούς από έως Ανάγνωση δεδομένων των διευθύνσεων μνήμης έως Απάντηση Ζητούμενου:

91 10.3 Μνήμη τυχαίας προσπέλασης διπλού διαύλου δεδομένων (Dual Port Ram) Η μνήμη τυχαίας προσπέλασης διπλού διαύλου δεδομένων (Dual Port Ram) αποτελεί ένα διαφορετικό τύπο μνήμης με εφαρμογές σε συστήματα υψηλών απαιτήσεων. Ο τύπος μνήμης αυτός έχει το πλεονέκτημα ότι επιτρέπει την ταυτόχρονη ανάγνωση και εγγραφή από τη μνήμη καθώς έχει ξεχωριστές γραμμές διευθύνσεως για τις λειτουργίες αυτές (Read_Address, Write_Address). Το σχηματικό διάγραμμα της Dual Port Ram παρουσιάζεται στο σχήμα Read_Address value clock1 Write_Address value clock2 Address Register Address Register 5 5 Data In Value clock2 Data Register 8 32 x 8 RAM Data out Value clock1 Data Register 8 Read_en DFF clock1 write_en DFF clock2 Σχήμα Αρχιτεκτονική Μνήμης τυχαίας προσπέλασης διπλού διαύλου δεδομένων Οι λειτουργίες read και write χρονίζονται από διαφορετικό ρολόι ώστε να αποφεύ-

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

ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers) ΗΜΥ 210 ΣΧΕΔΙΑΣΜΟΣ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Χειµερινό Εξάµηνο 2016 ΔΙΑΛΕΞΗ 15: Καταχωρητές (Registers) ΧΑΡΗΣ ΘΕΟΧΑΡΙΔΗΣ Επίκουρος Καθηγητής, ΗΜΜΥ (ttheocharides@ucy.ac.cy) Περίληψη q Καταχωρητές Παράλληλης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Καταχωρητές 1 ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Καταχωρητές Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Περίληψη Καταχωρητές Παράλληλης Φόρτωσης Καταχωρητές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Κυκλωμάτων» Χειμερινό εξάμηνο «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 VHDL, Χαρακτηριστικά και τρόποι περιγραφής Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής Τμήμα Μηχανικών Πληροφορικής ΤΕ http://diceslab.cied.teiwest.gr

Διαβάστε περισσότερα

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες

Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Εργαστηριακή Άσκηση 4: Ιεραρχική σχεδίαση και προσχεδιασμένοι πυρήνες Στην 4 η εργαστηριακή άσκηση θα ασχοληθούμε με την ιεραρχική σχεδίαση. Συγκεκριμένα θα μάθουμε να σχεδιάζουμε απλές οντότητες τις οποίες

Διαβάστε περισσότερα

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος Εργαστήριο Οργάνωσης Η/Υ Δαδαλιάρης Αντώνιος dadaliaris@uth.gr Ρόλος των γλωσσών περιγραφής υλικού σε μια τυπική ροή σχεδίασης: Documentation Simulation Synthesis Οι γλώσσες περιγραφής υλικού μπορούν να

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Structural VHDL. Structural VHDL

Structural VHDL. Structural VHDL Structural VHDL Παράδειγμα Multiplexer Component Component specification Port map command Unconnected outputs Unconnected inputs Generic map command Generate command Configuration Παράδειγμα 4-bit Adder

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Επιβεβαίωση ορθής λειτουργίας απλών ψηφιακών κυκλωμάτων Επιβεβαίωση ορθής λειτουργίας απλών ψηφιακών κυκλωμάτων Δημήτρης Κωνσταντίνου, Γιώργος Δημητρακόπουλος Εφόσον έχουμε περιγράψει το κύκλωμά μας σε System Verilog θα πρέπει να βεβαιωθούμε πως λειτουργεί

Διαβάστε περισσότερα

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

Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Ενότητα 3: Καταχωρητές - Απαριθμητές Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι. Εισαγωγή στη VHDL Εργαστήριο Αρχιτεκτονικής Υπολογιστών Ι Εισαγωγή στη VHDL Εισαγωγή Very High Speed Integrated Circuits Hardware Description Language ιαφορές από γλώσσες προγραμματισμού: παράλληλη εκτέλεση εντολών προσδιορισμός

Διαβάστε περισσότερα

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

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Εισαγωγή στη VHDL Υλοποίηση στο Quartus Διδάσκων: Γιώργος Ζάγγουλος Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Ατζέντα 1. Στόχοι 3

Διαβάστε περισσότερα

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

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Συναρτήσεις, Διαδικασίες και Δομές Ελέγχου Λειτουργίας Κυκλωμάτων (testbenches) «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Συναρτήσεις, Διαδικασίες και Δομές Ελέγχου Λειτουργίας Κυκλωμάτων (testbenches) Παρασκευάς Κίτσος http://diceslab.cied.teiwest.gr Επίκουρος

Διαβάστε περισσότερα

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

Εισαγωγή στη VHDL Υλοποίηση στο Quartus ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Εισαγωγή στη VHDL Υλοποίηση στο Quartus Διδάσκοντες: Δρ. Γιώργος Ζάγγουλος και Δρ. Παναγιώτα Μ. Δημοσθένους Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών

Διαβάστε περισσότερα

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

ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL Διδάσκων: Γιώργος Ζάγγουλος Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Διαβάστε περισσότερα

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

«Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο Προχωρημένα Θέματα Σχεδιασμού με VHDL «Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων» Χειμερινό εξάμηνο 2016-2017 Προχωρημένα Θέματα Σχεδιασμού με VHDL Παρασκευάς Κίτσος http://diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Tμήμα Μηχανικών Πληροφορικής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 1η ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΣΧΕΔΙΑΣΗΣ QUARTUS II ΤΗΣ ALTERA

ΑΣΚΗΣΗ 1η ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΣΧΕΔΙΑΣΗΣ QUARTUS II ΤΗΣ ALTERA ΑΣΚΗΣΗ 1η ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΣΧΕΔΙΑΣΗΣ QUARTUS II ΤΗΣ ALTERA ΣΧΕΔΙΑΣΗ ΚΥΚΛΩΜΑΤΟΣ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL Η γλώσσα περιγραφής υλικού (harware description language) VHDL είναι μια γλώσσα με την οποία μπορεί

Διαβάστε περισσότερα

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

Προσοµοίωση Συστηµάτων µε VHDL. (Peter Ashenden, The Students Guide to VHDL) Προσοµοίωση Συστηµάτων µε VHDL (Peter Ashenden, The Students Guide to VHDL) Κώδικας VHDL Περιβάλλον Σχεδίασης Αναλυτής ιαχειριστής Βιβλιοθήκης Σχεδίασης Προσοµοιωτής Αντίστροφος Αναλυτής Βιβλιοθήκη Σχεδίασης

Διαβάστε περισσότερα

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

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες. Γλώσσες Περιγραφής Μοντέλα Ένα µοντέλο ενός κυκλώµατος είναι µία αναπαράσταση που παρουσιάζει χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες. Τα τυπικά µοντέλα έχουν καλά ορισµένη σύνταξη. Τα αυτόµατα

Διαβάστε περισσότερα

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL Διδάσκoντες: Δρ. Αγαθοκλής Παπαδόπουλος και Δρ. Γιώργος Ζάγγουλος Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων

Διαβάστε περισσότερα

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL

Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL ΗΜΥ211 Εργαστήριο Ψηφιακών Συστημάτων Behavioral & Mixed VHDL Architectures Finite State Machines in VHDL Διδάσκoντες: Δρ. Γιώργος Ζάγγουλοςκαι Δρ. Παναγιώτα Δημοσθένους Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2 η N-MOS ΚΑΙ P-MOS TRANSISTOR ΩΣ ΔΙΑΚΟΠΤΗΣ

ΑΣΚΗΣΗ 2 η N-MOS ΚΑΙ P-MOS TRANSISTOR ΩΣ ΔΙΑΚΟΠΤΗΣ ΑΣΚΗΣΗ 2 η N-MOS ΚΑΙ P-MOS TRANSISTOR ΩΣ ΔΙΑΚΟΠΤΗΣ ΘΕΩΡΙΑ 1. Εργαλεία εξομοίωσης, SPICE, αρχεία περιγραφής κυκλωμάτων (netlist) (Παρ. 3.4, σελ 152-155) 2. To transistor ως διακόπτης, πύλη διέλευσης. (Παρ

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών ΑΣΚΗΣΗ 2: Σχεδίαση και προσομοίωση κυκλωμάτων καταχωρητών και μετρητών Θέμα Β.1: Απλός καταχωρητής 1 bit (D Flip-Flop) preset D D Q Q clk clear Σχήμα 2.1: D Flip-Flop με εισόδους preset και clear Με τη

Διαβάστε περισσότερα

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

VHDL Εισαγωγικές έννοιες VHDL Εισαγωγικές έννοιες ρ. Κ. Καραφασούλης ckaraf@aegean.gr Σχεδίαση Αρχικά ψηφιακά κυκλώµατα µπορούν να σχεδιασθούν µε το κατάλληλο λογισµικό. Μεγαλύτερα κυκλώµατα µπορούν να σχεδιασθούν ιεραρχικά από

Διαβάστε περισσότερα

Οδηγίες εγκατάστασης και χρήσης του Quartus

Οδηγίες εγκατάστασης και χρήσης του Quartus Εγκατάσταση του Quartus Οδηγίες εγκατάστασης και χρήσης του Quartus Δημήτρης Μαγγίρας, Γιώργος Δημητρακόπουλος 1. Κατεβάζουμε την έκδοση 13.0SP1 από εδώ ακολουθώντας τις οδηγίες που φαίνονται στην εικόνα.

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 9η-10η ΑΡΙΘΜΗΤΙΚΗ-ΛΟΓΙΚΗ ΜΟΝΑΔΑ ΕΝΟΣ ΨΗΦΙΟΥ (1-BIT ALU)

ΑΣΚΗΣΗ 9η-10η ΑΡΙΘΜΗΤΙΚΗ-ΛΟΓΙΚΗ ΜΟΝΑΔΑ ΕΝΟΣ ΨΗΦΙΟΥ (1-BIT ALU) ΑΣΚΗΣΗ 9η-10η ΑΡΙΘΜΗΤΙΚΗ-ΛΟΓΙΚΗ ΜΟΝΑΔΑ ΕΝΟΣ ΨΗΦΙΟΥ (1-BIT ALU) ΘΕΩΡΙΑ Αντικείμενο της άσκησης είναι ο λογικός σχεδιασμός, η εξομοίωση και η παραγωγή του layout μιας αριθμητικής-λογικής μονάδας ενός ψηφίου

Διαβάστε περισσότερα

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

1 Περίληψη Η εργασία έγινε στα πλαίσια του μαθήματος των Ψηφιακών Ηλεκτρονικών Συστημάτων με σκοπό αρχικά την εκμάθηση της γλώσσας VHDL (Very High Spe Εργασία στα Ψηφιακά Ηλεκτρονικά Συστήματα 2013-2014 Θέμα: Κατασκευή και Ανάλυση Μετρητή 4-bit και Πλήρους Αθροιστή σε περιβάλλον VHDL Ονοματεπώνυμο: Αλέξανδρος Γεώργιος Μουντογιαννάκης Σχολή: Τμήμα Επιστήμης

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 8 η -9 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΔΥΑΔΙΚΩΝ ΨΗΦΙΩΝ ΑΣΚΗΣΗ 8 η -9 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΔΥΑΔΙΚΩΝ ΨΗΦΙΩΝ ΘΕΩΡΙΑ Αντικείμενο της άσκησης είναι ο λογικός σχεδιασμός, και η εξομοίωση μίας αριθμητικήςλογικής μονάδας τεσσάρων δυαδικών

Διαβάστε περισσότερα

Πρόλογος Συμβολή σε ορισμένα σημεία του περιεχομένου είχαν οι διδάκτορες Γ. Οικονομάκος και Ισ. Σίδερης καθώς και οι μεταπτυχιακοί σπουδαστές Ι. Σιφναίος, Ε. Χανιωτάκης και Κ. Ασφής τους οποίους ευχαριστώ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Μελέτη και σχεδίαση µιας υποτυπώδους κεντρικής µονάδας επεξεργασίας στα 32 µπιτ. ΤΕΙ ΚΡΗΤΗΣ / ΠΑΡΑΡΤΗΜΑ ΧΑΝΙΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ Μελέτη και σχεδίαση µιας υποτυπώδους κεντρικής µονάδας επεξεργασίας στα 32 µπιτ mode mode(0) ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Εµµανουήλ Καπαρού Επιβλέπων : ρ Μηχ Νικόλαος

Διαβάστε περισσότερα

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ ΣΧΟΛΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ 1) Οι απαριθμητές ή μετρητές (counters) είναι κυκλώματα που

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ ΣΧΟΛΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΚΑΤΑΧΩΡΗΤΕΣ ΟΛΙΣΘΗΤΕΣ 1) Το παρακάτω κύκλωμα του σχήματος 1 είναι ένας καταχωρητής-ολισθητής

Διαβάστε περισσότερα

Library, package και subprograms

Library, package και subprograms Library, package και subprograms Libraries Packages Subprograms Procedures Functions Overloading Αριθμητικά πακέτα Type conversion Shift operators Παράδειγμα Library - Package Ασκήσεις-Προβλήματα 12/8/2009

Διαβάστε περισσότερα

Εισαγωγή στη σχεδιαστική ροή της Xilinx

Εισαγωγή στη σχεδιαστική ροή της Xilinx Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών HY220 Εργαστήριο Ψηφιακών Κυκλωμάτων Χειμερινό Εξάμηνο 2014-2015 Εισαγωγή στη σχεδιαστική ροή της Xilinx ISE Design Suite 14.7 Στόχοι.. 1. Δημιουργία project

Διαβάστε περισσότερα

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος Εργαστήριο Οργάνωσης Η/Υ Δαδαλιάρης Αντώνιος dadaliaris@uth.gr Χρησιμοποιούμε τις μηχανές πεπερασμένων καταστάσεων (finite state machines FSMs) για την μοντελοποίηση της συμπεριφοράς ενός κυκλώματος, η

Διαβάστε περισσότερα

Εισαγωγή στη Verilog με το ISE

Εισαγωγή στη Verilog με το ISE Εισαγωγή στη Verilog με το ISE Πατάμε new project Δίνουμε όνομα και κατάλογο όπου θα αποθηκευτεί το project. Next όπου επιλέγουμε chip και preferred language βάζουμε Verilog Next και στο Create new source

Διαβάστε περισσότερα

VHDL Introduction. Subtitle

VHDL Introduction. Subtitle VHDL Introduction Subtitle Getting Started VHDL means Very Hard Difficult Language That s a lie!!! τα αρχικά VHDL είναι συντομογραφία του VHSIC Hardware Description Language, ενώ το VHSIC αντιπροσωπεύει

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL ΕΙΣΑΓΩΓΙΚΟ ΕΓΧΕΙΡΙ ΙΟ ΓΙΑ ΣΧΕ ΙΑΣΜΟ ΜΕ ΧΡΗΣΗ ΤΗΣ ΓΛΩΣΣΑΣ VHDL Προετοιµασία: Παπαδόπουλος Γιώργος Σούρδης Γιάννης Για το µάθηµα Οργάνωσης Υπολογιστών (ΑΡΥ301), 2002 ΕΙΣΑΓΩΓΗ ΣΤΗ STRUCTURAL VHDL Η VHDL είναι

Διαβάστε περισσότερα

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

Εισαγωγή στη Γλώσσα VHDL Εισαγωγή στη Γλώσσα VHDL Παράδειγμα and3 Entity και Architecture Entity Entity - Παραδείγματα Architecture VHDL simulation παραδείγματος and3 Παράδειγμα NAND VHDL simulation παραδείγματος nand Boolean

Διαβάστε περισσότερα

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

ΠΑΡΑΡΤΗΜΑ Β. Verification ΠΑΡΑΡΤΗΜΑ Β Ροή Σχεδίασης και VHDL Ροή Σχεδίασης Πριν περάσουµε σε περιγραφή της γλώσσας VHDL είναι χρήσιµο να δούµε το περιβάλλον και τη ροή της σχεδίασης. Τα βήµατα µιας σχεδίασης βασισµένης σε VHDL

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Καταχωρητές και Μετρητές 2. Επιμέλεια Διαφανειών: Δ.

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Καταχωρητές και Μετρητές 2. Επιμέλεια Διαφανειών: Δ. Πανεπιστήμιο Πατρών Τμήμα Φυσικής Ψηφιακά Ηλεκτρονικά Καταχωρητές και Μετρητές Επιμέλεια Διαφανειών: Δ. Μπακάλης Πάτρα, Φεβρουάριος 2009 Εισαγωγή Καταχωρητής: είναι μία ομάδα από δυαδικά κύτταρα αποθήκευσης

Διαβάστε περισσότερα

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ & ΗΛΕΚΤΡΟΝΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ & μ-υπολογιστων ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ Θεωρητικό Μέρος Οι σειριακές λειτουργίες είναι πιο

Διαβάστε περισσότερα

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

Εισαγωγή Η VHDL υποστηρίζει τους εξής τρείς βασικούς και διαφορετικούς τρόπους περιγραφής VHDL Εισαγωγή Η VHDL υποστηρίζει τους εξής τρείς βασικούς και διαφορετικούς τρόπους περιγραφής Structural (Δομική) Dataflow (Ροής δεδομένων) Behavioral (Συμπεριφοράς) Η VDHL χρησιμοποιείται για την περιγραφή

Διαβάστε περισσότερα

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος Εργαστήριο Οργάνωσης Η/Υ Δαδαλιάρης Αντώνιος dadaliaris@uth.gr Συνδυαστικό Κυκλωμα: Το κύκλωμα του οποίου οι έξοδοι εξαρτώνται αποκλειστικά από τις τρέχουσες εισόδους του. Ακολουθιακό Κύκλωμα: Το κύκλωμα

Διαβάστε περισσότερα

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

VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων VHDL για Σχεδιασµό Ακολουθιακών Κυκλωµάτων Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήµιο Κύπρου Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών n VHDL Processes Περίληψη n Εντολές If-Then-Else και CASE

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΜΙΚΡΟΗΛΕΚΤΡΟΝΙΚΗ - VLSI Ενότητα: Συνδιαστικά κυκλώματα, βασικές στατικές λογικές πύλες, σύνθετες και δυναμικές πύλες Κυριάκης

Διαβάστε περισσότερα

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ ΣΧΟΛΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ 1) Οι σύγχρονοι μετρητές υλοποιούνται με Flip-Flop τύπου T

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΜΙΚΡΟΗΛΕΚΤΡΟΝΙΚΗ - VLSI Ενότητα: Ακολουθιακή λογική, καταχωρητές και flip-flops Κυριάκης - Μπιτζάρος Ευστάθιος Τμήμα Ηλεκτρονικών

Διαβάστε περισσότερα

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

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. VHDL για Ακολουθιακά Κυκλώματα 1 ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων VHDL για Σχεδιασμό Ακολουθιακών Κυκλωμάτων Διδάσκουσα: Μαρία Κ. Μιχαήλ Περίληψη VHDL Processes Εντολές If-Then Then-Else και CASE Περιγραφή Flip-Flop Flop με VHDL

Διαβάστε περισσότερα

Άσκηση 3 Ένα νέο είδος flip flop έχει τον ακόλουθο πίνακα αληθείας : I 1 I 0 Q (t+1) Q (t) 1 0 ~Q (t) Κατασκευάστε τον πίνακα

Άσκηση 3 Ένα νέο είδος flip flop έχει τον ακόλουθο πίνακα αληθείας : I 1 I 0 Q (t+1) Q (t) 1 0 ~Q (t) Κατασκευάστε τον πίνακα Άσκηση Δίδονται οι ακόλουθες κυματομορφές ρολογιού και εισόδου D που είναι κοινή σε ένα D latch και ένα D flip flop. Το latch είναι θετικά ενεργό, ενώ το ff θετικά ακμοπυροδοτούμενο. Σχεδιάστε τις κυματομορφές

Διαβάστε περισσότερα

ΘΕΜΑΤΑ & ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ

ΘΕΜΑΤΑ & ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεματική Ενότητα Ακαδημαϊκό Έτος 2010 2011 Ημερομηνία Εξέτασης Κυριακή 26.6.2011 Ώρα Έναρξης Εξέτασης

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019 Γ ΕΠΑΛ 14 / 04 / 2019 ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΘΕΜΑ 1 ο 1. Να γράψετε στο τετράδιό σας το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή ή τη λέξη ΛΑΘΟΣ, αν είναι λανθασμένη.

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 3/02/2019 ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ ΘΕΜΑ 1 ο 1. Να γράψετε στο τετράδιό σας το γράμμα καθεμιάς από τις παρακάτω προτάσεις και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή ή τη λέξη ΛΑΘΟΣ, αν είναι

Διαβάστε περισσότερα

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

100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ 100 ΕΡΩΤΗΣΕΙΣ ΜΕ ΤΙΣ ΑΝΤΙΣΤΟΙΧΕΣ ΑΠΑΝΤΗΣΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ 1) Να μετατρέψετε τον δεκαδικό αριθμό (60,25) 10, στον αντίστοιχο δυαδικό 11111,11 111001,01 111100,01 100111,1 111100,01 2)

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 9 ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ (COUNTERS)

ΑΣΚΗΣΗ 9 ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ (COUNTERS) ΑΣΚΗΣΗ 9 ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ (COUNTERS) Αντικείμενο της άσκησης: H σχεδίαση και η χρήση ασύγχρονων απαριθμητών γεγονότων. Με τον όρο απαριθμητές ή μετρητές εννοούμε ένα ακολουθιακό κύκλωμα με FF, οι καταστάσεις

Διαβάστε περισσότερα

Κ. ΕΥΣΤΑΘΙΟΥ, Γ. ΠΑΠΑΔΟΠΟΥΛΟΣ ΠΑΤΡΑ

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

Διαβάστε περισσότερα

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΕΦΑΡΜΟΓΕΣ ΚΑΤΑΧΩΡΗΤΩΝ ΟΛΙΣΘΗΣΗΣ ΣΧΟΛΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΕΦΑΡΜΟΓΕΣ ΚΑΤΑΧΩΡΗΤΩΝ ΟΛΙΣΘΗΣΗΣ ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ Στο διπλανό σχήμα φαίνεται το διάγραμμα ακροδεκτών

Διαβάστε περισσότερα

Lab 2 Manual - Introduction to Xilinx

Lab 2 Manual - Introduction to Xilinx Lab 2 Manual - Introduction to Xilinx Εισαγωγή Σε αυτό το εργαστήριο θα κάνουµε εισαγωγή στην γλωσσά προγραµµατισµού VHDL και εργαλείο Xilinx ISE. ISE είναι το εργαλείο που παρέχεται από Xilinx για να

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ.3 ΑΣΥΓΧΡΟΝΟΣ ΔYΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.5 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.7 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ ΜΕ LATCH.

ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ.3 ΑΣΥΓΧΡΟΝΟΣ ΔYΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.5 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ.7 ΑΣΥΓΧΡΟΝΟΣ ΔΕΚΑΔΙΚΟΣ ΑΠΑΡΙΘΜΗΤΗΣ ΜΕ LATCH. ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΨΗΦΙΑΚΑ ΟΛΟΚΛΗΡΩΜΕΝΑ ΚΥΚΛΩΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ ΣΗΜΕΙΩΣΕΙΣ ΑΠΑΡΙΘΜΗΤΕΣ Κ. ΕΥΣΤΑΘΙΟΥ, Γ. ΠΑΠΑΔΟΠΟΥΛΟΣ

Διαβάστε περισσότερα

4.1 Θεωρητική εισαγωγή

4.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΥΑ ΙΚΟΣ ΑΘΡΟΙΣΤΗΣ-ΑΦΑΙΡΕΤΗΣ Σκοπός: Να µελετηθούν αριθµητικά κυκλώµατα δυαδικής πρόσθεσης και αφαίρεσης. Να σχεδιαστούν τα κυκλώµατα από τους πίνακες αληθείας

Διαβάστε περισσότερα

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

K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops K24 Ψηφιακά Ηλεκτρονικά 9: TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΧΝΟΛΟΓΙΚΟ Περιεχόμενα 1 2 3 Γενικά Ύστερα από τη μελέτη συνδυαστικών ψηφιακών κυκλωμάτων, θα μελετήσουμε

Διαβάστε περισσότερα

Εφαρμογές Ψηφιακών Ηλεκτρονικών

Εφαρμογές Ψηφιακών Ηλεκτρονικών ΑΣΚΗΣΗ 1 Εφαρμογές Ψηφιακών Ηλεκτρονικών Εργαστήριο Ηλεκτρονικής Τηλεπικοινωνιών και Εφαρμογών, Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Βασίλης Χριστοφιλάκης 1 ΑΣΚΗΣΗ 1: ΕΙΣΑΓΩΓΗ ΣΤ Η ΨΗΦΙΑΚΗ ΣΧΕΔΙΑΣΗ ΜΕΣΩ

Διαβάστε περισσότερα

w x y Υλοποίηση της F(w,x,y,z) με πολυπλέκτη 8-σε-1

w x y Υλοποίηση της F(w,x,y,z) με πολυπλέκτη 8-σε-1 Άσκηση 1 Οι λύσεις απαντήσεις που προτείνονται είναι ενδεικτικές και θα πρέπει να προσθέσετε Α) Αρχικά σχεδιάζουμε τον πίνακα αληθείας της λογικής έκφρασης: w x y z x G1 =x y G2 =z w F = G1 G2 Είσοδοι

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κ. Δεμέστιχας Εργαστήριο Πληροφορικής Γεωπονικό Πανεπιστήμιο Αθηνών Επικοινωνία μέσω e-mail: cdemest@aua.gr, cdemest@cn.ntua.gr 1 5. ΑΛΓΕΒΡΑ BOOLE ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕΡΟΣ Β 2 Επαναληπτική

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI Ε.Μ.Π. - ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ VLSI

Διαβάστε περισσότερα

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

Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II 3 η Εργαστηριακή Άσκηση Σχεδίαση και Υλοποίηση μίας ALU δύο εισόδων VHDL Εργαστήριο_2 2012-2013 1 Άδειες Χρήσης Το παρόν υλικό διατίθεται με τους όρους της άδειας

Διαβάστε περισσότερα

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

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή 6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή Εισαγωγή Η σχεδίαση ενός ψηφιακού συστήµατος ως ακολουθιακή µηχανή είναι εξαιρετικά δύσκολη Τµηµατοποίηση σε υποσυστήµατα µε δοµικές µονάδες:

Διαβάστε περισσότερα

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

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 6 η :

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 10 ΣΧΕΔΙΑΣΗ ΑΚΟΛΟΥΘΙΑΚΩΝ ΚΥΚΛΩΜΑΤΩΝ

ΑΣΚΗΣΗ 10 ΣΧΕΔΙΑΣΗ ΑΚΟΛΟΥΘΙΑΚΩΝ ΚΥΚΛΩΜΑΤΩΝ ΑΣΚΗΣΗ ΣΧΕΔΙΑΣΗ ΑΚΟΛΟΥΘΙΑΚΩΝ ΚΥΚΛΩΜΑΤΩΝ.. ΣΚΟΠΟΣ Η σχεδίαση ακολουθιακών κυκλωμάτων..2. ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ.2.. ΑΛΓΟΡΙΘΜΟΣ ΣΧΕΔΙΑΣΗΣ ΑΚΟΛΟΥΘΙΑΚΩΝ ΚΥΚΛΩΜΑΤΩΝ Τα ψηφιακά κυκλώματα με μνήμη ονομάζονται ακολουθιακά.

Διαβάστε περισσότερα

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

ΗΜΥ 210: Σχεδιασμός Ψηφιακών Συστημάτων. Μετρητές 1 ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων Μετρητές Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Περίληψη Μετρητής Ριπής Σύγχρονος υαδικός Μετρητής

Διαβάστε περισσότερα

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

Εισαγωγή στην πληροφορική Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στην πληροφορική Ενότητα 4: Ψηφιακή Λογική, Άλγεβρα Boole, Πίνακες Αλήθειας (Μέρος B) Αγγελίδης Παντελής Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Διαβάστε περισσότερα

ΗΜΥ 213 Εργαστήριο Οργάνωσης Η/Υ και Μικροεπεξεργαστών Εαρινό εξάμηνο Διδάσκων: Γιώργος Ζάγγουλος

ΗΜΥ 213 Εργαστήριο Οργάνωσης Η/Υ και Μικροεπεξεργαστών Εαρινό εξάμηνο Διδάσκων: Γιώργος Ζάγγουλος ΗΜΥ 213 Εργαστήριο Οργάνωσης Η/Υ και Μικροεπεξεργαστών Εαρινό εξάμηνο 2011-2012 Διδάσκων: Γιώργος Ζάγγουλος Βοήθημα για το Πρόγραμμα Modelsim-Altera και την χρησιμοποίηση του μέσα από το Quartus για εκτέλεση

Διαβάστε περισσότερα

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα καταστάσεων,

Διαβάστε περισσότερα

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα επαναληπτικής εξέτασης 2016 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα καταστάσεων,

Διαβάστε περισσότερα

7.1 Θεωρητική εισαγωγή

7.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 7 ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ ΜΑΝ ΑΛΩΤΕΣ FLIP FLOP Σκοπός: Η κατανόηση της λειτουργίας των βασικών ακολουθιακών κυκλωµάτων. Θα µελετηθούν συγκεκριµένα: ο µανδαλωτής (latch)

Διαβάστε περισσότερα

ηµιουργία Αρχείου Πρότζεκτ (.qpf)

ηµιουργία Αρχείου Πρότζεκτ (.qpf) Εργαστήριο Ψηφιακών Συστηµάτων ΗΜΥ211 Εισαγωγή στο λογισµικό Quartus II v13 web edition 1 ηµιουργία Αρχείου Πρότζεκτ (.qpf) Με την εκκίνηση της εφαρµογής Quartus II v13.0 SP1 web edition, επιλέξτε File

Διαβάστε περισσότερα

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

Περιγραφή Κυκλωμάτων με χρήση της VHDL. Καταχωρητές και χρονισμός με ρολόι Περιγραφή Κυκλωμάτων με χρήση της VHDL Καταχωρητές και χρονισμός με ρολόι Οργάνωση Παρουσίασης Διεργασίες (κανόνες) Ακολουθιακές Δηλώσεις (Sequential Statements) Καταχωρητές και χρονισμός Συμπληρωματική

Διαβάστε περισσότερα

Ψηφιακά Συστήματα. 8. Καταχωρητές

Ψηφιακά Συστήματα. 8. Καταχωρητές Ψηφιακά Συστήματα 8. Καταχωρητές Βιβλιογραφία 1. Φανουράκης Κ., Πάτσης Γ., Τσακιρίδης Ο., Θεωρία και Ασκήσεις Ψηφιακών Ηλεκτρονικών, ΜΑΡΙΑ ΠΑΡΙΚΟΥ & ΣΙΑ ΕΠΕ, 2016. [59382199] 2. Floyd Thomas L., Ψηφιακά

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 7 FLIP - FLOP

ΑΣΚΗΣΗ 7 FLIP - FLOP ΑΣΚΗΣΗ 7 FLIP - FLOP Αντικείμενο της άσκησης: Η κατανόηση της δομής και λειτουργίας των Flip Flop. Flip - Flop Τα Flip Flop είναι δισταθή λογικά κυκλώματα με χαρακτηριστικά μνήμης και είναι τα πλέον βασικά

Διαβάστε περισσότερα

ΑΠΟ ΤΑ ΘΕΜΑΤΑ ΤΩΝ ΠΑΝΕΛΛΗΝΙΩΝ ΕΞΕΤΑΣΕΩΝ ΚΕΦΑΛΑΙΟ 7-8 (ΚΑΤΑΧΩΡΗΤΕΣ & ΑΠΑΡΙΘΜΗΤΕΣ)

ΑΠΟ ΤΑ ΘΕΜΑΤΑ ΤΩΝ ΠΑΝΕΛΛΗΝΙΩΝ ΕΞΕΤΑΣΕΩΝ ΚΕΦΑΛΑΙΟ 7-8 (ΚΑΤΑΧΩΡΗΤΕΣ & ΑΠΑΡΙΘΜΗΤΕΣ) ΑΠΟ ΤΑ ΘΕΜΑΤΑ ΤΩΝ ΠΑΝΕΛΛΗΝΙΩΝ ΕΞΕΤΑΣΕΩΝ 2009 205 ΚΕΦΑΛΑΙΟ 7-8 (ΚΑΤΑΧΩΡΗΤΕΣ & ΑΠΑΡΙΘΜΗΤΕΣ) ΑΠΟ ΘΕΜΑ Α Ερωτήσεις. Γιατί στους ασύγχρονους απαριθμητές τα flip-flops δεν αλλάζουν ταυτόχρονα κατάσταση; 2. Να

Διαβάστε περισσότερα

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. Τι είναι ένας καταχωρητής; O καταχωρητής είναι μια ομάδα από flip-flop που μπορεί να αποθηκεύσει προσωρινά ψηφιακή πληροφορία. Μπορεί να διατηρήσει τα δεδομένα του αμετάβλητα

Διαβάστε περισσότερα

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

ΗΜΥ-210: Σχεδιασμός Ψηφιακών Συστημάτων ΗΜΥ-2: Σχεδιασμός Ψηφιακών Συστημάτων Χειμερινό Μετρητές Διδάσκουσα: Μαρία Κ. Μιχαήλ Πανεπιστήμιο Κύπρου Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Περίληψη Μετρητής Ριπής Σύγχρονος υαδικός

Διαβάστε περισσότερα

Ελίνα Μακρή

Ελίνα Μακρή Ελίνα Μακρή elmak@unipi.gr Μετατροπή Αριθμητικών Συστημάτων Πράξεις στα Αριθμητικά Συστήματα Σχεδίαση Ψηφιακών Κυκλωμάτων με Logism Άλγεβρα Boole Λογικές Πύλες (AND, OR, NOT, NAND, XOR) Flip Flops (D,

Διαβάστε περισσότερα

8.1 Θεωρητική εισαγωγή

8.1 Θεωρητική εισαγωγή ΨΗΦΙΑΚΑ ΚΥΚΛΩΜΑΤΑ - ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 8 ΣΤΟΙΧΕΙΑ ΜΝΗΜΗΣ ΚΑΤΑΧΩΡΗΤΕΣ Σκοπός: Η µελέτη της λειτουργίας των καταχωρητών. Θα υλοποιηθεί ένας απλός στατικός καταχωρητής 4-bit µε Flip-Flop τύπου D και θα µελετηθεί

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 4 η ΕΙΣΑΓΩΓΗ ΣΤΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕ ΧΡΗΣΗ Η/Υ (QUARTUS II ALTERA)

ΑΣΚΗΣΗ 4 η ΕΙΣΑΓΩΓΗ ΣΤΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕ ΧΡΗΣΗ Η/Υ (QUARTUS II ALTERA) ΑΣΚΗΣΗ 4 η ΕΙΣΑΓΩΓΗ ΣΤΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕ ΧΡΗΣΗ Η/Υ (QUARTUS II ALTERA) ΣΧΕΔΙΑΣΗ ΚΥΚΛΩΜΑΤΟΣ ΜΕ ΧΡΗΣΗ ΣΧΗΜΑΤΙΚΟΥ ΔΙΑΓΡΑΜΜΑΤΟΣ Σκοπός της άσκησης είναι η εξοικείωση των σπουδαστών με το εργαλείο σχεδιασμού

Διαβάστε περισσότερα

Ψηφιακή Σχεδίαση Ενότητα 10:

Ψηφιακή Σχεδίαση Ενότητα 10: Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Ψηφιακή Σχεδίαση Ενότητα 10: Καταχωρητές & Μετρητές Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/mdasyg

Διαβάστε περισσότερα