CPEG 210
Digital Logic Design
Dr. Jibran K. Yousafzai
Office – A209, Ext. – 3719
E-mail – jyousafzai@auk.edu.kw
Chapter 1
Digital Systems & Binary Numbers
Goals
• The purpose of this course is that you:
–Learn what’s under the hood of digital
systems
–Learn the principles of digital design
–Gain an understanding of combinational and
sequential circuits
–Understand basic memory organization and
programmable logic
Chapter 1 :: Topics
• Background
• Digital vs. Analog
• Logic levels
• Number systems and conversions
• Conversions involving fractions
• Operations
• Coding
Background
• Digital systems have revolutionized our world
– Cell phones, Internet, rapid advances in medicine, etc.
• The semiconductor industry grew from $21 billion in 1985 to $213 billion
in 2004 and is expected to reach over $300 billion by 2013
• It enables the generation of some
$1,200 billion in electronic systems
business and $5,000
billion in services, representing close
to 10% of world GDP
The Digital
Abstraction
• Most physical variables
are continuous, for
example
– Voltage on a wire
– Frequency of an oscillation
– Position of a mass
• Instead of considering all values, the digital
abstraction considers only a discrete subset of values
– Considering discrete voltages instead of continuous voltages
used by analog circuits
– Digital circuits are simpler to design than analog circuits –
can build more sophisticated systems
– Digital systems replacing analog predecessors such as digital
cameras, digital television, cell phones, CDs etc.
Digital Systems
• Digital Computers are heavily employed in design
manufacturing, distribution and sales.
• General-purpose digital computing systems follow a
sequence of instructions, called an algorithm, and
implemented as a computer program that operates on
a given data.
• In digital computers, information are represented by
physical quantities called signals.
Signal
• An information variable represented by physical quantity.
• For digital systems, the variable takes on discrete values.
• Two level binary values are the most prevalent in digital systems.
• Binary values are represented abstractly by: – digits 0 and 1 (Bits)
– words (symbols) False (F) and True (T) –
words (symbols) Low (L) and High (H) –
and words On and Off.
• Binary values are represented by values or ranges of values of physical
quantities
• 1 and 0 can be represented by specific voltage levels, rotating gears, fluid
levels, etc.
• Digital circuits usually depend on specific voltage levels to represent 1
and 0
• Bit: Binary digit
Graph of an analog quantity
The Discretization Process - Sampling
Analog to Digital Conversion
Analog quantities have Digital quantities have
continuous values discrete sets of values
Digital to Analog Conversion
Logic Levels
• Define discrete voltages to represent 1 and 0
• For example, we could define:
– 0 to be ground or 0 volts
– 1 to be VDD or 5 volts
• What about 4.99 volts? Is that a 0 or a 1?
• What about 3.2 volts?
Logic Levels
• Define a range of voltages to represent 1
and 0
• Define different ranges for outputs and
inputs to allow for noise in the system
What is Noise?
• Anything that degrades the signal
– E.g., resistance, power supply noise, coupling to neighboring
wires, etc.
• Example: a gate (driver) could output a 5 volt signal
but, because of resistance in a long wire, the signal
could arrive at the receiver with a degraded value, for
example, 4.5 volts
• Given logically valid inputs, every circuit element must
produce logically valid outputs
Noise
Driver Receiver
5V 4 .5 V
Logic Levels
Driver Receiver
Output Characteristics Input Characteristics
VDD
Logic High
Output Range Logic High
VOH Input Range
NMH
Forbidden VIH
Zone VIL
VO L NML Logic Low
Logic Low Input Range
Output Range
GND
The HIGH range typically corresponds to binary 1 and LOW range to binary 0.
The forbidden zone (or the threshold region) is a range of voltages for which
the input voltage value cannot be interpreted reliably as either a zero (0) or a
one (1).
Noise Margins
Driver Receiver
Output Characteristics Input Characteristics
VDD
Logic High
Output Range Logic High
VOH Input Range
NMH
Forbidden VIH
Zone VIL
VO L NML Logic Low
Logic Low Input Range
Output Range
GND
NMH = VOH – VIH
NML = VIL – VOL
Other physical quantities
What are other physical quantities that represent 0s and
1s?
– CPU: Voltage
– Disk: Magnetic Field Direction
– CD: Surface Pits/Light
– Dynamic RAM: Electrical Charge
NUMBER SYSTEMS
Commonly occurring bases
Name Radix Digits
Binary 2 0,1
Octal 8 0,1,2,3,4,5,6,7
Decimal 10 0,1,2,3,4,5,6,7,8, 9
Hexadecimal 16 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Numbers in different bases
Decimal Binary Octal Hexadecimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f
16 10000 20 10
Binary-Decimal Conversions
• To convert from binary to decimal, use
decimal arithmetic to form S (digit ×
respective power of 2).
• Example: Convert 110102 to N10:
– (11010)2 = 0 x 20 + 1 x 21 + 0 x 22 + 1 x 23 + 1 x 24 = (26)10
Binary-Decimal Conversions
• To convert from decimal to binary
– Subtract the largest power of 2 that gives a positive
remainder and record the power.
– Repeat, subtracting from the prior remainder and
recording the power, until the remainder is zero.
– Place 1’s in the positions in the binary result
corresponding to the powers recorded; in all other
positions place 0’s.
• Example: Convert 62510 to N2
Binary-Decimal Conversions
• Decimal numbers
537410 =
• Binary numbers
11012 =
Binary-Decimal Conversions
• Decimal numbers
537410 = 5 × five103 + 3 three× 102 + 7seven × 101 + 4 four× 100
thousands hundreds tens ones
• Binary numbers
11012 = 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 = 1310
one one no one eight four two one
Powers of Two
• 20 = • 28 =
• 21 = • 2 9 = • 22 = • 210 =
• 23 = • 211 =
• 24 = • 212 =
• 25 = • 213 =
• 26 = • 214 =
• 27 = • 215 =
Powers of Two
• 20 = 1 • 29 = 512
• 21 = 2 • 210 = 1024
• 22 = 4 • 211 = 2048
• 23 = 8 • 212 = 4096
• 24 = 16 • 213 = 8192
• 2 = 32
5 • 214 =
• 26 = 64 16384
• 2 = 128
7 • 215 =
• 28 = 32768
256
• Handy to memorize up to 29
Binary-Decimal Conversions
•
Decimal to binary conversion:
–
Convert 100112 to decimal
•
Decimal to binary conversion:
–
Convert 4710 to binary
Binary-Decimal Conversions
•
Decimal to binary conversion:
–
Convert 100112 to decimal
–
16×1 + 8×0 + 4×0 + 2×1 + 1×1 = 1910
•
Decimal to binary conversion:
–
Convert 4710 to binary
–
32×1 + 16×0 + 8×1 + 4×1 + 2×1 + 1×1 = 1011112
Binary Values and Range
• N - digit decimal number
– How many values? 10N
– Range? [0, 10N - 1]
– Example: 3-digit decimal number:
• 103 = 1000 possible values
• Range: [0, 999]
• N - bit binary number
– How many values? 2N
– Range: [0, 2N - 1]
– Example: 3-digit binary number:
• 23 = 8 possible values
• Range: [0, 7] = [0002 to 1112]
Hexadecimal Numbers
• Base 16
• Shorthand to write long binary numbers
• Make groups of 4 binary numbers to form
hexadecimal numbers
Octal Numbers
• Base 8
• Shorthand to write long binary numbers
• Make groups of 3 binary numbers to form
hexadecimal numbers
Some more conversions
–
Convert 14510 to binary, hexadecimal and octal
–
Convert 4AF16 (also written 0x4AF) to decimal,
binary and octal
–
Convert 1001010112 to decimal, hexadecimal and
octal
–
Convert 1458 to decimal, binary and hexadecimal
Some more conversions
•
Hexadecimal to binary conversion:
–
Convert 4AF16 (also written 0x4AF) to binary
– 0100 1010 11112
•
Hexadecimal to decimal conversion:
–
Convert 4AF16 to decimal
–
162×4 + 161×10 + 160×15 = 119910
Bits, Bytes, Nibbles…
• Bits 10010110
most least significant significant
bit bit
• Bytes & Nibbles byte
10010110
nibble
• Bytes
CEBF9AD7
most least
significant significant byte
byte
Powers of Two
• 2 10 = 1 kilo ≈ 1000 (1024)
• 2 20 = 1 mega ≈ 1 million (1,048,576)
• 2 30 = 1 giga ≈ 1 billion (1,073,741,824)
Estimating Powers of Two
• What is the value of 224?
• How many values can a 32-bit variable
represent?
Estimating Powers of Two
• What is the value of 224?
- 24 × 220 ≈ 16 million
• How many values can a 32-bit variable
represent?
- 22 × 230 ≈ 4 billion
CONVERSIONS
INVOLVING FRACTIONS
Conversions involving fractions
• To convert a number with a fractional part
from one base to another:
– Convert the integer part
– Convert the fraction part
– Join the two results with a radix point
Conversions involving fractions
• To convert the integer part, repeatedly divide the number
by the new radix and save the remainders. The digits for
the new radix are the remainders in reverse order of
their computation. If the new radix is > 10, then convert
all remainders > 10 to digits A, B, …
• To convert the fractional part, repeatedly multiply the
fraction by the new radix and save the integer digits that
result. The digits for the new radix are the integer digits
in order of their computation. If the new radix is > 10,
then convert all integers > 10 to digits A, B, …
Example: Convert 46.687510 to binary
• Convert 46 to binary
– 1011102
• Convert 0.6875 to binary
– 0.10112
• Join the results together with the radix point:
– 101110.10112
Additional Issue – Fractional Part
• Note that in this conversion, the fractional part became 0 as a result
of the repeated multiplications.
• In general, it may take many bits to get this to happen or it may never
happen.
• Example: Convert 0.6510 to N2
– 0.65 = 0.1010011001001 …
– The fractional part begins repeating every 4 steps yielding
repeating 1001 forever!
• Solution: Specify number of bits to right of radix point and round or
truncate to this number.
Check your answer
• To convert back, sum the digits times their respective powers
of the base.
• From the prior conversion of 46.687510
1011102 = 1·32 + 0·16 +1·8 +1·4 + 1·2 +0·1
= 32 + 8 + 4 + 2
= 46
0.10112 = 1/2 + 1/8 + 1/16
= 0.5000 + 0.1250 + 0.0625
= 0.6875
Octal (Hexadecimal) to Binary and Back
• Octal (Hexadecimal) to Binary:
– Restate the octal (hexadecimal) as three (four) binary digits starting
at the radix point and going both ways.
• Binary to Octal (Hexadecimal):
– Group the binary digits into three (four) bit groups starting at the
radix point and going both ways, padding with zeros as needed in
the fractional part.
– Convert each group of three bits to an octal (hexadecimal) digit.
Example
• Binary to Octal (Hexadecimal):
– (010 110 001 101 011 111 100 000 110)2 =
( 2 6 1 5 3 7 4 0 6)8
• Hexadecimal (Octal) to Binary:
–( 2 c 6 b f 0 6)16 =
(0010 1100 0110 1011 1111 0000 0110)2
Octal to Hexadecimal via Binary
• Convert octal to binary.
• Use groups of four bits and convert as above to
hexadecimal digits.
• Example: Octal to Binary to Hexadecimal
(6 3 5 . 1 7 7)8
Octal (Hexadecimal) to Decimal and Back
• Octal (Hexadecimal) to Decimal:
– (127.4)8 = 1 x 82 + 2 x 81 + 7 x 80 + 4 x 8-1 =
(87.5)10
– Similarly for Hexadecimal
• What about backwards?
Addition
carries
11
• Decimal 3734
• Binary
11
1011 carries
OPERATIONS
Single Bit Binary Addition with Carry
Given two binary digits (X,Y), a carry in (Z) we get the
following sum (S) and carry (C):
Z 0 0 0 0
Carry in (Z) of 0: X 0 0 1 1
+Y
Carry in (Z) of 1:
Z 1 1 1 1
X 0 0 1 1
CS 00
+Y
CS 01
Binary Addition Examples
• Add the following 4-bit 1001 binary numbers
+ 0101
• Add the following 4-bit 1011 binary numbers
+ 0110
Binary Addition Examples
1
• Add the following 4-bit 1001 binary numbers
111
• Add the following 4-bit 1011
binary numbers
Overflow!
Overflow
•
Digital systems operate on a fixed number
of bits
•
Addition overflows when the result is too
big to fit in the available number of bits
•
See previous example of 11 + 6
Subtraction: Signed Binary Numbers
• Sign/Magnitude Numbers
• Two’s Complement Numbers
Sign/Magnitude Numbers
•
1 sign bit, N-1 magnitude bits
•
Sign bit is the most significant (left-most) bit
– Positive number: sign bit = 0
– Negative number: sign bit = 1
•
Example, 4-bit sign/mag representations of ± 6:
+6 = 0110
- 6 = 1110
•
Range of an N-bit sign/magnitude number:
[-(2N-1-1), 2N-1-1]
Sign/Magnitude Numbers
• Problems:
–
Addition doesn’t work, for example -6 + 6:
1110
+ 0110
10100 (wrong!)
–
Two representations of 0 (± 0):
1000
0000
Two’s Complement Numbers
• Don’t have same problems as
sign/magnitude numbers:
– Addition works
– Single representation for 0
Two’s Complement Numbers
• Same as unsigned binary, but the most significant bit
(msb) has value of -2N-1
• Most positive 4-bit number: 0111
• Most negative 4-bit number: 1000
• The most significant bit still indicates the sign
(1 = negative, 0 = positive)
• Range of an N-bit two’s comp number: [-(2N-1), 2N-1-1]
“Taking the Two’s Complement”
•
Flip the sign of a two’s complement
number
•
Method:
1. Invert the bits
2. Add 1
•
Example: Flip the sign of 310 = 00112
“Taking the Two’s Complement”
•
Flip the sign of a two’s complement
number
•
Method:
1. Invert the bits
2. Add 1
•
Example: Flip the sign of 310 = 00112
1. 1100
2. + 1
1101 = -310
Two’s Complement Examples
•
Take the two’s complement of 610 =
01102
•
What is the decimal value of 10012?
Two’s Complement Examples
•
Take the two’s complement of 610 =
01102
1. 1001
2. + 1
10102 = -610
•
What is the decimal value of the two’s
complement number 10012?
1. 0110
2. + 1
01112 = 710, so 10012 = -710
Two’s Complement Addition
• Add 6 + (-6) using two’s complement
numbers 111
0110
• Add -2 + 3 using two’s complement
numbers 111
1110
Increasing Bit Width
• A value can be extended from N bits to M bits
(where M > N) by using:
– Sign-extension
– Zero-extension
Sign-Extension
•
Sign bit is copied into most significant bits.
•
Number value remains the same.
•
Example 1:
– 4-bit representation of 3 = 0011 –
8-bit sign-extended value:
00000011
•
Example 2:
– 4-bit representation of -5 = 1011
– 8-bit sign-extended value: 11111011
Zero-Extension
•
Zeros are copied into most significant bits.
•
Value will change for negative numbers.
•
Example 1:
– 4-bit value = 00112 = 310
– 8-bit zero-extended value: 00000011 = 310
•
Example 2:
– 4-bit value = 1011 = -510
– 8-bit zero-extended value: 00001011 = 1110
Number System Comparison
Number System Range
Unsigned [0, 2N-1]
Sign/Magnitude [-(2N-1-1), 2N-1-1]
Two’s Complement [-2N-1, 2N-1-1]
For example, 4-bit representation:
-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Unsigned 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 Two's Complement
0000
1111 1110 1101 1100 1011 1010 1001 0001 0010 0011 0100 0101 0110 0111 Sign/Magnitude
1000
Binary multiplication
• The binary multiplication table is simple:
0 0=0 | 1 0=0 | 0 1=0 | 1 1=1
• Extending multiplication to multiple digits:
Multiplicand 1011
Multiplier x 101
Partial Products 1011
0000-
1011 --
Product 110111
Multiplication/Division by 2n
• Multiplication by 1002 B3 B2 B1 B0
– Shift left by 2 0
0
C
C5 C4 C3 C2 1 C0
0
C
B3 B2 B1 B0
• Division by 1002
– Shift right by 2 0
C3 2 C1 C0 C- 1 C- 2
(b)
CODING
ASCII Character Codes
• American Standard Code for Information Interchange.
• This code is a popular code used to represent information sent as
character-based data. It uses 7-bits to represent:
– 94 Graphic printing characters.
– 34 Non-printing characters
• Some non-printing characters are used for text format (e.g. BS =
Backspace, CR = carriage return)
• Other non-printing characters are used for record marking and flow
control (e.g. STX and ETX start and end text areas).
UNICODE
• UNICODE extends ASCII to 65,536 universal characters codes
– For encoding characters in world languages
– Available in many modern applications
– 2 byte (16-bit) code words
– See Reading Supplement – Unicode on the Companion
Website http://www.prenhall.com/mano
Binary Codes for Decimal Digits
Decimal 8, 4, 2, 1 Excess 3 8, 4, -2, -1 Gray
0 0000 0011 0000 0000
1 0001 0100 0111 0001 2 0010 0101
0110 0011
3 0011 0110 0101 0010
4 0100 0111 0100 0110 5 0101 1000 1011 0111
6 0110 1001 1010 0101
7 0111 1010 1001 0100
8 1000 1011 1000 1100
9 1001 1100 1111 1101
There are over 8,000 ways that you can chose 10 elements from the 16 binary
numbers of 4 bits.
Binary Coded Decimal (BCD)
• The BCD code is the 8,4,2,1 code.
• This code is the simplest, most intuitive binary code for
decimal digits and uses the same powers of 2 as a binary
number, but only encodes the first ten values from 0 to 9.
• Example: 1001 (9) = 1000 (8) + 0001 (1)
• How many “invalid” code words are there?
• What are the “invalid” code words?
Warning: Conversion or Coding?
• Do NOT mix up conversion of a decimal number to
a binary number with coding a decimal number with
a BINARY CODE.
• 1310 = 11012 (This is conversion)
• Yellow 101 (This is coding)
• 13 0001|0011 (This is also coding)
BCD Arithmetic
Given a BCD code, we use binary arithmetic to add the digits:
8 1000 Eight
+5 +0101 Plus 5
13 1101 is 13 (> 9)
Note that the result is MORE THAN 9, so must be represented by two
digits! To correct the digit, subtract 10 by adding 6 modulo 16.
8 1000 Eight
+5 +0101 Plus 5
13 1101 is 13 (> 9)
+0110 so add 6
carry = 1 0011 leaving 3 + cy
0001 | 0011 Final answer ( two digits)
If the digit sum is > 9, add one to the next significant digit
BCD Addition Example
• Add 448BCD to 489BCD showing carries and digit
corrections.
1 1 0
0100 0100 1000
+ 0100 1000 1001
1001 1101 1 0001
+ 0110 + 0110
1001 1 0011 1 0111
9 3 7
Why add 6?
• Take the largest two BCD numbers and add
them:
–9+9+1=1 9
Carry In
• In binary:
– 1001 + 1001 + 1 = 1 0011 = 13 and not 19 –
The difference is 6!
End of chapter !