Lec1 Number Systems
Intro
模拟信号
数字信号
数模转换器(ADC):将未过滤的、连续变化的信号转化为采样后的数字信号
Digital System:处理数字信号或者数据(离散)的系统
Bits:
10010110
10010110
10010110,其中的每一位称为bit
Bytes:8个bit是一个byte
Digital Number Systems
常用进制
进制转换
多进制转十进制
D
=
d
n
−
1
r
n
−
1
+
d
n
−
2
r
n
−
2
+
.
.
.
+
d
1
r
+
d
0
+
d
−
1
r
−
1
+
d
−
2
r
−
2
+
.
.
.
+
d
−
m
r
−
m
D=d_{n-1}r^{n-1}+d_{n-2}r^{n-2}+...+d_1r+d_0+d_{-1}r^{-1}+d_{-2}r^{-2}+...+d_{-m}r^{-m}
D=dn−1rn−1+dn−2rn−2+...+d1r+d0+d−1r−1+d−2r−2+...+d−mr−m
d
n
−
1
d_{n-1}
dn−1是MSD(Most-significant Digit),
d
−
m
d_{-m}
d−m是LSD(Least-significant Digit)
公式中
n
n
n是整数位数,
m
m
m是小数位数
练习
1010.10 1 2 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 + 1 × 2 − 1 + 0 × 2 − 2 + 1 × 2 − 3 = 10.625 1010.101_2=1\times 2^3+0\times 2^2+1\times 2^1+0\times 2^0+1\times 2^{-1}+0\times 2^{-2}+1\times 2^{-3}=10.625 1010.1012=1×23+0×22+1×21+0×20+1×2−1+0×2−2+1×2−3=10.625
十进制转多进制(Radix-r)
Integer: Successive divisions by r and observe the remainders 读取顺序——从下往上
Fraction: Successive multiplication by r and observe the integer part 读取顺序——从上往下
练习
将
13.62
5
10
13.625_{10}
13.62510转化为二进制:
对13进行successive division,得到
(
6...1
)
,
(
3...0
)
,
(
1...1
)
,
(
0...1
)
(6...1),(3...0),(1...1),(0...1)
(6...1),(3...0),(1...1),(0...1),二进制表示为1101(从下往上)
对0.625进行succesive multiplication,得到
1.25
,
0
,
5
,
1.0
1.25,0,5,1.0
1.25,0,5,1.0,二进制表示为101(从上往下)
故
13.62
5
10
=
1101.10
1
2
13.625_{10}=1101.101_2
13.62510=1101.1012
多进制转多进制
基本思路:将
r
r
r进制转为10进制,再转为
r
′
r'
r′进制
特殊的进制转换
二进制转八进制
技巧:三位二进制为一组,组内判断,可以向左右两侧补0,如 10110.0 1 2 = 010 110.01 0 2 = 26. 2 8 10110.01_2=010\space110.010_2=26.2_8 10110.012=010 110.0102=26.28
二进制转十六进制
技巧:四位二进制为一组,同上,如 10110.0 1 2 = 00010110.0 1 2 = 16. 4 16 10110.01_2=00010110.01_2=16.4_{16} 10110.012=00010110.012=16.416
八进制转十六进制
技巧:先将八进制转化为二进制,再转化为十六进制
二进制加减法
加法:进位
减法:借位——进2
Data Representation
补码和反码
设计原因:机器不好实现借位操作,故设计补码和反码
补码(r’s-complement):补码表示的整数范围更大(四位补码能表示-8~+7而反码无法表示-8),同时补码可以保证运算的正确性(结果在表示范围内)
反码((r-1)'s-compliment)
十进制
例 540的补码和反码
9’s complement(反码):
999
−
540
=
459
999 - 540=459
999−540=459 (好处:无需借位)
10’s complement(补码):
1000
−
540
=
460
1000-540=460
1000−540=460(反码加一,技巧:用10减去最低非零位,9减去剩余高位)
二进制
例
1011000
0
2
10110000_2
101100002的补码和反码
1’s complement(反码):
0100111
1
2
01001111_2
010011112
2’s complement(补码):
0101000
0
2
01010000_2
010100002(反码加一,技巧:最低非零1不动,其余高位取反)
补码的运算
减法——计算 M − N M-N M−N
若
M
>
=
N
M>=N
M>=N,则
M
−
N
=
M
+
N
′
M-N=M+N'
M−N=M+N′,其中
N
′
N'
N′是
N
N
N的补码,结果自然溢出,剩余位是答案
若
N
>
M
N>M
N>M,则
M
−
N
=
M
+
N
′
M-N=M+N'
M−N=M+N′,其中
N
′
N'
N′是
N
N
N的补码,结果为答案的补码
练习1:计算
72532
−
3250
72532-3250
72532−3250 和
3250
−
72532
3250-72532
3250−72532
72532
−
3250
=
72532
+
96750
=
(
1
)
69282
=
69282
72532-3250=72532+96750=(1)69282=69282
72532−3250=72532+96750=(1)69282=69282
3250
−
72532
=
03250
+
27468
=
3071
8
d
r
c
=
−
69282
3250-72532=03250+27468=30718_{drc}=-69282
3250−72532=03250+27468=30718drc=−69282
练习2:计算
1010100
−
1000011
1010100-1000011
1010100−1000011 (结果为正) 和
1000011
−
1010100
1000011-1010100
1000011−1010100 (结果为负)
1010100
−
1000011
=
1010100
+
011110
1
d
r
c
=
(
1
)
0010001
=
0010001
1010100-1000011=1010100+0111101_{drc}=(1)0010001=0010001
1010100−1000011=1010100+0111101drc=(1)0010001=0010001
1000011
−
1010100
=
1000011
+
010110
0
d
r
c
=
110111
1
d
r
c
=
−
0010001
1000011-1010100=1000011+0101100_{drc}=1101111_{drc}=-0010001
1000011−1010100=1000011+0101100drc=1101111drc=−0010001
BCD
BCD是一种用于进行十进制运算的方法
表示方法:按位表示,如
396
——
0011
1001
0110
396——0011\space 1001\space 0110
396——0011 1001 0110
加法运算:每一列进行运算,如果结果大于等于10,需要补6,溢出位添加到下一列
减法运算:变成补码的加法运算处理
Gary Code
格雷码引起的变化位数最小,规则见下图
ASCII code(略)
Error-Detecting code
奇偶校验位:采用一定标准,如偶校验标准,那么要保证数字串中的1的个数为偶数。为了达到此目的,在数字串前(后)加一位数字(0,1)作为校验位
注意
- 一个数的数值有原码、反码和补码,它的正负号另外判断的,二进制中由符号位决定
- 将一个负数转化为补码二进制时,原码的符号位取0
- 补码转化为原码的规则和原码转化为补码的规则一致,即 r r r减去最低非零位, r − 1 r-1 r−1减去其余高位,注意要加上符号
- 二进制运算时容易看错,注意细节
技巧
- 上述求补码、加减技巧
- 四位二进制读数: 1000 1000 1000是 8 8 8, 0100 0100 0100是 4 4 4, 0010 0010 0010是 2 2 2, 0001 0001 0001是 1 1 1,由此可以快速算出四位二进制大小。如 1011 1011 1011是 8 + 2 + 1 = 11 8+2+1=11 8+2+1=11
Binary Logic
AND
OR
NOT
Lab: FPGA
Lec2 Boolean Algebra
Axioms and Theorems
Theorems and their duals
Dual: 将dot变成add,将0变成1
Precedence
P a r e n t h e s i s > N O T > A N D > O R Parenthesis >NOT>AND>OR Parenthesis>NOT>AND>OR
Simplify Boolean Functions
概念
Literal:变量或者它的补(取反)
Product term:AND term
Sum term:OR term
例:
A
′
B
′
C
+
A
′
B
C
+
A
B
′
A'B'C+A'BC+AB'
A′B′C+A′BC+AB′ 中,有8个literal,3个product term, 1个sum term
Truth Table
布尔函数在真值表中有且只有一中表示方式,但是可以有多种代数形式
如
F
1
=
x
′
y
′
z
+
x
′
y
z
+
x
y
′
,
F
2
=
x
y
′
+
x
′
z
F_1=x'y'z+x'yz+xy',F_2=xy'+x'z
F1=x′y′z+x′yz+xy′,F2=xy′+x′z,而
F
1
=
F
2
F_1=F_2
F1=F2
Gate Implementation
Algebraic Simplification
一些有用的可以帮助化简的规则
- Distributivity: A ′ B C + A ′ = A ′ ( B C + 1 ) A'BC+A'=A'(BC+1) A′BC+A′=A′(BC+1)
- Idempotency: X Y Z + X Y ′ Z + X Y Z ′ = X Y Z + Z Y ′ Z + X Y Z + X Y Z ′ XYZ+XY'Z+XYZ'=XYZ+ZY'Z+XYZ+XYZ' XYZ+XY′Z+XYZ′=XYZ+ZY′Z+XYZ+XYZ′
- Complements: X + X ′ = 1 X+X'=1 X+X′=1
- DeMorgan’s:第一步,将dot换成add,将0换成1;第二步,将每一个literal取补(取反)
例: F = x ′ y ′ z + x ′ y z + x y ′ F = x'y'z+x'yz+xy' F=x′y′z+x′yz+xy′,则 F ′ = ( x + y + z ′ ) ( x + y ′ + z ′ ) ( x ′ + y ) F'=(x+y+z')(x+y'+z')(x'+y) F′=(x+y+z′)(x+y′+z′)(x′+y)
… …
Canonical and Standard form
Minterms and Maxterms
Minterms:AND terms
Maxterms:OR terms
Maxterms可以理解为minterm的DeMorgan的取反
这种规范的表示方法可以用于简化布尔函数,如
f
1
=
x
′
y
′
z
+
x
y
′
z
′
+
x
y
z
=
m
1
+
m
2
+
m
3
=
∑
(
1
,
4
,
7
)
f_1=x'y'z+xy'z'+xyz=m_1+m_2+m_3=\sum(1,4,7)
f1=x′y′z+xy′z′+xyz=m1+m2+m3=∑(1,4,7)
f
2
=
m
0
+
m
2
+
m
3
+
m
5
+
m
6
,
f
2
′
′
=
(
m
0
+
m
2
+
m
3
+
m
5
+
m
6
)
′
=
m
0
′
⋅
m
2
′
⋅
m
3
′
⋅
m
5
′
⋅
m
6
′
=
M
0
⋅
M
2
⋅
M
3
⋅
M
5
⋅
M
6
f_2=m_0+m_2+m_3+m_5+m_6,f_2''=(m_0+m_2+m_3+m_5+m_6)'=m_0'·m_2'·m_3'·m_5'·m_6'=M_0·M_2·M_3·M_5·M_6
f2=m0+m2+m3+m5+m6,f2′′=(m0+m2+m3+m5+m6)′=m0′⋅m2′⋅m3′⋅m5′⋅m6′=M0⋅M2⋅M3⋅M5⋅M6
f
2
′
=
M
0
⋅
M
2
⋅
M
3
⋅
M
5
⋅
M
6
=
∏
(
0
,
2
,
3
,
5
,
6
)
f_2'=M_0·M_2·M_3·M_5·M_6=\prod(0,2,3,5,6)
f2′=M0⋅M2⋅M3⋅M5⋅M6=∏(0,2,3,5,6)
Other Logic Operations
Lec3 Gate-Level Minimization
Map method Simplification (K-map)
k-map中的’1’是基于minterm,如 ∑ ( 0 , 1 , 4 , 5 ) \sum(0,1,4,5) ∑(0,1,4,5)那么对应编号为0,1,4,5的格子标为1,并将这些格子连起来
Two-Variable Map
例:
m
1
+
m
2
+
m
3
=
?
m_1+m_2+m_3 = ?
m1+m2+m3=?
k-map如下
故
m
1
+
m
2
+
m
3
=
A
+
B
m_1+m_2+m_3 = A+B
m1+m2+m3=A+B
Three-variable Map
例:
F
=
A
′
B
C
+
A
′
B
C
′
+
A
B
′
C
′
+
A
B
′
C
=
m
3
+
m
2
+
m
4
+
m
5
F = A'BC+A'BC'+AB'C'+AB'C=m_3+m_2+m_4+m_5
F=A′BC+A′BC′+AB′C′+AB′C=m3+m2+m4+m5
k-map如下
故
F
=
A
B
′
+
A
′
B
F=AB'+A'B
F=AB′+A′B
Four-Variable Map
例:
F
=
A
B
C
D
+
A
B
′
C
′
D
′
+
A
B
′
C
+
A
B
=
m
8
+
m
10
+
m
10
+
m
11
+
m
12
+
m
13
+
m
14
+
m
15
F= ABCD + AB'C'D' + AB'C + AB=m_8+m_{10}+m_{10}+m_{11}+m_{12}+m_{13}+m_{14}+m_{15}
F=ABCD+AB′C′D′+AB′C+AB=m8+m10+m10+m11+m12+m13+m14+m15
k-map如下
故
F
=
A
D
′
+
A
B
+
A
C
F=AD'+AB+AC
F=AD′+AB+AC
Product of sums simplification
思路是:把式子取反,用k-map解决问题
例:Simplify the Boolean funciton
F
(
A
,
B
,
C
,
D
)
=
∑
(
2
,
3
,
7
,
10
,
11
,
15
)
F(A,B,C,D)=\sum(2,3,7,10,11,15)
F(A,B,C,D)=∑(2,3,7,10,11,15)
解:
第一步——Find
F
′
F'
F′
F
′
=
∑
(
0
,
1
,
4
,
5
,
6
,
8
,
9
,
12
,
13
,
14
)
=
C
′
+
B
D
′
F' = \sum(0,1,4,5,6,8,9,12,13,14)=C'+BD'
F′=∑(0,1,4,5,6,8,9,12,13,14)=C′+BD′
第二步——取反
F
=
(
F
′
)
′
=
(
C
′
+
B
D
′
)
′
=
C
(
B
′
+
D
)
F=(F')'=(C'+BD')'=C(B'+D)
F=(F′)′=(C′+BD′)′=C(B′+D)
Don’t Care Conditions
d ( A , B , C , D ) = ∑ ( 0 , 2 , 5 ) d(A,B,C,D)=\sum(0,2,5) d(A,B,C,D)=∑(0,2,5) 表示这几个格子既可以取0,又可以取1
Lec4 Two Level Implementation
NAND Implementation
Universal Gates
NAND, NOR都是Universal Gates
NAND Circuits
用AND,OR和NOT表达NAND
NAND实现布尔函数
- Simplify the function in the form of sum-ofproducts (AND-OR circuit)
- Transfer it to 2-level NAND-NAND expression——Bubble Pushing
- Draw the corresponding NAND gate implementation.
例 F ( A , B , C , D ) = A B + C D F(A,B,C,D) = AB + CD F(A,B,C,D)=AB+CD
Bubble Pushing
NOR Implementation
用ANDOR和NOT表达NOR
NOR实现布尔函数
- Simplify the function in the form of product-of-sum (OR-AND circuit)
- Transfer it to 2-level NOR-NOR expression
- Draw the corresponding NOR gate implementation
例 F = ( A + B ) ( C + D ) E F = (A + B)(C + D)E F=(A+B)(C+D)E