ΗΥ-120: Ψηφιακή Σχεδίαση
Φθινόπωρο 2002
Τμ. Επ. Υπολογιστών
Πανεπιστήμιο Κρήτης

Εργαστήριο 4:
Άλγερβα Boole, IC's, Μνήμη Ηλεκτρονόμων

29 Οκτωβρίου - 2 Νοεμβρίου 2002

[Βιβλίο: Παράγραφοι 2.3, 2.4, και λίγο 2.2 (σελίδες 52-64), και παράγραφοι 2.7 και 2.8 (σελ. 75-88)].

Ημέρες διδασκαλίας και εργαστηρίων 5ης εβδομάδας του εξαμήνου: λόγω της αργίας της 28ης Οκτωβρίου, μεταφέρεται το σχετικό μάθημα και εργαστήρια. Την 6η βδομάδα επανερχόμαστε στα κανονικά.

Άλγεβρα Boole:

Οι λογικές πράξεις ΚΑΙ, Ή, ΌΧΙ πάνω σε δυαδικές ψηφιακές μεταβλητές ορίζουν μιάν Άλγεβρα, η οποία ονομάστηκε "Άλγεβρα Boole" (Boolean Algebra), προς τιμήν του Μαθηματικού George Boole ο οποίος δημοσίευσε τις πρώτες σχετικές ιδέες το 1849, καθώς εργάζονταν πάνω στη μαθηματική διατύπωση των κανόνων της λογικής νόησης. Περίπου 90 χρόνια αργότερα, το 1938, ο Claude Shannon έδειξε ότι η Άλγεβρα Boole, όπως είχε εν τω μεταξύ εξελιχθεί, περιγράφει και τη λειτουργία των κυκλωμάτων διακοπτών, όπως κάναμε κι εμείς στην αρχή του μαθήματός μας.

Η Άλγεβρα Boole μπορεί να δομηθεί ξεκινώντας από τον ("αξιωματικό") ορισμό των τριών πράξεων, ΚΑΙ, Ή, ΌΧΙ, βάσει του πίνακα αληθείας τους που είδαμε στο εργαστήριο 1, δηλαδή από τον ορισμό τους μέσω της εξαντλητικής απαρίθμησης του αποτελέσματός τους γιά τον κάθε δυνατό συνδυασμό εισόδων. Γιά σκοπούς συντομογραφίας, από δω και πέρα, θα συμβολίζουμε τις λογικές αυτές πράξεις με AB [ή και με τελεία στη μέση] (Α και Β), A+B (A ή B), και A' [ή και με παύλα από πάνω] (όχι A), όπως είπαμε στο εργαστήριο 3. Τις μεταβλητές της Άλγεβρας Boole, δηλαδή τις δυαδικές ψηφιακές μεταβλητές, τις λέμε και "Μεταβλητές Boole" (Boolean variables). Όπως έχουμε πεί, οι δύο τιμές μιάς μεταβλητής Boole μπορεί να συμβολίζουν πολλά και διαφορετικά πράγματα, π.χ. αναμένο-σβηστό, ζεστό-κρύο, πάνω-κάτω, μπρός-πίσω, αριστερά-δεξιά, πατημένος-ελεύθερος (διακόπτης), ψηλή-χαμηλή (ηλεκτρική τάση), περνάει - δεν περνάει (ρεύμα), αληθές-ψευδές, ναι-όχι, 1-0, κλπ. Γιά σκοπούς συντομογραφίας, και πάλι, συνήθως θα χρησιμοποιούμε τα σύμβολα 1 (αληθές, αναμένο, κλπ), και 0 (ψευδές, σβηστό, κλπ).

Ξεκινώντας από τον ορισμό των τριών πράξεων Boole, μπορούμε να αποδείξουμε πολλά θεωρήματα της Άλγεβρας Boole, τα οποία συχνά αντιστοιχούν και σε συνηθισμένες διατυπώσεις της καθημερινής μας λογικής σκέψης. Η απόδειξη μπορεί να γίνει με εξαντλητική επαλήθευση όλων των περιπτώσεων (πίνακας αληθείας), ή με διαγράμματα Venn, ή με τη χρήση άλλων θεωρημάτων. Εκθέτουμε εδώ κάμποσα τέτοια θεωρήματα, κατά σειρά σημαντικότητας.

Δύο Αρνήσεις κάνουν Μία Κατάφαση:
Όπως ξέρουμε πολύ καλά και από την καθημερινή μας ζωή, και όπως αποδεικνύεται άμεσα και από τον πίνακα αληθείας, το ΌΧΙ (ΌΧΙ A) είναι το ίδιο με το A, δηλαδή: (A')' = A.

Proof of DeMorgan th. using Venn diagrams on truth table Θεώρημα DeMorgan (Άρνηση και Δυϊσμός):
Όπως παρατηρήσαμε ήδη κάμποσες φορές, από το εργαστήριο 1 και μετά, η άρνηση του ΚΑΙ ισοδυναμεί με το Ή των αρνήσεων, ενώ η άρνηση του Ή ισοδυναμεί με το ΚΑΙ των αρνήσεων. Η ιδιότητα αυτή, γνωστή σαν Αρχή του Δυϊσμού (Duality Principle) ή "Θεώρημα DeMorgan", διατυπώνεται επίσημα ως εξής:

    (AB)'  =  A'+B'
    (A+B)' =  A'B'
Γιά να το αποδείξουμε, αρκεί να κατασκευάσουμε τους πίνακες αληθείας των παραπάνω συναρτήσεων και να τους συγκρίνουμε. Αν τους κατασκευάσουμε σε μορφή διαγράμματος Venn / χάρτη Karnaugh, και σημειώσουμε τα τετράγωνα όπου η κάθε συνάρτηση γίνεται 1, θα προκύψει το σχήμα που φαίνεται. Όπως βλέπουμε, η συνάρτηση AB γίνεται 1 στο κάτω δεξιά τετράγωνο, άρα το συμπλήρωμά της (η άρνησή της), δηλ. η συνάρτηση (AB)', θα γίνεται 1 στις υπόλοιπες περιπτώσεις (αριστερά και πάνω "Γ"). Αυτή η τελευταία περιοχή είναι ίδια με την ένωση (λογικό Ή) της περιοχής A' (A bar --δύο επάνω τετράγωνα) με την περιοχή B' (B bar --δύο αριστερά τετράγωνα), αποδεικνύοντας έτσι την πρώτη από τις παραπάνω σχέσεις. Αντίστοιχα μπορεί να αποδειχτεί και η δεύτερη σχέση, όπως φαίνεται στο δεξί μέρος του σχήματος.

Εναλλακτικά, η δεύτερη σχέση μπορεί να προκύψει από την πρώτη και από την ιδιότητα ότι δύο αρνήσεις κάνουν μία κατάφαση. Ξεκινάμε από το δεξί μέλος της ισότητας που θέλουμε να αποδείξουμε, και το μετασχηματίζουμε με δύο αρνήσεις: A'B' = [(A'B')']'. Μέσα στις αγκύλες υπάρχει η άρνηση ενός λογικού ΚΑΙ, άρα μπορούμε να εφαρμόσουμε σε αυτήν το πρώτο θεώρημα DeMorgan, και να την μετατρέψουμε στο λογικό Ή των αρνήσεων, οι οποίες στη συνέχεια μπορούν να απλοποιηθούν: (A'B')' = (A')' + (B')' = Α+Β. Βάσει αυτού, η προηγούμενη ισότητα μας δίνει: A'B' = [(A'B')']' = [Α+Β]' = (A+B)', πράγμα που είναι ακριβώς το δεύτερο θεώρημα DeMorgan. Ο τρόπος αυτός απόδειξης μας οδηγεί σε μιά δεύτερη διατύπωση της αρχής του δυϊσμού: εάν σε μιάν ισότητα της άλγεβρας Boole αλλάξουμε όλα τα ΚΑΙ με Ή, και όλα τα Ή με ΚΑΙ, τότε προκύπτει μιά άλλη, επίσης αληθής ισότητα, η "δυϊκή" της πρώτης (όπως θα δούμε πιό κάτω, αν η ισότητα περιέχει και άσσους ή μηδενικά, τότε πρέπει και αυτά να τα αλλάξουμε από 0 σε 1 και από 1 σε 0).

Επιμεριστική Ιδιότητα (Distributive Property):
Κατ' ανάλογο τρόπο, μέσω του πίνακα αληθείας / διαγράμματος Venn, μπορεί κανείς να διαπιστώσει ότι:

    A(B+C) = AB + AC
    A+(BC) = (A+B)(A+C)
Ειπωμένο με λόγια, αν ισχύει το A και επίσης ισχύει το B ή το C, τότε θα πρέπει να ισχύει το A και το B ή να ισχύει το A και το C. Αντίστοιχα, η δεύτερη σχέση λέει ότι αν ισχύει το A ή ισχύει το B και το C, τότε θα ισχύει το A ή το B, καθώς επίσης θα ισχύει το A ή το C. Παρατηρήστε ότι όταν χρησιμοποιούμε τα παραπάνω σύμβολα του ΚΑΙ που μοιάζει με το σύμβολο του πολλαπλασιασμού και του Ή που μοιάζει με το σύμβολο της πρόσθεσης, τότε η πρώτη από τις παραπάνω σχέσεις μοιάζει οικεία, αλλά η δεύτερη καθόλου (αφού, φυσικά, δεν μιλάμε γιά πρόσθεση και πολλαπλασιασμό).

Όπως και με τις δύο μορφές του θεωρήματος DeMorgan, οι δύο παραπάνω σχέσεις είναι δυϊκές μεταξύ τους: αν αντικαταστήσουμε τα ΚΑΙ με Ή και τα Ή με ΚΑΙ, τότε προκύπτει η μία από την άλλη. Ο λόγος είναι ότι η δεύτερη μπορεί να προκύψει από την πρώτη, εφαρμόζοντας τα θεωρήματα DeMorgan (δηλαδή την αρχή του δυϊσμού), και το ότι δύο αρνήσεις κάνουν μία κατάφαση. Ξεκινώντας με το αριστερό μέλος της δεύτερης σχέσης, το μετασχηματίζουμε ώς εξής μέχρι να προκύψει το δεξί: A+(BC) = { [A+(BC)]'}' (δύο αρνήσεις) = { A'(BC)' }' (από DeMorgan) = { A'(B'+C') }' (από DeMorgan) = { A'B' + A'C' }' (από την πρώτη επιμεριστική ιδιότητα) = { (A+B)' + (A+C)' }' (από DeMorgan) = { [(A+B)(A+C)]' }' (από DeMorgan) = (A+B)(A+C) (δύο αρνήσεις).

Αντιμεταθετική και Προσεταιριστική Ιδιότητα (Commutative and Associative Property):
Όπως ξέρουμε, η σειρά των μεταβλητών δεν παίζει ρόλο στις πράξεις ΚΑΙ και Ή (αντιμεταθετική ιδιότητα), όπως επίσης στα πολλαπλά ΚΑΙ η σειρά των πράξεων δεν παίζει ρόλο, και το ίδιο και στα πολλαπλά Ή (προσεταιριστική ιδιότητα --γι' αυτό και συνήθως τα γράφουμε χωρίς παρενθέσεις). Παρατηρήστε και πάλι τα ζευγάρια δυϊκών σχέσεων:

     AB = BA      A+B = B+A                         (αντιμεταθετική)
     A(BC)  = (AB)C    [συνήθως γράφεται:  ABC   ]  (προσεταιριστική)
    A+(B+C) = (A+B)+C  [συνήθως γράφεται:  A+B+C ]

Άλλα Θεωρήματα της Άλγεβρας Boole:
Μπορούν εύκολα να αποδειχτούν τα παρακάτω επίσης θεωρήματα. Τα δύο θεωρήματα σε κάθε γραμμή --αριστερό και δεξί-- είναι δυϊκά μεταξύ τους: το ένα προκύπτει από το άλλο ανταλλάζοντας τα ΚΑΙ με τα Ή, και τα 1 με τα 0.

    A·0 = 0        A+1 = 1
    A·1 = A        A+0 = A
    A·A = A        A+A = A
    A·A'= 0        A+A'= 1
    A(A+B) = A     A+AB = A
    A(A'+B)= AB    A+A'B= A+B

Άσκηση 4.1: Αποδείξεις Θεωρημάτων

Πρίν φτάσετε στο εργαστήριο κάντε αυτή την άσκηση με μολύβι και χαρτί, και παραδώστε τη λύση σας μέσα στην αναφορά του εργαστηρίου σας. (α) Αποδείξτε όλα τα παραπάνω θεωρήματα μέσω εξαντλητικού ελέγχου της ταυτότητας των δύο μελών τους σε όλες τις περιπτώσεις συνδυασμού τιμών των μεταβλητών τους. Με άλλα λόγια, φτιάξτε τους πίνακες αληθείας των δύο μελών κάθε θεωρήματος, και διαπιστώστε ότι είναι ίδιοι. Γράψτε τον πίνακα αληθείας της κάθε εμπλεκόμενης συνάρτησης σε μορφή στήλης, κατακόρυφα (όχι χάρτη Karnaugh).
(α1) Γιά τα θεωρήματα που εμπλέκουν μία μόνο μεταβλητή, ο πίνακας αληθείας θα έχει 2 γραμμές· φτιάξτε χωριστές στήλες γιά το A, το A', το (A')', το A·A, A+A, A·A', A+A', A·0, A·1, A+0, και A+1. Δείξτε με βέλη ποιές στήλες είναι ίσες με ποιές, και σε ποιό θεώρημα αντιστοιχεί κάθε τέτοιο ζευγάρι ίσων στηλών.
(α2) Γιά τα θεωρήματα που εμπλέκουν δύο μεταβλητές, A και B, ο πίνακας αληθείας θα έχει 4 γραμμές· φτιάξτε χωριστές στήλες γιά τα A', B', A'+B', A'B', AB, BA, (AB)', A+B, B+A, (A+B)'. Επίσης, φτιάξτε στήλες γιά τα AB, A+AB, A+B, A(A+B), A', A'B, A+A'B, A'+B, A(A'+B). Δείξτε πάλι τις ίσες στήλες και τα θεωρήματα στα οποία αυτές αντιστοιχούν.
(α3) Γιά τα θεωρήματα που εμπλέκουν τρείς μεταβλητές, A, B, και C, ο πίνακας αληθείας θα έχει 8 γραμμές· φτιάξτε χωριστές στήλες γιά τα B+C, A(B+C), AB, AC, AB+AC, BC, A+(BC), A+B, A+C, (A+B)(A+C), καθώς και γιά τα AB, (AB)C, BC, A(BC), A+B, (A+B)+C, B+C, A+(B+C). Πάλι, δείξτε τις ίσες στήλες.

(β) Αποδείξτε με διαγράμματα Venn την επιμεριστική και την προσεταιριστική ιδιότητα, στις δύο δυϊκές τους μορφές την κάθε μία, καθώς και τα θεωρήματα A(A+B)=A, A+AB=A, A(A'+B)=AB, και A+A'B=A+B. Χρησιμοποιήστε 2 ή 3 τεμνόμενες ελλείψεις, που παριστάνουν τα σύνολα A, B, και C. Σημειώστε με κατάλληλο χρώμα ή διαγράμμιση τις περιοχές του επιπέδου που αντιστοιχούν στα B+C, A(B+C), AB, AC, AB+AC, BC, A+(BC), A+B, A+C, (A+B)(A+C)· ποιές περιοχές είναι ίδιες με ποιές; Κάντε το ίδιο γιά τις περιοχές AB, (AB)C, BC, A(BC), A+B, (A+B)+C, B+C, A+(B+C)s, και τέλος γιά τις AB, A+AB, A+B, A(A+B), A'B, A+A'B, A'+B, A(A'+B).

Άσκηση 4.2: Αποκλειστικό-Ή και Αποκλειστικό-ΟΥΤΕ (Ισότητα)

Πρίν φτάσετε στο εργαστήριο κάντε αυτή την άσκηση με μολύβι και χαρτί, και παραδώστε τη λύση σας μέσα στην αναφορά του εργαστηρίου σας. Είδαμε στο πείραμα 1.2 ότι το αποκλειστικό-Ή ("exclusive-OR" ή "XOR") δύο μεταβλητών είναι αληθές τότε και μόνο τότε όταν μία και μόνο μία από τις δυό τους είναι αληθής. Επίσης, η συνάρτηση ισότητας είναι αληθής όποτε και οι δύο μεταβλητές έχουν την ίδια τιμή.
(α) Φτιάξτε τους πίνακες αληθείας των δύο αυτών συναρτήσεων, και αποδείξτε μέσω αυτών ότι η συνάρτηση ισότητας είναι η άρνηση (το "συμπλήρωμα") της συνάρτησης αποκλειστικού-Ή. Γιά το λόγο αυτό, η συνάρτηση ισότητας ονομάζεται και "αποκλειστικό-ΟΥΤΕ" ("exclusive-NOR" ή "XNOR").
(β) Από τον χάρτη Karnaugh του αποκλειστικού-Ή έχουμε δεί ότι αυτό είναι: A XOR B = AB'+A'B. Αποδείξτε μέσω αλγεβρικών μετασχηματισμών ότι ισχύει επίσης: A XOR B = (A+B)(A'+B'). Ξεκινήστε από αυτή τη δεύτερη έκφραση, και εφαρμόστε πάνω της δύο φορές την επιμεριστική ιδιότητα του ΚΑΙ πάνω στο Ή, A(B+C)=AB+AC· στη συνέχεια, απλοποιήστε τους τέσσερεις όρους που προκύπτουν, μέχρι να φτάσετε στην πρώτη έκφραση.
(γ) Αφού η συνάρτηση ισότητας είναι η άρνηση του αποκλειστικού-Ή, θα ισχύει: A XNOR B = [A XOR B]' = [AB'+A'B]' = [(A+B)(A'+B')]'. Απλοποιήστε αυτές τις δύο τελευταίες εκφράσεις, εφαρμόζοντας το θεώρημα DeMorgan, μέχρι να φτάσετε να αποδείξετε ότι: A XNOR B = AB+A'B' = (A+B')(A'+B).

Πείραμα 4.3: IC's - Chip Αποκωδικοποίησης Οθόνης 7 Τμημάτων

MC14511B pins (BCD to 7-segment decoder/driver) Καθώς αυξάνει η πολυπλοκότητα των ψηφιακών κυκλωμάτων που θέλουμε να φτιάξουμε, οι ηλεκτρονόμοι που χωρούν στην πλακέτα μας δεν επαρκούν πιά, και θα αρχίσουμε να τους αντικαθιστούμε με κανονικά μικροηλεκτρονικά ολοκληρωμένα κυκλώματα (integrated circuits - IC's) --τα γνωστά και ως "chips". Το πρώτο chip που θα χρησιμοποιήσουμε λέγεται MC14511B και κάνει περίπου τη δουλειά του κυκλώματος που σχεδιάσατε στην άσκηση 3.4, συν μερικές ακόμα. Πρόκειται γιά έναν αποκωδικοποιητή από "BCD" (binary-coded decimal - δεκαδικό σε δυαδική κωδικοποίηση) σε οθόνη 7 τμημάτων. Ο κώδικας BCD αποτελείται από 4 bits τα οποία παίρνουν μόνο τις τιμές από 0000 έως 1001 που είδαμε στην άσκηση 3.4. Το chip MC14511B έχει 7 εξόδους, οι οποίες οδηγούν κατ' ευθείαν τις LED's a, b, c, d, e, f και g της οθόνης 7 τμημάτων, με τον τρόπο που έδειχνε η άσκηση 3.4 (μόνο που το "7" δεν έχει αριστερή κατακόρυφη γραμμή). Επιπλέον, το chip MC14511B σβήνει εντελώς την οθόνη όταν στην είσοδό του δοθεί ένας από τους υπόλοιπους 6 κώδικες, από 1010 έως 1111 (δηλαδή δεν έχει "συνθήκες αδιαφορίας"). Μερικές ακόμα δυνατότητές του θα αναφερθούν παρακάτω, αλλά δεν θα τις χρησιμοποιήσουμε εμείς. Λεπτομερείς πληροφορίες γιά το chip αυτό μπορείτε να βρείτε π.χ. στο http://www.onsemi.com/pub/Collateral/MC14511B-D.PDF

Το chip MC14511B μπαίνει στην πλακέτα (breadboard) όπως φαίνεται στο σχήμα. Προσοχή: αποφύγετε να βάζετε ή να βγάζετε το chip μόνοι σας, διότι κινδυνεύουν να στραβώσουν τα ποδαράκια του --αφήστε το στη θέση που το βρήκατε· αν χρειαστεί να το βάλετε ή να το βγάλετε, κάντε το με πολύ μεγάλη προσοχή και με εντελώς κατακόρυφη δύναμη --όχι πλάγια! Τα ποδαράκια (επαφές - pins) του chip αριθμώνται όπως φαίνεται στο σχήμα όταν κοιτάμε το chip από επάνω, και η εγκοπή και το σημάδι του που δείχνει στο σχήμα είναι αριστερά. Η ηλεκτρική τροφοδοσία του chip γίνεται από το κάτω δεξιά ποδαράκι (αριθμός 8) γιά τον αρνητικό πόλο (γείωση) και από το πάνω αριστερό (αριθμός 16) γιά το θετικό πόλο. Κρατάτε την πρίζα του τροφοδοτικού βγαλμένη όσο κάνετε τις συνδέσεις σας, και ανάψτε το τροφοδοτικό μόνο όταν όλο το κύκλωμά σας είναι εντελώς έτοιμο.

Τα ποδαράκια 9 έως και 15 του MC14511B είναι οι 7 έξοδοί του, που προορίζονται να οδηγούν κατ' ευθείαν τις 7 LED's· συνδέστε τα στις επαφές a, b, c, d, e, f και g της πλακέτας, προσέχοντας τη διαφορετική σειρά. Το ποδαράκι 3 είναι είσοδος, και είναι το αρνητικό (συμπλήρωμα) του σήματος LT - lamp test, που προορίζεται γιά τον έλεγχο μήπως κάποια λυχνία έχει καεί: όταν ενεργοποιείται πρέπει να ανάβουν όλες οι λυχνίες --όποια δεν ανάβει έχει καεί. Εμείς δεν θα το χρησιμοποιήσουμε, δηλαδή LT=0, δηλαδή LT'=1, άρα πρέπει να τροφοδοτήσετε το ποδαράκι 3 με ψηλή τάση, δηλαδή να το συνδέσετε στο θετικό πόλο του τροφοδοτικού. Το ποδαράκι 4 είναι είσοδος, και είναι το αρνητικό του σήματος BI - blanking input, που προορίζεται γιά να σβήνει την οθόνη όποτε θέλουμε να τη σβήνουμε (ανεξαρτήτως κώδικα εισόδου)· εμείς δεν θα το χρησιμοποιήσουμε, δηλαδή BI=0, δηλαδή BI'=1, άρα και το ποδαράκι 4 πρέπει να το συνδέσετε στη θετική τροφοδοσία. Το ποδαράκι 5 είναι η είσοδος LE - latch enable, που προορίζεται γιά να αποθηκεύεται ο κώδικας εισόδου σε 4 εσωτερικά flip-flops, ούτως ώστε να παραμένει η οθόνη στεθερή στην ένδειξη που είχε επιλεγεί παλαιότερα μέσω των εισόδων, ανεξάρτητα αν οι είσοδοι αυτές τώρα έχουν αλλάξει· εμείς δεν θα το χρησιμοποιήσουμε, δηλαδή LE=0, άρα και το ποδαράκι 5 πρέπει να το συνδέσετε στην αρνητική τροφοδοσία, δηλαδή στη γείωση.

Τέλος, τα ποδαράκια 1, 2, 6, και 7 είναι οι είσοδοι του κώδικα BCD που δίνουμε γιά να ελέγχουμε τον αριθμό στην οθόνη. Το MC14511B χρησιμοποιεί το συμβολισμό DCBA γιά τα 4 αυτά bits, δηλαδή "D" (ποδαράκι 6) είναι το "αριστερότερο" ("περισσότερο σημαντικό") bit, και "A" (ποδαράκι 7) είναι το "δεξιότερο" ("λιγότερο σημαντικό) bit. Επειδή τα ποδαράκια αυτά οδηγούν transistors και όχι πηνία ηλεκτρονόμων, πρέπει πάντα να έχουν πάνω τους μιάν έγκυρη ψηφιακή τάση --το ανοιχτό κύκλωμα (σύνδεση με πουθενά), που εξασφαλίζει ότι το πηνίο ενός ηλεκτρονόμου δεν διεγείρεται, δεν εξασφαλίζει ότι τα transistors θα δουν χαμηλή τάση (0)· γιά να επιτευχθεί αυτό, πρέπει η είσοδος να συνδεθεί με την αρνητική τροφοδοσία (γείωση). Γιά το λόγο αυτό, χρησιμοποιούμε γιά τις 4 εισόδους, D, C, B, και A, διακόπτες SPDT, με γείωση και θετική τροφοδοσία στις επαφές τους, αντί απλούς διακόπτες SPST με μόνο μία τροφοδοσία.

Στο εργαστήριο, κάντε τις συνδέσεις που δείχνει το σχήμα, δοκιμάστε τους 16 συνδυασμούς των 4 εισόδων, D, C, B, και A, και επαληθεύστε ότι στην οθόνη εμφανίζεται το αναμενόμενο. Όταν τελειώσετε, μην αποσυνδέστε το κύκλωμα, διότι θα το χρειαστείτε στο επόμενο πείραμα. General structure of a RAM

Γενική Δομή της Μνήμης Τυχαίας Προσπέλασης (RAM):

Το τελευταίο μας πείραμα με ηλεκτρονόμους θα αποτελέσει μιάν εισαγωγή στη Μνήμη Τυχαίας Προσπέλασης (Random Access Memory - RAM), η οποία είναι μιά από τις βασικότερες συνιστώσες των υπολογιστών. Η RAM περιλαμβάνει πολλά στοιχεία μνήμης, που μπορούν να αποθηκεύσουν πλήθος πληροφοριών --τόσο πολλά που δεν μπορούμε να έχουμε αρκετά σύρματα γιά να μπορούμε να γράφουμε ταυτόχρονα σε όλα ή να διαβάζουμε ταυτόχρονα σε όλα. Η "προσπέλαση" της μνήμης, λοιπόν, γίνεται επιλεκτικά κάθε φορά, γιά την εγγραφή σε ή την ανάγνωση από ένα υποσύνολο των στοιχείων μνήμης. Το κύκλωμα έχει τη δυνατότητα να επιλέγει αυθαίρετα --"τυχαία"-- κάθε φορά το οιοδήποτε στοιχείο μνήμης επιθυμεί να προσπελάσει ο χρήστης, δίνοντας έτσι το όνομα σε αυτόν τον τύπο μνήμης. Το όνομα "τυχαίας προσπέλασης" αντιδιαστέλει αυτή τη μνήμη από άλλες μνήμες, π.χ. σειριακής προσπέλασης, όπως είναι π.χ. οι μαγνητικές ταινίες, ή --εν μέρει-- οι μαγνητικοί δίσκοι.

Γιά να επιτευχθεί η τυχαία προσπέλαση, η RAM χρησιμοποιεί έναν αποκωδικοποιητή γιά να επιλέξει το επιθυμητό υποσύνολο των στοιχείων μνήμης που ο χρήστης θέλει να προσπελάσει. Μπορούμε να φανταστούμε ότι ο αποκωδικοποιητής χρησιμοποιείται γιά τις εγγραφές (write) στη μνήμη, όπως δείχνει το σχήμα, αν και στην πραγματικότητα, γιά λόγους οικονομίας, χρησιμοποιείται και γιά τις αναγνώσεις. Η βασική είσοδος του αποκωδικοποιητή είναι η διεύθυνση (address), δηλαδή μιά ψηφιακή πληροφορία με τόσα bits όσα χρειάζονται γιά να επιλεγεί μονοσήμαντα μία από τις εξόδους του αποκωδικοποιητή, δηλαδή το ένα από τα υποσύνολα στοιχείων μνήμης στο οποίο θα γίνει η προσπέλαση. Οι άλλες είσοδοι που χρειάζονται γιά την εγραφή είναι μιά είσοδος ελέγχου (write enable), που να λέει πότε θέλουμε να γράψουμε και πότε όχι, και η είσοδος δεδομένων (write data), που να λέει τι θέλουμε να γράψουμε στο μέρος που έχει επιλέξει η είσοδος διεύθυνσης.

Γιά να επιτευχθεί η τυχαία προσπέλαση κατά την ανάγνωση, η RAM χρησιμοποιεί έναν πολυπλέκτη γιά να οδηγήσει στην έξοδο το περιεχόμενο που είναι αποθηκευμένο στο επιθυμητό υποσύνολο των στοιχείων μνήμης. Φυσικά, ο πολυπλέκτης εμπεριέχει κι έναν αποκωδικοποιητή, και γιά να λειτουργήσει χρειάζεται κι αυτός τη διεύθυνση του επιθυμητού υποσύνολου στοιχείων μνήμης. Έτσι, γιά καθε δοσμένη διεύθυνση ανάγνωσης (read address) θα εμφανίζονται στην έξοδο δεδομένων ανάγνωσης (read data) εκείνες οι πληροφορίες που είχαν γραφτεί την τελευταία φορά στην ίδια διεύθυνση εγγραφής, ενώ τα περιεχόμενα (πληροφορίες) των υπολοίπων διευθύνσεων είναι αυθαίρετα και δεν αλληλεπιδρούν με τα περιεχόμενα της διεύθυνσης που εμείς κοιτάμε αυτή τη στιγμή.

Πείραμα 4.4: Μνήμη Ηλεκτρονόμων 2x3 με Οθόνη Ανάγνωσης

Κατασκευάστε στο εργαστήριο την απλοϊκή μνήμη τυχαίας προσπέλασης (RAM) μεγέθους 2 λέξεων x 3 bits/λέξη με ηλεκτρονόμους που φαίνεται στο σχήμα παρακάτω, και ελέγξτε την ορθή λειτουργία της. Γιά λόγους απλοποίησης του κυκλώματος, η μνήμη αυτή έχει μιά σειρά από ελλείψεις σε σχέση με τις κανονικές RAM, κυρίως στον τρόπο παροχής των διευθύνσεων και στον τρόπο εγγραφής· από την άλλη πλευρά, όμως, το κύκλωμα αυτό περιέχει όλα τα βασικά στοιχεία δομής μιάς RAM των οποίων είναι επιθυμητή η κατανόηση.

Τα υποσύνολα στοιχείων μνήμης στα οποία αναφέραμε παραπάνω ότι γίνονται οι προσπελάσεις ονομάζονται "λέξεις" (words). Οι κανονικές μνήμες έχουν συνήθως χιλιάδες ή εκατομμύρια λέξεις, αλλά η δική μας θα έχει μόνο δύο (2) λέξεις. Η κάθε λέξη, δηλαδή η ποσότητα πληροφορίας (το υποσύνολο της αποθηκευμένης πληροφορίας) που προσπελαύνουμε κάθε φορά που πάμε στη μνήμη, αποτελείται από ένα ή περισσότερα bits· στη δική μας μνήμη, η κάθε λέξη θα έχει τρία (3) bits (σπανίως το μέγεθος της λέξης των κανονικών μνημών δεν είναι δύναμη του 2, αλλά η δική μας δεν είναι κανονική μνήμη). Στο κύκλωμα του σχήματος, η κάθε λέξη σημειώνεται μ' ένα ορθογώνιο με διακεκομένη γραμμή. Εσωτερικά, η κάθε λέξη περιλαμβάνει τρία flip-flops, σαν αυτά που είδαμε στο πείραμα 2.5· το κάθε flip-flop κατασκευάζεται από έναν ηλεκτρονόμο με ανάδραση. 2x3 RAM using relays

Αφού η μνήμη μας έχει δύο λέξεις, χρειαζόμαστε 1 bit διεύθυνσης γιά να επιλέξουμε τη λέξη που επιθυμούμε να προσπελάσουμε (αν, γιά παράδειγμα, είχε 1024 λέξεις, θα χρειαζόμασταν 10 bits διεύθυνσης). Το 1 bit διεύθυνσης εγγραφής σημειώνεται στο σχήμα σαν "write address", και ελέγχει τους 3 διακόπτες στο κάτω μέρος του σχήματος. Καθένας από αυτούς τους διακόπτες είναι ένας αποκωδικοποιητής του ενός bit σε δύο εξόδους. Οι 3 διακόπτες είναι 3 αποκωδικοποιητές, ένας γιά καθε bit της λέξης υπό προσπέλαση· ο έλεγχος και των τριών αποκωδικοποιητών από το ίδιο ένα bit διεύθυνσης εξασφαλίζει ότι τα 3 bits δεδομένων που προσπελαύνουμε ανήκουν όλα στην ίδια λέξη. Επειδή δεν έχουμε τριπλούς διακόπτες στην πλακέτα μας, κανονικά θα έπρεπε να υλοποιήσουμε αυτή τη διάταξη μέσω ηλεκτρονόμων, όπως κάναμε πολλάκις από το πείραμα 2.3 και μετά. Επειδή όμως είναι δύσκολο να έχετε τόσο πολλούς ηλεκτρονόμους σ' ένα πείραμα, η πρόταση είναι να βάλετε απλώς δύο διπλούς διακόπτες (DPDT), και να μην ξεχνάτε να τους κουνάτε πάντα μαζί.

Το flip-flop του πειράματος 2.5, το οποίο χρησιμοποιούμε κι εδώ επειδή είναι μικρό σε μέγεθος, είναι τύπου RS, δηλαδή η εγγραφή σε αυτό γίνεται χωριστά και διαφορετικά γιά την "θέση" (set - εγγραφή "1") και χωριστά γιά την "επαναφορά" (reset - εγγραφή "0"). Η εγγραφή του "1" γίνεται με τη (στιγμιαία) εξωτερική τροφοδότηση ρεύματος στο πηνίο του ηλεκτρονόμου του flip-flop. Αυτό μπορεί να επιτευχθεί εύκολα με τους αποκωδικοποιητές μας: αρκεί η τροφοδότηση ρεύματος στη "ρίζα" του "δέντρου" του κάθε αποκωδικοποιητή να ελέγχεται από ένα διακόπτη τύπου κουμπιού, όπως φαίνεται στο σχήμα· το στιγμιαίο πάτημα κάθε τέτοιου διακόπτη, setA, setB, setC, θέτει σε "1" το αντίστοιχο bit της λέξης που επιλέγει η διεύθυνση εγγραφής. Η εγγραφή του "0" είναι δυσκολότερη, και κανονικά θα χρειάζονταν επιπλέον ηλεκτρονόμους γιά να δουλέψει σωστά. Έτσι, γιά λόγους απλότητας, χρησιμοποιούμε μιά "λύση-μπάλωμα" ("kludge"): βάζουμε τα κουμπιά SPDT "clear0" kai "clear1", των οποίων το πάτημα μηδενίζει ολόκληρη τη λέξη 0 ή τη λέξη 1 αντίστοιχα· εδώ, δεν χρησιμοποιείται αποκωδικοπίηση διεύθυνσης, και δεν επιτρέπεται επιλεκτικός μηδενισμός των επιμέρους bits εντός της λέξης.

Το 1 bit διεύθυνσης ανάγνωσης σημειώνεται στο σχήμα σαν "read address", και ελέγχει τους 3 διακόπτες στο επάνω μέρος του σχήματος. Καθένας από αυτούς τους διακόπτες είναι ένας πολυπλέκτης από 2 έισόδους (όσες οι λέξεις) σε 1 έξοδο. Οι 3 διακόπτες είναι 3 πολυπλέκτες, ένας γιά καθε bit της λέξης υπό προσπέλαση· ο έλεγχος και των τριών αποκωδικοποιητών από το ίδιο ένα bit διεύθυνσης εξασφαλίζει ότι τα 3 bits δεδομένων που διαβάζουμε ανήκουν όλα στην ίδια λέξη. Όπως και με τον αποκωδικοποιητή εγγραφής, υλοποιήστε πρόχειρα τον τριπλό διακόπτη με δύο διπλούς (DPDT) που θα θυμάστε να τους κουνάτε πάντα μαζί. [Ο προσεκτικός παρατηρητής μπορεί να διαπιστώσει ότι στην πραγματικότητα ο αποκωδικοποιητής εγγραφών και ο πολυπλέκτης αναγνώσεων είναι άκριβώς τα ίδια κυκλώματα, συνδεδεμένα στα ίδια σημεία· έτσι, είναι περιττό να υπάρχουν και τα δύο --αρκεί ένα γιά να κάνει τη δουλειά και των δύο. Οι πραγματικές μνήμες όντως έτσι κατασκευάζονται, αλλά αυτό εκμεταλλεύεται την ιδιότητα των διακοπτών ως αμφίδρομων στοιχείων, πράγμα που δυσκολεύει την κατανόηση, κι έτσι δεν το χρησιμοποιούμε εδώ].

Οι έξοδοι των 3 πολυπλεκτών ανάγνωσης, C, B, A, περιέχουν τη λέξη που διαβάζουμε από τη μνήμη. Τροφοδοτήστε αυτή τη λέξη στον αποκωδικοποιητή γιά οθόνη 7 τμημάτων του πειράματος 4.3. Βάλτε το αριστερό bit, D, στο 0, ούτως ώστε όλοι οι συνδυασμοί των υπολοίπων 3 bits να αντιστοιχούν σε έγκυρες ενδείξεις (κανονικά θα θέλαμε μιά μνήμη "πλάτους" 4 bits, δηλαδή με 4 bits/λέξη, αλλά δύσκολα θα χωρούσαν τόσοι ηλεκτρονόμοι στην πλακέτα).

Στο εργαστήριο, αν σας φαίνεται ότι μπορεί και να μην προλάβετε να το φτιάξετε ολόκληρο το κύκλωμα, ξεκινήστε φτιάχνοντας πρώτα μιά μνήμη πλάτους ενός bit (2x1, δηλαδή 2 λέξεις x 1 bit/λέξη), και αφού αυτή δουλέψει επεκτείνετέ την σε 2x2 και μετά σε 2x3. Ελέγξτε τη μνήμη γράφοντας στις 2 λέξεις της διαφορετικούς αριθμούς, και στη συνέχεια διαβάζοντάς τους εναλλάξ και επανειλημμένα, γιά να διαπιστώσετε ότι είναι πάντα εκεί και δεν έχουν αλλάξει. Θυμηθείτε ότι γιά την εγγραφή ενός νέους αριθμού πρέπει πρώτα να μηδενιστεί η επιλεγμένη λέξη, και μόνο τότε μπορούν να τεθούν σε "1" τα επιθυμητά bits --αλλοιώς μένει στη μνήμη το OR της παλαιάς και της νέας λέξης.

Λογικές Πύλες: Σύμβολα και Υλοποίηση με Ηλεκτρονόμους

Τα κυκλώματα που υλοποιούν τις πράξεις της Άλγεβρας Boole λέγονται "Λογικές Πύλες" (Logic Gates). Οι βασικές πύλες είναι τρείς --αντίστοιχες με τις βασικές πράξεις: Αντιστροφέας (πύλη ΌΧΙ - NOT gate), πύλη ΚΑΙ (AND gate), και πύλη Ή (OR gate). Τα γραφικά τους σύμβολα είναι αυτά που φαίνονται στο σχήμα, παρακάτω. Ειδικά γιά τη λογική αντιστροφή, το βασικό της σύμβολο είναι ο μικρός κύκλος στη μύτη του τριγώνου --το τρίγωνο βασικά συμβολίζει ενισχυτή.

Logic Gates: symbols and relay implementation Ξέρουμε ότι η βασική ιδέα γιά την υλοποίηση της πύλης ΚΑΙ είναι η χρήση διακοπτών εν σειρά, ενώ γιά την πύλη Ή θέλουμε διακόπτες εν παραλλήλω. Όμως, η απλή αυτή ιδέα πρέπει να συμπληρωθεί κατάλληλα: το νόημα των λογικών πυλών είναι ότι μπορούμε να τις συνδέουμε μεταξύ τους, ώστε να φτιάχνουμε μεγαλύτερα κυκλώματα. Γιά να μπορούν να συνδέονται μεταξύ τους, πρέπει η σύμβαση αναπαράστασης των ψηφιακών τιμών να είναι ίδια στις εισόδους και στις εξόδους --οι είσοδοι δεν μπορούν να είναι ανθρώπινα δάκτυλα που πιέζουν διακόπτες. Γιά υλοποιήση των λογικών πυλών μέσω ηλεκτρονόμων, η αναπαράσταση των ψηφιακών τιμών είναι: "0" = ανοικτό κύκλωμα (μηδέν ρεύμα), και "1" = ψηλή τάση (με δυνατότητα παροχής επαρκούς ρεύματος). Με βάση αυτή τη σύμβαση, οι τρείς βασικές λογικές πύλες μπορούν να υλοποιηθούν με ηλεκτρονόμους όπως δείχνει το σχήμα δίπλα.

Λογικές Πύλες σε Τεχνολογία CMOS

Φυσικά, οι υπολογιστές δεν φτιάχνονται πιά με ηλεκτρονόμους αλλά με ολοκληρωμένα κυκλώματα. Τα περισσότερα ολοκληρωμένα κυκλώματα, σήμερα, φτιάχνονται με την τεχνολογία CMOS (complementary MOS - συμπληρωματικά MOS). Τη βάση της τεχνολογίας αυτής αποτελούν τα transistors τύπου "MOS FET" (metal - oxide - semiconductor field-effect transistor): transistor επίδρασης πεδίου τύπου μέταλλο - οξείδιο - ημιαγωγός. Κάθε transistor έχει ένα ηλεκτρόδιο ελέγχου ("πύλη") και δύο ηλεκτρόδια που είναι οι άκρες ενός ημιαγώγιμου "καναλιού". Η πύλη βρίσκεται "πάνω" από το κανάλι, και επιδρά στην αγωγιμότητά του μέσω ηλεκτρικού πεδίου, χωρίς να κάνει ηλεκτρική επαφή με το κανάλι· γι' αυτό η πύλη δεν διαρρέεται ποτέ από ρεύμα, κι έτσι η τεχνολογία CMOS μπορεί να δώσει chips χαμηλής κατανάλωσης ενέργειας.

Η τεχνολογία CMOS έχει δύο "συμπληρωματικά" είδη transistors: τα τύπου NMOS (negative-channel MOS) με "αρνητικό" κανάλι, και τα τύπου PMOS (positive-channel MOS) με "θετικό" κανάλι. Στα NMOS, το κανάλι δημιουργείται από ελεύθερα ηλεκτρόνια (αρνητικούς φορείς) τα οποία προσελκύει εκεί η τάση της πύλης· επειδή τα ηλεκτρόνια έλκονται από θετικές τάσεις, οι ψηλές τάσεις πύλης αυξάνουν την αγωγιμότητα των καναλιών NMOS. Στα PMOS, το κανάλι δημιουργείται από ελεύθερες "οπές" (έλλειψη ηλεκτρονίων - θετικοί φορείς)· επειδή οι οπές έλκονται από αρνητικές τάσεις, η αγωγιμότητα των καναλιών PMOS αυξάνει με χαμηλές τάσεις πύλης, ενώ μειώνεται με τις ψηλές. CMOS transistors and logic gate implementation in CMOS

Στα ψηφιακά κυκλώματα, τα transistors χρησιμοποιούνται σαν διακόπτες, όπως φαίνεται στο σχήμα. Τα NMOS συμπεριφέρονται σαν "θετικοί" διακόπτες: με ψηλές τάσεις πύλης το κανάλι τους άγει, ενώ με χαμηλές τάσεις πύλης το κανάλι τους γίνεται σαν ανοικτό κύκλωμα. Αντίθετα, τα PMOS συμπεριφέρονται σαν "αρνητικοί" διακόπτες: το κανάλι τους άγει με χαμηλές τάσεις πύλης, και δεν άγει με ψηλές τάσεις. Το σύμβολο του PMOS, όπως φαίνεται στο σχήμα, έχει έναν μικρό κύκλο γιά να μας θυμίζει αυτή την "αρνητική" συμπεριφορά. Επομένως, τα transistors μπορούν να χρησιμοποιηθούν όπως και οι ηλεκτρονόμοι. Κάθε διακόπτης του ηλεκτρονόμου έχει δύο επαφές· το transistor NMOS παίζει το ρόλο της "κάτω" (θετικής) επαφής, και το PMOS της "επάνω" (αρνητικής) επαφής. Η διαφορά με τους ηλεκτρονόμους είναι στη σύμβαση αναπαράστασης των ψηφιακών τιμών: οι είσοδοι (πύλες) των transistors είναι ευαίσθητες στην τάση και όχι στο ρεύμα· έτσι, το μεν 1 παραμένει σαν "υψηλή τάση", αλλά το 0 πρέπει να γίνει "χαμηλή τάση" από "ανοικτό κύκλωμα" που ήταν. Κατά συνέπεια, κάθε λογική πύλη πρέπει να περιλαμβάνει όχι μόνο τα κυκλώματα που τροφοδοτούν την έξοδο με ψηλή τάση στις επιθυμητές προς τούτο περιπτώσεις --τα οποία ήδη υπήρχαν-- αλλά και κυκλώματα που να τροφοδοτούν την έξοδο με χαμηλή τάση στις υπόλοιπες περιπτώσεις. Λόγω του κανόνα DeMorgan, τα δεύτερα κυκλώματα θα είναι τα δυϊκά των πρώτων.

Στο σχήμα (μέση) φαίνεται η κατασκευή ενός αντιστροφέα σε CMOS· αποτελείται από ένα transistor NMOS κι ένα PMOS, ελεγχόμενα και τα δύο από την τάση εισόδου. Χαμηλή τάση εισόδου προκαλεί άναμα του PMOS και σβήσιμο του NMOS, οπότε η έξοδος συνδέεται αγώγιμα με τη θετική τροφοδοσία και παίρνει ψηλή τάση. Αντίθετα, ψηλή είσοδος προκαλεί άναμα του NMOS και σβήσιμο του PMOS, οπότε η έξοδος συνδέεται αγώγιμα με τη γείωση και παίρνει χαμηλή τάση. Κάτω στο σχήμα, φαίνεται η κατασκευή των πυλών "ΟΧΙ-ΚΑΙ" (NAND) και "ΟΥΤΕ" (NOR - ΟΧΙ-Ή) σε CMOS. Κάθε πύλη έχει ένα "δίκτυο καθέλκυσης" (pull-down net) γιά να τροφοδοτεί την έξοδο με χαμηλή τάση, κι ένα δυϊκό "δίκτυο ανέλκυσης" (pull-up net) γιά την τροφοδότηση με ψηλή τάση· ο δυϊσμός έγκειται στην ανταλλαγή μεταξύ συνδεσμολογίας σειράς (ΚΑΙ) και παράλληλης (Ή). Εάν χρησιμοποιούσαμε transistors NMOS γιά ανέλκυση και PMOS γιά καθέλκυση θα μπορούσαμε να φτιάξουμε πύλες AND και OR· όμως, δυστυχώς, τα NMOS λειτουργούν σαν καλοί διακόπτες μόνο όταν η τάση καναλιού τους είναι χαμηλή, δηλαδή μόνο στα δίκτυα καθέλκυσης, και τα PMOS μόνο με ψηλές τάσεις καναλιού, δηλαδή μόνο σε δίκτυα ανέλκυσης.


Up to the Home Page of CS-120
 
© copyright University of Crete, Greece.
Last updated: 24 Oct. 2002, by M. Katevenis.