Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Information
EE3376
Topics to Cover…
l Binary Digital System l Data Types l Conversions l Binary Arithmetic l Overflow l Logical Operations l Fixed Point l Floating Point l ASCII Characters
Adapted from notes from BYU ECE124
2
What are Decimal Numbers?
l “Decimal” means that we have ten digits to use in our representation
– the symbols 0 through 9 l What is 3,546?
– 3 thousands + 5 hundreds + 4 tens + 6 ones. – 3,54610 = 3×103 + 5×102 + 4×101 + 6×100
l How about negative numbers? – Use two more symbols to distinguish positive and
negative, namely, + and -.
Adapted from notes from BYU ECE124 Adapted from notes from BYU ECE124
3
What are Binary Numbers?
l “Binary” means that we have two digits to use in our representation
– the symbols 0 and 1 l What is 1011?
– 1 eights + 0 fours + 1 twos + 1 ones – 10112 = 1×23 + 0×22 + 1×21 + 1×20
l How about negative numbers? – We don’t want to add additional symbols – So…
Adapted from notes from BYU ECE124
4
Electronic Representation of a Bit
l Relies only on approximate physical values. – A logical ‘1’ is a relatively high voltage (2.4V - 5V). – A logical ‘0’ is a relatively low voltage (0V - 1V).
n Analog processing relies on exact values which are affected by temperature, age, etc. n Analog values are never quite the same. n Each time you play a vinyl album, it will sound a bit different. n CDs sound the same no matter how many times you play them.
Adapted from notes from BYU ECE124
5
The Power of the Bit…
l Bits rely on approximate physical values that are not affected by age, temperature, etc. – Music that never degrades. – Pictures that never get dusty or scratched.
l By using groups of bits, we can achieve high precision.
– 8 bits => each pattern represents 1/256. – 16 bits => each pattern represents 1/65,536 – 32 bits => each pattern represents 1/4,294,967,296 – 64 bits => each pattern represents 1/18,446,744,073,709,550,000
l Disadvantage: bits only represent discrete values l Digital = Discrete
Adapted from notes from BYU ECE124 6
Binary Nomenclature l Binary Digit: 0 or 1 l Bit (short for binary digit): A single binary digit l LSB (least significant bit): The rightmost bit l MSB (most significant bit): The leftmost bit l Data sizes
– 1 Nibble = 4 bits – 1 Byte = 2 nibbles = 8 bits – 1 Kilobyte (KB) = 1024 bytes – 1 Megabyte (MB) = 1024 kilobytes = 1,048,576 bytes – 1 Gigabyte (GB) = 1024 megabytes = 1,073,741,824
bytes Adapted from notes from BYU ECE124
7
What Kinds of Data? l All kinds…
– Numbers – signed, unsigned, integers, floating point, complex, rational, irrational, …
– Text – characters, strings, … – Images – pixels, colors, shapes, … – Sound – pitch, amplitude, … – Logical – true / false, open / closed, on / off, … – Instructions – programs, … – …
l Data type: – representation and operations within the computer
l We’ll start with numbers… Adapted from notes from BYU ECE124
8
Some Important Data Types
l Unsigned integers – only non-negative numbers – 0, 1, 2, 3, 4, …
l Signed integers – negative, zero, positive numbers – …, -3, -2, -1, 0, 1, 2, 3, …
l Floating point numbers – numbers with decimal point – PI = 3.14159 x 100
l Characters – 8-bit, unsigned integers – ‘0’, ‘1’, ‘2’, … , ‘a’, ‘b’, ‘c’, … , ‘A’, ‘B’, ‘C’, … , ‘@’, ‘#’,
Adapted from notes from BYU ECE124
9
Unsigned Integers
329 102 101 100
101 22 21 20
3x100 + 2x10 + 9x1 = 329 1x4 + 0x2 + 1x1 = 5
most significant
least significant
l What do these unsigned binary numbers represent? 0000 0110
1111 1010
0001 1000
0111 1100
1011 1001
n Weighted positional notation n “3” is worth 300, because of its position, while “9” is only worth 9
Adapted from notes from BYU ECE124
10
Unsigned Integers (continued…)
22 21 20 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 1 1 1 7
Data Types
Adapted from notes from BYU ECE124
11
Unsigned Binary Arithmetic
l Base 2 addition – just like base 10! – add from right to left, propagating carry
10010 10010 1111 + 1001 + 1011 + 1
11011 11101 10000
10111 + 111
carry
0 1 1 1 1 Adapted from notes from BYU ECE124
12
Signed Integers
l With n bits, we have 2n distinct values. – assign about half to positive integers (1 through 2n-1)
and about half to negative (- 2n-1 through -1) – that leaves two values: one for 0, and one extra
l Positive integers – just like unsigned – zero in most significant (MS) bit
00101 = 5 l Negative integers
– sign-magnitude – set MS bit to show negative 10101 = -5
– one’s complement – flip every bit to represent negative 11010 = -5
– MS bit indicates sign: 0=positive, 1=negative Adapted from notes from BYU ECE124
13
2’s Complement
l Problems with sign-magnitude and 1’s complement – two representations of zero (+0 and –0) – arithmetic circuits are complex
l How to add two sign-magnitude numbers? e.g., try 2 + (-3)
l How to add to one’s complement numbers? e.g., try 4 + (-3)
l Two’s complement representation developed to make circuits easy for arithmetic.
Adapted from notes from BYU ECE124
14
2’s Complement (continued…)
l Simplifies logic circuit construction because – addition and subtraction are always done using the
same circuitry. – there is no need to check signs and convert. – operations are done same way as in decimal
l right to left l with carries and borrows
l Bottom line: simpler hardware units!
Adapted from notes from BYU ECE124
15
2’s Complement (continued…)
l If number is positive or zero, – normal binary representation
l If number is negative, – start with positive number – flip every bit (i.e., take the one’s complement) – then add one
00101 (5) 01001 (9)
11010 (1’s comp) (1’s comp)
+ 1 + 1
11011 (-5) (-9)
10110
10111 Adapted from notes from BYU ECE124
16
2’s Complement (continued…)
l Positional number representation with a twist – the most significant (left-most) digit has a negative
weight
– n-bits represent numbers in the range -2n-1 … 2n-1 - 1 l What are these?
0110 = 22 + 21 = 6
1110 = -23 + 22 + 21 = -2
0000 0110 1111 1010 0001
1000 0111 1100 1011 1001
0121 2222 −−− nn
Adapted from notes from BYU ECE124
17
Number Decimal Value Negated Binary Value011001110000111101001000
2’s Complement Negation
To negate a number, invert all the bits and add 1
6 1010
7 1001
0 0000
-1 0001
4 1100
-8 1000 (??)
Adapted from notes from BYU ECE124
18
Two’s complement – simple conversion
0001102 = 610 0001102 Find first “1” from the right
0000102 invert each digit to the left
0010102 0110102 1110102 = -610 until you reach the left end
To obtain negative 6, start with positive magnitude and negate
Adapted from notes from BYU ECE124
19
l Continually divide the number by 2 and track the remainders.
1 × 25 + 0 × 24 + 1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 32 + 0 + 8 + 0 + 2 + 1 = 43
43 2
2
2
2
2
2
Decimal to Binary Conversion
n For negative numbers, do above for positive number and negate result
5 R 0
0
2 R 1
1 21 R 1
1
10 R 1
1
1 R 0
0
0 R 1
1
Adapted from notes from BYU ECE124
20
Number Binary Value56
12335
-351007
Decimal to Binary Conversion
0101
0110
01111011
00100011
11011101
01111101111
Adapted from notes from BYU ECE124
21
Sign-Extension in 2’s Complement
l You can make a number wider by simply replicating its leftmost bit as desired.
0110 = 000000000000000110 = 1111 = 11111111111111111 = 1 =
6
6
-1
-1 -1
n What do these represent?
Adapted from notes from BYU ECE124
22
Hexadecimal Notation
l Binary is hard to read and write by hand l Hexadecimal is a common alternative
– 16 digits are 0123456789ABCDEF
0100 0111 1000 1111 = 0x478F 1101 1110 1010 1101 = 0xDEAD 1011 1110 1110 1111 = 0xBEEF 1010 0101 1010 0101 = 0xA5A5
Binary Hex
0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F
0x is a common prefix for writing numbers which mean hexadecimal
1. Separate binary code into groups of 4 bits (starting from the right)
2. Translate each group into a single hex digit
Adapted from notes from BYU ECE124
23
Why Hexadecimal? l One Hexadecimal digit
represents four binary digits l Hexadecimal is more human
readable l Can quickly convert large
binary numbers to hexadecimal and back by inspection
l Nomenclature – Motorola = $64 – C = 0x64 – Intel = 64H – TI = 64h
Decimal Hexadecimal Binary 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001
10 a 1010 11 b 1011 12 c 1100 13 d 1101 14 e 1110 15 f 1111 Adapted from notes from BYU ECE124
24
Binary to Hexadecimal – Easy!
1011
B
0001
1
1100
C
0101
5
So $b1c5 equals %1011000111000101.
25
Decimal to Hex Examples
12decimal = 1100 = 0xc
21decimal = 0001 0101 = 0x15
55decimal = 0011 0111 = 0x37
256decimal = 0001 0000 0000 = 0x100
47decimal = 0010 1111 = 0x2f
3decimal = 0011 = 0x3
127decimal = 0111 1111 = 0x7f
1029decimal = 0100 0000 0101 = 0x405
Adapted from notes from BYU ECE124
26
Word Sizes
l In the preceding slides, every bit pattern was a different length (15 was represented as 01111).
l Every real computer has a base word size – our machine (MPS430) is 16-bits
l Memory fetches are word-by-word – even if you only want 8 bits (a byte)
l Instructions are packed into words l Numeric representations are word-sized
– 15 is represented as 0000000000001111
Conversions
Adapted from notes from BYU ECE124
27
Number Wheel for 3 bit hardware
000
001
010
011
100
101
110
111
0 unsigned or signed
1 unsigned or signed
2 unsigned or signed
3 unsigned or signed
4 unsigned / -4 signed 5 unsigned / -3 signed
6 unsigned / -2 signed
7 unsigned / -1 signed
28
Number Wheel – Unsigned Overflow
000
001
010
011
100
101
110
111
0 unsigned or signed
1 unsigned or signed
2 unsigned or signed
3 unsigned or signed
4 unsigned / -4 signed 5 unsigned / -3 signed
6 unsigned / -2 signed
7 unsigned / -1 signed
6 + 3 = 9 (too large for 3 bits)
29
Number Wheel – Signed Overflow
000
001
010
011
100
101
110
111
0 unsigned or signed
1 unsigned or signed
2 unsigned or signed
3 unsigned or signed
4 unsigned / -4 signed 5 unsigned / -3 signed
6 unsigned / -2 signed
7 unsigned / -1 signed
3+2 = -5 (too large for 3 bits)
30
Condition Code Register
Bit Name Meaning after arithmetic N negative result is negative
Z zero result is zero
V overflow signed overflow
C carry carry or unsigned overflow
Condition code (CC) register inherently contains information about previous arithmetic or logical operation. Specific bits in the CC register are set under specific conditions.
31
Examples of 4 bit overflow
1100 0110 +
(1)0010 = 210
= 1210 = 610
= 210
= - 410 = 610
0100 0100 +
(0)1000 = 810
= 410 = 410
= - 810
= 410 = 410
1000 1000 +
(1)0000 = 010
= 810 = 810
= - 810 = - 810
= 010
0001 0001 +
(0)0010 = 210
= 110 = 110
= 110 = 110
= 210
Adapted from notes from BYU ECE124
32
Binary Multiplication
Multiplication Table 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1
1210 = 610 =
1100 0110 * * 0000
1100 1100
0000 + 1001000 =7210
Adapted from notes from BYU ECE124
33
Introduction to moving data
l CPU can load and store data into internal registers for faster operations
l Done with first assembly instructions – mov.b and mov.w
mov.b #FFH, R5 mov.b R5, &P1OUT mov.w 2(R5), R6 mov.w @R5, 3(R6)
Adapted from notes from BYU ECE124
34
Logic review – basic gates
A Z 0 1 1 0
A B Z 0 0 0 0 1 0 1 0 0 1 1 1
A B Z 0 0 0 0 1 1 1 0 1 1 1 1
INV.W R5 R5 = ~R5;
BIS.B R6, R7 R7 = R6 || R7;
AND.W R6, R7 R7 = R6 && R7;
A B Z 0 0 0 0 1 1 1 0 1 1 1 0
XOR.W R6, R7 R7= R7 ^ R6;
A B Z 0 0 0 0 1 0 1 0 0 1 1 1
BIC.W R6, R7 R7 = !R6 && R7;
35
Logic review – example
BIS.B #08h, R5
BIC.B #08h, R5
C and Assembly code to set bit 3 of local variable - var1 in R5
C and Assembly code to clear bit 3 of local variable - var1 in R5
Var1 = Var1 && $F7;
Var1 = Var1 || $08;
36
Shift Operations
c
c 0
c
c
RRA.B
RLA.B
RRC.B
RLC.B
divide by 2 – signed
multiply by 2 – signed or unsigned C command X = Y << 1;
Rotate right through C
Rotate left through C
37
Shift Operations
Multiplying by a power of 2 is shifting to the left. M • 2n will shift binary number M left by N bits M / 2n = M • 2-n will shift binary number M right by N bits
When dividing, be careful about the most significant bit. If signed, the existing bit must be replicated for sign extension. If unsigned, the most significant bit must always be a zero
38
Encoders / Decoders
3 to 8 line decode
input 0 1 2 3 4 5 6 7 000 1 0 0 0 0 0 0 0 001 0 1 0 0 0 0 0 0 010 0 0 1 0 0 0 0 0 011 0 0 0 1 0 0 0 0 100 0 0 0 0 1 0 0 0 101 0 0 0 0 0 1 0 0 110 0 0 0 0 0 0 1 0 111 0 0 0 0 0 0 0 1
Encoder Decoder
39
Read Only Memories - ROM
Address Data Out 1 2 2 3 4 5 6 7
000 1 0 1 0 1 0 0 0 001 0 1 0 0 0 0 0 1 010 0 0 1 0 0 1 0 0 011 0 0 1 1 0 0 0 0 100 0 0 1 0 0 0 1 1 101 1 1 1 0 0 1 1 1 110 1 1 0 0 0 0 1 0 111 1 1 1 1 0 0 0 1
n
m
ROM
2n addresses addressed by n bit m output data bits
40
Read Only Memories - ROM
n
m
Memory array n to 2n decoder
2n
Address input word lines
data output
41
ROM memory array
pd pd pd pd pd pd pd pd pd pd word line 2N-1
word line 2N-2
word line 2
word line 1
word line 0
data m-1 data m-2 data0 data1 data 2
programmed “one”
programmed “zero”
bit lines
weak pull down
42
Random Access Memory (RAM)
wordline
bitline bitlineN
6 Transistor SRAM cell
n
m
sram array of 6-t cells n to 2n decoder
2n Address input
word lines m
rnw
data in
data out 43
Creating Fractions
l Fractions are created by using extra bits below your whole numbers.
l The programmer is responsible for knowing where the “decimal place” is.
l Move the decimal place by using the shift operator (<< or >>). – Shifting is multiplying by powers of 2. – Example:
l x << 5 = x × 25 l x >> 5 = x × 2-5
44
Fractional Example
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 = 5
A/D Sample (10-bit)
Fractional part
Shift left by 6 (i.e. A2D << 6;):
0
Whole part
0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 = "5.0"
45
Fractional Example l We know 5/2 = 2.5
– If we used pure integers, 5/2 = 2 – Using a fixed-point fractional portion can recover the
lost decimal portion.
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 = 5/2 = 2
A/D Sample (10-bit)
Fractional part
Whole part
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 = 5.0/2 = 2.5 1
46
Fixed Point
Fractional part
Whole part
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
§ By using a fixed-point fractional part, we can have 5/2 = 2.5
§ The more bits you use in your fractional part, the more accuracy you will have.
§ Accuracy is 2^-(fraction bits).
§ For example, if we have 6 bits in our fractional part (like the above example), our accuracy is 2^-6 (2-6 = 0.015625. In other words, every bit is equal to 0.015625
47
Fixed Point Arithmetic
Adding 2.5 + 2.5 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
§ Fixed point addition:
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1
0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0
+
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 = 5 0
§ Shift right to regain original resolution and data position.
§ Without fixed point math the result would have been 4 due to the truncation of the integer division. 48
Fixed Point Example #1
Cruise Control Specification range 0 – 100 MPH, resolution of 1 MPH two values: measured speed and target speed algorithm constantly calculates difference Format determination Use binary fixed point for ease of math (subtraction) Select range of 0 to 127 (27) to just exceed requirements Select resolution of 0.5 (2-1) to just exceed requirements 7 bits for integer and 1 bit for fractional = 8 bits precision
0 1 0 0 1 1 0 0
implied point
integer part fractional part
= 70.0 = K • Δp = 140 • 2-1
49
Fixed Point Example #2
A/D converter Specification range 0 – 5 V, resolution of 20 millivolts Format determination Select range of 0 to 7 (23) to just exceed requirements Select resolution of 0.015625 (2-6) to just exceed rqmts 3 bits for integer and 6 bit for fractional = 9 bits precision for 9 bits precision, need 16 bit register in HCS12
0 1 1 1 1 0 0 0
implied point
integer part fractional part
= 3.75 = K • Δp = 240 • 2-6 0
50
Floating Point Numbers
l Binary scientific notation l 32-bit floating point
l Exponent is biased l Implied leading 1 in mantissa
s exponent mantissa 1 8 23
1272.11 −××−= exponents fractionN
51
Floating Point Numbers
l What does this represent?
Positive number
Exponent is 128 which means the real exponent is 1
Mantissa is to be interpreted as 1.1 This is 20 + 2-1 = 1 + 1/2 = 1.5
The final number is 1.5 x 21 = 3
0 10000000 10000000000000000000000
52
ASCII Characters
NUL DLE SP 0 @ P ` p SOH DC1 ! 1 A Q a q STX DC2 “ 2 B R b r ETX DC3 # 3 C S c s EOT DC4 $ 4 D T d t ENQ NAK % 5 E U e u ACK SYN & 6 F V f v BEL ETB ‘ 7 G W g w BS CAN ( 8 H X h x HT EM ) 9 I Y i y LF SUB * : J Z j z VT ESC + ; K [ k { FF FS , < L \ l | CR GS - = M ] m } SO RS . > N ^ n ~ SI US / ? O _ o DEL
0 1 2 3 4 5 6 7 8 9 a b c d e f
0 1 2 3 4 5 6 7 8-9 a-f
53
Properties of ASCII Code l What is relationship between a decimal digit ('0', '1', …)
and its ASCII code? l What is the difference between an upper-case letter
('A', 'B', …) and its lower-case equivalent ('a', 'b', …)? l Given two ASCII characters, how do we tell which
comes first in alphabetical order? l What is significant about the first 32 ASCII codes? l Are 128 characters enough? (http://www.unicode.org/)
54
Data Representation – endian
l Byte Ordering – Little endian
l refers to system where bytes start in memory from small to large
l Intel and HP – Big endian
l refers to system where bytes start in memory from large to small
l IBM and Motorola (this class) – Biendian - goes either way – PowerPC
l Bit Ordering $00
$01
$02
$03
$12
$34
$56
$78
$12345678 $00
$01
$02
$03
$78
$56
$34
$12 big endian little endian
55
Data representation – BCD
1 2 : 4 5 0001 0010 : 0100 0101
l Binary Coded Decimal – useful for human readable displays (7 segment) – half carry bit for BCD arithmetic – values 1010 through 1111 are not legal – H CCR bit and DAA instructions used with BCD
56