从零开始构建现代计算机--第一章,02-实现异或门,Mux,DMux

简介

这是《计算机系统要素:从零开始构建现代计算机》的学习笔记,刚刚启程学习,记录博客好提醒自己不要半途而废。
书籍获取代码实现与书籍介绍,可关注这位大佬,视频课程:coursera/B站
偷一张大佬github截图作为介绍:
从零开始构建现代计算机--第一章,02-实现异或门,Mux,DMux

有了上一篇:从零开始构建现代计算机–第一章,01-用与非门实现与戓非构建的与戓非门后,我们可以使用它们实现更复杂的电路

实现的逻辑门

异戓门(Xor)
Multiplexor(从多个输入值中选取一个作为输出,与DMux相反)
Demultiplexor(从多个输出线路中选择一个,将输入从这条线路输出)

符号约定

操作 表示
xyx \cdot y
x+yx+y
xˉ\bar{x}

用And/Or/Not实现Xor

真值表

相同为0,不同为1

xx yy Xor(x,y)Xor(x,y)
0 0 0
0 1 1
1 0 1
1 1 0

转换为And/Or/Not表示

使用书中提到的技巧,可以将真值表转化为布尔函数f(x,y)f(x,y)
1.找到真值为1的行,即

xx yy Xor(x,y)Xor(x,y)
0 1 1
1 0 1

2.每一行中,输入变量x,y为0的取反,为1的不动,再取与
x=0,y=1x=0,y=1行,构造xˉy\bar{x} \cdot y显然xˉy\bar{x} \cdot yx=0,y=1x=0,y=1时,值才能是1
x=1,y=0x=1,y=0行,构造xyˉx \cdot \bar{y}显然xyˉx \cdot \bar{y}x=1,y=0x=1,y=0时,值才能是1
3.什么时候Xor(x,y)输出1?显然只能是2中的两种情况,要么是第一种,要么是第二种,既然是"要么…要么…",那么用or连接就好了:
f(x,y)=xˉy+xyˉ f(x,y) = \bar{x} \cdot y + x \cdot \bar{y}

电路连接

上节实现的与戓非门,就可以直接拿来用了:
从零开始构建现代计算机--第一章,02-实现异或门,Mux,DMux

用And/Or/Not实现Multiplexor(Mux)

Mux有三个输入:x,y,sel
一个输出:out
功能为根据sel的值从x,y中选择一个值输出:out = x if sel == 0, else out = y
从零开始构建现代计算机--第一章,02-实现异或门,Mux,DMux

真值表

xx yy sel out
0 0 0 0
0 1 0 0
1 0 0 1
1 1 0 1
0 0 1 0
0 1 1 1
1 0 1 0
1 1 1 1

简化真值表

sel out
0 x
1 y

转换为And/Or/Not表示

利用公式
xyˉsel+xysel=xselxˉysel+xysel=ysel x\cdot \bar{y} \cdot \overline{sel} + x\cdot y \cdot \overline{sel} = x \cdot \overline{sel}\\ \bar{x}\cdot y \cdot sel + x\cdot y \cdot sel = y \cdot sel
按上面从真值表到Xor函数的转化方法,可以得到Mux函数为
Mux(x,y,sel)=xyˉsel+xysel+xˉysel+xysel=xsel+ysel Mux(x,y,sel) =x\cdot \bar{y} \cdot \overline{sel} + x\cdot y \cdot \overline{sel} + \bar{x}\cdot y \cdot sel + x\cdot y \cdot sel \\= x \cdot \overline{sel} + y \cdot sel

电路连接

从零开始构建现代计算机--第一章,02-实现异或门,Mux,DMux

用And/Or/Not实现Demultiplexor(DMux)

DMux有两个输入:in,sel
两个输出:x,y
功能为根据sel,从x,y中选择一路,将in从这条路上输出:
{x, y} =
{in, 0} if sel == 0
{0, in} if sel == 1
从零开始构建现代计算机--第一章,02-实现异或门,Mux,DMux

真值表

in sel xx yy
0 0 0 0
0 1 0 0
1 0 1 0
1 1 0 1

转换为And/Or/Not表示

按上面Xor函数的转化方法,从真值表中可以得到DMux函数为
x=insely=insel x = in \cdot \overline{sel}\\ y = in \cdot sel

电路连接

从零开始构建现代计算机--第一章,02-实现异或门,Mux,DMux