ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡOY ΗΜΥ 211-2010 Εισαγωγή στις πύλες NAND, NOR και XOR Σχεδιασμός Ελεγκτή Λαμπτήρων με πολλαπλούς διακόπτες και Ανιχνευτή Πρώτων Αριθμών ΕΡΓΑΣΤΗΡΙΑ ΛΟΓΙΣΜΙΚΟΥ/ΥΛΙΚΟΥ 2 Εισαγωγή Στο προηγούμενο εργαστήριο εξετάσαμε την υλοποίηση μιας λογικής συνάρτησης χρησιμοποιώντας πύλες AND, OR και NOT. Στο παρών πείραμα θα εξετάσουμε τη λειτουργία της πύλης NAND ως «οικουμενικής» πύλης (οικουμενικό δομικό στοιχείο). Με τον όρο αυτό εννοούμε ότι η πράξη που εκτελεί είναι συναρτησιακά πλήρης, δηλαδή οποιαδήποτε συνάρτηση συνδυαστικής λογικής μπορεί να υλοποιηθεί αποκλειστικά με πύλες NAND. Θα εξετάσουμε, επίσης, την οικουμενικότητα της πύλης NOR, η οποία είναι η δυϊκά ισοδύναμη (dual) της NAND. Ακολούθως, θα εξετάσουμε τη χρήση της πράξης αποκλειστικού OR (ή XOR) για τον σχεδιασμό ενός ελεγκτή λαμπτήρα με δύο διακόπτες. Τέλος, θα σχεδιάσετε έναν ανιχνευτή πρώτων αριθμών, ο οποίος θα ελέγχει 3-μπιτους αριθμούς. Αυτό το εργαστήριο έχει διάρκεια 2 εβδομάδων. Το πρώτο κομμάτι αφορά στον σχεδιασμό με το λογισμικό Altera QUARTUS II και το δεύτερο μέρος στην υλοποίηση με υλικό. Την πρώτη εβδομάδα θα πρέπει να ολοκληρώσετε την άσκηση σχεδιάζοντας και προσομοιώνοντας την ζητούμενα κυκλώματα με τα εργαλεία τα οποία παρουσιάστηκαν στο προηγούμενο εργαστήριο (Graphic Editor, Compiler, Waveform Editor, και Simulator). Την δεύτερη εβδομάδα θα υλοποιήσετε τους λογικούς σχεδιασμούς σας με δύο τρόπους, (i) χρησιμοποιώντας την εκπαιδευτική πλακέτα DE1 με την ολοκληρωμένη προγραμματιζόμενη λογική διάταξη, και (ii) χρησιμοποιώντας την εκπαιδευτική μονάδα ETS-7000 και κατάλληλα διακριτά στοιχεία. Σημειώστε: Βαθμολογείστε και κατά τη διάρκεια του εργαστηρίου (λογισμικού και υλικού). Βεβαιωθείτε ότι ο διδάσκων ή ένας από τους υπεύθυνους του εργαστηρίου έχει δει το τελικό αποτέλεσμα για κάθε μέρος της άσκησης, το οποίο σάς ζητείτε να παραδώσετε ή να παρουσιάσετε. Οι ακόλουθες εκτυπώσεις/σελίδες είναι απαραίτητες, και θα πρέπει να υπογραφούν από τους υπεύθυνους του εργαστηρίου και να συμπεριληφθούν στη γραπτή σας αναφορά: Σχηματικά lab2a.bdf, lab2b.bdf και lab2c.bdf από το Μέρος Α. Τα αντίστοιχα αποτελέσματα προσομοίωσης με τα αρχεία κυματομορφών lab2a.vwf, lab2b.vwf, και lab2c.vwf. Πίνακα αληθείας, απλοποιημένη λογική εξίσωση, και λογικό διάγραμμα κυκλώματος με πύλες NAND για τον σχεδιασμό στο Μέρος Α.3. Την εκτύπωση του σχεδιασμού lab2c.bdf με τα pins από το Μέρος Β.1. Τους πίνακες αληθείας και τα διαγράμματα κυκλώματος για τους ελεγκτές λαμπτήρα με δύο και πέντε διακόπτες (τελευταίες δύο σελίδες) από το Μέρος Β.2. Για τον ελεγκτή με πέντε διακόπτες, να δοθεί η λογική εξίσωση του ως άθροισμα ελαχιστόρων. 1
Μέρος Α Εργαστήριο Λογισμικού (Πρώτη Εβδομάδα) Στο πρώτο εργαστήριο μάθατε πώς να φτιάχνετε ένα απλό κύκλωμα με τη χρήση κατάλληλων εργαλείων. Το παρών πείραμα αρχικά θα σάς καθοδηγήσει για την δημιουργία και προσομοίωση ενός πιο περίπλοκου κυκλώματος, για την εξέταση της συναρτησιακής πληρότητας και της οικουμενικότητας των πυλών NAND και NOR. Με βάση αυτές τις γνώσεις, θα κληθείτε να σχεδιάσετε δικό σας κύκλωμα, διάταξη και προσομοίωση, που να υλοποιεί ένα ελεγκτή λαμπτήρων δύο διακοπτών, με δύο τρόπους, (i) με 4 πύλες NAND και (ii) με μια μόνο πύλη XOR. Τέλος, θα σχεδιάσετε ένα κύκλωμα το οποίο θα υλοποιεί έναν ανιχνευτή πρώτων αριθμών, ο οποίος θα ελέγχει 3-μπιτους αριθμούς. Μέρος Α.1 : Προσομοίωση πυλών NAND και NOR Το σχηματικό «Πείραμα Α.1» στην σελίδα 14 δείχνει δύο εισόδους, Α και Β, να οδηγούν τρεις ομάδες πυλών. Η πρώτη ομάδα υλοποιεί τις βασικές πράξεις της άλγεβρας Boole AND, OR και NOT. Η δεύτερη ομάδα εκτελεί τις ίδιες πράξεις με την χρήση μόνο NAND πυλών, ενώ η τρίτη ομάδα κάνει το ίδιο με την χρήση μόνο NOR πυλών. Οι κυματομορφές που παράγονται από την προσομοίωση (σελίδα 15) επιβεβαιώνουν ότι πράγματι οι NAND και NOR πύλες έχουν την ιδιότητα της οικουμενικής πύλης, αφού μπορούν να υλοποιούν χωρίς την χρήση άλλου είδους πυλών και τις τρεις βασικές πράξεις της άλγεβρας Boole. Αντιγράψτε το κύκλωμα και τις κυματομορφές ακολουθώντας τα βήματα που παρατίθενται πιο κάτω. Στα αναλυτικά βήματα που ακολουθούν, δίνεται μόνο μια μέθοδος για την εκτέλεση της κάθε πράξης που σάς ζητείται. Έχετε υπόψη σας ότι η κάθε μια από αυτές τις πράξεις μπορεί να γίνει με διάφορους τρόπους. Στο μέρος Α.1, απλά καθοδηγήστε έτσι ώστε να αναπαράγετε το σχηματικό της σελίδας 14 και τις κυματομορφές της σελίδας 15, και άρα δεν είναι απαραίτητο να πάρετε αυτά τα αποτελέσματα μόνο με την μέθοδο που περιγράφεται πιο κάτω. Στο μέρος αυτό μπορείτε να προσπαθήσετε να εξερευνήσετε τις δυνατότητες του λογισμικού για να διεκπεραιώσετε την άσκηση, έτσι ώστε να αποκτήσετε οικειότητα για τους σχεδιασμούς που θα κληθείτε να φτιάξετε από μόνοι σας στα μέρη Α.2 και Α.3. Για τυχόν προβλήματα που θα αντιμετωπίσετε, ανατρέξτε στο σύστημα βοήθεια (help) του QUARTUS II ή στην εκφώνηση του προηγούμενου εργαστηρίου. a) Δημιουργία Σχηματικού με τον Graphic Editor. 1. Ανοίξτε το περιβάλλον QUARTUS II 8.0. (Μην δημιουργήσετε νέο project ακόμη.) 2. Επιλέξετε New (από το File menu). Συντόμευση: *στο toolbar Το παράθυρο για νέο αρχείο εμφανίζεται. 3. Επιλέξτε Block Diagram / Schematic File. Επιλέξτε OK. Ένα νέο παράθυρο του Graphic Editor θα ανοίξει. 4. Δημιουργήστε στο χώρο εργασίας σας ένα νέο φάκελο (folder) με το όνομα Lab2 κάτω από τον κατάλογο του μαθήματος. 5. Στο QUARTUS II, επιλέξτε Save As (File menu). Συντόμευση: ή: Ctrl + S 2
6. Επιλέξτε τον φάκελο Lab2 που έχετε δημιουργήσει, στο πεδίο Save in. Πληκτρολογήστε lab2a.bdf στο πεδίο File name και επιλέξτε OK. (Στην ερώτηση εάν θέλετε να δημιουργήσετε νέο project, απαντήστε Yes, και ακολουθήστε τις οδηγίες στο βήμα 7.) 7. Δημιουργήστε ένα νέο project επιλέγοντας από το menu bar File New Project Wizard. (Δέστε το βήμα a.7 από το προηγούμενο εργαστήριο λογισμικού για το πώς να δημιουργείτε ένα νέο project.) Ονομάστε το νέο σας project lab2 και προσθέστε σε αυτό το αρχείο lab2a.bdf. Θέστε ως working directory τον φάκελο Lab2 που δημιουργήσατε προηγουμένως. Η οικογένεια και η συσκευή FPGA πρέπει να είναι αυτή που χρησιμοποιείται στην πλακέτα DE1 της Altera, δηλ. Cyclone II και EP2C20F484C7, αντίστοιχα. 8. Κάντε αριστερό double-click με το mouse σε οποιοδήποτε κενό σημείο του Graphic Editor. Ανοίγει το παράθυρο διαλόγου Symbol. 9. Πληκτρολογήστε gnd στο πεδίο Name ή κάντε Click στην βιβλιοθήκη c:\altera\80\quartus\libraries\primitives\others\ και επιλέξετε gnd στο πεδίο Libraries. Πατήστε OK. 10. Επαναλάβετε τα προηγούμενα δύο βήματα για να βάλετε μια είσοδο (input), μια έξοδο (output) και ένα σημείο τροφοδοσίας (Vcc). Τα στοιχεία υπάρχουν επίσης στην βιβλιοθήκη των primitives. Ανατρέξετε στο σχηματικό της σελίδα 13 για μια γενική άποψη της διάταξης των στοιχείων στο κύκλωμα. 11. Επαναλάβατε τα βήματα 8-9 για να εισάγετε τα ακόλουθα ολοκληρωμένα: 7400, 7402, 7404, 7408 και 7432. Αυτά τα στοιχεία μπορείτε να τα βρείτε επίσης στην βιβλιοθήκη: c:\altera\80\quartus\libraries\others\maxplus2\. Τα πιο πάνω ολοκληρωμένα αντιστοιχούν στις ακόλουθες πύλες (με την σειρά που αναφέρονται) nand2, nor2, not, and2, or2. Η λειτουργία που εκτελούν είναι απόλυτα ισοδύναμη με αυτή των αντίστοιχων πυλών, αλλά διαφέρουν στο ότι όταν το κύκλωμα θα υλοποιηθεί στο υλικό αυτές οι πύλες θα είναι από τα αντίστοιχα ολοκληρωμένα (7400, 7402, κλπ.). Με αυτό τον τρόπο είναι πιο εύκολο για σας να κάνετε την αντιστοίχηση του σχεδιασμού σας με το κύκλωμα που θα υλοποιήσετε στο εργαστήριο την επόμενη εβδομάδα. Το ολοκληρωμένο 74LSxx, το οποίο είδατε στο Εργαστήριο υλικού 1, είναι μια έκδοση του ολοκληρωμένου 74xx χαμηλής κατανάλωσης, χωρίς να διαφέρει σε λειτουργία από τις κανονικές 74xx, ακόμη και στην ταχύτητα λειτουργίας. Έτσι η προσομοίωση μας είναι απολύτως συμβατή με την πραγματική υλοποίηση. 12. Αν δεν έχετε τοποθετήσει τον απαραίτητο αριθμό από σύμβολα στο σχεδιασμό σας, μπορείτε να χρησιμοποιήσετε την εντολή Copy από το μενού που εμφανίζεται κάνοντας δεξί κλικ στο σύμβολο που επιθυμείτε να αντιγράψετε. Μετά, χρησιμοποιήστε την 3
εντολή Paste από το μενού που εμφανίζεται κάνοντας δεξί κλικ εκεί όπου θέλετε να τοποθετήσετε το αντίγραφο. Συντόμευση: Κρατήστε πατημένο το Ctrl και επιλέξτε το αντικείμενο που θέλετε να αντιγράψετε με το mouse. Σύρετε το mouse στην θέση που θέλετε να τοποθετήσετε το αντίγραφο του αντικειμένου. 13. Τοποθετήστε τις πύλες και τα άλλα στοιχεία όπως το σχηματικό στην Εικόνα 1 της σελίδας 14. Για να μετακινήσετε ένα αντικείμενο, επιλέξτε το με το mouse και σύρετε το στη νέα του θέση. Για να επιλέξετε πολλά αντικείμενα, σχηματίστε ένα κουτί γύρω από τα αντικείμενα που θέλετε να μετακινήσετε κρατώντας πατημένο το αριστερό κουμπί του mouse. Μπορείτε να κάνετε το ίδιο πατώντας το shift και επιλέγοντας ένα-ένα με το mouse τα αντικείμενα που θέλετε. 14. Κάντε αριστερό double-click στο PIN_NAME του πρώτου INPUT για να το επιλέξετε. Πληκτρολογήστε A για να αντικαταστήσετε το κείμενο της ονομασίας. Υπόδειξη: Με το εργαλείο μπορείτε επίσης να αλλάξετε το κείμενο κάποιου στοιχείου. 15. Επαναλάβετε το βήμα 14 για να ονομάσετε τα υπόλοιπα inputs και outputs σύμφωνα με το σχηματικό στην σελίδα 14. Συντόμευση: Πατήστε Enter μετά την αλλαγή κάθε ονόματος και θα μεταφερθείτε αυτόματα στο επόμενο pin στο σχεδιασμό σας. 16. Τραβήξτε μια γραμμή (καλώδιο) από την είσοδο A στο σύμβολο 7404. Γραμμές μπορούν επίσης να χαραχτούν με το εργαλείο το οποίο βρίσκεται στο Graphic Editor toolbar στα αριστερά του παραθύρου στο QUARTUS II. Για την διαγραφή μιας γραμμής, απλά επιλέξτε την γραμμή με το mouse και πατήστε Delete. Αν ένα σύμβολο το οποίο έχει καλώδια ενωμένα σ αυτό μετακινηθεί, τότε τα καλώδια θα επιμηκυνθούν ή θα σμικρυνθούν ανάλογα, ώστε το σύμβολο να παραμένει συνδεδεμένο. 17. «Καλωδιώστε» και τις υπόλοιπες συνδέσεις σύμφωνα με το σχήμα στην Εικόνα 1 στη σελίδα 14. Υπόδειξη: Τραβήξτε πρώτα τα πιο μεγάλα σε μήκος καλώδια και ακολούθως τα μικρότερα, ώστε να μπορείτε να βάζετε συνδέσεις και πάνω στα μεγάλα καλώδια. Επίσης, χρησιμοποιείστε τα εργαλεία για μεγέθυνση (Zoom In) και σμίκρυνση (Zoom Out) για ευκολία στον σχεδιασμό του κυκλώματος. 18. Επιλέξτε Save για να αποθηκεύσετε το αρχείο lab2a.bdf (File Save). 4
19. Επιλέξτε όλα τα στοιχεία του σχεδιασμού σας και επιλέξτε Print (File menu). Συντόμευση: Ctrl + P 20. Επιλέξτε το Selection και πατήστε OK για να τυπώσετε το σχεδιασμό σας. (Βεβαιωθείτε ότι έχει το όνομα, τον αριθμό ταυτότητας, και την ημέρα εργαστηρίου σας.) b) Μετάφραση (Compilation) του Project. 1. Επιλέξτε Project Set as Top-Level Entity. 2. Επιλέξτε Processing Start Compilation. Συντόμευση: Ctrl + Shift + J Ο Compiler θα μεταφράσει το αρχείο lab2a.bdf, θα ελέγξει για λογικές ασυνέπειες και θα δημιουργήσει όλα τα απαραίτητα αρχεία για τον Simulator και τον Waveform Editor. Το βήμα αυτό είναι απαραίτητο για την εκτέλεση της προσομοίωσης, περιλαμβανομένης και της δημιουργίας των κυματομορφών. Αν υπάρχουν λάθη στον σχεδιασμό σας μπορείτε να τα δείτε στην εφαρμογή Message Processor και έτσι να τα εντοπίσετε και να τα διορθώσετε. Αν το project δεν έχει σφάλματα, προχωρήστε στο επόμενο βήμα. c) Ορισμός κυματομορφών εισόδων. 1. Επιλέξτε New (από το File menu) και μετά Vector Waveform File (κάτω από την επιλογή Verification/Debugging Files). Μια κενή κυματομορφή θα ανοίξει. 2. Κάντε δεξί κλικ στην στήλη Name: στα αριστερά του παραθύρου του Waveform Editor. Επιλέξτε Insert Insert Node or Bus. Από το καινούργιο παράθυρο διαλόγου πατήστε το κουμπί Node Finder. 3. Πατήστε το κουμπί List, πάνω δεξιά. Αμέσως παρατίθεται μια λίστα όλων των θυρών εισόδου και εξόδου που εμφανίζονται στο σχεδιασμό σας. Σημείωση: Βεβαιωθείτε ότι έχετε επιλέξει Pins: all στο πεδίο Filter, και επίσης έχετε επιλέξει το κουμπί Include subentities. 4. Πατήστε το κουμπί >> για να προσθέσετε όλες τις θύρες στην κυματομορφή. Επιλέξτε OK και στα δύο παράθυρα διαλόγου. 5. Αναδιατάξετε τις θύρες ώστε η σειρά τους να συμφωνεί με την Εικόνα 2 στην σελίδα 15. Για να αλλάξετε την σειρά των θυρών επιλέξτε μια θύρα και σύρατε την στην νέα θέση. 5
6. Επιλέξτε Edit Grid Size και πληκτρολογήστε 100ns στο πεδίο Grid Size. Πατήστε OK. Επίσης, επιλέξτε View Snap to Grid και View Fit in Window. Με τον τρόπο αυτό απλοποιείτε πολύ την διαδικασία αλλαγής και παρατήρησης των κυματομορφών! 7. Επιλέξτε End Time (Edit menu). Πληκτρολογήστε 400ns στο πεδίο Time. Πατήστε OK. Επειδή ο σχεδιασμός σας περιέχει μόνο δύο θύρες εισόδου μια συνολική εικόνα της λογικής προσομοίωσης μπορεί να εξαχθεί σε μόνο τέσσερα βήματα, δηλαδή σε 400ns στην περίπτωση σας. 8. Κάντε αριστερό κλικ κάτω από το πεδίο Value στην είσοδο A για να επιλέξετε ολόκληρο το διάνυσμα εισόδου A. 9. Πατήστε το στο toolbar. Αυτό θα ανοίξει το παράθυρο διαλόγου Count Value. Η ακολουθία απαρίθμησης μπορεί να καθοριστεί στο σημείο αυτό. 10. Καθορίστε το Start Value (κάτω από το menu Counting) στο 0 και το Multiplied By (κάτω από το menu Timing) στο 1. Καθορίστε, επίσης, το Count Every στο 100ns. Επιλέξτε OK. Τα διανύσματα εισόδου μπορούν να τεθούν με πολλούς τρόπους (Εργαστηριακή Άσκηση 1), αλλά το εργαλείο Count Value είναι πιθανόν ο πιο αποδοτικός τρόπος. 11. Επαναλάβετε τα βήματα 8-10 για να επιλέξετε την είσοδο B και να αλλάξετε την τιμή της. Αυτή την φορά, αλλάξτε την τιμή του Multiplied By από 1 σε 2, κάτω από το menu Timing. Αυτό θα δημιουργήσει μια κυματομορφή που θα έχει λογικό χαμηλό (0) για 200ns και μετά λογικό υψηλό (1) για άλλα 200ns. 12. Επιλέξτε Save As (File menu). Αποθηκεύστε το αρχείο με το όνομα lab2a.vwf στον ίδιο κατάλογο με το σχηματικό lab2a.bdf. Επιλέξτε OK. Το lab2a.vwf πρέπει να φαίνεται στο πεδίο File Name, αν όχι, τότε πληκτρολογήστε το. Η επέκταση.vwf σημαίνει Vector Waveform File. 6
d) Προσομοίωση. 1. Επιλέξτε Processing Simulator Tool. Συντόμευση: 2. Βεβαιωθείτε ότι έχετε επιλέξει Functional στο πεδίο Simulation mode. Βεβαιωθείτε, επίσης, ότι στο πεδίο Simulation Input έχετε επιλέξει την κυματομορφή που κατασκευάσατε (lab2a.vwf) και ότι το Check Outputs δεν είναι επιλεγμένο. 3. Πατήστε το κουμπί Generate Functional Simulation Netlist. 4. Πατήστε Start για να ξεκινήσετε την προσομοίωση. 5. Πατήστε το κουμπί Report για να δείτε τα αποτελέσματα της προσομοίωσης. Η κυματομορφή θα εμφανιστεί και θα περιέχει τα αποτελέσματα της προσομοίωσης. Συγκρίνετε τα με αυτά στην κυματομορφή της σελίδας 14. Παρατηρήστε ότι η κυματομορφή εξόδου δεν περιέχει καθόλου καθυστερήσεις. Αυτό γίνεται γιατί η προσομοίωση έγινε για τη λογική (functional) και όχι τη χρονική (timing) απόκριση του κυκλώματος. Στην επόμενη εργαστηριακή άσκηση θα δούμε τις δυνατότητες του προγράμματος για χρονική προσομοίωση. 6. Επιλέξτε Print (στο File menu). 7. Σημειώστε το All στο παράθυρο διαλόγου Print. Επιλέξτε OK για να κρατήσετε μια εκτύπωση (με το όνομα, τον αριθμό ταυτότητας, και την ημέρα εργαστηρίου σας). Κλείστε όλα τα παράθυρα, αλλά μην βγείτε από το QUARTUS II. 7
Μέρος Α.2: Ελεγκτής Λαμπτήρα με δύο διακόπτες Στο μέρος αυτό θα σχεδιάσετε ένα ελεγκτή λαμπτήρα με τέτοιο τρόπο ώστε να ελέγχεται από δύο διακόπτες. Κάθε αλλαγή στην κατάσταση ενός (και μόνο) διακόπτη θα έχει ως αποτέλεσμα την αλλαγή της κατάστασης του λαμπτήρα. Η κατάσταση του κάθε στοιχείου (λαμπτήρα ή διακόπτη) είναι ΟΝ (λογικό 1) και OFF (λογικό 0). Η λογική για το πρόβλημα «εναλλαγής» που μόλις περιγράψαμε μπορεί να λυθεί με μόνο μία πύλη δύο εισόδων τύπου XOR. Στο μάθημα είδαμε πώς μια πύλη XOR μπορεί να υλοποιηθεί με την χρήση τεσσάρων NAND 2 εισόδων. Για το μέρος αυτό της εργαστηριακής άσκησης πρέπει να ακολουθήσετε διαδικασία ανάλογη με αυτή του μέρους Α.1 για να δημιουργήσετε ένα σχεδιασμό που να περιέχει δύο θύρες εισόδου (Α και Β) συνδεδεμένες σε μία 7486 πύλη XOR 2 εισόδων, καθώς και σε ένα κύκλωμα τεσσάρων 7400 πυλών NAND 2 εισόδων. Ονομάστε την έξοδο του 7486 ως XOR, και την έξοδο του 7400 ως XOR_NAND, αφού με αυτό θα υλοποιήσετε μια XOR με πύλες NAND. 1. Δημιουργήστε το σχηματικό με τ όνομα lab2b.bdf που να πληροί τις προδιαγραφές που σάς δόθηκαν και κρατήστε μια εκτύπωση του (με το όνομα, τον αριθμό ταυτότητας, και την ημέρα εργαστηρίου σας). 2. Δημιουργήστε ένα αρχείο κυματομορφών εισόδου με το όνομα lab2b.vwf, με τις ίδιες εισόδους και διάρκεια (400ns) όπως και στο μέρος Α.1 και χρησιμοποιήστε το για να προσομοιώσετε το κύκλωμα. Βάλτε τις κυματομορφές στην εξής σειρά από πάνω προς τα κάτω: A, B, XOR, XOR_NAND. Κρατήστε μια εκτύπωση της κυματομορφής μετά την προσομοίωση (με το όνομα, τον αριθμό ταυτότητας και την ημέρα εργαστηρίου σας). Μέρος Α.3: Ανιχνευτής Πρώτων Αριθμών Καλείστε να σχεδιάσετε ένα κύκλωμα το οποίο θα ελέγχει αν ένας 3-μπιτος αριθμός είναι πρώτος, ή όχι. (Υπενθυμίζεται ότι το μηδέν και το ένα δεν είναι πρώτοι αριθμοί.) Το κύκλωμα θα πρέπει να έχει τρεις θύρες εισόδου A, B, και C, οι οποίες θα καθορίζουν τον υπό έλεγχο αριθμό, ενώ η έξοδος X θα δίνει το αποτέλεσμα του ελέγχου. Αφού πρώτα καθορίσετε τον πίνακα αληθείας του κυκλώματος, δώστε τη λογική εξίσωση για την έξοδο X, την οποία πρέπει να απλοποιήσετε χρησιμοποιώντας αλγεβρικούς μετασχηματισμούς ή χάρτη Karnaugh. Ακολούθως, σχεδιάστε το λογικό διάγραμμα χρησιμοποιώντας μόνο πύλες NAND 2-εισόδων. 1. Δημιουργήστε το σχηματικό με τ όνομα lab2c.bdf που να πληροί τις προδιαγραφές που σάς δόθηκαν. Κρατήστε μια εκτύπωση του (με το όνομα, τον αριθμό ταυτότητας, και την ημέρα εργαστηρίου σας). 2. Δημιουργήστε κατάλληλο αρχείο κυματομορφών εισόδου με το όνομα lab2c.vwf διάρκειας 800ns, και χρησιμοποιήστε το για να προσομοιώσετε το κύκλωμα για όλους τους δυνατούς συνδυασμούς εισόδων. Επιβεβαιώστε ότι οι τιμές εξόδου συμπίπτουν με τις αναμενόμενες σύμφωνα με τις προδιαγραφές. Κρατήστε μια εκτύπωση της κυματομορφής μετά την προσομοίωση (με το όνομα, τον αριθμό ταυτότητας, και την ημέρα εργαστηρίου σας). 8
Αναφορά Μέρους Α: Για κάθε ένα από τα μέρη Α.1, Α.2, και Α.3: 1. Μια σύντομη περιγραφή των όσων μάθατε σε αυτό το εργαστήριο. 2. Σχηματικό διάγραμμα και το αποτέλεσμα των προσομοιώσεων. 3. Αναφορά και περιγραφή των πιθανών προβλημάτων που συναντήσατε σε αυτό το εργαστήριο. Για το μέρος Α.2 μόνο: 1. Εξηγήστε τη λειτουργία του ελεγκτή λαμπτήρα με δύο διακόπτες. Συγκεκριμένα, δώστε μια λογική εξήγηση, βάσει της λειτουργίας του ελεγκτή, για το αποτέλεσμα από κάθε ζευγάρι τιμών εισόδου (Α και Β) της προσομοίωσης. 9
Μέρος Β Εργαστήριο Υλικού (Δεύτερη Εβδομάδα) Μέρος Β.1 Προγραμματισμός Πλακέτας DE1 Στο μέρος αυτό θα χρησιμοποιήσετε το QUARTUS II για να κατεβάσετε στην πλακέτα DE1 της Altera τον σχεδιασμό που έχετε με επιτυχία προσομοιώσει την προηγούμενη εβδομάδα και ο οποίος περιέχει τη λύση για το πρόβλημα του ανιχνευτή πρώτων αριθμών του μέρους Α.3. Ο σχεδιασμός θα μεταφραστεί και θα φορτωθεί στο ολοκληρωμένο Cyclone II. Οι τρεις είσοδοι θα ελέγχονται από τους τρεις διακόπτες πίεσης (push-button switches) δεξιά, που είναι συνδεδεμένοι με το Cyclone II. Η έξοδος θα ενωθεί σε ένα από τα πράσινα LEDs, τα οποία επίσης είναι ενωμένα με το Cyclone II. Σημειώστε ότι οι διακόπτες πίεσης είναι αρνητικής λογικής, ενώ τα LEDs είναι θετικής λογικής. Όταν οι διακόπτες πιέζονται δίνουν λογικό 0 (χαμηλή τάση), ενώ τα LEDs ανάβουν όταν δέχονται λογικό 1. Πριν κατεβάσετε τον σχεδιασμό σας στην πλακέτα, θα πρέπει να τοποθετήσετε αντιστροφείς στις εισόδους του κυκλώματος σας, ώστε η προσομοίωση που έχετε κάνει την προηγούμενη εβδομάδα να συμβαδίζει με την υλοποίηση στην πλακέτα. 1. Ανοίξτε το project lab2.qpf που έχετε αποθηκεύσει από το προηγούμενο εργαστήριο, επιλέγοντας File Open Project, ή κάνοντας διπλό κλικ στο αρχείο στο φάκελο σας. 2. Ανοίξτε το σχηματικό lab2c.bdf στον Graphic Editor, είτε με File Open, είτε από τον Project Navigator. 3. Προσθέστε 3 πύλες not στο σχεδιασμό σας. Ενώστε την κάθε μία στις εισόδους του κυκλώματος σας. 4. Επιλέξτε Project Set as Top-Level Entity, αν δεν είναι ήδη το lab2c.bdf. 5. Επιλέξτε Assignments Pins. 6. Αναθέστε τα αντίστοιχα pins στις εισόδους και την έξοδο του κυκλώματος που φαίνονται στο κάτω μέρος του Pin Planner. Για κάθε είσοδο ή έξοδο κάντε αριστερό double-click στο αντίστοιχο κουτί κάτω από τη στήλη Location και πληκτρολογήστε το όνομα του pin (το οποίο μπορείτε να βρείτε στο εγχειρίδιο της πλακέτας DE1). Στην είσοδο Α αναθέστε τον τρίτο διακόπτη πίεσης από τα δεξιά. Στην είσοδο Β αναθέστε τον δεύτερο διακόπτη πίεσης από τα δεξιά, ενώ στην είσοδο C αναθέστε τον πρώτο διακόπτη πίεσης στα δεξιά. Στην έξοδο X αναθέστε το πρώτο πράσινο LED στα δεξιά. (Κλείστε το παράθυρο του Pin Planner. Τα ονόματα των pins θα εμφανιστούν στο σχεδιασμό σας, δίπλα από τις αντίστοιχες θύρες εισόδου και εξόδου.) 7. Επιλέξτε Processing Start Compilation για να μεταφραστεί το κύκλωμα σας μετά την ανάθεση των κατάλληλων pins στις εισόδους και την έξοδο. Αυτό θα επιτρέψει την υλοποίηση και επαλήθευση του κυκλώματος σας στην πλακέτα DE1 της Altera, χρησιμοποιώντας τρεις διακόπτες πίεσης ως εισόδους και ένα πράσινο LED ως έξοδο. Κρατήστε δύο εκτυπώσεις του σχεδιασμού σας (με τα pins), με τα ονόματα της ομάδας, τους αριθμούς ταυτότητας, και την ημέρα εργαστηρίου σας. 8. Βεβαιωθείτε ότι το καλώδιο USB είναι ενωμένο στην πλακέτα DE1. Επίσης, βεβαιωθείτε ότι η πλακέτα DE1 είναι συνδεδεμένη στο ρεύμα. Πατήστε το κόκκινο κουμπί (Power ON/OFF Switch) στην πλακέτα για να εκκινήσει. 9. Βεβαιωθείτε ότι το RUN/PROG switch (βλέπετε σχήμα στην σελίδα 10) είναι στη θέση RUN. 10
ΗΜΥ 211 Εργαστήριο Λογισμικού/Υλικού 2 10. Προγραμματισμός πλακέτας DE1: (α) Ανοίξτε την εφαρμογή Tools Æ Programmer. Συντόμευση: (β) Επιλέξτε Hardware Setup πάνω αριστερά στο παράθυρο του Programmer. (γ) Επιλέξτε USB-Blaster [USB-0] και μετά πατήστε Close. (Βεβαιωθείτε, επίσης, ότι στο πεδίο Mode έχει επιλεγεί το JTAG. Αν όχι, επιλέξτε το.) Αυτή η διαδικασία ενημερώνει την εφαρμογή Programmer για το είδος του καλωδίου με το οποίο θα επικοινωνεί με την πλακέτα DE1, και τον τρόπο που αυτή είναι ενωμένη με τον υπολογιστή σας. 11. Πατήστε Start στο παράθυρο του Programmer για να κατεβάσετε τον μεταφρασμένο σχεδιασμό σας στην πλακέτα. Η διαδικασία αυτή θα πάρει μόνο μερικά δευτερόλεπτα. 12. Ελέγξτε την ορθότητα του σχεδιασμού σας στην πλακέτα. Καθορίστε πειραματικά και καταγράψετε τον πίνακα αληθείας για την έξοδο (επίδειξη στον διδάσκοντα ή σε έναν από τους υπεύθυνους του μαθήματος απαραίτητη). Αν παρατηρήσετε λάθος στην έξοδο, ελέγξετε το σχηματικό σας για πιθανά λάθη, ξαναμεταφράστε το, και ξανακατεβάστε το στην DE1. 11
Αναφορά για Μέρος Β.1: Αποδείξετε, χρησιμοποιώντας τον πίνακα αληθείας ή αλγεβρικούς μετασχηματισμούς, ότι το κύκλωμα στο σχηματικό lab2c που σχεδιάσατε την περασμένη εβδομάδα είναι πανομοιότυπο με αυτό που υλοποιήσατε στην πλακέτα DE1 της Altera και πληροί τις προδιαγραφές. Μέρος Β.2 Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η πειραματική επαλήθευση της λειτουργίας των δύο υλοποιήσεων που έγιναν για τον ελεγκτή λαμπτήρα με δύο διακόπτες, οι οποίες προσομοιώθηκαν στο μέρος Α.2 του εργαστηρίου αυτού. Ακολούθως (στο βήμα 5), θα σχεδιάσετε έναν ελεγκτή λαμπτήρα με 5 διακόπτες. Λίστα με τα στοιχεία που θα χρησιμοποιήσετε: A/A Ποσότητα Κωδικός Περιγραφή 1 1 WK-1 Wire Kit 2 1 74LS00 Quadruple 2-Input NAND Gate 3 1 74LS86 Quadruple 2-Input XOR Gate 1. Τοποθετήστε ένα ολοκληρωμένο 74LS00 (τέσσερις NAND 2-εισόδων) και ένα 74LS86A (4 XOR 2-εισόδων) στην πλακέτα της μονάδας ETS-7000. Η αρίθμηση των pins φαίνεται στα σχήματα στην επόμενη σελίδα. 2. Σχεδιάστε στην προτελευταία σελίδα τα διαγράμματα κυκλώματος των δύο υλοποιήσεων που έχετε κάνει στο μέρος Α.2 αυτής της άσκησης. Χρησιμοποιείστε τους διακόπτες SW1 και SW0 για τις εισόδους των δύο κυκλωμάτων, και τους λαμπτήρες L1 και L0 για τις εξόδους των κυκλωμάτων NAND και XOR, αντίστοιχα. Σχεδιάστε τις συνδέσεις καθώς και την αντιστοιχία των pins του κάθε ολοκληρωμένου στα διαγράμματα που φτιάξατε. Δείξτε τις συνδέσεις των +5V και της γείωση (GND) στα αντίστοιχα pins του κάθε ολοκληρωμένου. 3. Συνδέστε τα κυκλώματα σύμφωνα με τα διαγράμματα που έχετε φτιάξει στο βήμα 2. 4. Καθορίστε πειραματικά και καταγράψτε στην προτελευταία σελίδα τον πίνακα αληθείας για τις εξόδους L1 και L0, ως συναρτήσεις των διακοπτών εισόδου SW1 και SW0. (Σημείωση: Δείξετε τα αποτελέσματα σας σε έναν από τους υπεύθυνους του εργαστηρίου πριν προχωρήσετε πιο κάτω.) 5. Τώρα, σχεδιάστε έναν ελεγκτή λαμπτήρα με 5 διακόπτες, με την ίδια λογική όπως και πριν, χρησιμοποιώντας μόνο πύλες XOR 2-εισόδων. (Σχεδιάστε το κύκλωμα με τον ελάχιστο αριθμό επιπέδων.) Ακολούθως, δείξτε το διάγραμμα κυκλώματος (όπως στο βήμα 2) και τον πίνακα αληθείας στην τελευταία σελίδα. Συνδέστε το κύκλωμα σύμφωνα με το διάγραμμα, προσθέτοντας τους διακόπτες SW4, SW3 και SW2 σε αυτούς στο σχεδιασμό του μέρους Α.2. Καθορίστε πειραματικά και καταγράψετε τον πίνακα αληθείας για όλους τους συνδυασμούς εισόδων. Ελέγξτε την ορθότητα του σχεδιασμού σας, και καθορίστε τη λογική εξίσωση του ως άθροισμα ελαχιστόρων (κανονικό SOP). 12
6. Πόσα κατ ελάχιστο 74LS00 (ολοκληρωμένα τεσσάρων πυλών NAND 2-εισόδων) θα χρειάζονταν για την υλοποίηση του ιδίου κυκλώματος με πύλες NAND; Αναφορά για Μέρος Β.2: Για όλα τα πιο πάνω βήματα πρέπει να δείξετε τα αποτελέσματα σας στους υπεύθυνους του εργαστηρίου. Ότι έχετε γράψει στο σημειωματάριο σας, και στα υπογραμμένα επισυναπτόμενα φυλλάδια, πρέπει να περιληφθούν (καθαρογραμμένα) στην αναφορά που θα παραδώσετε την επόμενη εβδομάδα, μαζί με τα αποτελέσματα του μέρους Α. 13
Εικόνα 1: Πείραμα Α.1 14
Είσοδοι Αναμενόμενα αποτελέσματα Εικόνα 2. Κυματομορφές Προσομοίωσης για Α.1. Οι είσοδοι πρέπει να καθοριστούν στο αρχείο κυματομορφών. Τα αναμενόμενα αποτελέσματα θα εμφανιστούν μετά την προσομοίωση. 15
Όνομα: Αρ. Ταυτότητας: Ημέρα:
Όνομα: Αρ. Ταυτότητας: Ημέρα:
Όνομα: Αρ. Ταυτότητας: Ημέρα: