也许你还没有意识到,我们人类其实一直生活在“数字”的世界里,老祖宗发明了“度、量、衡”(这本质上就是模数变换器 - ADC),就把世间能够感知到的一切“物”进行了量化,比如身高1米78的小张同学到超市买了3斤6两苹果、中午11点30分要赶去北京的高铁。。。虽然我们面对的自然界的对象是“模拟“(Analog)的,也就是说连续的量,但我们大脑里处理的信息,相互之间交流的信息,都已经转变成了量化的、不连续的数字量(Digital)。
对连续的量进行量化,大大方便了我们对信息的处理,这包括了我们的逻辑判断(如果。。。那么。。。否则。。。)、数值计算等。
我们常常挂在嘴边的高/矮、上/下、对/错、开/关等其实就是非0即1的二进制,其实高多少、对几分、开多大必然存在着中间的模糊地带,但我们生活中仍然对很多事情做二值化的处理。
当然仅有二进制是不够的,我们将一天划分为12个时辰/24个小时,1年365天,1个小时分为60分钟;古代的一斤分为16两;各种制式适用于不同事物的量度,而进化下来,我们生活中最常用的就是十进制方式,不同的进制方式(编码方式)之间可以进行换算。
这其实就是“数字逻辑”的基础。抛开我们的信息载体“电路”,数字逻辑就是我们每个活着的人大脑中每天盘算的事情,是我们生活的日常。
翻看一下我们正在学的“数字电路”课程,可以说整个课程中,95%的内容讲的是“数字逻辑”,这些完全可以脱离开电路,仅有5%的部分讲述的是如何用“合适的电信号”来表征我们人类大脑认知的数字信息,并有效地处理这些数字信息。如果把数字世界看成对变化着的模拟世界进行“理想化”的抽象的话,我们同时要研究的就是如何尽可能理想化(稳定、真实)地表征信息、如何处理那些非理想化的因素,表现在电路上就是使用CMOS器件、高/低电平的判断、传输时间的影响、时序电路中的延迟、组合逻辑中的竞争冒险。。。等等,这些都是在实际的电路设计中要考虑到的因素。
而数字逻辑,正如我们每天的日常大脑所做的,对应教材中的: 各种逻辑门 - 因果关系,由一个或多个输入产生的不同输出结果,今天我还问了同事们一个问题 - 什么是“门”(Gate),为什么逻辑用“门”来表达? 组合逻辑 - 多个因素在一起产生的多种可能性、以及基于这些可能性做出的选择,比如学号、快递地址、从清华南门到北京火车站的道路 图片 时序逻辑 - 我们的世界一个重要的维度就是“时间轴”,日月星辰已经给我们设定了时钟,于是我们早上6点钟起床、8点半赶到公司、下午4:20要和同事一起乘坐去往上海的高铁,很多的行为都是在某个设定的时间点完成,无论是个人,还是一个集体。 图片 状态机 - 我们个体以及接触到的任何事物时时刻刻都处在某个状态,又会由某种“因”的触发而改变状态,从而形成了运动着的世界,构成了我们的日常。描述这种关系的方式就是状态机。 图片
当然,作为社会化的人,我们从小受到教育、接受社会的分工,从小到大的生活都受到“指令”的控制,比如父母培养你养成的习惯、你所处的社会环境设定的规章、制度,法律法规,在学校老师们给你安排的课程、布置的作业,企业的上级领导分配你的工作,我们每个人都是被“编程”了的单片机、微处理器系统,日复一日地按照设定的程序来生活着,程序被写在了我们的“存储器”里面,执行程序的过程中要处理好各种外界的输入(通过眼、耳、鼻等等这些传感器),做各种逻辑判断和计算,进而采取下一步的行动。
人本身就是一个“数字系统”,我们要设计的用电信号来表征的“数字系统”也就是要将我们日常的思维方式用电信号的方式映射出来。
所谓的“人工智能”就是将我们人类的思想、思维方式映射到一个个用电信号驱动的设备中,让这些设备通过电信号能够像我们人类一样去推理、计算、决策等。
一切源于我们自身。
而“数字逻辑”就是构成“数字系统”的基础。
最后我们来看一张图,关于计算机系统构成的知识结构图。你能否将每个层面都找到跟我们自身的对应?一旦理清楚这些对应关系,你也就清楚了“数字电路”的定位以及你学习数字电路的意义和方法。