ΗΥ-120: Ψηφιακή Σχεδίαση
Φθινόπωρο 2002 |
Τμ. Επ. Υπολογιστών Πανεπιστήμιο Κρήτης |
[Βιβλίο: παράγραφοι 7.7, 7.8 (σελ. 363-375) και σελίδα 525 (από παραγρ. 10.5)].
Όταν οι πηγές πληροφοριών, data0, data1, κλπ, βρίσκονται σχετικά μακρυά η μία από την άλλη, ή όταν είναι επιθυμητή η προσθαφαίρεση πηγών κατά τη λειτουργία του συστήματος (π.χ. προσθήκη νέας κάρτας σε υπολογιστή), τότε η υλοποίηση του πολυπλέκτη μέσω διακοπτών είναι προτιμότερη της υλοποίησης μέσω πυλών. Η πρώτη αιτία είναι το πλήθος και το κόστος των απαιτούμενων συρμάτων: το κύκλωμα με πύλη OR απαιτεί να συλλεγούν οι πληροφορίες από όλες τις πηγές σε ένα κεντρικό σημείο, πράγμα που χρειάζεται τόσα σύρματα όσες και οι πηγές· αντίθετα, το κύκλωμα με διακόπτες λειτουργεί με ένα μόνο σύρμα που διατρέχει το σύστημα απ' άκρη σ' άκρη μεταφέροντας κάθε φορά την πληροφορία της όποιας πηγής μας ενδιαφέρει τη στιγμή εκείνη. (Ο αποκωδικοποιητής και τα σύρματα επιλογής είναι ένα επιπλέον κόστος, αλλά όταν υπάρχουν πολλαπλά σύρματα (bits) δεδομένων το κόστος της επιλογής αποσβένυται μεταξύ όλων αυτών· επίσης, υπάρχει πλήθος εφαρμογών όπου η επιλογή γίνεται με άλλους, κατανεμημένους τρόπους). Το δεύτερο πλεονέκτημα της πολύπλεξης μέσω διακοπτών είναι η ευκολία προσθήκης νέων πηγών πληροφορίας: εάν κάθε πηγή έχει ενσωματωμένο και το δικό της διακόπτη εξόδου, τότε η προσθήκη αυτή γίνεται μέσω απλής σύνδεσης συρμάτων --π.χ. με την εισαγωγή μιάς κάρτας σε μιάν υποδοχή-πρίζα.
Η παραπάνω λογική συμπεριφορά της πηγής πληροφορίας με τον διακόπτη στην έξοδο υλοποιείται στην τεχνολογία CMOS με το κύκλωμα που φαίνεται στο κάτω μέρος του σχήματος. Το κύκλωμα αυτό μπορεί να φέρει την έξοδο out σε μία από τρείς διαφορετικές καταστάσεις: μηδέν (0), ένα (1), ή "υψηλή αντίσταση" (HiZ - high impedance - υψηλή εμπέδηση). Λόγω των τριών καταστάσεων της εξόδου του, το κύκλωμα αυτό ονομάζεται τρικατάστατος οδηγητής (tri-state driver). Η κατάσταση 0 αντιστοιχεί σε ενεργοποιημένο διακόπτη (en=1) και σε πληροφορία 0, οπότε η έξοδος πρέπει να οδηγηθεί σε χαμηλή τάση, ανάβοντας το transistor NMOS. Η κατάσταση 1 αντιστοιχεί σε ενεργοποιημένο διακόπτη (en=1) και σε πληροφορία 1, οπότε η έξοδος πρέπει να οδηγηθεί σε ψηλή τάση, ανάβοντας το transistor PMOS. Η κατάσταση HiZ αντιστοιχεί σε αδρανή (σβηστό) διακόπτη (en=0), οπότε η έξοδος πρέπει να μείνει ασύνδετη --να μην τοποθετηθεί καμία πληρόφορία σε αυτήν, αφήνοντας άλλες πηγές να την οδηγήσουν· σε αυτή την περίπτωση πρέπει και τα δύο transistors, NMOS και PMOS, να παραμείνουν σβηστά. Οι πύλες NAND, NOT, και AND που φαίνονται στο σχήμα προφανώς επιτυγχάνουν ακριβώς τη λειτουργία αυτή· επίσης εξασφαλίζουν ότι σε καμία περίπτωση δεν ανάβουν ταυτόχρονα και τα δύο transistors, NMOS και PMOS, αφού κάτι τέτοιο και απροσδιόριστη τάση εξόδου θα έδινε, και υπερβολικό ρεύμα τροφοδοσίας θα ξόδευε, και υπερθέρμανση των transistors θα προκαλούσε.
Ένα σύρμα στο οποίο συνδέονται πολλαπλοί τρικατάστατοι οδηγητές προκειμένου να υλοποιηθεί πολύπλεξη των αντίστοιχων δεδομένων εισόδου ονομάζεται "λεωφόρος" (bus), ή "αρτηρία" ή "διάδρομος" (ή καμιά φορά "δίαυλος"). Ο κανόνας λειτουργίας μιάς λεωφόρου είναι ότι, ανά πάσα στιγμή, το πολύ ένας από τους οδηγητές που συνδέονται σε αυτήν επιτρέπεται να είναι ενεργοποιημένος· ο οδηγητής αυτός προσδιορίζει την τάση (λογική τιμή) της λεωφόρου. Όποτε δεν υπάρχει κανείς ενεργοποιημένος οδηγητής, η λογική τιμή της λεωφόρου είναι απροσδιόριστη, δηλαδή η πληροφορία πάνω της είναι "σκουπίδια" ή "θόρυβος" (σε ειδικές περιπτώσεις τεχνολογιών μπορεί να είναι προβλέψιμη η τιμή αυτή, όπως συμβαίνει με την "δυναμική αποθήκευση πληροφορίας" (δυναμική μνήμη) μέσα σε chips τεχνολογίας CMOS, όμως αυτά δεν αφορούν το παρόν μάθημα).
Η "αρχιτεκτονική λεωφόρου" (bus) αποτελεί την απλούστερη μορφή δικτύου επικοινωνίας (communication network), και χρησιμοποιείται ευρύτατα όποτε η επικοινωνία γίνεται με ένα "κοινόχρηστο" μέσο (shared medium). Τέτοιο κοινόχρηστο μέσο μπορεί να είναι ένα σύρμα (όπως στην "κλασσική" μορφή του δικτύου "Ethernet"), μία ραδιοσυχνότητα σε δεδομένη περιοχή (π.χ. τα ράδιοταξί μιάς πόλης, ή μία από τις ραδιοσυχνότητες της κινητής τηλεφωνίας), ή παραδοσιακότερα μέσα όπως τα ηχητικά κύματα σε μιάν αίθουσα συνεδρίασης. Σε όλες αυτές τις περιπτώσεις υπάρχουν ειδικοί κανόνες ("πρωτόκολο επικοινωνίας") γιά το ποιός και πότε μπορεί να "πάρει το λόγο", δηλαδή με ποιόν τρόπο θα εξασφαλιστεί η τήρηση του κανόνα ότι το πολύ ένας οδηγητής (ομιλητής) μπορεί να είναι ενεργός κάθε φορά.
Ας χρησιμοποιήσουμε σαν παράδειγμα το chip στατικής RAM (SRAM) του παρόντος εργαστηρίου: πρόκειται γιά το chip "PD43256BCZ" (της εταιρείας NEC) που είναι μία SRAM μεγέθους 32Kx8· ένα λογικό διάγραμμα υψηλού επιπέδου του chip φαίνεται στο σχήμα δίπλα, και περισσότερες πληροφορίες γι' αυτό μπορείτε να βρείτε στο: http://www.necel.com/memory/pdfs/M10770EJCV0DS00.pdf . Το chip αυτό έχει μία μονόδρομη, δεκαπεντάμπιτη είσοδο διεύθυνσης, τρείς μονόδρομες εισόδους ελέγχου, και μία αμφίδρομη, οκτάμπιτη είσοδο/έξοδο δεδομένων. Τα τελευταία αυτά 8 σύρματα προορίζονται να συνδεθούν σε μία λεωφόρο δεδομένων. Όταν θέλουμε να γράψουμε στη μνήμη, πρέπει κάποια άλλη συσκευή να οδηγήσει τη λεωφόρο, βάζοντας εκεί τα δεδομένα που θέλουμε να εγγραφούν· η μνήμη διαβάζει τα δεδομένα από τα σύρματα αυτά, και τα αποθηκεύει στην επιθυμητή λέξη. Όταν θέλουμε να διαβάσουμε από τη μνήμη, ενεργοποιούμε τους τρικατάστατους οδηγητές που έχει μέσα του το chip, οπότε αυτό γίνεται ο οδηγητής της λεωφόρου και τοποθετεί εκεί τη λέξη που του ζητήσαμε να διαβάσει· από εκεί, τη λέξη αυτή θα την πάρουν οι άλλοι "ακροατές" που συνδέονται πάνω στη λεωφόρο.
Από άποψη χρονισμού, η λειτουργία του PD43256B έχει ως εξής. Η ανάγνωση από το chip μπορεί να θεωρηθεί σαν καθαρά συνδυαστική πράξη: μπορούμε να φανταστούμε ότι ένας μεγάλος, οκτάμπιτος πολυπλέκτης 32Κ-σε-1 φέρνει στον εσωτερικό κόμβο "dataOut" το περιεχόμενο της λέξης εκείνης την οποία επιλέγουν τα 15 bits της διεύθυνσης· μόλις αλλάξει η διεύθυνση, μετά από λίγο (καθυστέρηση ανάγνωσης) αλλάζουν και τα dataOut και γίνονται ίσα με τα περιεχόμενα της νέας θέσης μνήμης (η πραγματική εσωτερική λειτουργία δεν είναι έτσι, αλλά αυτό δεν μας αφορά εδώ). Η εγγραφή, από την άλλη μεριά, πρέπει να γίνει προσεκτικότερα: πρώτα πρέπει να τοποθετηθεί η επιθυμητή διεύθυνση εγγραφής στην είσοδο διέύθυνσης, και μετά από αυτό και μόνο πρέπει να ανάψει το έσωτερικό σήμα "write". Όση ώρα είναι αναμένο το σήμα write πρέπει η διεύθυνση να παραμένει σταθερή· καθ' όλη αυτή την ώρα, η επιλεγόμενη λέξη μνήμης λειτουργεί σαν μανταλωτής: ό,τι δεδομένα υπάρχουν πάνω στις εισόδους "dataIn" εγγράφονται στη λέξη --προφανώς, τα τελευταία τέτοια δεδομένα πριν σβήσει το σήμα write θα παραμείνουν στην επιλεγμένη λέξη μνήμης. Η είσοδος διεύθυνσης επιτρέπεται να αλλάξει μόνον αφού σβήσει το σήμα write.
Η εξωτερική συμπεριφορά του chip προσδιορίζεται από τους παραπάνω κανόνες και από τα τρία σήματα ελέγχου, WE', CS', και OE', σύμφωνα με το λογικό διάγραμμα που φαίνεται στο σχήμα. Και τα τρία σήματα ελέγχου έχουν αρνητική πολικότητα: ενεργοποιούν τη λειτουργία τους, το καθένα, όταν είναι μηδέν (0). Το σήμα CS' (αρνητικό Chip Select) ενεργοποιεί ή αδρανοποιεί ολόκληρο το chip· προορίζεται γιά χρήση όταν φτιάχνουμε μιά μεγάλη μνήμη από πολλά chips, γιά να επιλέγουμε σε ποιό chip απευθυνόμαστε κάθε φορά. Όταν CS'=0 (ενεργό chip), το σήμα WE' (αρνητικό Write Enable) ενεργοποιεί την εγγραφή, δηλαδή ανάβει το write, όποτε γίνεται μηδέν (0). Τέλος, όταν CS'=0 (ενεργό chip), το σήμα OE' (αρνητικό Output Enable) ανάβει τους τρικατάστατους οδηγητές της λεωφόρου εξόδου, όταν WE'=1 δηλαδή όταν δεν κάνουμε εγγραφή (άρα κάνουμε ανάγνωση), με άλλα λόγια όταν θέλουμε η λέξη που διαβάζουμε να βγεί έξω από το chip, στη λεωφόρο δεδομένων.
Η λειτουργία του κυκλώματος έχει ως εξής. Επιλέγουμε μιά διεύθυνση μέσω των δύο μεταγωγών διακοπτών στο μέσον, και επιλέγουμε μία λέξη δεδομένων μέσω των τεσσάρων μεταγωγών διακοπτών επάνω. Στη συνέχεια, πατάμε τον επάνω διακόπτη τύπου κουμπιού γιά να ενεργοποιήσουμε τον επάνω τρικατάστατο οδηγητή· η λέξη δεδομένων πρέπει να εμφανιστεί πάνω στη λεωφόρο και στις LED's. Με πατημένο τον τελευταίο διακόπτη, πατάμε στιγμιαία έναν από τους διακόπτες WE' μιάς από τις δύο μνήμες· εάν το κύκλωμα λειτουργεί σωστά, τα δεδομένα από τη λεωφόρο θα πρέπει τώρα να έχουν γραφτεί στην επιλεγμένη διεύθυνση της μνήμης αυτής (γράψτε σ' ένα χαρτί τη διεύθυνση και τα δεδομένα γιά επαλήθευση αργότερα). Αλλάζουμε τα δεδομένα και πατάμε το WE' της άλλης μνήμης· τα νέα δεδομένα θα πρέπει να γράφτηκαν στην επιλεγμένη διεύθυνση εκείνης της μνήμης. Αλλάζουμε τη διεύθυνση και τα δεδομένα, και επαναλαμβάνουμε τη διαδικασία ούτως ώστε να γράψουμε προκαθορισμένες (και διαφορετικές!) λέξεις σε κάθεμιά από τις 4 προσπελάσιμες λέξεις καθεμιάς από τις δύο μνήμες. Προσοχή: τη στιγμή της αλλαγής της διεύθυνσης να μην είναι πατημένος κανένας διακόπτης WE'. Στη συνέχεια, αφού "γεμίσαμε" (αρχικοποιήσαμε) τις μνήμες, διαβάζουμε τα περιεχόμενά τους γιά να διαπιστώσουμε αν είναι τα σωστά: πατάμε το OE' της πρώτης μνήμης (με κανέναν άλλο διακόπτη πατημένο), αλλάζουμε τη διεύθυνση, περνόντας διαδοχικά από το 00, 01, 10, και 11, και παρακολουθούμε (μέσω των LED's) την τιμή στη λεωφόρο γιά να δούμε αν αντιστοιχεί κάθε φορά στα δεδομένα που είχαμε γράψει στην αντίστοιχη διεύθυνση εκείνης της μνήμης. Επαναλαμβάνουμε μετά με την άλλη μνήμη. Προσοχή: μεταξύ των 3 διακοπτών κουμπιού που ενεργοποιούν τις 3 τετράδες τρικατάστατων οδηγητών (οδηγητής δεδομένων εισόδου επάνω, OE' πρώτης μνήμης, OE' δεύτερης μνήμης), το πολύ ένας επιτρέπεται να είναι πατημένος κάθε στιγμή! Τι δείχνουν οι LED's όταν κανείς τους δεν είναι πατημένος;
Τα pins του SRAM chip φαίνονται στο σχήμα δίπλα. Τα pins διεύθυνσης που θα χρησιμοποιήσουμε εμείς είναι μόνο τα 9 και 10: A1 και A0. Τα υπόλοιπα 13 pins διεύθυνσης δεν τα χρησιμοποιούμε, και πρέπει να γειωθούν (λογικό 0): pins 1 έως και 8, 21, και 23 έως και 27. Τα pins δεδομένων (εισόδου/εξόδου) είναι τα 11, 12, 13, και 15 έως και 19· εμείς θα χρησιμοποιήσουμε μόνο 4 (οιαδήποτε) από αυτά --π.χ. τα 15 έως και 18. Τέλος, οι 3 είσοδοι ελέγχου βρίσκονται στα pins 20, 22, και 27, όπως φαίνεται δίπλα.
Σαν τρικατάστατους οδηγητές γιά τα δεδομένα εγγραφής (προηγούμενο σχήμα, επάνω μέρος), χρησιμοποιήστε 4 από τα 8 bits ενός chip μανταλωτών "74573" όπως αυτά που χρησιμοποιήσατε στα 2 τελευταία εργαστήρια. Όπως είχαμε πεί, τα chips αυτά έχουν τρικατάστατες εξόδους. Γιά να χρησιμοποιήσουμε μόνο τους οδηγητές, χωρίς τους μανταλωτές, αρκεί να συνδέσουμε μονίμως στο 1 το σήμα φόρτωσης (pin 11): τότε, ό,τι υπάρχει στις εισόδους "εγγράφεται" συνεχώς και αμέσως και εμφανίζεται στις εξόδους. Η είσοδος ενεργοποίησης των τρικατάσταων οδηγητών είναι το pin 1, και είναι αρνητικής λογικής: ενεργοποιεί τους οδηγητές με 0, και τους αδρανοποιεί με 1.
Σαν ενισχυτές γιά την οδήγηση των LED's (προηγούμενο σχήμα, κάτω δεξιά), χρησιμοποιήστε πάλι 4 από τα 8 bits ενός άλλου chip μανταλωτών "74573". Αυτή τη φορά, συνδέστε το σήμα φόρτωσης (pin 11) μονίμως στο 1 (ούτως ώστε ότι δεδομένο υπάρχει στην είσοδο να περναέι συνεχώς στην έξοδο), και επίσης συνδέστε το σήμα ενεργοποίησης των οδηγητών (pin 1) μονίμως στο 0, ούτως ώστε οι οδηγητές να είναι συνεχώς αναμένοι.
Πριν φτάσετε στο εργαστήριο κάντε ένα πλήρες σχεδιάγραμμα συνδεσμολογίας, δείχνοντας ακριβώς ποιό pin τίνος chip πρέπει να συνδεθεί πού, περιλαμβανομένων των τροφοδοσιών, διακοπτών, αντιστάσεων, και LED's. Στο εργαστήριο, κατασκευάστε το κύκλωμα, πρώτα με το ένα chip μνήμης και τους σχετικούς διακόπτες μόνο, ελέγξτε τη σωστή λειτουργία του, και μετά προσθέστε και το άλλο chip μνήμης και ελέγξτε τη λειτουργία του συνόλου. Όταν σβήνετε την τάση τροφοδοσίας, τι γίνονται τα περιεχόμενα της μνήμης; Προσοχή: αυτά τα chips μνήμης είναι σημαντικά ακριβότερα από τα άλλα chips του εργαστηρίου· προστατέψτε τα όσο καλύτερα μπορείτε! Φροντίστε επίσης να τα προστατέψτε από το στατικό ηλεκτρισμό του σώματός σας (που αναπτύσεται από μάλλινα ρούχα, κλπ): αγγίξτε τη γείωση της τροφοδοσίας πριν αγγίξτε τα chips και πριν αρχίστε τις συνδέσεις, και ξανα-αγγίζετε τη γείωση συχνά κατά τη διάρκεια εργασίας σας.
Up to the Home Page of CS-120
|
© copyright
University of Crete, Greece.
Last updated: 4 Dec. 2002, by M. Katevenis. |