Boolesche Algebra und Schaltalgebra
Grundlagen der technischen Informatik Kapitel 2 – Codierung
Prof. Dr.-Ing. Axel Hunger Pascal A. Klein, M.Sc.
Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2. Codierung ........................................................................................ 3 2.1 Einführung in die Codierung .................................................. 3 2.2 Zahlencodes ............................................................................ 4 2.2.1 BCD-Code (Binary Coded Decimal Code) ........................ 7 2.2.2 Aiken-Code......................................................................... 9 2.2.3 3-Exzess-Code .................................................................. 10 2.2.4 Gray-Code ........................................................................ 11 2.2.5 Zusammenfassung ............................................................ 14 2.3 Zeichencodes ........................................................................ 15 2.3.1 Fernschreibecode .............................................................. 16 2.3.2 ASCII................................................................................ 19 2.3.3 EBCDIC ........................................................................... 20 2.4 Codeumsetzer ....................................................................... 22
2 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2.
Codierung
2.1
Einführung in die Codierung
Definition: Code Ein Code ist eine Vorschrift zur eindeutigen Zuordnung der Zeichen einer Menge A (Ausgangsmenge) zu denjenigen Zeichen einer Menge B (Zielmenge). Die Zuordnung muss nicht eindeutig umkehrbar sein, obwohl sie es in den meisten Fällen ist. Zusammengesetzte Zeichen werden dabei als Codewörter bezeichnet. Codierungsregeln legen fest, wie die Zielmenge bei bekannter Ausgangsmenge gebildet wird. Die Codierung dient: •
dem zweckmäßigen und einfachen Übertragen und Verarbeiten von Informationen,
•
zur Darstellung der Informationen mit einer möglichst geringen Anzahl von Zeichen,
•
dem Erzielen einer gesicherten Datenübertragung.
3 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2.2
Zahlencodes
Von den Zahlencodes sind die Tetradischen1 Codes die am häufigsten verwendeten Codes. Sämtliche Tetradischen Codes verwenden zur Codierung eines beliebigen numerischen Zeichens (einer Ziffer) stets 4 Bit. Sie werden vorrangig zur Darstellung der dezimalen Ziffern benutzt. Die vier Bit zur Darstellung der Dezimalziffern werden als Tetrade bezeichnet. Mit diesen 4 Bit lassen sich 24 = 16 Binärkombinationen bilden. Die zur Darstellung der Dezimalzahlen 0-9 nicht benötigten sechs Tetraden werden als Pseudotetraden bezeichnet. Zur Darstellung einer mehrstelligen Dezimalzahl mittels der Binärzahlen 0 und 1 wird für jede Dezimalstelle eine Tetrade (4 Bit) verwendet. Die Tetradische Codes sind auf ihre unterschiedlichen Anwendungsgebiet abgestimmt. Einige von Ihnen beruhen auf dem Dualsystem, während bei anderen die Stellenwerte nicht mit denen des Dualsystems übereinstimmen. Die wichtigsten Tetradischen Codes sind im Folgenden zum besseren Vergleich in einer gemeinsamen Tabelle 3.1 dargestellt. In der zweiten Zeile sind jeweils die Stellenwerte angegeben. Die Codes sind hinsichtlich ihrer Eignung für diverse Anwendungen auf die folgenden Merkmale hin zu überprüfen. Je mehr Merkmale auf einen Code zutreffen, desto vielseitig anwendbar wird er. • Bewertbarkeit: Die Umwandlung einer binär codierten Zahl ist einfacher, wenn jeder Binärstelle eine Wertigkeit zugeordnet ist. • Komplementierbarkeit: Eine Subtraktion innerhalb einer Rechenanlage geschieht in der Regel durch Addition des Komplements. Daher ist zum Rechnen ein Code von Vorteil, bei dem das (B-1)-Komplement ohne Schwierigkeiten gebildet werden kann.
1
abgeleitet vom griechischen tetra = vier 4 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
• Konvertierbarkeit: Oftmals müssen binär verschlüsselte Dezimalzahlen in eine Dualzahl konvertiert werden. Dies sollte daher so leicht wie möglich von statten gehen. • Symmetrie: Ein Code ist symmetrisch, wenn seine Tetraden bezüglich der Symmetrielinie(vgl. Tabelle 3.1) symmetrisch ist. Mit anderen Worten wird ein Codewort invertiert, so entsteht das unechte Komplement dieses Codeswortes. Dies wirkt sich vorteilhaft auf arithmetische Operationen aus (vgl. Merkmal Komplementierbarkeit). • Additionsregeln, Übertragsbildung: Entsteht bei der Addition zweier Dezimalzahlen ein Übertrag zur nächst höheren Dezimalstelle, so sollte bei der Addition der entsprechend codierten Dualzahlen ebenfalls ein Übertrag in die nächst höhere Tetrade entstehen. Hex.
Dual
BCD
Aiken
3-Exzess
Gray
8421
8421
2421
keine
keine
0
0
0000 0 0000
0
0000
Pseudo-
0
0000
1
1
0001 1 0001
1
0001
tetraden
1
0001
2
2
0010 2 0010
2
0010
3
0010
3
3
0011 3 0011
3
0011
0
0011
2
0011
4
4
0100 4 0100
4
0100
1
0100
7
0100
5
5
0101 5 0101
2
0101
6
0101
6
6
0110 6 0110
3
0110
4
0110
7
7
0111 7 0111
Pseudo-
4
0111
5
0111
8
8
1000 8 1000
tetraden
5
1000
9
9
1001 9 1001
6
1001
Pseudo-
A
10
1010
7
1010
tetraden
B
11
1011
C
12
1100
D
13
1101
E
14
F
15
Symmetrielinie
5
1011
8
1011
Pseudo-
6
1100
9
1100
tetraden
7
1101
1110
8
1110
Pseudo-
Pseudo
1111
9
1111
tetraden
tetraden
8
1100
9
1101
Tabelle 2.1: Tetradische Codes 5 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
Die Addition läuft bei allen Zahlencodes nach dem selben Grundprinzip ab. Summanden
Beginn
in Tetraden zerlegen & niedrigstwertige auswählen
aktuelle Tetraden
tetradenweise Addition bis alle addiert
duale Addition
Überprüfung & Korrektur
Übertrag
nächst höhere Tetrade auswählen
tetradenweise Addition
Fertig
Endergebnis als Tetraden
Abbildung 2.2:Addition bei Zahlencodes (nach DIN 66001) Die gegebenen Summanden werden ziffernbzw. tetradenweise dual addiert. Bei der dualen Addition der 6 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
einzelnen Tetraden werden diese wie zwei vorzeichenlose Dualzahlen der Wortlänge 4 Bit behandelt. Die Addition der gegebenen Zahlen beginnt stets mit den niedrigstwertigen Tetraden der beiden Summanden. Nach der dualen Addition dieser Tetraden werden abhängig vom verwendeten Zahlencode verschiedene Überprüfungen durchgeführt. Durch diese Überprüfungen wird festgestellt, ob eine Korrekturrechnung für die gerade berechnete Tetrade durchgeführt und ob ein Übertrag in die nächst höhere Tetrade berücksichtigt werden muss. Erst danach kann nach selbigem Verfahren mit der Addition der nächst höheren Tetrade fortgefahren werden, wobei hierbei nun ggf. auch noch ein Übertrag zu addieren ist. Der Prozeß "Überprüfung & Korrektur" wird in den folgenden Unterkapiteln für die verschiedenen Zahlencodes genauer spezifiziert. 2.2.1 BCD-Code (Binary Coded Decimal Code) Die Abkürzung BCD steht für binär codierte Dezimalzahlen. Dementsprechend ist der BCD-Code so aufgebaut, dass jede Dezimalziffer 0-9 einfach als Dualzahl geschrieben wird. Daher handelt es sich bei diesem Code auch um eine direkte duale Verschlüsselung. Die Stellenwerte der Tetraden entsprechen demzufolge genau denen des Dualsystems, nämlich (von links nach rechts gelesen): 23 =8, 22 =4, 21 =2, 20 =1. Aufgrund dieser Stellenwertigkeit wird der BCD-Code auch 8-4-2-1-Code genannt. Beispiel: Die vierstelligen Dezimalzahl 1968 lautet im BCD-Code folgendermaßen: 1
9
6
8
0001 1001 0110 1000 Eine Komplementbildung ist ohne weiteres nicht möglich. 7 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
Die Verfeinerung des Prozesses "Überprüfung & Korrektur" sieht für den BCD-Code wie folgt aus:
ja
Summe =PT? nein
ja
Übertrag
nein
+0II0
keine Korrektur
Abbildung 2.3: Verfeinerung des Prozesses "Überprüfung & Korrektur" für den BCD-Code Tritt bei der dualen Addition ein Übertrag in die nächst höhere Tetrade auf oder entspricht das Additionsergebnis einer Pseudotetrade (PT), so muss eine Korrekturaddition (+610 bzw. + 01102) durchgeführt werden. Beispiel: Addition im BCD-Code 28936 + 48283 Übertrag 1. Summation: Pseudotetrade: Tetraden-Übertrag: Korrektur: Übertrag 2. Summation: = 77219
0010 0100
1000 1000
1001 0010
0011 1000
0111 nein nein
0000 nein ja 0110 1 0111 7
1011 ja
1011 ja
+0110 1111 0010 2
+0110 11 0001 1
1
0111 7
0110 0011
11
1001 nein nein 1001 9
8 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2.2.2
Aiken-Code
Beim Aiken-Code handelt es sich um einen symmetrischen Code. Ungerade Dezimalziffern sind genauso wie beim BCDCode durch eine 1 in der niedrigstwertigen Binärstelle gekennzeichnet. Die Binärstellen des Aiken-Code haben (von links nach rechts gelesen) die Stellenwerte 2, 4, 2, 1. Deshalb wird der Aiken-Code auch 2-4-2-1-Code genannt. Aufgrund der symmetrischen Struktur dieses Codes kann das Komplement einfach durch bitweise Invertierung eines Codewortes gebildet werden. Die Verfeinerung des Prozesses "Überprüfung & Korrektur" sieht wie folgt aus: Hierbei wird überprüft, ob das Ergebnis der dualen Addition einer Pseudotetrade (PT) entspricht. Ist dies der Fall, so muss überprüft werden, ob ein Übertrag vorlag. Falls ein Übertrag entstanden ist, wird die Zahl 01102 (610) subtrahiert, ansonsten wird diese Zahl addiert.
ja
ja
Übertrag
Summe =PT?
nein
nein
-0II0
+0II0
keine Korrektur
Abbildung 2.4: Verfeinerung des Prozesses "Überprüfung & Korrektur" für den Aiken-Code 9 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
Falls ein Übertrag in die nächst höherer Tetrade entsteht, wird dieser auf jeden Fall bei der dualen Addition der nächst höherer Tetrade berücksichtigt. Beispiel: Addition im Aiken-Code
28936 0010 + 48283 0100 1 Übertrag 1. Summation: 0111 Pseudotetrade: ja Tetraden-Übertrag: nein Korrektur: +0110 Übertrag 11 2. Summation: 1101 = 77219 7 2.2.3
1110 1110
1111 0010
0011 1110
11 1
1111
11
1101 nein ja
0010 nein ja
0001 nein ja
1111 nein nein
1101 7
0010 2
0001 1
1111 9
1100 0011
3-Exzess-Code
Der 3-Exzess-Code entsteht aus der Addition der Dualzahl 00112 zu den Worten des BCD-Codes. Hierbei handelt es sich ebenfalls um einen symmetrischen Code, der jedoch im Gegensatz zum BCD- oder Aiken-Code keine Stellenwertigkeit aufweist. Das Komplement kann einfach durch bitweise Invertierung eines Codewortes gebildet werden. Bei der Addition zweier Dezimalzahlen im 3-Exzess-Code, muss nicht geprüft werden, ob eine Pseudotetrade erzeugt wurde. Lediglich das Auftreten eines Übertrages muss kontrolliert werden (vgl. folgende Abb. 3.5). Der gegebenenfalls entstandene Übertrag wird auf jeden Fall bei der dualen Addition der nächst höherer Tetrade berücksichtigt.
10 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
ja
Übertrag
+00II
nein
-00II
Abbildung 2.5: Verfeinerung des Prozesses "Überprüfung & Korrektur" für den 3-Exzess-Code Beispiel: Addition im 3-Exzess-Code 28936 0101 1011 1100 0110 1001 + 48283 0111 1011 0101 1011 0110 111 1111 11 Übertrag 1111 1. Summation: 1101 0111 0010 0001 1111 Tetraden-Übertrag: nein ja ja ja nein Korrektur: -0011 +0011 +0011 +0011 -0011 Übertrag 1 111 1 11 2. Summation: 1010 1010 0101 0100 1100 = 77219 7 7 2 1 9 2.2.4 Gray-Code Der Gray-Code findet weniger Einsatz in arithmetischen Operationen, sondern wird hauptsächlich für die Analog-DitalUmsetzung benutzt. Der Gray-Code ist ein einschrittiger Code, d.h. beim Übergang von einem Codewort auf das nächstfolgende ändert sich stets nur ein einziges Bit (Binärstelle). Daher können während der Übergänge keine Zwischenwerte auftreten, wie dies beispielsweise beim BCD-Code beim Übergang von dezimal 7 (01112) nach 8 (10002) geschehen kann. In diesem Fall ändern sich nämlich vier Binärstellen auf einmal, so daß kurzzeitig Zwischenwerte auftreten können. Im Extremfall sind dies die 0 (00002) oder die 15 (11112). Dies kann dann zu erheblichen Fehlern führen. 11 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
Der von E. Gray entwickelte Code wurde von Glixon so geändert, dass bei einem Übergang von dezimal 9 nach 0 sich ebenfalls nur eine Binärstelle ändert, und der Code damit zyklisch wird. Dezimalzahl
ursprünglicher Gray-Code
zyklischer Code nach Glixon
0
0000
0000
1
0001
0001
2
0011
0011
3
0010
0010
4
0110
0110
5
0111
0111
6
0101
0101
7
0100
0100
8
1100
1100
9
1101
1000
Der Gray-Code wird z.B. bei digitalen Meßwaagen, Winkelgebern etc. eingesetzt. In der folgenden Grafik ist eine mit dem Glixon-Code codierte Winkelscheibe abgebildet. Die vier konzentrischen Ringe stellen die vier Binärstellen dar. Der innerste Ring repräsentiert dabei das höchstwertige Bit und ein graues Kreissegment entspricht einer logischen 1. Der aktuelle Wert kann über eine Fotozelle (Scanner) ermittelt werden. Der Gray-Code läßt sich rechnertechnisch aus den Dualzahlen sowohl mittels eines Programms (SW) als auch mit einem Rechenwerk (HW) generieren.
12 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
9
0 1
8
7
2
6
3 5
4
Abbildung 2.6: Winkelscheibe mit Glixon-Code
13 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2.2.5 Zusammenfassung Die folgende Tabelle stellt nochmals die kennengelernten Tetraden-Codes bezüglich ihrer Merkmale gegenüber. Merkmal
BCD Code
Aiken Code
3-Exzess Code
Gray-Code
schlecht, da die Codes keine Bewertbar- gut, da die Codes Stellenwerte aufweisen Stellenwerte aufweisen keit einfache Umrechnung durch findet hier keine Komplement schwierig, da Vertauschen von 1en und 0en in Anwendung -bildung, d.h. eine jeder Stelle, da symmetrische Codes Subtraktion Umrechnung notwendig ist aufwendig Konvertier- direkt identisch Fallunterscheidung einfach immer nötig => ggf. 00112 barkeit Korrekturaddition subtrahieren nicht vorhanden vorhanden nicht vorhanden Symmetrie schwierig, da das Auftreten von einfach, da die schwierig, Code Addition sechs unterschiedlichen PseudoKorrektur nur vom wird jedoch Tetraden erkannt werden muß. Übertrag abhängt i. d . R . nicht für Arithmetik genutzt.
Weiterführende Frage: Wie könnte für die einzelnen Zahlencodes Rechenvorschrift für die Subtraktion lauten?
eine
14 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2.3
Zeichencodes
Die Aufgabe alphanumerischer Codes ist die Darstellung und Übertragung von Buchstaben und Ziffern. Hierzu werden in der Praxis auch Zeichen mit besonderer Bedeutung, also Sonderzeichen, gezählt. Der Symbolumfang beträgt daher üblicherweise mindestens: 26 Buchstaben 15 Satzzeichen 10 Sonstige ⎯⎯⎯⎯⎯⎯ 51 Symbole Hieraus ergibt sich eine erforderliche mindestens ld [51] ≈ 5,6 => 6 Bit.
Wortlänge
von
Aus den unterschiedlichen Anforderungen und Möglichkeiten der Datenübertragung in Netzen der Telekommunikation wurden mehrere internationale Normen entwickelt. Je nach historischem Stand der Technik und vorrangiger Aufgabe entstanden Codes von verschiedenem Umfang: Bezeichnung des Codes •
Wortlänge 5 bit
Fernschreibcode CCITT Nr. 2 (5 Spurlochstreifencode, 1932) 26 Buchstaben bzw. Zahlen&Sonderzeichen + 2xUmschalten + Zwischenraum + Lochstreifentransport
•
7 bit
CCITT Nr. 5 ISO-7-Bit-Code 128 Zeichen (US)ASCII (American Standard Code for Information Interchange)
•
EBCDIC-Code (Extended Binary Coded Decimal Interchange Code)
8 bit
•
IBM-Zeichensatz für den PC
8 bit 15
Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2.3.1 Fernschreibecode Der Fernschreibecode oder Lochstreifencode ist der älteste der genannten Codes. Die folgende Abbildung zeigt exemplarisch einen Lochstreifenabschnitt, der die Nachricht "Komm um 13 Uhr" verschlüsselt.
Zwischenraum
Umschaltung Zahl
Buchst
K OMM UM 1 3 • • • • • • • • • • • x x x x x x x x x x x x x x x • • • • • • • • • • • • • • • • • • • • • • • •
UHR Klartext 1. Informat.spur • 2. Informat.spur • • x x x x x Transportlochung 3. Informat.spur • • 4. Informat.spur • 5. Informat.spur •
Die kleineren Löcher in der Mitte des Lochstreifens dienen dem Transport des Lochstreifens (Transportlochung) und ergeben gleichzeitig eine Art Takt für die Codewortfolgen. Ein Zeichen der codierten Nachricht entspricht einer Spalte auf dem Lochstreifen (1.-5. Informationsspur). Die folgende Tabelle gibt einen Überblick über die so verschlüsselbaren Zeichen. Lochstreifencode, CCITT-Code Nr. 2:
16 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
Nummer des
Informationsstellen
Code-
Trans port und Takt
Worts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
Codierte s Symbol
1 • •
2 • •
• • • •
• •
•
• • • •
• • •
• • • • • •
• • •
T x x x x x x x x x x x x x x x x x x x x x x x x x x x
3
•
•
4 • • • • •
• • • • • • •
•
• •
• • • • •
• • • • • • •
• •
•
Ziffern und Sonderzeichen
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
/ ?
Buchstaben & Sonderzeichen 1 0 0 4 @ A B C D E F G H I J K L M N O
1 0 1 5 P Q R S T U V W X Y Z [ \ ] ^ _
1 1 0 6 ` a b c d e f g h i j k l m n o
1 1 1 7 p q r s t u v w x y z { ⏐ } ~ DEL
Tabelle 2.4: CCITT-Code Nr. 5, auch ASCII genannt. 2.3.3
EBCDIC
Der EBCDI-Code (Extended Binary Coded Decimal Interchange Code) wurde von IBM entwickelt. Er erfüllt ähnliche Aufgaben wie der ASCII-Code, verfügt jedoch über deutlich mehr Steuerzeichen für die Steuerung innerhalb von Rechnersystemen. Auch hier soll auf die Bedeutung der Steuerzeichen nicht näher eingegangen werden. 20 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
8
0
0
1
1
7
0
1
0
1
6
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
5
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
4
3
2
1
0
0
0
0
NUL
DEL
DS
0
0
0
1
SOH
DC1
SOS
0
0
1
0
STX
DC2
FS
0
0
1
1
ETX
TM
0
1
0
0
PF
RES
BYP
0
1
0
1
HT
NL
0
1
1
0
LC
0
1
1
1
DEL
1
0
0
0
1
0
0
1
1
0
1
1
0
1
SP
-
0
/
a
j
A
J
b
k
s
B
K
S
2
c
l
t
C
L
T
3
PN
d
m
u
D
M
U
4
LF
RS
e
n
v
E
N
V
5
BS
ETB
UC
f
o
w
F
O
W
6
IL
ESC
EOT
g
p
x
G
P
X
7
CAN
h
q
y
H
Q
Y
8
RLF
EM
i
r
z
I
R
Z
9
0
SMM
CC
SM
1
1
VT
CU1
CU2
1
0
0
FF
IFS
1
1
0
1
CR
IGS
ENQ
1
1
1
0
SO
IRS
ACK
1
1
1
1
SI
IUS
BEL
SYN
¢
!
CU3
.
$
,
DC4
S1 = f(X3, X2, X1, X0) S2 = f(X3, X2, X1, X0) . . . S7 = f(X3, X2, X1, X0)
2
Schritt 3:
Vereinfachung der Funktionsterme: Entweder jeder für sich alleine betrachtet oder unter Berücksichtigung gemeinsamer Ausdrücke (Funktionsbündel2)
Schritt 4:
Fertigung der Schaltung
Dies ergibt ggf. Vorteile für die spätere hardwaremäßige Realisierung. 23 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik
Codierung
2. Implementierung mittels Software: 1. Möglichkeit: Schritt 1: Festlegung des Codes, Codeumsetzung ist
der
Zielcode
Schritt 2:
Aufstellen der Zuordnungstabelle
Schritt 3:
Programmierung als table-look-up-Prozeß
der
Schritt 4: Compilieren bzw. Assemblieren des SourceCodes 2. Möglichkeit: Schritt 1: Festlegung des Codes, Codeumsetzung ist
der
Zielcode
der
Schritt 2:
Entwurf eines Algorithmus zur Codeumsetzung
Schritt 3:
Implementierung des Algorithmus
Schritt 4: Compilierung bzw. Assemblieren des SourceCodes Das Prinzip der Implementierung mittels Hardware verdeutlicht die folgende Abbildung.
input: X3aXb2 X c1 dX0
S1 S3
Decoder
S2 S4
S6
S5 S7
Weiterführende Frage: Entwickle eine Schaltung für den Decoder der obigen Schaltung 24 Prof. Dr.-Ing. Axel Hunger
Grundlagen der Technischen Informatik