Εισαγωγή Εργαστήριο 2 ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ Σκοπός του εργαστηρίου είναι να κατανοήσουµε τον τρόπο µε τον οποίο εκφράζεται η ψηφιακή λογική υλοποιώντας ασκήσεις απλά και σύνθετα λογικά κυκλώµατα (χρήση του WorkBench) και χρησιµοποιώντας για τη 1 Ψηφιακή Λογική 2 Λογικά Κυκλώµατα 3 Οργάνωση της ΚΜΕ 4 ιαχείριση Μνήµης 5 Προγραµµατισµός σε Συµβολική Γλώσσα 6 Η Γλώσσα Assembly των Επεξεργαστών της Intel 7 Intel Assembly Λογικές Πράξεις 8 Intel Assembly Έλεγχος Ροής 9 Intel Assembly ιευθυνσιοδότηση Μνήµης 10 Intel Assembly Υπορουτίνες & Μακροεντολές 11 Χρήση της Assembly µε την C/C++ 12 Ολοκληρωµένα Συστήµατα - Εφαρµογές σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ. Λογικές Πύλες Όπως γνωρίζουµε σε ένα ψηφιακό κύκλωµα έχουµε δύο µόνο λογικές τιµές (π.χ. σήµα µεταξύ 0 και 1 volt αντιπροσωπεύει µια λογική τιµή (δυαδικό) 0, και ένα σήµα µεταξύ 2 και 5 volt µια λογική τιµή (δυαδικό) 1). Θα µπορούσαµε να πούµε ότι µικροσκοπικές ηλεκτρονικές συσκευές, που ονοµάζονται πύλες (gates), µπορούν να υπολογίσουν διάφορες συναρτήσεις αυτών των σηµάτων. Για παράδειγµα ένα τρανζίστορ θα µπορούσε να λειτουργήσει σαν ένας πολύ γρήγορος δυαδικός διακόπτης. Στην εικόνα που ακολουθεί παρουσιάζεται σχηµατικά η υλοποίηση µε την βοήθεια τρανζίστορ ορισµένων από τις απλούστερες πύλες, NOT, NAND και NOR αντίστοιχα. (α) NOT Πύλη (β) NAND Πύλη (γ) NOR Πύλη Λαµβάνοντας υπόψη την σύµβαση ότι "υψηλό δυναµικό" (volt Vcc) είναι λογικό 1, και ότι "χαµηλό δυναµικό" (γείωση) είναι λογικό 0, θα µπορούσαµε να εκφράσουµε την τιµή εξόδου (0,1) σαν µια συνάρτηση των τιµών εισόδου. Οι βασικές πύλες σε αντιστοιχία µε τις βασικές λογικές πράξεις είναι η πύλη AND, OR και NOT. Στην πύλη AND, το αποτέλεσµα της εξόδου είναι αληθές (λογικό 1) όταν µόνο όταν όλες οι είσοδοι είναι αληθείς. Στην πύλη OR, το αποτέλεσµα της εξόδου είναι αληθές 1
όταν έστω και µια µόνο είσοδος είναι αληθής. Στην πύλη NOT το αποτέλεσµα της εξόδου είναι το αντίστροφο της εισόδου. Είναι δυνατόν να έχουµε και συνδυασµούς των παραπάνω βασικών πυλών. Οι πύλες AND και OR µπορούν να έχουν πολλές εισόδους (συνήθως 2 µέχρι 8) και µια έξοδο. Ένα πρακτικό και λογικό κύκλωµα εξέτασης της πύλης AND ακολουθεί στην παρακάτω εικόνα: Τα σύµβολα που χρησιµοποιούνται για την απεικόνιση των παραπάνω βασικών πυλών καθώς και οι πίνακες αληθείας τους (truth tables), οι οποίοι περιγράφουν την συµπεριφορά τους, δίνονται στο παρακάτω σχήµα: NOT A X 0 1 1 0 AND 0 1 0 1 0 0 1 1 1 OR 1 1 1 NAND 0 0 1 1 1 0 NOR 0 0 1 0 1 0 1 0 0 1 1 0 XOR 1 1 0 XNOR 0 0 1 0 1 0 1 0 0 1 1 1 Λογικές Πράξεις Την εποχή της δηµιουργίας των πρώτων σύγχρονων υπολογιστών (Claude Shannon, 1948), για την κωδικοποίηση της πληροφορίας στα υπολογιστικά συστήµατα εφαρµόστηκαν οι νόµοι της άλγεβρας του Boole (George Boole, 1854). Έτσι λοιπόν στην περιγραφή των κυκλωµάτων λογικών πυλών, όπου οι µεταβλητές και οι συναρτήσεις µπορούν να πάρουν τιµές µόνο 0 και 1 χρησιµοποιείται η άλγεβρα Boole. Οι βασικές λογικές πράξεις µε βάση την άλγεβρα Boole είναι η σύζευξη (AND) και συµβολίζεται µε *, η διάζευξη (OR) και συµβολίζεται µε +, και η άρνηση (NOT) που συµβολίζεται µε -. Παρακάτω ακολουθεί ένας πίνακας µε τις βασικές λογικές πράξεις, λογικά σύµβολα, και την αντίστοιχη συνάρτηση Boolean που τις εκφράζει. A = A A B = X A + B = X A B = X A + B = X A B = X A B = X 2
Στους πίνακες που ακολουθούν δίνονται συνοπτικά ορισµένα από τα θεωρήµατα και ιδιότητες της άλγεβρας Boole και αξιώµατα του Huntington. Θεωρήµατα Άλγεβρας Boole: 1 x.x = x x+x = x 2 x.0 = 0 x+1=1 3 x = x 4 x.y.z = x.(y.z) = (x.y).z (προσεταιριστική ιδιότητα) x+y+z = x+(y+z) = (x+y)+z 5 x+x.y = x (απορρόφησης) x.(x+y) = x 6 x + y = x. y (De Morgan) x. y = x + y Αξιώµατα Huntington: 1 x.1 = 1.x = x 2 x+0 = 0+x = x 3 x.y = y.x 4 x+y = y+x x.(y+z) = (x.y)+(x.z) (επιµεριστική ιδιότητα) 5 x+(y.z) = (x+y).(x+z) 6 x. x = 0 7 x + x = 1 Στον παρακάτω πίνακα δίνονται ακόµα µια φορά συνοπτικά µερικά από τα βασικά θεωρήµατα και ιδιότητας της άλγεβρας Boole, η χρήση των οποίων είναι σηµαντική στα ψηφιακά κυκλώµατα. ΒΑΣΙΚΑ ΘΕΩΡΗΜΑΤΑ ΤΗΣ ΑΛΓΕΒΡΑΣ BOOLE 1 Θεώρηµα της µεταβολής (Commutative Laws) a) A + B = B+ A b) A. B = B.A 2 Θεώρηµα του προσεταιρισµού (Associative Laws) a) A + (B + C) = (A + B) + C b) A. (B. C) = (A. B). C 3 Θεώρηµα του επιµερισµού (Distributive Laws) a) A. (B + C) = (A. B) + (A. C) b) A + (B. C) = (A + B). (A + C) 4 Θεώρηµα της ταυτότητας (Tautology Laws) a) A. A = A b) A + A = A c) A + A =1 d) A = 0 3
5 Θεώρηµα της απορρόφησης (Absorption Laws) a) A + (A. B) = A b) A. (A + B) = A 6 Θεωρήµατα κοινά (Common sense laws) a) 0. A = 0 b) 1 + A = 1 c) 1. A = A d) 0 + A = A 7 Θεωρήµατα του De Morgan (De Morgan's Laws) a) ( A + B) = B b) B = A + B Στη συνέχεια θα δούµε πως µπορούµε να χρησιµοποιήσουµε τις παραπάνω Boolean εκφράσεις στην υλοποίηση λογικών κυκλωµάτων. Λογικά Κυκλώµατα Με κατάλληλη σύνδεση των λογικών πυλών µπορούµε να κατασκευάσουµε τα λογικά κυκλώµατα, τα οποία λέγονται και ψηφιακά αφού κάθε κατάστασή τους υποδηλώνεται µε δύο ψηφία 0 και 1 του δυαδικού συστήµατος. Ας θεωρήσουµε ότι δίνεται η παρακάτω συνάρτηση που περιγράφει ένα λογικό κύκλωµα: AB + AC = X Με βάση την παραπάνω συνάρτηση θα µπορούσαµε να κατασκευάσουµε το παρακάτω λογικό κύκλωµα: Χρησιµοποιώντας την επιµεριστική ιδιότητα για την παραπάνω συνάρτηση θα µπορούσαµε να λάβουµε την παρακάτω απλοποιηµένη της µορφή: A(B+C), και αντίστοιχα το παρακάτω απλοποιηµένο λογικό κύκλωµα: Όπως φυσικά γίνεται κατανοητό από τα παραπάνω, σε κάθε υλοποίηση ενός λογικού κυκλώµατος µε βάση κάποια συνάρτηση που το περιγράφει συνήθως οι σχεδιαστές κυκλωµάτων προσπαθούν να µειώσουν τον αριθµό των πυλών µε συνέπεια την µείωση του κόστους της κατασκευής. Γενικά λοιπόν µπορούµε φυσικά να παραστήσουµε ένα κύκλωµα σαν µια συνάρτηση Boole και µετά να εφαρµόσουµε τους νόµους της άλγεβρας Boole για να την 4
απλοποιήσουµε. Από την τελική αυτή παράσταση µπορούµε να κατασκευάσουµε ένα νέο κύκλωµα. ΠΑΡΑ ΕΙΓΜΑ 1 ίνεται το παρακάτω κύκλωµα: A Y B Ζητείται να υλοποιήσουµε τον πίνακα αληθείας και την εξίσωση που τον περιγράφει. Έχουµε λοιπόν το παραπάνω κύκλωµα µε δύο εισόδους και µια έξοδο, της οποίας η τιµή αποτελεί συνδυασµό των τιµών εισόδου. Συνεπώς, µε βάση την σύνδεση των πυλών η εξίσωση που το περιγράφει και ο πίνακας αληθείας του κυκλώµατος είναι: Y = ( ( B)).( B.( B)) ΕΙΣΟ ΟΙ ΕΞΟ ΟΣ A B Y 1 1 0 Παρατηρώντας την πολυπλοκότητα της παραπάνω εξίσωσης και µετά από απλοποιήσεις εφαρµόζοντας κυρίως το θεώρηµα του De Morgan θα δούµε ότι τελικά θα µπορούσαµε να έχουµε την παρακάτω απλή ισοδύναµη εξίσωση και κύκλωµα: Y = A B Απλοποίηση των εκφράσεων Boole Η άλγεβρα του Boole διατυπώθηκε από τον George Boole (1815-1864) και χρησιµοποιήθηκε στην δεκαετία του '30 στα ψηφιακά κυκλώµατα. Αυτή αποτελεί και την βάση των µεθόδων που χρησιµοποιούµε και στην απλοποίηση των Boolean εκφράσεων. Υπάρχουν βέβαια και άλλες µέθοδοι απλοποίησης όπως οι πίνακες Karnaugh, τα διαγράµµατα Veitch και Venn, κλπ. ΠΑΡΑ ΕΙΓΜΑ 2 ίνεται η ακόλουθη Boolean έκφραση: A. B + B + B = Y Το λογικό κύκλωµα και ο πίνακας αληθείας της παραπάνω έκφρασης είναι τα ακόλουθα: 5
ΕΙΣΟ ΟΙ ΕΞΟ ΟΣ A B Y 1 1 1 Παρατηρώντας την παραπάνω εξίσωση και τον πίνακα αληθείας της, και µετά από απλοποιήσεις εφαρµόζοντας κυρίως το θεώρηµα του Boole θα δούµε ότι τελικά θα µπορούσαµε να έχουµε την παρακάτω απλή ισοδύναµη εξίσωση και κύκλωµα OR πύλης: A + B =Y Βέβαια για τις απλοποιήσεις τις παραπάνω εξίσωσης δεν δυσκολευτήκαµε ιδιαίτερα καθώς απλώς εφαρµόσαµε την επιµεριστική ιδιότητα ( x+(y.z) = (x+y).(x+z) ), ως εξής: B + B + B = Y B + ( B + B) = Y B + (1) = Y ( A + A).( B + A) = Y B + A = Y Στις περισσότερες όµως των περιπτώσεων θα χρειασθεί η συνδυαστική χρήση αρκετών από τα γνωστά µας θεωρήµατα του Boole στις πράξεις και τις µεθόδους απλοποίησης. Αριθµητικά Κυκλώµατα Τα κυκλώµατα που υλοποιούν βασικές αριθµητικές πράξεις σε έναν υπολογιστή αποτελούν τα βασικά λογικά κυκλώµατα. Παρακάτω δίνεται το λογικό κύκλωµα ενός ηµιαθροιστή (half adder) και το λογικό του σύµβολο, για τον υπολογισµό του αθροίσµατος και του κρατουµένου δύο δυαδικών ψηφίων: Κύκλωµα ηµιαθροιστή 6
Ο ηµιαθροιστής δεν µπορεί να χειριστεί το κρατούµενο που προκύπτει από την πράξη της πρόσθεσης δυαδικών µονάδων. Με άλλα λόγια χρειαζόµαστε ένα κύκλωµα που να µπορεί να προσθέσει τρία δυαδικά ψηφία και να µας δώσει το άθροισµα και το κρατούµενο. Αυτό είναι το κύκλωµα του πλήρη αθροιστή (full adder), το οποίο µπορεί να υλοποιηθεί µε την χρήση δύο ηµιαθροιστών. Κύκλωµα πλήρη αθροιστή Σε αυτό το κύκλωµα το κάθε προηγούµενο κρατούµενο (Cp) που προκύπτει θα λαµβάνεται υπόψη στο τελικό αποτέλεσµα της πρόσθεσης. Φυσικά εάν χρειαστεί να προσθέσουµε δύο 8-bit αριθµούς ταυτόχρονα (παράλληλα), καταλαβαίνουµε ότι θα χρειαστούµε αντίστοιχα 8 πλήρη αθροιστές. Παρακάτω δίνεται ένα κύκλωµα σύνδεσης και ανάλυσης του ηµιαθροιστή µε το WorkBench. Λογικά κυκλώµατα αποθήκευσης Όπως γνωρίζουµε µια βασική µονάδα σε ένα υπολογιστικό σύστηµα είναι και η µνήµη. Παρακάτω θα εξετάσουµε µερικά από τα βασικά κυκλώµατα αποθήκευσης στοιχειώδους πληροφορίας (bit storage). Ένα από τα βασικά κυκλώµατα αποθήκευσης είναι το S-R flip flop (ή SR Latch), το οποίο δίνεται παρακάτω (καθώς και ο πίνακας αληθείας και το λογικό του σύµβολο): ΕΙΣΟ ΟΙ ΕΞΟ ΟΣ S R Q 0 0 unsuitable 0 1 0 1 1 no change Η πρώτη είσοδος S (set) λέγεται είσοδος τοποθέτησης και η δεύτερη επαναφοράς R (Reset). Οι έξοδοι Q και Q είναι συµπληρωµατικές. Με την ενεργοποίηση του R η κύρια έξοδος (Q) έρχεται σε κατάσταση 0, ενώ µε ενεργοποίηση του S η κύρια έξοδος έρχεται σε κατάσταση 1. Από τα παραπάνω 7
παρατηρούµε ότι η έξοδος µπορεί να πάρει µια από τις δύο καταστάσεις (0 ή 1), την οποία και µπορεί να διατηρήσει (αποµνηµονεύει) απεριόριστα εάν µάλιστα διατηρήσουµε στις εισόδους του την τιµή λογικό 1. Σχεδιάζοντας και αναλύοντας το παρακάτω S-R κύκλωµα µε το WorkBench θα παρατηρήσουµε ότι όταν τελικά διατηρήσουµε (µε τον δεκαεξαδικό συνδυασµό: 0003, ή ως δυαδικός: 0000000000000011) στις εισόδους του την λογική τιµή 1 (no change), αυτό θα διατηρήσει στην κύρια έξοδό του (Q) την προηγούµενη κατάσταση (1). Εάν και οι δύο είσοδοι επιστρέψουν στην λογική τιµή µηδέν (unsuitable) ταυτόχρονα είναι πολύ πιθανό η έξοδος να πάρει τυχαία µια από τις δύο καταστάσεις. Πέρα από το παραπάνω κύκλωµα αποθήκευσης υπάρχουν και άλλα κυκλώµατα όπως αυτό που δίνεται παρακάτω, ως D flip flop (γνωστό και ως flip flop καθυστέρησης ή χρονιζόµενο D κύκλωµα - clocked D Latch), το οποίο µπορεί να δηµιουργηθεί µε την χρήση ενός S-R flip flop. Η είσοδος D (Data) είναι η είσοδος δεδοµένων, η είσοδος Preset είναι η είσοδος προτοποθέτησης η οποία θέτει την κύρια έξοδο (Q) σε κατάσταση λογικό 1 (Q=1), η 8
είσοδος Clear οδηγεί την έξοδο σε κατάσταση 0 (Q=0), και η είσοδος Clock (ρολόι) υποδεικνύει στο κύκλωµα πότε να λάβει υπόψη του την είσοδο D και πότε όχι. Για όσο χρονικό διάστηµα το σήµα του ρολογιού είναι 0, οι µεταβολές της εισόδου D αγνοούνται, ενώ όταν η τιµή του ρολογιού Clock αλλάζει από µηδέν σε 1, το κύκλωµα του D flip flop συγκρατεί (αποµνηµονεύει) το δεδοµένο που βρίσκεται στην είσοδο. 9