CS61C | Lecture11

Lecture11 | Combinational Logic

1 iff one(not both) a, b = 1

aby
000
011
101
110
ay
0b
1 b ‾ \overline{b} b

2-bit adder

A
a 1 a 0 a_1a_0 a1a0
B
b 1 b 0 b_1b_0 b1b0
C
c 2 c 1 c 0 c_2c_1c_0 c2c1c0
0000000
0001001
0010010
0011011
0100001
0101010
0110011
0111100
1000010
1001011
1010100
1011101
1100011
1101100
1110101
1111110

Logical Gates

AND

abc
000
010
100
111

OR

abc
000
011
101
111

NOT

ab
01
10

XOR

abc
000
011
101
110
对于异或,如果有 奇数 \textcolor{red}{奇数} 奇数个 1 最后结果就是 1

NAND

abc
001
011
101
110

NOR

abc
001
010
100
110

Example

PSInputNSOutput
000000
001010
010000
011100
100000
111001
P S 0 PS_0 PS0 是右边一列, P S 1 PS_1 PS1 是左边的一列

Boolean Algebra


y = a ⋅ b + a ⋅ c + b ⋅ c y = a \cdot b + a \cdot c + b \cdot c y=ab+ac+bc

Algebraic Simplification


y = a b + a + c = a ( b + 1 ) + c = a ( 1 ) + c = a + c \begin{aligned} y &= ab + a + c \\ & = a(b + 1) + c \\ & = a(1) + c \\ & = a + c \end{aligned} y=ab+a+c=a(b+1)+c=a(1)+c=a+c

x ⋅ x ‾ = 0                    x + x ‾ = 1 x ⋅ 0 = 0                    x + 1 = 1 x ⋅ 1 = x                    x + 0 = x x ⋅ x = x                    x + x = x x ⋅ y = y ⋅ x                    x + y = y + x ( x y ) z = x ( y z )                    ( x + y ) + z = x + ( y + z ) x ( y + z ) = x y + x z                    x + y z = ( x + y ) ( x + z ) x y + x = x                    ( x + y ) x = x x ⋅ y ‾ = x ‾ + y ‾                    ( x + y ) ‾ = x ‾ ⋅ y ‾ \begin{aligned} x \cdot \overline {x} &= 0 ~~~~~~~~~~~~~~~~~~ &x + \overline {x} &= 1\\ x \cdot 0 &= 0 ~~~~~~~~~~~~~~~~~~ &x + 1 &= 1\\ x \cdot 1 &= x ~~~~~~~~~~~~~~~~~~ &x + 0 &= x\\ x \cdot x &= x ~~~~~~~~~~~~~~~~~~ &x + x &= x\\ x \cdot y &= y \cdot x ~~~~~~~~~~~~~~~~~~ &x + y &= y + x\\ (xy)z &= x(yz) ~~~~~~~~~~~~~~~~~~ &(x + y) + z &= x + (y + z)\\ x(y + z) &= xy + xz ~~~~~~~~~~~~~~~~~~ &x + yz &= (x + y)(x + z)\\ xy + x &= x ~~~~~~~~~~~~~~~~~~ &(x + y)x &= x\\ \overline{x \cdot y} &= \overline{x} + \overline{y} ~~~~~~~~~~~~~~~~~~ &\overline{(x + y)} &= \overline{x} \cdot \overline{y}\\ \end{aligned} xxx0x1xxxy(xy)zx(y+z)xy+xxy=0                  =0                  =x                  =x                  =yx                  =x(yz)                  =xy+xz                  =x                  =x+y                  x+xx+1x+0x+xx+y(x+y)+zx+yz(x+y)x(x+y)=1=1=x=x=y+x=x+(y+z)=(x+y)(x+z)=x=xy

Data Multiplexor

当 S 为 0 时,A 路可行。当 S 为 1 时,B 路可行。 可以将 n 位输入多路复用器看做 n 个 1 位输入的多路复用器。 ![](https://img-blog.csdnimg.cn/img_convert/d4e92049c7dd592598420a2201796c08.png)
sabc
0000
0010
0101
0111
1000
1011
1100
1111
s 为 0 时 c 实际上是 a 的值。s 为 1 时 c 实际上是 b 的值。
$$
\begin{aligned}
c &= \overline{s}a\overline{b} + \overline{s}ab + s\overline{a}b + sab \
&= \overline{s}(a\overline{b} + ab) + s(\overline{a}b + ab) \
&= \overline{s}(a(\overline{b} + b)) + s((\overline{a} + a)b) \
&= \overline{s}(a(1)+s(1)b) \
&= \overline{s}a + sb
\end{aligned}
$$
也就是

4-to-1 Multiplexor

$e=\overline{s_1}\cdot\overline{s_0}a+\overline{s_1}\cdot s_0b+s_1\cdot\overline{s_0}c+s_1s_0d$ ## Arithmetic Logic Unit(ALU)
SR
00A + B
01A - B
10A & B
11A | B

Our Simple ALU

## Adder $s_0 = a_0~ ~XOR~ ~b_0$ $c_1=a_0~~ AND ~~b_0$ 进位
a 0 a_0 a0 b 0 b_0 b0 s 0 s_0 s0 c 1 c_1 c1
0000
0110
1010
1101
a i a_i ai b i b_i bi c i c_i ci s i s_i si c i + 1 c_{i+1} ci+1
00000
00110
01010
01101
10010
10101
11001
11111
s i = X O R ( a i , b i , c i ) s_i=XOR(a_i,b_i,c_i) si=XOR(ai,bi,ci)
c i + 1 = M A J ( a i , b i , c i ) = a i b i + a i c i + b i c i c_{i+1}=MAJ(a_i,b_i,c_i)=a_ib_i+a_ic_i+b_ic_i ci+1=MAJ(ai,bi,ci)=aibi+aici+bici

N 1-bit adders -> 1 N-bit adder

对于 unsigned 来说,$overflow = c_n$ 对于 signed 来说 #### Highest adder - $C_{in} = Carry-in=c_1, ~~C_{out} = Carry-out = c_2$ - $No~ ~C_{out} ~or~ ~C_{in}~ ~->~ ~NO~~overflow$ - $C_{out} ~and~ ~C_{in}~ ~->~ ~NO~~overflow$ - $C_{in}~~but~~no~~C_{out}~~->~~A,B~~both~~>~~0,~~\textcolor{red}{overflow}!$ - $C_{out}~~but~~no~~C_{in}~~->~~A~~or~~B~~are~~-2,~~\textcolor{red}{overflow}!$ $~~\textcolor{red}{overflow} = c_n~~XOR~~c_{n+1}$ ## Subtractor $A-B=A+(-B)$ ![](https://img-blog.csdnimg.cn/img_convert/f1bb4bef0c1c1b026105a0076a76909b.png)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值