ΑΣΚΗΣΗ 8 η -9 η ΣΧΕΔΙΑΣΗ ΑΡΙΘΜΗΤΙΚΗΣ ΛΟΓΙΚΗΣ ΜΟΝΑΔΑΣ ΤΕΣΣΑΡΩΝ ΔΥΑΔΙΚΩΝ ΨΗΦΙΩΝ ΘΕΩΡΙΑ Αντικείμενο της άσκησης είναι ο λογικός σχεδιασμός, και η εξομοίωση μίας αριθμητικήςλογικής μονάδας τεσσάρων δυαδικών ψηφίων (4-bit ALU). Η ALU αποτελείται από τη λογική μονάδα (Logic Unit, LU) και την αριθμητική μονάδα (Arithmetic Unit, AU) οι οποίες πρέπει να σχεδιαστούν ξεχωριστά και ακολούθως να συνδυαστούν με έναν πολυπλέκτη. Ο πίνακας αλήθειας της LU και της AU ενός δυαδικού ψηφίου δίνεται στα σχήματα 9.1 και 9.2, αντίστοιχα: Σχήμα 9.1 Σχήμα 9.2 Ο συνδυασμός των εξόδων της LU και της AU μέσω ενός πολυπλέκτη οδηγεί στη δημιουργία της ALU ενός δυαδικού ψηφίου της οποίας ο πίνακας αληθείας φαίνεται στο σχήμα 9.3. Σχήμα 9.3 33
ΕΡΓΑΣΤΗΡΙΑΚΟ ΜΕΡΟΣ ΠΡΟΣΟΧΗ Στην άσκηση αυτή εφαρμόζεται ο ιεραρχικός σχεδιασμός, δηλαδή η σύνθεση ενός πολύπλοκου κυκλώματος από απλούστερα υποκυκλώματα. Για να μην υπάρξουν προβλήματα κατά τη διαδικασία υλοποίησης πρέπει να προσέξετε ιδιαίτερα στις θέσεις που αποθηκεύετε κάθε υποκύκλωμα. Για να ολοκληρωθεί σωστά ο σχεδιασμός της ALU πρέπει να δημιουργηθούν στο Quartus τέσσερα διαφορετικά έργα (project): ένα για την LU, ένα για την AU, ένα για την ALU του ενός ψηφίου και τέλος ένα για την ALU των τεσσάρων ψηφίων. Κάθε project πρέπει να είναι σε διαφορετικό directory. Επομένως, ξεκινήστε με ένα directory askisi8 μέσα στο οποίο θα φτιάξετε τα subdirectories LU, AU ALU και ALU4. Επίσης, πρέπει να προσέξετε το ονόματα των σημάτων για όλες τις μονάδες να είναι αυτά που δίνονται στα παραπάνω σχήματα ώστε να κάνετε τις σωστές διασυνδέσεις στο τελικό κύκλωμα της ALU. 1. Σχεδιάστε με χρήση πυλών και πολυπλέκτη τη λογική μονάδα (LU) 2. Ανοίξτε ένα νέο project για την LU σε ένα directory με όνομα LU. 3. Υλοποιήστε στο Quartus-II με χρήση των διαθέσιμων στοιχείων της βιβλιοθήκης primitives/logic (για τις πύλες) και others/maxplus2 (για τον πολυπλέκτη) το κύκλωμα του προηγούμενου ερωτήματος. Χρησιμοποιήστε τα ονόματα των σημάτων εισόδου και εξόδου του σχήματος 9.1. (Σημ. Το σήμα ελέγχου του πολυπλέκτη ΙΝΗ πρέπει να τοποθετηθεί σε λογικό 0. Συνδέστε το με τη γείωση χρησιμοποιώντας το στοιχείο GND από τη βιβλιοθήκη primitives/other.) 4. Εξομοιώστε το κύκλωμα και επαληθεύστε την ορθή λειτουργία του για όλους τους συνδυασμούς των εισόδων του. 5. Επειδή η LU θα χρησιμοποιηθεί για το σχεδιασμό της ALU πρέπει να δημιουργήσετε για αυτήν ένα σύμβολο. Επιλέξτε από το menu FILE Create/Update Create Symbol files όπως φαίνεται στο σχήμα 9.4 και σώστε το με τις παραμέτρους που εμφανίζονται αυτόματα. 34
Σχήμα 9.4 Μπορείτε να δείτε το σύμβολο που δημιουργήσατε από τη βιβλιοθήκη κάτω από την επιλογή project. 6. Κλείστε το project της LU (File Close project) 7. Από τον πίνακα αλήθειας της AU (σχήμα 9.2), ο οποίος δίνεται σε συμπτυγμένη μορφή, μπορείτε να αναπτύξετε έναν τυπικό πίνακα αλήθειας με 5 εισόδους (Α, Β, S0, S1 και Cin) και δύο εξόδους G και Cout. Το Cout δε φαίνεται στον πίνακα του σχήματος 9.2 αλλά πρέπει να ληφθεί υπόψη γιατί υπάρχει πιθανότητα από την πρόσθεση να προκύψει κρατούμενο. Η ανάπτυξη ενός τέτοιου πίνακα και η υλοποίηση των συναρτήσεων των εξόδων που θα προκύψουν είναι μία επίπονη διαδικασία (!) και δεν συνιστάται, αλλά είναι μία καλή άσκηση για όποιον τον επιθυμεί... Η παρατήρηση του πίνακα μπορεί να οδηγήσει σε μία απλούστερη σχεδίαση, η οποία περιλαμβάνει έναν πολυπλέκτη 4 προς 1 από τον οποίο υπολογίζεται η ενδιάμεση μεταβλητή Y από το Β και τα σήματα ελέγχου S0 και S1 και έναν πλήρη αθροιστή του ενός ψηφίου, ο οποίος έχει ως εισόδους το Α, το Υ και το Cin και εξόδους το G και το Cout. Η ανάλυση της λειτουργίας του πολυπλέκτη 4 προς 1 οδηγεί σε επιπλέον απλοποίηση του κυκλώματος και παραγωγή του ενδιάμεσου σήματος Y με έναν πολυπλέκτη 2 προς 1. Με βάση τα παραπάνω σχεδιάστε την αριθμητική μονάδα (ΑU) χρησιμοποιώντας αντιστροφέα, πολυπλέκτη και πλήρη αθροιστή. 35
8. Ανοίξτε ένα νέο project για την AU σε ένα directory με όνομα AU μέσα στο directory askisi8. 9. Υλοποιήστε στο Quartus-II το κύκλωμα του βήματος 7. Χρησιμοποιήστε τα ονόματα των σημάτων εισόδου και εξόδου του σχήματος 9.2. Εκτός από τα στοιχεία των βιβλιοθηκών logic και maxplus2 για τον αθροιστή του ενός δυαδικού ψηφίου πρέπει να χρησιμοποιήσετε το στοιχείο lpm_add_sub από τη βιβλιοθήκη megafunctions/ arithmetic. Από το Megawizard Plug-In πρέπει να δώσετε τις παραμέτρους του αθροιστή. (1 bit, addition only, both values vary, unsigned, create carry input, create carry output, no pipeline). Ενδεικτικά η οθόνη του Megawizard μετά την επιλογή των προαναφερόμενων παραμέτρων φαίνεται στο σχήμα 9.5. Σε αυτό το στάδιο μπορείτε να πατήσετε finish γιατί δεν απαιτούνται άλλες αλλαγές στο κύκλωμα. Σχήμα 9.5 10. Εξομοιώστε το κύκλωμα για να επαληθεύσετε την ορθή λειτουργία του. 11. Δημιουργήστε με τη διαδικασία του βήματος 5 σύμβολο για την ΑU 36
12. Κλείστε το project της ΑU (File Close project) 13. Συνδυάστε την LU και την AU με έναν πολυπλέκτη δύο σε ένα ώστε να υλοποιείται ο πίνακας αληθείας της ALU του σχήματος 9.3. Μην ξεχάσετε να τοποθετήσετε ως έξοδο της ALU και το κρατούμενο εξόδου του αθροιστή της AU γιατί θα σας χρειαστεί στα επόμενα βήματα. 14. Ανοίξτε ένα νέο project για την ALU σε ένα directory με όνομα ALU. 15. Για να χρησιμοποιηθούν τα κυκλώματα που σχεδιάσατε στα προηγούμενα βήματα στη σύνθεση της ALU πρέπει να τα προσθέσετε στις βιβλιοθήκες του τρέχοντος project. 15α. Επιλέξτε από το menu Assignements Settings Library. Στο παράθυρο που εμφανίζεται επιλέξτε τον browser στο Project library name και από εκεί το directory της LU και πατήστε Add. Επαναλάβετε τη διαδικασία για να προσθέσετε και το directory της AU. Πατήστε ΟΚ για να ολοκληρωθεί η διαδικασία πρόσθεσης βιβλιοθήκης. 15β. Επιλέξτε από το menu Project Add/remove files in project Στο παράθυρο που εμφανίζεται επιλέξτε τον browser στο file και από εκεί μέσα στο directory της LU το αρχείο LU.BSF και πατήστε Add. Επαναλάβετε τη διαδικασία για να προσθέσετε και το αρχείο AU.BSF από το directory της AU. Πατήστε ΟΚ για να ολοκληρωθεί η διαδικασία πρόσθεσης αρχείων. 16. Υλοποιήστε στο Quartus-II το κύκλωμα του βήματος 13. Ανοίγοντας τώρα τις βιβλιοθήκες για την πρόσθεση νέων στοιχείων πρέπει να εμφανίζονται εκτός από τις υπάρχουσες βιβλιοθήκες του QUARTUS και οι βιβλιοθήκες που προσθέσατε στο προηγούμενο βήμα. 17. Εξομοιώστε την ALU για να επαληθεύσετε την ορθή λειτουργία της σύμφωνα με τον πίνακα του σχήματος 9.3. 37
18. Φτιάξτε σύμβολο για την ΑLU ενός δυαδικού ψηφίου. 19. Σχεδιάστε μία ALU η οποία διαχειρίζεται δυαδικούς αριθμούς τεσσάρων δυαδικών ψηφίων συνδυάζοντας κατάλληλα 4 ALU του ενός δυαδικού ψηφίου. 20. Υλοποιήστε στο Quartus-II το κύκλωμα του βήματος 19. 21. Εξομοιώστε το κύκλωμα για να επαληθεύσετε την ορθή λειτουργία του. 38