Ψηφιακά Συστήματα 2. Κώδικες
Βιβλιογραφία 1. Φανουράκης Κ., Πάτσης Γ., Τσακιρίδης Ο., Θεωρία και Ασκήσεις Ψηφιακών Ηλεκτρονικών, ΜΑΡΙΑ ΠΑΡΙΚΟΥ & ΣΙΑ ΕΠΕ, 2016. [59382199] 2. Floyd Thomas L., Ψηφιακά ηλεκτρονικά, ΣΤΕΛΛΑ ΠΑΡΙΚΟΥ & ΣΙΑ ΟΕ, 2007. [14795] 3. Πογαρίδης Δ., Σχεδίαση Ψηφιακών Συστημάτων, ΙΩΝ, 2004. 4. Κ. Φανουράκης, Γ. Πάτσης, Ο. Τσακιρίδης, Σημειώσεις Θεωρίας, Ψηφιακών Ηλεκτρονικών, 2014. 2
Κώδικες: Εισαγωγή : είναι ένας συστηματικός τρόπος παράστασης πληροφοριών με μεγάλη εφαρμογή στα συστήματα των υπολογιστών και την μεταβίβαση πληροφοριών. Η κωδικοποίηση γίνεται με διάφορους κώδικες ανάλογα με την εφαρμογή. Οι πιο γνωστοί κώδικες: BCD-Binary Coded Decimal, o ASCII-American Standard Code for Information Interchange, ο UNICODE Standard που είναι τμήμα του ISO (93). Οι δυαδικοί κώδικες ανήκουν στις δύο ακόλουθες κατηγορίες ανάλογα με τον τρόπο κατασκευής τους: - κώδικες με βάρη στα bits ανάλογα με την θέση τους - κώδικες χωρίς βάρη (όπως είναι ο κατοπτρικός κώδικας Gray) 3
Κώδικες: Εισαγωγή Μια άλλη χρήση των κωδίκων είναι ο έλεγχος και η διόρθωση σφαλμάτων σε συστήματα ψηφιακής μεταβίβασης (Digital Transmision) ή σε πληροφορίες που μετακινούνται ανάμεσα στα διάφορα τμήματα του υπολογιστή. Ο έλεγχος ή και η διόρθωση σφαλμάτων γίνεται με χρήση ψηφίων πλεονασμού στην λέξη του υπολογιστή. Οι πιο γνωστοί και απλοί κώδικες ελέγχου σφάλματος είναι οι κώδικες άρτιας & περιττής ισοτιμίας. Μετατροπή του 10 δικού στο 2 δικό σύστημα και αντίθετα: ο υπολογιστής έχει τα ειδικά κυκλώματα κωδικοποίησης του δεκαδικού σε δυαδικό (BCD). Κώδικες για αριθμητικές πράξεις: ώστε να απλουστεύουν τα πράγματα στον τομέα αυτό. Π.χ. ο BCD-2421, ο κώδικας με υπερβολή κατά τρία BCD-Χ3 4
Κώδικες: BCD Η κωδικοποίηση των 10 δικών 0-9 στο 2 δικό σύστημα απαιτεί τουλάχιστον τέσσερα (4) δυαδικά ψηφία για να ισχύει η σχέση 10 2 n η οποία αληθεύει για n 4. Ανάλογα με την αντιστοιχία που θα χρησιμοποιήσουμε για την κωδικοποίηση προκύπτει και ένας BCD κώδικας. Από τους 2 4 =16 διαφορετικούς συνδυασμούς από 0 & 1, μόνο οι δέκα πρώτοι χρησιμοποιούνται για την κωδικοποίηση ενώ οι υπόλοιποι 6 είναι κενοί. Για την κατασκευή ενός οποιουδήποτε κώδικα πρέπει να ισχύει ότι το άθροισμα των βαρών του να μην είναι > 15 και < 9, δηλαδή 9 Σ 15 5
BCD-8421 Είναι ένας απλός κώδικας BCD ο οποίος χρησιμοποιεί τους 10 πρώτους δυαδικούς αριθμούς για την κωδικοποίηση των δεκαδικών ψηφίων (λέγεται και ΝBCD-Νatural BCD). O BCD-8421 είναι κώδικας με βάρη (weights). Τα βάρη είναι δυνάμεις του 2 και καθορίζονται ανάλογα με την θέση του δυαδικού ψηφίου στον κώδικα (τα βάρη γράφονται στο πάνω μέρος της στήλης). Τα βάρη εδώ είναι 8, 4, 2, 1 και έχουν την ιδιότητα ότι αν τα αθροίσουμε (για τα αντίστοιχα ψηφία που είναι ένα 1) τότε προκύπτει ο αντίστοιχος δεκαδικός αριθμός σύμφωνα με την σχέση 1.1 από το Κεφάλαιο 1. Π.χ. BCD-8421 : 0 1 1 1 (2) 0 8 + 1 4 +1 2 + 1 1 = 7 (10) 6
BCD-8421 Ονομάζεται και ζυγοσταθμισμένος Για την κωδικοποίηση αριθμού: αντικαθιστούμε κάθε ψηφίο, του αριθμού, με το αντίστοιχο ψηφίο στον BCD- 8421 κώδικα. Π.χ. Ν (10) =412 Ν (2) = 0100 0001 0010 Εύκολη αναγνώριση των δεκαδικών, αλλά ποιο δύσκολος ο υπολογισμός του Σ-9, οπότε είναι δύσκολη και η πράξη της αφαίρεσης. Δεκαδικό ψηφίο 8 4 2 1 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 7
Συμπληρώματα αριθμών Υπάρχουν όχι μόνο για τους δυαδικούς αλλά για οποιοδήποτε σύστημα αρίθμησης με βάση το r. Για έναν αριθμό Χ υπάρχουν δυο ειδών συμπληρώματα ως προς r-1, με Ν ψηφία θα είναι: (r N -1)-X ως προς r, με Ν ψηφία θα είναι: r N -X πρόσθεση μιας μόνάδας και δηλαδή ισούται με Σ- r-1 με Το Σ-9 (συμπλήρωμα ως προς εννέα) ενός αριθμού βρίσκεται αν αφαιρέσουμε όλα τα ψηφία του, κάθε ένα ξεχωριστά, από το 9. Π.χ. Το συμπλήρωμα του 642 ως προς 9 είναι το 357 (στην ουσία η πράξη είναι :999-642) 8
BCD-2421 (Aiken code) Είναι κώδικας με βάρη 2, 4, 2, 1 (με άθροισμα βαρών 9, Sw = 9) και έχει την ιδιότητα να δίνει το συμπλήρωμα ενός δεκαδικού ψηφίου με αντιστροφή των αντίστοιχων δυαδικών ψηφίων του κώδικα. Για τον λόγο αυτό ο κώδικας λέγεται και "αυτοσυμπληρώμενος" (Self Complementing Code). Με την ιδιότητά του αυτή διευκολύνει αρκετά την αφαίρεση των δεκαδικών αριθμών στο σύστημα Σ-9 (συμπληρώματος ως προς εννέα 9). Ο κώδικας BCD-2421 χρησιμοποιείται στις ηλεκτρονικές αριθμομηχανές (τα γνωστά κομπιουτεράκια) Electronic Calculators. Δεκαδικό ψηφίο 2 4 2 1 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 1 0 1 1 6 1 1 0 0 7 1 1 0 1 8 1 1 1 0 9 1 1 1 1 10
BCD-5211 Είναι κώδικας με βάρη 5, 2, 1, 1 (με άθροισμα βαρών 9, Sw = 9) και είναι επίσης "αυτοσυμπληρώμενος" (Self Complementing Code). Π.χ. Στον κώδικα BCD-5211 το 4=0111 με συμπλήρωμα προς 9, είναι το 9-4= 5=1000 (αντιστροφή του 4=0111). Αυτοσυμπληρούμενος κώδικας προκύπτει επίσης αν σε κάθε ψηφίο του BCD-8421 προσθέσουμε το 3. Ο κώδικας που προκύπτει δεν έχει βάρη και καλείται " Υπερβολής κατά τρία "(BCD- excess Three Code). Δεκαδικό ψηφίο 5 2 1 1 0 0 0 0 0 1 0 0 0 1 2 0 1 0 0 3 0 1 0 1 4 0 1 1 1 5 1 0 0 0 6 1 0 1 0 7 1 0 1 1 8 1 1 1 0 9 1 1 1 1 11
Υπερβολής κατά τρία (BCD-eXcess Three Code) Για την κωδικοποίηση ενός δεκαδικού ψηφίου, προσθέτουμε 3 στο ψηφίο αυτό και θεωρούμε τον BCD- 8421. Έχει την ιδιότητα του BCD-2421 για το συμπλήρωμα προς 9, δηλαδή την αντιστροφή όλων των δυαδικών ψηφίων του κώδικα. Παρατηρούμε ότι για την κωδικοποίηση του μηδενός (0) παίρνουμε τον BCD-8421 κώδικα του 3, το 0 0 1 1 και όλα τα άλλα ψηφία κωδικοποιούνται με την συνέχιση της αρίθμησης στο δυαδικό σύστημα από 0 0 1 1 και πάνω. Δεκαδικό ψηφίο BCD excess 3 0 0 0 1 1 1 0 1 0 0 2 0 1 0 1 3 0 1 1 0 4 0 1 1 1 5 1 0 0 0 6 1 0 0 1 7 1 0 1 0 8 1 0 1 1 9 1 1 0 0 13
καθρέφτης τα 3 τελευταία ψηφιά GRAY Είναι κώδικας χωρίς βάρη και ανήκει στους κώδικες μοναδιαίας απόστασης (Unit Distance Code). Το σημαντικό χαρακτηριστικό του είναι ότι μεταξύ δυο διαδοχικών κωδικών αριθμών αλλάζει ένα και μόνο bit. Χρησιμοποιείται σε κώδικες πληροφοριών. Ο Gray λέγεται και ανακλώμενος δυαδικός κώδικας (Reflected Binary Code), γιατί τα τρία (3) δεξιότερα ψηφία του κώδικα, είναι συμμετρικά πάνω και κάτω από την διαχωριστική γραμμή. Η πιθανότητα λάθους αφού σε κάθε μεταβολή αλλάζει ένα μόνο ψηφίο, σε αντίθεση με τον BCD-8421 όπου π.χ. από το 7 στο 8 αλλάζουν 4 ψηφία (4 bits) 0111 -> 1000 Δεκαδικό ψηφίο GRAY 0 0 0 0 0 1 0 0 0 1 2 0 0 1 1 3 0 0 1 0 4 0 1 1 0 5 0 1 1 1 6 0 1 0 1 7 0 1 0 0 8 1 1 0 0 9 1 1 0 1 10 1 1 1 1 11 1 1 1 0 12 1 0 1 0 13 1 0 1 1 14 1 0 0 1 15 1 0 0 0 14
καθρέφτης τα 3 τελευταία ψηφιά GRAY Η μετατροπή του δυαδικού σε Gray γίνεται με την πρόσθεση ανά δύο των ψηφίων και αγνόηση του κρατούμενου π.χ 1 1 1 0 1 0 0 1 ενώ το πρώτο ψηφίο μένει όπως είναι, ή μένει ίδιο το Π.Σ.Ψ. του δυαδικού και τα επόμενα προκύπτουν από την σχέση G i B i 1 B δηλαδή G 3 = B 3, G 2 = B 3 +B 2, G 1 = B 2 +B 1, G 0 = B 1 +B 0 i Δεκαδικό ψηφίο GRAY 0 0 0 0 0 1 0 0 0 1 2 0 0 1 1 3 0 0 1 0 4 0 1 1 0 5 0 1 1 1 6 0 1 0 1 7 0 1 0 0 8 1 1 0 0 9 1 1 0 1 10 1 1 1 1 11 1 1 1 0 12 1 0 1 0 13 1 0 1 1 14 1 0 0 1 15 1 0 0 0 15
καθρέφτης τα 3 τελευταία ψηφιά GRAY Δεκαδικό ψηφίο GRAY Η αντίστροφη μετατροπή Gray σε δυαδικό γίνεται με την πρόσθεση ανά δύο των ψηφίων διαγώνια με αγνόηση του κρατούμενου, ενώ το πρώτο ψηφίο μένει όπως είναι Π.χ. 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 1 ή μένει το ίδιο το Π.Σ.Ψ. του αριθμού GRAY και τα υπόλοιπα προκύπτουν από την σχέση B i B i 1 G i 0 0 0 0 0 1 0 0 0 1 2 0 0 1 1 3 0 0 1 0 4 0 1 1 0 5 0 1 1 1 6 0 1 0 1 7 0 1 0 0 8 1 1 0 0 9 1 1 0 1 10 1 1 1 1 11 1 1 1 0 12 1 0 1 0 13 1 0 1 1 14 1 0 0 1 15 1 0 0 0 16
Κώδικες BCD Δεκαδικό ψηφίο 8 4 2 1 7 4 2 1 2 4 2 1 5 2 1 1 GRAY BCD excess 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 2 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 3 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 4 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 5 0 1 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 6 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 7 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 1 0 8 1 0 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 0 1 1 9 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 10 1 1 1 1 11 1 1 1 0 12 1 0 1 0 13 1 0 1 1 14 1 0 0 1 15 1 0 0 0 17
Κώδικες BCD Στην κωδικοποίηση η μετατροπή ενός δυαδικού αριθμού σε κώδικα BCD γίνεται με την μετατροπή κάθε ψηφίου του στον αντίστοιχο κώδικα. Π.χ Το 275 (10) να μετατραπεί στον BCD-8421 Γράφουμε 2 7 5 0010 0111 0101 Π.χ Το 275 (10) να μετατραπεί στον BCD-Χ3. Γράφουμε 2 7 5 0101 1010 1000 Π.χ Το 275 (10) να μετατραπεί στον BCD-2421 Γράφουμε 2 7 5 0010 1101 1011 Μειονέκτημα: η παράσταση αριθμών σε BCD κώδικες απαιτεί 12 ψηφία ενώ χρειάζεται μόνο 9 ψηφία για την παράσταση του αριθμού στο δυαδικό σύστημα. Επίσης απαιτεί περισσότερα κυκλώματα Ένας αριθμός BCD δεν είναι δυαδικός αλλά δυαδικά-κωδικοποιημένος αριθμός. 18
ASCII Ο ASCII (American Standard Code for Information Interchange) : μεγάλη χρήση στους μίνι και μίκρο υπολογιστές. Οι βασικοί αλφαριθμητικοί χαρακτήρες είναι 84 (10 αριθμοί 0,1,2,3,4,5,6,7,8,9 τα 26 κεφαλαία γράμματα Α,Β,..,Ζ και 26 μικρά a,b,..,z και περίπου 22 ειδικοί χαρακτήρες). Υιοθετήθηκε από όλους τους κατασκευαστές μικροϋπολογιστών και χρησιμοποιήθηκε ευρύτατα. Αρχικά χρησιμοποίησε 7bit (2 7 =128 διαφορετικοί χαρακτήρες) το 8 ο bit ήταν για τον έλεγχο ισοτιμίας. Στη συνέχεια έγινε 8bit (256 χαρακτήρες) ASCII-8 20
ASCII 000 001 010 011 100 101 110 111 0000 NUL DLE SP 0 @ P ` p 0001 SOH DC1! 1 A Q a q 0010 STX DC2 " 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BEL ETB ' 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS ' < L \ l 1101 CR GS - = M ] m } 1110 SO RS. > N ^ n ~ 1111 SI US /? O - o DEL 21
Unicode Προέρχεται από το σύνθεση του Παγκόσμιος ή Οικουμενικός (Universal) και του Μοναδικός (Unique) Σχεδιάστηκε για να καλύψει όλες τις γλώσσες του κόσμου Διαθέτει σταθερό μήκος 16 bits για κάθε χαρακτήρα κατά συνέπεια μπορεί να παραστήσει 2 16 = 65.536 διαφορετικούς χαρακτήρες Οι πρώτες τιμές αντιστοιχούν στους χαρακτήρες του κώδικα ASCII και ακολουθούν οι χαρακτήρες του Ελληνικού, Κυριλλικού, Εβραϊκού, Αραβικού, κά σήμερα χρησιμοποιείται ευρέως 22
Κώδικες BCD Άσκηση 2.1: 1. Να μετατραπούν οι παρακάτω αριθμοί a) 11101011001 b) 10011011 σε ισοδύναμους αριθμούς στον BCD-8421, BCD-2421, BCD-Χ3 και GRAY 2. Να μετατραπεί ο Ν (10) = 1985 στον BCD-8421 και στον BCD-Χ3 3. Να μετατρέψετε τον δυαδικό 1101101101 στον GRAY 4. Να μετατρέψετε τον GRAY 110110101 σε δυαδικό 23
Κώδικες BCD Άσκηση 2.1: 1. Να μετατραπούν οι παρακάτω αριθμοί a) 11101011001 b) 10011011 σε ισοδύναμους αριθμούς στον BCD-8421, BCD-2421, BCD-Χ3 και GRAY 2. Να μετατραπεί ο Ν (10) = 1985 στον BCD-8421 και στον BCD-Χ3 3. Να μετατρέψετε τον δυαδικό 1101101101 στον GRAY 4. Να μετατρέψετε τον GRAY 110110101 σε δυαδικό ΛΥΣΗ 1. a) 11101011001 : ΒCD-8421 -> (759) 111 0101 1001, ΒCD-2421 -> 1101 1011 1111, ΒCD-Χ3 -> 1010 1000 1100, GRAY -> 10011110101 b) 10011011 : ΒCD-8421 -> (9απροσδιόριστο). GRAY -> 11010110 2. Ο Ν 10 =1985 στον ΒCD-8421 είναι 0001 1001 1000 0101 και στον ΒCD-Χ3 είναι 0100 1100 1011 1000 3. Ο αντίστοιχος GRAY είναι 1011011011. 4. Ο αντίστοιχος δυαδικός είναι 100100110. 24
Αναφορές 1. Φανουράκης Κ., Πάτσης Γ., Τσακιρίδης Ο., Θεωρία και Ασκήσεις Ψηφιακών Ηλεκτρονικών, ΜΑΡΙΑ ΠΑΡΙΚΟΥ & ΣΙΑ ΕΠΕ, 2016. [59382199] 2. Floyd Thomas L., Ψηφιακά ηλεκτρονικά, ΣΤΕΛΛΑ ΠΑΡΙΚΟΥ & ΣΙΑ ΟΕ, 2007. [14795] 3. Κ. Φανουράκης, Γ. Πάτσης, Ο. Τσακιρίδης, Σημειώσεις Θεωρίας, Ψηφιακών Ηλεκτρονικών, 2014. 25