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

Εργαστήριο 3:
Απλοποίηση Συνδυαστικών Κυκλωμάτων

22 - 26 Οκτωβρίου 2002

[Βιβλίο: Παράγραφοι 3.1 έως και το μέσον της 3.3 (σελίδες 93-104) και παράγραφος 3.8 (σελ. 126-129)].

Ημέρες διδασκαλίας και εργαστηρίων 4ης και 5ης εβδομάδας του εξαμήνου: με τα μέχρι στιγμής δεδομένα της Σχολής Θετικών και Τεχνολογικών Επιστημών σχετικά με τις διδασκαλίες την περίοδο των Δημοτικών Εκλογών, οι ημέρες διδασκαλίας και εργαστηρίων γιά το ΗΥ-120 διαμορφώνονται ως εξής:

Σύνθεση Συνδυαστικών Κυκλωμάτων από τον Πίνακα Αληθείας τους:

Συνδυαστικά λέγονται τα ψηφιακά κυκλώματα των οποίων οι έξοδοι είναι συναρτήσεις μόνο της παρούσας τιμής των εισόδων, και όχι οιασδήποτε παρελθούσας τιμής, δηλαδή τα ψηφιακά κυκλώματα που δεν έχουν "μνήμη". Η λογική συμπεριφορά των συνδυαστικών κυκλωμάτων (δηλαδή οι ψηφιακές τιμές των εξόδων τους, αγνοώντας θέματα καθυστέρησης, θορύβου, κλπ) περιγράφεται και προδιαγράφεται πλήρως από τον Πίνακα Αληθείας τους, δηλαδή από τον πίνακα που λέει τι τιμή παίρνουν οι έξοδοί τους γιά καθ' ένα από τους δυνατούς συνδυασμούς τιμών των εισόδων τους. Μέχρι τώρα, οι λογικές συναρτήσεις (AND, OR, NOT) που θέλαμε να υλοποιήσουμε δίνονταν έτοιμες, όπως αυτές προέκυπταν από τη διατύπωση του προς επίλυση προβλήματος. Τώρα θα δούμε τι κάνουμε όταν η διατύπωση του προβλήματος ξεκινά με δοσμένο τον πίνακα αληθείας μόνο, ή όταν επιδιώκουμε την απλοποίηση δοσμένων λογικών συναρτήσεων.

Driving a 7-segment display with A-b-c-d characters Θα χρησιμοποιήσουμε, αρχικά, το παράδειγμα συνδυαστικού κυκλώματος δύο εισόδων και επτά εξόδοων που φαίνεται δεξιά. Οι έξοδοι οδηγούν τις 7 φωτοεκπομπούς διόδους της ένδειξης 7 τμημάτων που είδαμε στο εργαστήριο 0, σε τρόπον ώστε να εμφανίζονται σε αυτήν τα "γράμματα" A, b, c, και d, όταν οι είσοδοι είναι 00, 01, 10, και 11, αντίστοιχα. Γιά να επιτευχθούν τα σχήματα αυτά της οθόνης που φαίνονται δεξιά, πρέπει η κάθε έξοδος να έχει τις τιμές που δείχνει ο παρακάτω πίνακας στον καθένα από τους 4 συνδυασμούς τιμών των εισόδων· τιμή 1 προκαλεί άναμα της αντίστοιχης LED, ενώ τιμή 0 σημαίνει LED σβηστή:

    A  B    a  b  c  d  e  f  g

    0  0    1  1  1  0  1  1  1
    0  1    0  0  1  1  1  1  1
    1  0    0  0  0  1  1  0  1
    1  1    0  1  1  1  1  0  1
Αυτό που φτιάξαμε είναι οι 7 πίνακες αληθείας των 7 συνδυαστικών κυκλωμάτων που θα παράγουν τις 7 εξόδους a, b, ..., g, σαν ψηφιακές δυαδικές συναρτήσεις των 2 εισόδων A και B. Η επόμενη δουλειά μας είναι, με βάση αυτούς τους πίνακες, να φτιάξουμε τα αντίστοιχα κυκλώματα, χρησιμοποιώντας τις λογικές πράξεις AND, OR, NOT, και τις υλοποιήσεις τους με διακόπτες που ξέρουμε από το εργαστήριο 1. Αυτό θα το κάνουμε αναγνωρίζοντας, από τον κάθε πίνακα αληθείας, τη λογική συνάρτηση που αυτός αναπαριστά· όμως, γιά να πετύχουμε "με το μάτι" και ευκολότερα αυτή την αναγνώριση, θα προτιμήσουμε να γράφουμε τις τιμές της συνάρτησης σε ένα διδιάστατο πίνακα, όπως θα πούμε παρακάτω, αντί σε μία κατακόρυφη στήλη όπως παραπάνω. .

Διαγράμματα Venn Δύο Μεταβλητών (και Χάρτες Karnaugh):

Οι λογικές συναρτήσεις 2 εισόδων καθορίζονται πλήρως από τις 4 τιμές που αυτές παίρνουν στον καθένα από τους 4 (=22) συνδυασμούς των 2 εισόδων τους (γι' αυτό και υπάρχουν ακριβώς 16 (=24) διαφορετικές τέτοιες λογικές συναρτήσεις 2 εισόδων). Άρα, ο πίνακας αληθείας τους περιέχει 4 δυαδικές τιμές. Γιά εύκολη αναγνώριση "με το μάτι" των λογικών αυτών συναρτήσεων μας βολεύει να διατάξουμε τις 4 αυτές τιμές σ' ένα διδιάστατο πίνακα 2x2, όπου οι γραμμές αντιστοιχούν στην τιμή της μιάς μεταβλητής εισόδου και οι στήλες αντιστοιχούν στην άλλη μεταβλητή εισόδου, όπως φαίνεται στο σχήμα. Η παράσταση αυτή, ανάλογα πώς την βλέπει και πώς την χρησιμοποιεί κανείς, λέγεται είτε Χάρτης Karnaugh (Καρνώ) είτε Διάγραμμα Venn. 1-term and 2-term regions in 2-input Venn Diagrams

Το διάγραμμα Venn έχει το εξής νόημα: θεωρούμε ότι η μεταβλητή εισόδου A προσδιορίζει κατά πόσον είμαστε μέσα στην "περιοχή A" (κάτω γραμμή) ή έξω από αυτήν (1 = μέσα, 0 = έξω). Ομοίως, η είσοδος B μας λέει αν είμαστε μέσα (1) στην περιοχή B (δεξιά στήλη) ή έξω (0) από αυτήν. Όταν μας δίνουν μιά λογική συνάρτηση (δηλαδή άσσους και μηδενικά στα 4 τετραγωνάκια), εμείς κοιτάζουμε σε ποιά περιοχή η συναρτηση αυτή γίνεται αληθής (τιμή = 1), και περιγράφουμε αυτή την περιοχή σαν συνάρτηση των τιμών των εισόδων A και B. Αν η συνάρτηση γίνεται αληθής μόνο στο κάτω δεξιό τετράγωνο, τότε γίνεται αληθής όταν είμαστε "μέσα" στο A (A=1) και "μέσα" στο B (B=1), δηλαδή όταν είναι αληθές το A και αληθές το B, δηλαδή όταν "A ΚΑΙ B" ("A AND B"). Κατ' αναλογία, όταν μιά λογική συνάρτηση 2 μεταβλητών γίνεται αληθής μόνο στο κάτω αριστερό τετράγωνο, τότε αυτή γίνεται αληθής όταν είμαστε μέσα στο A (A=1) και "έξω" από το B (B=0), δηλαδή όταν είναι αληθές το A και ψευδές (όχι αληθές) το B, δηλαδή όταν "A ΚΑΙ (ΟΧΙ B)" ("A AND (NOT B)"). Ομοίως, η λογική συνάρτηση που γίνεται αληθής μόνο στο πάνω δεξιό τετράγωνο είναι η "(NOT A) AND B", ενώ η συνάρτηση που γίνεται αληθής μόνο στο πάνω αριστερό τετράγωνο είναι η "(NOT A) AND (NOT B)". Στην περίπτωση του παραπάνω παραδείγματος με την ένδειξη 7 τμημάτων, η έξοδος a τυχαίνει να είναι ακριβώς αυτή η τελευταία συνάρτηση, όπως διαπιστώνουμε εύκολα αν σχεδιάσουμε τον πίνακα αληθείας της στη μορφή που φαίνεται στο σχήμα.

Όταν μιά λογική συνάρτηση γίνεται αληθής (τιμή = 1) σε δύο διπλανά τετράγωνα, τότε αυτή μπορεί να περιγραφεί σαν "μέσα" ή "έξω" από την περιοχή της μιάς από τις δύο μεταβλητές εισόδου. Έτσι, στο παραπάνω παράδειγμα, η έξοδος f, που γίνεται 1 στα δύο τετράγωνα της επάνω γραμμής, μπορεί να περιγραφεί σαν "έξω" από το A, δηλαδή ΟΧΙ A, όπως φαίνεται στο παραπάνω σχήμα. Αντίστοιχα, μιά συνάρτηση που θα γίνονταν 1 στην κάτω γραμμή θα ήταν ίση με A, αν γίνονταν 1 στη δεξιά στήλη θα ήταν ίση με B, και αν γίνονταν 1 στην αριστερή στήλη θα ήταν ίση με NOT B.

3-term and xor/xnor regions in 2-input Venn Diagrams Μιά λογική συνάρτηση που γίνεται αληθής σε τρία τετράγωνα μπορεί να περιγραφεί όπως φαίνεται στο σχήμα δεξιά. Στο επάνω μέρος του σχήματος φαίνονται τρείς εναλλακτικές περιγραφές γιά τη συνάρτηση που οδηγεί το τμήμα d της ένδειξης 7 τμημάτων. Στην πρώτη περιγραφή, η περιοχή αληθείας της d ορίζεται σαν η ένωση τριών περιοχών μεγέθους ενός τετραγώνου η καθεμία. Καθώς παραπάνω η τομή περιοχών αντιστοιχούσε στο λογικό και, η ένωση περιοχών, εδώ, αντιστοιχεί στο λογικό ή, αφού η συνάρτηση είναι αληθής όποτε είναι αληθής ή ο ένας όρος, ή ο δεύτερος, ή ο τρίτος (ή περισσότεροι ταυτόχρονα). Έτσι, οι τρείς περιοχές του πρώτου σχήματος μας δίνουν την περιγραφή της συνάρτησης που φαίνεται από πάνω, η οποία είναι το λογικό ή τριών όρων που ο καθένας τους είναι ένα λογικό και.

Η δεύτερη περιγραφή της λογικής συνάρτησης d οδηγεί σε απλούστερη έκφραση, διότι χρησιμοποιεί λιγότερες και μεγαλύτερες βασικές περιοχές. Όσο μεγαλύτερη είναι μιά βασική περιοχή γειτονικών τετραγώνων, τόσο λιγότερους όρους "και" έχει η αντίστοιχη λογική έκφραση· και όσο λιγότερες περιοχές χρειάζεται να ενώσουμε γιά να καλύψουμε την περιοχή αληθείας της συνάρτησής μας, τόσο λιγότερα κομμάτια θα ενώνουν οι πράξεις ή. Τελικά, η οικονομικότερη περιγραφή της λογικής συνάρτησης d είναι η τρίτη, δεξιά, διότι χρησιμοποιεί τις μεγαλύτερες δυνατές βασικές περιοχές, δηλαδή τους απλούστερους όρους· η εν μέρει επικάλυψη των περιοχών δεν έχει καμία σημασία, αφού η λογική πράξη ή είναι αληθής όταν είναι αληθείς είτε μία είτε περισσότερες από τις εισόδους της. Κατ' ανάλογο τρόπο, η εξοδος c που ζητάμε γιά το κύκλωμα του παραδείγματός μας είναι η λογική συνάρτηση "(NOT A) OR B", όπως φαίνεται στο παραπάνω σχήμα, κάτω αριστερά. Η μέθοδος αυτή της απλοποίησης λογικών συναρτήσεων μέσω συνένωσης γειτονικών τετραγώνων λέγεται "μέθοδος του Χάρτη Καρνώ" (Karnaugh Map).

Η έξοδος b του κυκλώματός μας πρέπει να ανάβει στα δύο τετράγωνα που φαίνονται στο παραπάνω σχήμα (κάτω μέση), τα οποία όμως, δυστυχώς, δεν είναι γειτονικά. Γιά το λόγο αυτό, τα δύο αυτά τετράγωνα δεν μπορούν να συνενωθούν όπως παραπάνω, και δεν μπορεί να γίνει καμιά ιδιαίτερη απλοποίηση της σχετικής συνάρτησης --αυτή παραμένει αναγκαστικά η ένωση δύο ανεξάρτητων τετραγώνων: b = [(NOT A) AND (NOT B)] OR [A AND B]. Πρόκειται γιά τη συνάρτηση ισότητας που είδαμε στο εργαστήριο 1. Η άλλη λογική συνάρτηση 2 μεταβλητών που δεν απλοποιείται είναι η συνάρτηση αποκλειστικού Ή (exclusive OR, ή "XOR"), που επίσης είδαμε στο εργαστήριο 1, και που φαίνεται στο παραπάνω σχήμα, κάτω δεξιά. Relay implementation of the A-b-c-d display Ckt

Υλοποίηση των Λογικών Συναρτήσεων με Ηλεκτρονόμους:

Με τους παραπάνω χάρτες Karnaugh βρήκαμε τις λογικές συναρτήσεις a, b, c, d, και f που χρειαζόμαστε γιά να εμφανίζουμε στον ενδείκτη 7 τμημάτων τα γράμματα A, b, c, και d, όπως προδιαγράψαμε στην αρχή. Οι συναρτήσεις e και g είναι τετριμένες: είναι πάντα αληθείς, άρα αρκεί οι δύο αυτές LED να συνδεθούν μονίμως στην θετική τροφοδοσία. Γιά να υλοποιηθούν τώρα οι συναρτήσεις a, b, c, d, και f, χρειάζονται 6 διακόπτες ελεγχόμενοι από την είσοδο A και 5 διακόπτες ελεγχόμενοι από την B, δεδομένου ότι ο όρος A εμφανίζεται 6 φορές στις παραπάνω λογικές συναρτήσεις, ο δε όρος B εμφανίζεται 5 φορές. (Μιά μικρή οικονομία μπορεί να γίνει αν υλοποιήσουμε τη συνάρτηση ισότητας, b, με το "κόλπο" που είδαμε στο εργαστήριο 1, οπότε πέφτουμε στους 5 διακόπτες γιά το A και 4 γιά το B). Δεδομένου ότι δεν έχουμε 5-πλούς ή 4-πλούς διακόπτες στο εργαστήριο, χρησιμοποιούμε ηλεκτρονόμους γιά να ελέγξουμε με ταυτόσημο τρόπο τους 5 διακόπτες A και τους 4 διακόπτες B από τους απλούς διακόπτες εισόδου A και B, όπως είδαμε στο εργαστήριο 2.3, και όπως φαίνεται στο σχήμα δεξιά. Θυμηθείτε ότι σε αυτά τα διαγράμματα κυκλωμάτων, όταν δύο γραμμές τέμνονται χωρίς κουκκίδα σημαίνει ότι τα αντίστοιχα σύρματα διασταυρώνονται χωρίς επαφή· οι διακλαδώσεις συρμάτων με επαφή προτιμάμε να έχουν σχήμα "Τ" (μονή διακλάδωση) και όχι σταυρού (διπλή διακλάδωση από το ίδιο σημείο). Οι λογικές συναρτήσεις που είναι γραμμένες δεξιά στο σχήμα αυτό ακολουθούν τους συμβολισμούς που θα εισαχθούν λίγο παρακάτω.

Στο κύκλωμα αυτό υποθέτουμε ότι όταν A=1 πατιέται ο κάτω αριστερά διακόπτης SPST, και όταν B=1 πατιέται ο κάτω δεξιά διακόπτης SPST. Όταν πατιέται ο διακόπτης A, τροφοδοτούνται με ρεύμα οι 3 αριστεροί ηλεκτρονόμοι, κι έτσι έλκονται προς τα κάτω οι 5 διακόπτες SPDT αυτών των ηλεκτρονόμων· άρα, οι 5 αυτοί διακόπτες αποτελούν "αντίγραφα" του διακόπτη A. Ομοίως, οι 4 διακόπτες των 2 δεξιά ηλεκτρονόμων κινούνται πανομοιότυπα με τον διακόπτη B. Η έξοδος a τροφοδοτείται από τη θετική τροφοδοσία μέσω 2 διακοπτών εν σειρά, άρα ακολουθεί λογική "και"· επειδή χρησιμοποιήσαμε τις επάνω επαφές των διακοπτών, ρεύμα περνάει όταν οι διακόπτες είναι επάνω, δηλαδή όχι πατημένοι, κι έτσι προκύπτει η επιθυμητή λογική "όχι". Η έξοδος b τροφοδοτείται από το κύκλωμα ισότητας που είδαμε στο εργαστήριο 2.3. Η έξοδος c τροφοδοτείται μέσω 2 διακοπτών εν παραλλήλω, άρα ακολουθεί λογική "ή"· χρησιμοποιούμε την επάνω επαφή του A (όχι πατημένος) γιά να πετύχουμε λογική "όχι", και την κάτω επαφή του B (πατημένος) γιά να έχουμε θετική πολικότητα. Η έξοδος d τροφοδοτείται παρόμοια, αλλά εδώ χρησιμοποιούμε την κάτω επαφή και στους δύο διακόπτες, κι έτσι η πολικότητα είναι θετική ως προς και τις δύο εισόδους. Τέλος, η έξοδος f τροφοδοτείται μέσω ενός διακόπτη, ελεγχόμενου από την είσοδο A, και χρησιμοποιεί την "όχι πατημένη" επαφή, άρα ισούται με όχι A.

Driving a 7-segment display with 0-1-2-3 numerals

Πείραμα 3.1: Οι Αριθμοί 0-3 στην Οθόνη 7 Τμημάτων

Σχεδιάστε (πριν το εργαστήριο) και κατασκευάστε και ελέγξτε (στο εργαστήριο) ένα κύκλωμα ανάλογο του παραπάνω κυκλώματος με ηλεκτρονόμους, που όμως να εμφανίζει στον ενδείκτη 7 τμημάτων τους αριθμούς 0, 1, 2, και 3, όπως φαίνεται δεξιά, αντί των γραμμάτων A, b, c, και d που ενεφάνιζε το παραπάνω κύκλωμα. Πρίν φτάσετε στο εργαστήριο: (i) φτιάξτε τον πίνακα αληθείας των 7 εξόδων που σας ζητώνται· (ii) φτιάξτε χάρτες Karnaugh γιά τις 7 αυτές εξόδους· (iii) απλοποιήστε τις συναρτήσεις αυτών των 7 εξόδων από τους παραπάνω χάρτες· και (iv) σχεδιάστε τα κυκλώματα που υλοοιούν αυτές τις συναρτήσεις με τη χρήση ηλεκτρονόμων, όπως και στο παραπάνω παράδειγμά μας. .

Συμβολισμοί Λογικών Πράξεων:

Επειδή οι λέξεις και, ή, όχι πιάνουν πολύ χώρο, έχουν υιοθετηθεί στη διεθνή βιβλιογραφία άλλα, συντομότερα σύμβολα γιά τις πράξεις αυτές, όπως φαίνεται στο παρακάτω σχήμα, κάτω από τον τίτλο "συντομογραφίες" (abbreviations). Στη γλώσσα προγραμματισμού C, καθώς και στη γλώσσα περιγραφής υλικού Verilog, η πράξη (bitwise) AND συμβολίζεται με "&", η πράξη (bitwise) OR συμβολίζεται με "|", και η πράξη (bitwise) ΝΟΤ συμβολίζεται με "~". Σε βιβλία και κείμενα θεωρίας ψηφιακής σχεδίασης, η πράξη AND συμβολίζεται με μία τελεία --ή και χωρίς αυτήν-- όπως ο πολλαπλασιασμός, η δε πράξη OR συμβολίζεται με ένα σταυρό, όπως και η πρόσθεση. Τη συνήθεια αυτή πρέπει να τη δεί κανείς σαν απλό συμβολισμό, χωρίς κανένα περαιτέρω νόημα ότι δήθεν υπάρχει ομοιότητα ή ταύτιση των λογικών πράξεων AND/OR με τις αριθμητικές πράξεις πολλαπλασιασμού/πρόσθεσης --πρόκειται γιά εντελώς διαφορετικά πράγματα, και απλώς υιοθετούμε το ίδιο σύμβολο γιά λόγους τυπογραφίας και μόνο. Η λογική ΝΟΤ συμβολίζεται με μία μπάρα πάνω από το όρισμά της· όταν τυπογραφικοί λόγοι καθιστούν δύσκολη τη χρήση μπάρας, χρησιμοποιείται εναλλακτικά ο συμβολισμός "τονούμενο" (prime). .

Διαγράμματα και Χάρτες Τριών και Τεσσάρων Μεταβλητών:

Η επιτυχία των παραπάνω διαγραμμάτων Venn και του χάρτη Karnaugh δύο μεταβλητών στο να μας βοηθούν να απλοποιούμε λογικές συναρτήσεις οφείλεται στη διάταξη των τιμών της συνάρτησης στις δύο διαστάσεις με τρόπο τέτοιο που η κάθε μεταβλητή να αντιστοιχεί στη μία διάσταση. 3-input Venn diagrams and Boolean function abbreviations Γιά να πετύχουμε το ίδιο αποτέλεσμα με τρείς μεταβλητές εισόδου, φανταζόμαστε ότι διατάσουμε τα περιεχόμενα του πίνακα αληθείας στις 3 διαστάσεις, σ' ένα σχήμα κύβου, όπως στο διπλανό σχήμα, αριστερά. Στη συνέχεια, επειδή είναι άβολο να σχεδιάζουμε τριδιάστατα σχήματα στο χαρτί, φανταζόμαστε ότι ξεδιπλώνουμε τον κύβο, κόβοντάς τον πίσω στη μέση, και φέρνοντας τις δύο πίσω στήλες στην αριστερή και στη δεξιά άκρη αντίστοιχα, όπως φαίνεται στο σχήμα, δεξιά.

Η συνέπεια είναι ότι οι στήλες του πίνακα αντιστοιχούν στις δύο μεταβλητές εισόδου B και C με τη σειρά που φαίνεται στο σχήμα: 00, 01, 11, 10 --η σειρά αυτή (που λέγεται και "κώδικας Gray") διαφέρει από τη συνηθισμένη σειρά αρίθμησης (μέτρησης) στο δυαδικό (00, 01, 10, 11). Με τη σειρά αυτή πετυχαίνουμε η περιοχή αληθείας της μεταβλητής B να αποτελείται από 4 γειτονικά τετράγωνα --τα 4 δεξιά τετράγωνα-- και ταυτόχρονα η περιοχή αληθείας της μεταβλητής C να αποτελείται επίσης από 4 γειτονικά τετράγωνα --τα 4 μεσαία τετράγωνα. Η περιοχή αληθείας του C' ( δηλ. του "ΝΟΤ C") είναι επίσης 4 "γειτονικά" τετράγωνα --δύο στη άκρη αριστερά και δύο στην άκρη δεξιά-- αλλά γιά να καταλάβουμε ότι αυτά είναι γειτονικά πρέπει να φανταστούμε τον πίνακα σαν ένα ξετυλιγμένο βαρέλι: τα τετράγωνα αυτά ήταν γειτονικά πριν το ξετύλιγμα. Γενικά, στο χάρτη 3 μεταβλητών, οιαδήποτε 4 "γειτονικά" τετράγωνα --δηλαδή 4 τετράγωνα σε σχήμα 2x2 ή 4x1-- αντιστοιχούν σε μία μεταβλητή εισόδου ή στην άρνησή της. Οι δύο οριζόντιες τετράδες αντιστοιχούν στο A και στο A' (ΝΟΤ A).

Περιοχές δύο γειτονικών τετραγώνων αντιστοιχούν στο λογικό ΚΑΙ δύο εκ των τριών μεταβλητών εισόδου (ή των αρνήσεών τους). Μερικά τέτοια ζευγάρια φαίνονται στο παραπάνω σχήμα, κάτω δεξιά. Παρατηρήστε ότι τα ζευγάρια που περιλαμβάνουν το C' μοιάζουν "κομένα" --ένα τετράγωνο στην άκρη αριστερά και ένα στην άκρη δεξιά-- όμως αποτελούνται και αυτά από τετράγωνα που ήταν γειτονικά πριν ξετυλίξουμε το χάρτη από τη μορφή βαρελιού που λέγαμε πιό πάνω. Τέλος, φυσικά, όπως και στους χάρτες 2 μεταβλητών, μεμονωμένα τετράγωνα αντιστοιχούν στο λογικό ΚΑΙ όλων των μεταβλητών εισόδου ή των αρνήσεών τους, και περιοχές που προκύπτουν από την ένωση ομάδων τετραγώνων αντιστοιχούν στο λογικό Ή των σχετικών όρων. Όταν καλύπτουμε περιοχές με τέτοιες ενώσεις, επιδιώκουμε η κάθε ομάδα γειτονικών τετραγώνων να είναι όσο μεγαλύτερη γίνεται (πάντα βέβαια μεγέθους δύναμης του 2, διατεταγμένη σε σχήμα ορθογωνίου)· επικαλύψεις περιοχών δεν μας ενοχλούν --αντίθετα βοηθούν στη μεγιστοποίηση της έκτασης της κάθε μεμονωμένης περιοχής. 4-input Venn diagram / Karnaugh map

Ο χάρτης Karnaugh τεσσάρων μεταβλητών σχεδιάζεται όπως φαίνεται δεξιά. Πρέπει να φανταστούμε ότι αυτός ο πίνακας 4x4 προέρχεται από διπλό ξετύλιγμα μιάς παράξενης σφαιροειδούς επιφάνειας και οριζόντια και κατακόρυφα. Η αριστερή και η δεξιά στήλη ήταν γειτονικές πριν το ξετύλιγμα, σαν να προέρχονται από ένα όρθιο βαρέλι, και αντιστοιχούν στη μεταβλητή D' (ΝΟΤ D). Ταυτόχρονα, η επάνω και η κάτω γραμμή ήταν κι αυτές γειτονικές, πριν το ξετύλιγμα από ένα πλαγιαστό βαρέλι, και αντιστοιχούν στη μεταβλητή B' (ΝΟΤ B).

Τετράδες γειτονικών τετραγώνων αντιστοιχούν στο λογικό ΚΑΙ δύο εκ των τεσσάρων μεταβλητών εισόδου, ή των αρνήσεών τους. Μία τέτοια τετράδα --η πιό πολύ κομμένη απ' όλες-- φαίνεται στο σχήμα στις 4 γωνίες: πρόκειται γιά την περιοχή B'D', και τα τετράγωνά της ήταν όλα γειτονικά πριν το διπλό ξετύλιγμα. Άλλες κομμένες τετράδες έχουν 2 τετράγωνα αριστερά και 2 δεξιά, ή 2 τετράγωνα επάνω και 2 κάτω. Ζευγάρια γειτονικών τετραγώνων αντιστοιχούν στο λογικό ΚΑΙ τριών εκ των τεσσάρων μεταβλητών εισόδου, ή των αρνήσεών τους. Μεμονωμένα τετράγωνα αντιστοιχούν στο λογικό ΚΑΙ όλων των μεταβλητών εισόδου (ή των αρνήσεών τους).

Μπορούν να οριστούν και χάρτες Karnaugh πέντε ή περισσοτέρων μεταβλητών, αλλά δεν είναι πρακτικοί. Εξ' άλλου, ας μην ξεχνάμε ότι η απλοποίηση λογικών συναρτήσεων "με το μάτι" και "με το χέρι" ανήκει στο παρελθόν: σήμερα πιά υπάρχουν αποδοτικοί αλγόριθμοι και αντίστοιχα προγράμματα υπολογιστή που κάνουν αυτές τις απλοποιήσεις και πολλές άλλες αυτόματα γιά μας. Το πιό γνωστό τέτοιο πρόγραμμα αυτόματης σύνθεσης υλικού, σήμερα, είναι το "Synopsys".

Driving a 7-segment display with 0-7 numerals

Άσκηση 3.2: Οι Αριθμοί 0-7 στην Οθόνη 7 Τμημάτων

Πρίν φτάσετε στο εργαστήριο κάντε αυτή την άσκηση με μολύβι και χαρτί· η άσκηση αυτή δεν έχει τίποτα να φτιάξτε στο εργαστήριο, διότι τα κυκλώματα που προκύπτουν είναι πολύ μεγάλα γιά να υλοποιηθούν με ηλεκτρονόμους στην πλακέτα μας --απλώς θα παραδώσετε τη λύση σας μέσα στην αναφορά του εργαστηρίου σας. Ζητείται να βρεθούν οι 7 λογικές συναρτήσεις οδήγησης των 7 τμημάτων του γνωστού μας ενδείκτη, προκειμένου αυτός να εμφανίζει τις 8 ενδείξεις που φαίνονται στο σχήμα, ανάλογα με το εκάστοτε συνδυασμό τιμών των τριών bits εισόδου A, B, και C. Φτιάξτε τους 7 πίνακες αληθείας, και στη συνέχεια τους 7 χάρτες Karnaugh 3 μεταβλητών, βρείτε τις ομάδες γειτονικών τετραγώνων που χρειάζονται γιά να καλύψουν τις περιοχές ανάματος της κάθε LED, και γράψτε τις αντίστοιχες λογικές συναρτήσεις γιά τις 7 εξόδους. Δεν σας ζητείται να σχεδιάσετε το κύκλωμα υλοποίησης με ηλεκτρονόμους.

Πείραμα 3.3: Μετρητής Πλήθους Πατημένων Διακοπτών (με 3 διακόπτες)

Στο πείραμα αυτό θα μελετήσουμε μιά κατηγορία συνδυαστικών κυκλωμάτων που εμφανίζονται συχνά στην πράξη, διότι αποτελούν τη βάση των αθροιστών --των κυκλωμάτων δηλαδή μέσω των οποίων οι υπολογιστές κάνουν πρόσθεση ακεραίων, και κατ' επέκταση και όλες τις αριθμητικές πράξεις. Ταυτόχρονα θα δούμε και μιά νέα μορφή απλοποίησης λογικών συναρτήσεων, καθώς και την πρώτη χρήση των ηλεκτρονόμων γιά μεταφορά των εξόδων ενός υποκυκλώματος σαν εισόδους σε ένα επόμενο. Counting circuit with three inputs

Το ζητούμενο είναι να κατασκευάσουμε το κύκλωμα που φαίνεται δίπλα, το οποίο μετράει πόσοι "άσσοι" υπάρχουν στις εισόδους του. Γιά το κύκλωμα αυτό δεν έχει σημασία η θέση των άσσων και των μηδενικών στις εισόδους του --μόνο το πλήθος τους ενδιαφέρει· π.χ. οι είσοδοι 001, 010, και 100 έχουν όλες το ίδιο αποτέλεσμα σ' αυτό το κύκλωμα, διότι όλες τους έχουν από έναν άσσο (και άρα δύο μηδενικά). Η σχέση του κυκλώματος αυτού με την πρόσθεση θα πρέπει τώρα να είναι προφανής: το κύκλωμα αυτό βρίσκει το άθροισμα τριών αριθμών του ενός bit ο καθένας, δηλαδή τριών "πολυ μικρών" αριθμών: ο καθένας τους μπορεί να είναι μόνο το (αριθμητικό) μηδέν ή το (αριθμητικό) ένα (τους αντιδιαστέλω επίτηδες από το λογικό μηδέν και το λογικό ένα). Όπως φαίνεται στο σχήμα, το κύκλωμα θα έχει 4 εξόδους, οι οποίες θα είναι το αποκωδικοποιημένο άθροισμα: πάντα μία και μόνο μία από αυτές θα είναι αναμένη. Η έξοδος "zero" θα ανάβει όταν δεν υπάρχει κανένας άσσος στις εισόδους, η έξοδος "one" όταν υπάρχει ακριβώς ένας άσσος (το παραπάνω παράδειγμα), η έξοδος "two" όταν υπάρχουν ακριβώς δύο άσσοι, και τέλος η έξοδος "three" θα ανάβει όταν και οι τρείς είσοδοι είναι 1. Προφανώς υπάρχει μόνο ένας συνδυασμός εισόδων με κανένα άσσο (000), και μόνο ένας συνδυασμός εισόδων με τρείς άσσους (111), άρα οι λογικές συναρτήσεις γιά τις "εύκολες" εξόδους, zero και three, είναι:

      zero  = A' · B' · C'
      three = A · B · C
Από την άλλη, δυστυχώς, οι έξοδοι one και two είναι "δύσκολες", διότι έχουν τα χαρακτηριστικά του αποκλειστικού-Ή: ο χάρτης τους έχει άσσους σε μη γειτονικά τετράγωνα, κι έτσι καμία απλοποίηση δεν είναι δυνατή. (Το χαρακτηριστικό του αποκλειστικού-Ή ήταν ότι αλλαγή τιμής μίας οιασδήποτε εισόδου προκαλούσε αλλαγή τιμής της εξόδου· η πρόσθεση προφανώς πρέπει να έχει αυτό το χαρακτηριστικό, αφού αλλαγή τιμής μιάς εισόδου προκαλεί αλλαγή στο πλήθος άσσων). Στο σχήμα παραπάνω βλέπουμε το χάρτη της εξόδου two, και ανάλογος είναι και εκείνος της one. Από εκεί προκύπτει ότι:
      one = A'·B'·C + A'·B·C' + A·B'·C'
      two = A'·B·C  + A·B'·C  + A·B·C'
(Στις εκφράσεις αυτές, θεωρείται ότι πρώτη προτεραιότητα εχει η άρνηση, δεύτερη το λογικό ΚΑΙ, και τρίτη το λογικό Ή). Το ζητούμενο κύκλωμα θα μπορούσε να υλοποιηθεί βάσει των παραπάνω συναρτήσεων, αλλά θα χρειάζονταν προς τούτο 12 ηλεκτρονόμοι, διότι τα A, B, και C και οι αρνήσεις τους εμφανίζονται σε 24 θέσεις στις συναρτήσεις αυτές, άρα χρειαζόμαστε 24 διακόπτες, που μπορούν να τοποθετηθούν (λόγω συμμετρίας) σε 12 ηλεκτρονόμους. Αντ' αυτού, μπορούμε να πετύχουμε ένα κύκλωμα με 9 μόνο ηλεκτρονόμους, κάνοντας μιά διαφορετική απλοποίηση: κατασκευάζουμε πρώτα μιάν ενδιάμεση, "βολική" συνάρτηση, και στη συνέχεια κατασκευάζουμε τις "δύσκολες" εξόδους σαν απλούστερες συναρτήσεις αυτής και των "εύκολων" εξόδων. Σαν "βολική" συνάρτηση επιλέγουμε την "twoOrThree" που ορίζεται στον παραπάνω δεξιά πίνακα αληθείας: όπως λεει και το όνομά της, αυτή είναι αληθής όταν υπάρχουν ή 2 ή 3 άσσοι στις εισόδους. Όπως δείχνει ο παραπάνω χάρτης, αυτή υλοποιείται ως εξής:
      twoOrThree = A·B + A·C + B·C     
Στη συνέχεια, μπορούμε να εκμεταλλευτούμε τις λογικές σχέσεις των επιθυμητών εξόδων και των παραπάνω συναρτήσεων: Υπάρχουν δύο άσσοι στις εισόδους ("two") όταν υπάρχουν ή δύο ή τρείς ("twoOrThree") και δεν υπάρχουν τρείς (NOT three). Υπάρχει ένας άσσος στις εισόδους ("one") όταν δεν ισχύει το "κανένας" (NOT zero) και επίσης δεν ισχύει το "δύο ή τρείς" (NOT twoOrThree):
      one = (NOT twoOrThree) AND (NOT zero)
      two = (twoOrThree) AND (NOT three)
Οι παραπάνω συναρτήσεις υλοποιούνται με το κύκλωμα που φαίνεται στο σχήμα. Παρατηρήστε ότι τα 3 ζευγάρια ηλεκτρονόμων αριστερά "αντιγράφουν" τις τιμές των 3 εισόδων στους 3x4 = 12 διακόπτες που απαιτούνται, Relay implementation of the 3-input counting circuit ενώ οι 3 ηλεκτρονόμοι δεξιά χρησιμοποιούνται γιά να περάσουμε τις 3 εξόδους του αριστερού υποκυκλώματος σαν εισόδους στο δεξιό υποκύκλωμα, δηλαδή γιά να ανοιγοκλείνουν οι διακόπτες του δεύτερου βάσει των αποτελεσμάτων της επεξεργασίας που έκανε το πρώτο.

Στο εργαστήριο κατασκευάστε το κύκλωμα αυτό, και ελέγξτε την ορθή λειτουργία του. Θυμηθείτε ότι σε αυτά τα διαγράμματα κυκλωμάτων, όταν δύο γραμμές τέμνονται χωρίς κουκκίδα σημαίνει ότι τα αντίστοιχα σύρματα διασταυρώνονται χωρίς επαφή· οι διακλαδώσεις συρμάτων με επαφή προτιμάμε να έχουν σχήμα "Τ" (μονή διακλάδωση) και όχι σταυρού (διπλή διακλάδωση από το ίδιο σημείο). .

Συνθήκες Αδιαφορίας (Don't Care Conditions):

Σε όλες τις παραπάνω περιπτώσεις, οι πίνακες αληθείας των επιθυμητών εξόδων ήταν πλήρως προδιαγεγραμμένοι, δηλαδή μας ενδιέφερε η κάθε έξοδος να έχει μιά συγκεκριμένη, προκαθορισμένη τιμή γιά τον κάθε δυνατό συνδυασμό τιμών των εισόδων. Υπάρχουν όμως και περιπτώσεις "μερικώς προδιαγεγραμμένων" συστημάτων. Γιά παράδειγμα, στην παρακάτω άσκηση, μας ζητείται να οδηγήσουμε τη γνωστή μας οθόνη 7 τμημάτων σε τρόπον ώστε να εμφανίζονται σε αυτήν τα δέκα ψηφία από το 0 ως το 9. Γιά να πετύχουμε δέκα διαφορετικές εξόδους δεν αρκούν προφανώς 3 bits εισόδου --χρειάζονται τέσσερα. Όμως, τα 4 bits έχουν 16 δυνατούς συνδυασμούς· διαλέγουμε δέκα από αυτούς γιά να γεννάνε στην οθόνη τα δέκα επιθυμητά ψηφία, ενώ δεν μας ενδιαφέρει τι θα κάνει η οθόνη όταν στις εισόδους εμφανίζεται ένας από τους υπόλοιπους έξι συνδυασμούς --π.χ. το κύκλωμα που μας τροφοδοτεί με τα 4 bits εισόδου ποτέ δεν θα μας δίνει έναν από τους υπόλοιπους 6 συνδυασμούς, ή αν μας δώσει, δεν μας ενδιαφέρει τι θα δείξει η οθόνη σε αυτή την περίπτωση.

Όταν ένας πίνακας αληθείας δεν προκαθορίζει την τιμή εξόδου γιά ορισμένο συνδυασμό τιμών εισόδου, λέμε ότι εκεί έχουμε μία συνθήκη αδιαφορίας (don't care condition), και συχνά βάζουμε στον στη θέση εκείνη του πίνακα και του χάρτη Karnaugh σα σύμβολο ένα "x". Στο χάρτη Karnaugh, όταν αναζητούμε την ελάχιστη δυνατή ένωση των μέγιστων δυνατών περιοχών γειτονικών τετραγώνων προκειμένου να καλύψουμε τους άσσους του χάρτη, θεωρούμε ότι το κάθε "x" είναι ό,τι μας βολεύει. Αν βολεύει να το θεωρήσουμε σαν άσσο, προκειμένου να πετύχουμε μεγαλύτερη περιοχή γειτονικών τετραγώνων, το θεωρούμε σαν άσσο. Αν βολεύει να το θεωρήσουμε σαν μηδενικό, προκειμένου να μην χρειαστούμε μιά επιπλέον περιοχή γιά να το καλύψουμε, το θεωρούμε σαν μηδενικό. Η συμπεριφορά του τελικού κυκλώματος γιά κάθε αδιάφορη τιμή εισόδων θα καθοριστεί προφανώς από το τι μας βόλεψε και θεωρήσαμε το αντίστοιχο "x" στο χάρτη.

Άσκηση 3.4: Οι Αριθμοί 0-9 στην Οθόνη 7 Τμημάτων

Driving a 7-segment display with 0-9 numerals Πρίν φτάσετε στο εργαστήριο κάντε αυτή την άσκηση με μολύβι και χαρτί· η άσκηση αυτή δεν έχει τίποτα να φτιάξτε στο εργαστήριο, διότι τα κυκλώματα που προκύπτουν είναι πολύ μεγάλα γιά να υλοποιηθούν με ηλεκτρονόμους στην πλακέτα μας --απλώς θα παραδώσετε τη λύση σας μέσα στην αναφορά του εργαστηρίου σας. Ζητείται να βρεθούν οι 7 λογικές συναρτήσεις οδήγησης των 7 τμημάτων του γνωστού μας ενδείκτη, προκειμένου αυτός να εμφανίζει τις 10 ενδείξεις που φαίνονται στο σχήμα, ανάλογα με το εκάστοτε συνδυασμό τιμών των 4 bits εισόδου A, B, C, και D. Φτιάξτε τους 7 πίνακες αληθείας, και στη συνέχεια τους 7 χάρτες Karnaugh 4 μεταβλητών που περιέχουν και από 6 όρους αδιαφορίας καθένας, βρείτε τις ομάδες γειτονικών τετραγώνων που βολεύουν και χρειάζονται γιά να καλύψουν τις περιοχές ανάματος της κάθε LED, και γράψτε τις αντίστοιχες λογικές συναρτήσεις γιά τις 7 εξόδους. Δεν σας ζητείται να σχεδιάσετε το κύκλωμα υλοποίησης με ηλεκτρονόμους.


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