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

简介

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

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

实现的逻辑门

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

符号约定

操作表示
x ⋅ y x \cdot y xy
x + y x+y x+y
x ˉ \bar{x} xˉ

用And/Or/Not实现Xor

真值表

相同为0,不同为1

x x x y y y X o r ( x , y ) Xor(x,y) Xor(x,y)
000
011
101
110
转换为And/Or/Not表示

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

x x x y y y X o r ( x , y ) Xor(x,y) Xor(x,y)
011
101

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

电路连接

上节实现的与戓非门,就可以直接拿来用了:
在这里插入图片描述

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

Mux有三个输入:x,y,sel
一个输出:out
功能为根据sel的值从x,y中选择一个值输出:out = x if sel == 0, else out = y
在这里插入图片描述

真值表
x x x y y yselout
0000
0100
1001
1101
0010
0111
1010
1111
简化真值表
selout
0x
1y
转换为And/Or/Not表示

利用公式
x ⋅ y ˉ ⋅ s e l ‾ + x ⋅ y ⋅ s e l ‾ = x ⋅ s e l ‾ x ˉ ⋅ y ⋅ s e l + x ⋅ y ⋅ s e l = y ⋅ s e l 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 xyˉsel+xysel=xselxˉysel+xysel=ysel
按上面从真值表到Xor函数的转化方法,可以得到Mux函数为
M u x ( x , y , s e l ) = x ⋅ y ˉ ⋅ s e l ‾ + x ⋅ y ⋅ s e l ‾ + x ˉ ⋅ y ⋅ s e l + x ⋅ y ⋅ s e l = x ⋅ s e l ‾ + y ⋅ s e l 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 Mux(x,y,sel)=xyˉsel+xysel+xˉysel+xysel=xsel+ysel

电路连接

Mux

用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
在这里插入图片描述

真值表
insel x x x y y y
0000
0100
1010
1101
转换为And/Or/Not表示

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

电路连接

DMux

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值