EE201: Digital Circuits and Systemsee201/02_Computer_Codes.pdf · 2010. 2. 15. · 2.1 Binary Coded...
Transcript of EE201: Digital Circuits and Systemsee201/02_Computer_Codes.pdf · 2010. 2. 15. · 2.1 Binary Coded...
EE201: Digital Circuits and Systems 2 Computer Codes page 1 of 22
EE201: Digital Circuits and Systems
Section 2 – Computer Codes
2.1 Binary Coded Decimal (BCD): Definition
• Widely used representation of numerical data in which each digit of a decimal number is represented by a 4-bit binary number
• For N-digit decimal numbers, their BCD representations require 4 * N bits
Decimal BCD N B0 B1 B2 B3
0 0 0 0 01 0 0 0 12 0 0 1 03 0 0 1 14 0 1 0 05 0 1 0 16 0 1 1 07 0 1 1 18 1 0 0 09 1 0 0 1
EE201: Digital Circuits and Systems 2 Computer Codes page 2 of 22
Example
• 2 5 9
• 0010 0101 1001
Decimal to BCD Encoder
• 10 inputs and 4 outputs
• Homework: Implement the encoder using gates
S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 B0 B1 B2 B3
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1
S0 Enc S1
S9
B0
B3
EE201: Digital Circuits and Systems 2 Computer Codes page 3 of 22
BCD to Decimal Decoder
• 4 inputs and 10 outputs
• Homework: Implement the decoder using gates
B0 Dec B1 B2
S0
S9B3
Inputs Outputs B0 B1 B2 B3 S0 S1 S2 S3 S4 S5 S6 S7 S8 S9
0 0 0 0 1 0 0 0 0 0 0 0 0 00 0 0 1 0 1 0 0 0 0 0 0 0 00 0 1 0 0 0 1 0 0 0 0 0 0 00 0 1 1 0 0 0 1 0 0 0 0 0 00 1 0 0 0 0 0 0 1 0 0 0 0 00 1 0 1 0 0 0 0 0 1 0 0 0 00 1 1 0 0 0 0 0 0 0 1 0 0 00 1 1 1 0 0 0 0 0 0 0 1 0 01 0 0 0 0 0 0 0 0 0 0 0 1 01 0 0 1 0 0 0 0 0 0 0 0 0 1
EE201: Digital Circuits and Systems 2 Computer Codes page 4 of 22
2.2 Text Coding
Characters o General term used for letters, digits and punctuation o Each character is assigned a unique numerical code o How many codes are needed? o Digits (10): 0, 1, 2, 3,…, 9 o Lower case letters (26): a, b, c,…, z o Upper case letters (26): A, B, C,…, Z o Punctuation (16): . , ; : ? ! “ ‘ ` [ ] ( ) o Special characters (18): # $ € ¥ £ % ^ & * + - = \ / < > | ~ o Other characters: § © ® ¶ ± ¢ ¼ o Characters for other languages: ß â ç ê ţ Њ љ Ω פ
ASCII code
o 7 bits allocated to store each code o 27 = 128 codes for 128 possible characters o Covers digits, lower and upper case letters,
punctuation, special and other characters o Does not cover characters for other languages
(accents, umlauts, fadas) 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2 SP ! " # $ % & ' ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z | ~ DEL
EE201: Digital Circuits and Systems 2 Computer Codes page 5 of 22
Extended ASCII o Specified by International Standards Organization-ISO o A subset of ISO-8859 that includes several sets of
characters for writing in Cyrillic, Arabic, Hebrew, etc. o Extends ASCII, including additional characters used in
some West European languages such as Irish, French and German
o One byte (8 bits) allocated to store each code o 28 = 256 codes for 256 possible characters o Text encoded in Extended ASCII can be transmitted
through e-mail and be printed on any computer system, being accepted as basis for every text file formats
o E.g. ‘a’ <=> 9710 = 11000012 = 6116
Decimal 9 7
Binary 0 1 1 0 0 0 0 1
Hexadecimal 6 1
EE201: Digital Circuits and Systems 2 Computer Codes page 6 of 22
EE201: Digital Circuits and Systems 2 Computer Codes page 7 of 22
Words (Strings) o A word is represented as a sequence of 0 or more
characters in form of a string or an array of characters o E.g. “ee201” = [‘e’, ‘e’, ‘2’, ‘0’, ‘1’] ASCII = [101, 101, 50,
48, 49] 10 = [65, 65, 32, 30, 31] 16
Binary 0 1 1 0 0 1 0 1 Hex 6 5
Binary 0 1 1 0 0 1 0 1 Hex 6 5
Binary 0 0 1 1 0 0 1 0 Hex 3 2
Binary 0 0 1 1 0 0 0 0 Hex 3 0
Binary 0 0 1 1 0 0 0 1 Hex 3 1
EE201: Digital Circuits and Systems 2 Computer Codes page 8 of 22
2.3 Gray Codes: Definition
• Counting sequences that change only one bit between adjacent steps
Decimal Gray Code N G0 G1 G2 G3 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
EE201: Digital Circuits and Systems 2 Computer Codes page 9 of 22
Binary to Gray Code Conversion Observations
• The 1-st bit of the Gray code (the most significant) is the same as the 1-st bit of the corresponding binary code
• The 2-nd bit of the Gray code is 1 if the 1-st and the 2-nd bit of the corresponding binary code are different and 0 if they are the same
… • The N-th bit of the Gray code is 1 if the (N-1)-th
and the N-th bit of the corresponding binary code are different and 0 if they are the same
Example
• 1 0 1 1 0 ↓ ↓ ↓ ↓ ↓ ↓ ⊕ ⊕ ⊕ ⊕ ↓ ↓ ↓ ↓ ↓
• 1 1 1 0 1
Rules:
• G0 = B0; GN = BN-1 ⊕ BN
EE201: Digital Circuits and Systems 2 Computer Codes page 10 of 22
Implementation: B0
G0
B1 B2 B3 B4
G1 G2 G3 G4
Binary Number Gray Code B0 B1 B2 B3 G0 G1 G2 G3 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0
EE201: Digital Circuits and Systems 2 Computer Codes page 11 of 22
Gray Code to Binary Conversion The 1-st bit of the binary code (the most significant) is the same as the 1-st bit of the corresponding Gray code The 2-nd bit of the binary code is 1 if the 1-st bit of the binary code and the 2-nd bit of the Gray code are different and 0 if they are the same
… The N-th bit of the binary code is 1 if the (N-1)-th bit of the binary code and the N-th bit of the Gray code are different and 0 if they are the same Example
• 1 1 1 0 1 ↓ ↓ ↓ ↓ ↓ ↓ ⊕ ⊕ ⊕ ⊕ ↓ ↓ ↓ ↓ ↓
• 1 0 1 1 0
Rules: B0 = G0; BN = BN-1 ⊕ GN
G0
B0
G1 G2 G3 G4
B1 B2 B3 B4
EE201: Digital Circuits and Systems 2 Computer Codes page 12 of 22
2.4 Parity Codes:
Motivation
When transmitting or storing data, errors can occur and it is highly significant to be able to detect them
Definition
Parity codes are binary sequences resulted from the original sequence of bits (data in binary representation) after the addition of a single parity bit
Types
• Even Parity
The even parity bit is chosen such as the total number of ‘1’ bits in the sequence is even e.g.:
• Odd Parity
The parity bit is such set that the total number of bits equal to ‘1’ in the sequence is odd e.g.:
1 0 1 1 1 0 1 1
1 0 1 0 1 0 0 0
Even parity bit
Odd parity bit
EE201: Digital Circuits and Systems 2 Computer Codes page 13 of 22
Examples
• Even Parity
o E.g. ‘a’ <=ASCII=> 9710 = 11000012
o E.g. 1110100111000012
• Odd Parity
o E.g. ‘a’ <=ASCII=> 9710 = 11000012
ASCII Decimal 9 7
ASCII Binary 1 1 0 0 0 0 1
ASCII Hexa 6 1
Even Parity Code 1 1 1 0 0 0 0 1
Even Parity Code Hex E 1
Binary 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1
Hexa 7 4 E 1
Even Parity Code 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 1
Even Parity Code Hex 7 4 E 1
ASCII Decimal 9 7
ASCII Binary 1 1 0 0 0 0 1
ASCII Hex 6 1
Even Parity Code 0 1 1 0 0 0 0 1
Even Parity Code Hex 6 1
Even parity bit
Even parity bit
Odd parity bit
EE201: Digital Circuits and Systems 2 Computer Codes page 14 of 22
Application
• Transmission Error Detection
Parity Generator Parity
Checker
A
B
C
D
A
B
C
D
Parity Bit Error Indicator
• Notes:
o Using a single parity bit, errors in transmission of binary data sequences (words) can be detected
o Only singular errors can be detected
(errors that affect only one bit) or multiple errors if odd number of bits are affected
o This setup cannot detect where the error
takes place and therefore it cannot be corrected
EE201: Digital Circuits and Systems 2 Computer Codes page 15 of 22
• Error Correction:
o Using a matrix-like setup that makes use
of two sets of parity bits: on each word and on corresponding bits from the run of words respectively can detect and correct singular errors
H Parity S0 S1 S2 S3 S4 S5 S6 S7 Value 0 0 1 0 0 0 0 0 1 ‘A’ 0 0 1 0 0 0 0 1 0 ‘B’ 1 0 1 0 0 0 0 1 1 ‘C’ 0 0 1 0 0 0 1 0 0 ‘D’ 1 0 1 0 0 0 1 0 1 ‘E’ 1 0 1 0 0 0 1 1 0 ‘F’ 0 0 1 0 0 0 1 1 1 ‘G’ 0 0 1 0 0 1 0 0 0 ‘H’ 1 0 0 0 0 1 0 0 0 V Parity
Note: Even parity was used
EE201: Digital Circuits and Systems 2 Computer Codes page 16 of 22
2.5 Hamming Code:
Motivation
Hamming code enables single errors to be detected and corrected
Description
• Employs P parity bits for M data bits, where:
• Parity bits are placed in positions power of 2,
between data bits:
P1, P2, P4, P8, P16, …
• Each parity bit checks those data bits located in positions that, expressed in binary, have ‘1’-s on columns that correspond to that parity bit
Bit position 8 4 2 1 Parity bit 1 0 0 0 1 P1 2 0 0 1 0 P2 3 0 0 1 1 P1, P2 4 0 1 0 0 P4 5 0 1 0 1 P1, P4 6 0 1 1 0 P2, P4 7 0 1 1 1 P1, P2, P48 1 0 0 0 P8 9 1 0 0 1 P1, P8 10 1 0 1 0 P2, P8
12 ++≥ MPP
EE201: Digital Circuits and Systems 2 Computer Codes page 17 of 22
• Therefore parity bits check the following: P1 -> P1, D3, D5, D7, D9, …
P2 -> P2, D3, D6, D7, D10, D11, …
P4 -> P4, D5, D6, D7, D12, D13, D14, D15, …
P8 -> P8, D9, D10, D11, D12, D13, D14, D15, … Encoding and Transmission
• Count number of data bits: M • Determine number of parity bits P, such as:
12 ++≥ MPP
• For each of the P parity bits list the data bits
checked by it and determine its value based on the values of the data bits and of the even or odd parity used
• Place the parity bits between data bits in their
locations forming a Hamming coded sequence:
P1, P2, D3, P4, D5, D6, D7, P8, D9, D10, D11, …
• Transmit the Hamming coded sequence of bits
EE201: Digital Circuits and Systems 2 Computer Codes page 18 of 22
Detection and Correction
• Compute the number of correction bits P given N the length of the Hamming coded sequence, such as:
12 +≥ NP • Compute the value of the correction bits taking
into account the fact that even or odd parity is employed
• Each correction bit checks the same bits from
the code as the parity bits used during encoding C1 -> P1, D3, D5, D7, D9, …
C2 -> P2, D3, D6, D7, D10, D11, …
C4 -> P4, D5, D6, D7, D12, D13, D14, D15, …
C8 -> P8, D9, D10, D11, D12, D13, D14, D15, …
…
• Computes the detection code:
… C8 C4 C2 C1
• This code expressed in binary indicates the position of the bit affected by an eventual singular error and can be used for the correction
• Correction is performed by inverting the value of
the error bit
• Extract original data
EE201: Digital Circuits and Systems 2 Computer Codes page 19 of 22
Example Encoding and Transmission
• Data bits: 1010 • Count number of data bits: M = 4 • Number of parity bits P = 3, such as:
814323 =++≥
• Hamming coded sequence: •
P1 P2 D3 P4 D5 D6 D7
1 0 1 0
C8 C4 C2 C1 Error bit 0 0 0 0 None 0 0 0 1 P1 0 0 1 0 P2 0 0 1 1 D3 0 1 0 0 P4 0 1 0 1 D5 0 1 1 0 D6 0 1 1 1 D7 1 0 0 0 P8 1 0 0 1 D9 1 0 1 0 D10
EE201: Digital Circuits and Systems 2 Computer Codes page 20 of 22
• Compute the P parity bits based on even parity: P1 -> P1, D3, D5, D7 <=> P1, 1, 0, 0 => P1 = 1
P2 -> P2, D3, D6, D7 <=> P2, 1, 1, 0 => P2 = 0
P4 -> P4, D5, D6, D7 <=> P4, 0, 1, 0 => P4 = 1 • Place the parity bits between data bits in their
locations forming a Hamming coded sequence:
• Transmit the Hamming coded sequence of bits
Error Detection and Correction
• Assume received code: 1001010 • Length of the Hamming coded sequence N = 7 • Number of correction bits: P = 3, such as:
8122 3 =+≥= NP
P1 P2 D3 P4 D5 D6 D7
1 0 1 1 0 1 0
P1 P2 D3 P4 D5 D6 D7
1 0 0 1 0 1 0
EE201: Digital Circuits and Systems 2 Computer Codes page 21 of 22
• Compute the value of the correction bits taking
into account the even parity used: C1 -> P1, D3, D5, D7 <=> 1, 0, 0, 0 => C1 = 1
C2 -> P2, D3, D6, D7 <=> 0, 0, 1, 0 => C2 = 1
C4 -> P4, D5, D6, D7 <=> 1, 0, 1, 0 => C4 = 0
• Computes the detection code:
C4 C2 C1 <=> 0 1 1 2 = 3 10 => Error bit D3
• Perform the correction by inverting the value of the error bit
D3 = 1 • Extract the original data:
D3 D5 D6 D7 <=> 1 0 1 0
EE201: Digital Circuits and Systems 2 Computer Codes page 22 of 22
Implementation
P1
P2
D3
P4
D5
D6
D7
C1
C2
C4