Skip to main content

数字电路学习笔记(一):前言

决定写一系列关于数字电路的文章,整理一下过去几个月内本人自学的相关知识,从一个高中生的角度讲讲我对知识点的理解,算是一种巩固练习。限于知识水平,许多内容可能没有真正理解,如果有大佬路过,也欢迎提出改进意见,谢谢!


一、什么是数字电路?

我们从一道经典的初中物理题开始:

某档案室有三把钥匙,分别由主任与两个保管员保管。主任的钥匙可以直接开门,而两个保管员的钥匙则只有同时插入才能开门。档案室大门还有一个防盗装置,激活时无论什么钥匙都无法开门。试画出电路图,用电键表示钥匙孔与防盗装置,马达表示门锁。

当然,题目本身并没什么难度,任何一个受过良好的九年义务教育的同学都应该能完成:

但是,这道题目看似沙雕,实则暗含了数字电路的思想!我们重新审视一下这道题:

当“主任的钥匙插入”或者“‘档案保管员 A 的钥匙插入’而且‘档案保管员 B 的钥匙插入’”而且“防盗装置 开启时,门锁打开

我们把所有可能的情况列出来看看:

主任保管员 A保管员 B防盗装置门锁
未就位未就位未就位关闭关闭
未就位未就位未就位开启关闭
未就位未就位就位关闭关闭
未就位未就位就位开启关闭
未就位就位未就位关闭关闭
未就位就位未就位开启关闭
未就位就位就位关闭开启
未就位就位就位开启关闭
就位未就位未就位关闭开启
就位未就位未就位开启关闭
就位未就位就位关闭开启
就位未就位就位开启关闭
就位就位未就位关闭开启
就位就位未就位开启关闭
就位就位就位关闭开启
就位就位就位开启关闭

进一步抽象化,注意到这个逻辑中包含了四个“自变量”事件,可以分别用 A、B、C、D 表示;而它们则操纵着一个“因变量”事件,用 X 表示;再定义“1”为开关闭合或马达运转,“0”则相反:

AABBCCDDXX
00000
00010
00100
00110
01000
01010
01101
01110
10001
10010
10101
10110
11001
11010
11101
11110

到这里,我们已经列出了一个叫“真值表”的东西。其实,它还可以被化为更加抽象的函数形式——类似(A+BC)D(A+BC)\cdot D'这样——在以后,会看到它是如何在电路设计中起到关键作用的。

总结一下,首先有四个数字输入信号(它们的幅值和时间都是离散的),通过一系列“黑箱操作”逻辑或运算规则,把四个自变量进行运算,得出了一个因变量——事实上,这就是数字电路。

二、为什么要有数字电路?

数字电路,实际上就是计算机的基础——计算机本质上,就是通过对一系列由 0 和 1 组合的量进行运算,得出结果的。而再弱化一点,哪怕是对几个指示灯的控制,或者简单的饮料机,也会用到逻辑电路。

从古至今,人类都面临着一个相同的问题:懒惰。人类几乎是天生地不想去做重复的工作,因而发明了各种各样的工具替代我们完成这些任务——比如印刷术,比如交通工具,比如水轮磨坊。这些不仅将人们从低价值的劳动中解放出来,还极大提高了社会生产效率。可以说,是懒惰促进了社会的进步。(误)

而数字电路,则就是人类大脑的扩展。在刚才的例子中,我们完全可以派一个尽心尽责的保安大叔在门口负责大门开闭——但谁能保证,他就不会出错呢?或者退一步讲,任何一个人日复一日地干这样无聊的工作,效率肯定不会高吧?因此,数字电路就代替了这些人脑的机械的逻辑运算。无论是几百根管的真空管电路,还是上千万门级别的集成电路,归根结底都是起着类似的作用。而数字电路做成的小元件以一定的方式组合,就成了计算机的雏形。

但是,由于本人并不精于微电子,许多关于电路设计的理论都仅限于纸上谈兵,对于硬件的了解非常有限,因此也无法对电路本身的性能作出负责的评价。对于数字信号与模拟信号也未做太多说明,留至 A-D 转换部分(如果我坚持的到的话)再写。

三、为什么我要自学数电?

惭愧的是,我一开始学习数电的目的,竟然是为了打游戏...

奋战两个月的成果

Minecraft 中提供了红石线与红石火把两种最基础的元件,分别可以作为或门和非门使用;而这两个门就可以组合出所有逻辑门,进而搭建出计算器、控制器之类的大型电路。因此,如果要在 Minecraft 中完全掌握红石技术,数字电路知识是必不可少的。

当然,随着我接触编程,渐渐意识到了计算机方面的基础知识(数电模电、组成原理、编译原理)对语言理解的必要性,因此更加需要学习。

那么,前言部分就这么结束了,让我们赶快进入正文。

最后的最后,既然来都来了,就捧个场呗?