从开关到 CPU · LogicLab

从一只开关搭到一台 CPU:拨动串联、并联的开关和继电器,发现“与”“或”“非”;看信号沿发光的导线流过逻辑门,透视门里一只只通断的晶体管;亲手接线,只用与非门搭出所有的门,再搭出半加器、全加器,验证通过后封装成芯片;把四只全加器排成竖式,看进位一位一位传到最高位;最后按下时钟,看自己搭的加法器在一台 4 位小 CPU 里一条条执行程序,再拉远数一数一块芯片里有多少晶体管。

学科:信息技术 · 适用学段:初中、高中 · 知识点:逻辑门与真值表、二进制与进位、半加器与全加器、CPU 怎样执行指令

章节内容

开关会“算”吗

一只开关只有两种状态:断开和合上。把断开记作 0、合上记作 1,灯灭记作 0、灯亮记作 1,一个电路就成了一道“判断题”。

直接在画面里点开关。两只开关串联:都合上灯才亮;并联:合上任意一只灯就亮。把四种组合都试一遍,右边的真值表会一行一行填出来。

再换成继电器:线圈通电后变成电磁铁,把另一个回路的触点吸开。它是一只用电来拨动的开关。1937 年,21 岁的香农在硕士论文里指出:这样的开关电路,正好能表达逻辑里的“与”“或”“非”。电路本身的规律见 VoltLab。

逻辑门

把上一课的开关电路装进一个盒子,只留下输入和输出,就是逻辑门。导线上有电压记作 1(亮),没有记作 0(暗)。

拨动左边的输入开关,看信号沿导线走到门里,门“想”一下,再把结果送到指示灯。在右侧换一种门,把每种门的真值表都试出来:与门 Y = A · B,或门 Y = A + B,非门 Y = A;输出端带小圆圈的与非门、或非门是先算再取反;异或门在两个输入不同时输出 1。

点“透视”,看门的内部:没有任何会动的零件,只有几只晶体管——用电压控制的微型开关。左上角可以在形状符号和国标符号(&、≥1、1、=1)之间切换。

万能的与非门

这一课你来接线。板上只有与非门,任务是用它搭出别的门。

接线:按住一个引脚拖到另一个引脚(或者先点一个、再点另一个)。导线要从输出连到输入,一个输出可以分给好几个输入,一个输入只能接一根线。点一根线可以把它拆掉。拨动左边的开关,随时看信号怎样流过你接的电路。

接好后按验证:每一种输入都会自动试一遍,和目标真值表逐行比较。全对了就把它封装成芯片。芯片工厂正是这样做的:与非门只要四只晶体管,最省、最快,于是成了搭建一切的“积木”。卡住了可以按“提示一根线”。

只用 0 和 1 数数

一根导线只能表示 0 或 1,叫作一位(bit)。要表示更大的数,就把几根导线排成一排,像十进制的个位、十位、百位那样,每一位有自己的位权——只不过这里是 1、2、4、8,逢二进一。

拨动四只开关,每只下面的灯表示这一位是 0 还是 1,右边的数码管显示它对应的十进制数。1011 就是 8 + 0 + 2 + 1 = 11。

再按“加 1”一下一下地数:最低位是 1 时再加 1,它变回 0 并向左进位。从 0111 加 1,进位会一连传过三位。四位都是 1 之后再加 1,就溢出了。

半加器

两个一位二进制数相加只有四种情况:0 + 0 = 0,0 + 1 = 1,1 + 0 = 1,1 + 1 = 10。结果要用两位表示:本位的和 S,与向高位的进位 C。

对照右边的目标真值表:S 这一列像哪一种门?C 这一列又像哪一种?板上摆着四种门,挑出合适的两个,把 A、B 接进去,再把输出接到 S 和 C 两盏灯上。多余的门不用管。

验证通过后把它封装成一只半加器芯片。1937 年,贝尔实验室的斯蒂比兹把几只继电器、两个手电筒灯泡带回家,在厨房的餐桌上搭出的,就是这样一个二进制加法电路。

全加器

列竖式做加法时,每一位其实要加三个数:A 的这一位、B 的这一位,还有低位送来的进位 Cin。能处理这三个输入的电路叫全加器。

板上有你刚封装好的两只半加器芯片(HA)。先用第一只把 A 和 B 加起来,再用第二只把这个结果和 Cin 加起来,第二只的“和”就是最终的 S。

两只半加器各有一个进位输出,只要其中一个是 1,就该向高位进位。挑一个门把它们合并成 Cout。验证八种输入,全对后封装成全加器芯片(FA)。

四位加法器

四只全加器排成一行,和竖式一模一样:上面一排开关是 A,第二排是 B,下面一排灯是和。每只全加器的进位输出,接到左边高一位的进位输入——橙色的线就是进位。

拨动开关出一道题,看信号一位一位算过去。试试 1111 + 0001:最低位产生的进位要依次穿过四只全加器,高位的结果要等低位算完才能定下来,所以它叫行波进位加法器。右侧的波形图记下了每个和位是什么时候稳定的。

右边还有一只“减”开关 M:打开后,每个 B 先经过异或门被取反,最低位再多加一个 1。A − B = A + B + 1,减法也交给了同一只加法器。

从加法器到 CPU

你搭的四位加法器成了这台小 CPU 的运算器。它周围多了几样东西:寄存器 A、B 用来记住数;程序存储器里存着一条条指令;程序计数器 PC 记着现在执行到第几条;控制器看懂指令,决定这一拍把哪些数送进加法器。

每按一下时钟,它执行一条指令,分四拍:取指令 → 译码 → 执行 → PC 加 1。先一步一步执行“3 + 4”,再运行“倒数”和“3 × 4”——它没有乘法器,乘法是用加法循环做出来的。右侧的程序可以改:点操作数旁的 − 和 +,换个数再运行。

最后按“拉远”,数一数从一只开关到一块芯片要多少晶体管。1971 年的 Intel 4004 也是 4 位的,有 2300 只。机器怎样用更多的加法和乘法“学习”,见 NeuroLab。

随堂检测

回顾八个课题,完成下面的选择题。

更多实验

返回首页