一、谜题
男方:我很喜欢你。
女方:你是一个好人。
问:女方是否喜欢男方?
男方:晚上吃火锅吧?
女方:都行。
问:女方是否同意吃火锅?
女方:一个人在家好无聊…
男方:我马上到!
问:女方是否向男方发出了邀请?
为了攻克上面这些谜题,我们可以尝试从多个角度吹响冲锋号:语义学的角度、心理学的角度、两性关系的角度…或者电子工程学的角度。
二、从模拟到数字
众所周知,计算机的运行建立在二进制的基础上。这里的“计算机”是个很笼统的概念,它可以指CPU、处理器、芯片、单片机、FPGA、集成电路、片上系统…这些东西有一个更学术的统称:数字电路。
顾名思义,处理数字信号的电路就叫数字电路。顾名再思义,把信号用数字的形式来表示就得到了数字信号。更准确地说,在数字电路的世界里,任何一个信号都要先被量化为一个用二进制表示的整数(小数可以用浮点数的形式来表示,这个机制的底层也是二进制整数)。我们知道,二进制就是0和1的组合,所以在计算机系统的内部,无穷无尽的0和1们在奔腾、翻滚、碰撞着…那么,一个最基本的问题就是:在这一切喧嚣的初始,在数字世界的入口,什么样的信号是0,什么样的信号算1?
我们把这个问题暂时放一放,先来回忆一下在数字电路诞生之前的电子工程世界——那是个模拟电路的时代。
我上中学那会儿,MP3和ipod都还没有发明,更没有itunes或者网易云音乐。那时候音乐的载体叫卡带,为了播放卡带你需要买一台收音机,收音机上有一个用来调节音量旋钮。顺时针转动旋钮,音量就会逐渐变大,逆时针转就变小声。旋钮背后的奥秘在于它连着一个“滑动变阻器”,顺时针转动音量旋钮,会使得滑动变阻器的电阻变小,根据欧姆定律,电路中的电阻越小流过喇叭的电流就越大,喇叭震动得就越猛,于是音量也就越大。
今天的音乐播放器(比如智能手机)上一般都有两个按键,一个画着+号,一个画着-号。按一下+号键,声音就会变大一“格”,通常还会伴随着提示画面。比如按两下+,音量显示从4增大到了6。
忽略掉上面提到的电工知识和人机交互等细节,在收音机和智能手机上设置音量的本质区别在于:前者是连续量,后者是离散量。
收音机里面装着模拟电路板,模拟电路用来处理电信号,电信号是模拟信号,模拟信号是连续信号,这几个名词是一回事儿。可以把滑动变阻器看成一条由电阻铺成的路,只要你手法够细腻,理论上你可以通过转动旋钮停在这条路上的任何一个位置。
而iphone是个数字系统,只能处理数字信号,数字信号是离散信号,这几个名词也是一回事儿。数字化的音量就像楼梯,你要么上一级台阶,要么退下来,不可能停在半中间,你没法把iphone的音量调到5.5。
这样看起来,模拟电路似乎比数字电路更精密,但模拟电路的瓶颈在于——它做不大。另一方面,和数字电路带来的巨大优势相比,模拟信号离散化后损失的那点精度微不足道。打一个不太恰当的比方:模拟电路就像是奶奶家的私房菜,数字电路就像是西式快餐。前者确实保留了个性化的细腻风味,但只有后者才能发展成一门巨大的产业。
三、接口电路和ADC
现在我们已经知道,从模拟电路到数字电路是电子工程史上的一次巨大飞跃。那下一个问题就是:连续的模拟信号是怎么转换成数字电路中的离散信号的?
我们再对比一下电吹风和空调。电吹风用的是模拟电路,你按一下开关,会“接通”整个电路,于是电机启动吹出热风。这里的“接通”就是物理意义上的接通,按下开关会让开关的两个“触点”相互接触,就像你用一段水管连接了蓄水池和水龙头。
而当你按下空调的开关时,其实并没有改变空调的任何物理结构。你的这个动作通过“接口电路”产生了一个电信号,接着这个电信号被一种叫“ADC”(analog to digital converter)的器件数字化为“1”,空调的芯片识别到这个“1”之后,执行事先编排好的启动程序,于是压缩机开始工作、导风板偏转、显示屏点亮…
上述流程可以抽象为:
这里面涉及到两个电子器件:接口电路和ADC。
简化来说,一种常用的采集开关指令的接口电路是这样工作的:当开关没被按下时,接口电路的输入端悬空,接口电路内部的“上拉电源”使得输出电压保持在一个较高值(比如10V)。当开关按下后,输入端接地,于是接口电路采集到一个低电压(比如0V)。
而ADC的工作原理是:如果接收到高电压就输出“1”,如果接收到低电压就输出“0”。这样就完成了信号的数字化。
可以看到,接口电路是信息发送方(发送的信息是电压),就像女方发送“你是个好人”这条信息。而ADC是信息接收方,它负责把接收到的电压信号翻译成0或1,就像男方需要把收到的“好人卡”理解为“没门”或者“有戏”。
这样我们就回到了开篇的那个问题:什么样的信号算0,什么样的信号算1?什么样的反应代表“没门”,什么样的反应代表“有戏”?这背后蕴藏着一套信息的收发机制。
四、静态法则
前面已经对这个问题有一个概略的回答:高电压为1,低电压为0。那何为高何为低呢?
如果我们规定大于5V为高,小于5V为低,行不行?答案是否定的,因为没有考虑到信号传输过程中的噪音干扰。比如一个5.1V的信号叠加上噪音,到达接收端时可能就变成4.9V了,也就是把1误传成了0。
为了避免5V附近的信号受到风吹草动容易01颠倒,我们必须设立一个“无效地带”:比如7V以上为1,3V以下为0,3到7V为无效。根据应用场景,接收方收到无效信号后可以要求重传,比如讲电话时“没听清,麻烦您再说一遍”;可以选择忽略,比如看电影时一句台词没跟上并不要紧;可以保持上拍值,比如遭遇通讯干扰后按原计划继续执行任务;也可以输出预先定义的安全值,比如你问女朋友“想吃什么?”她回答“随便”,无效信号,那输出安全值——吃火锅。总之,通过定义无效地带,可以避免接收方对信号产生误解。
这样就行了吗?还不行。因为假如发送方发送一个2.9V的信号,叠加上噪音干扰,到达接收方时可能就变成了3.1V的无效信号。这样会大大降低信号传输的可靠性。所以需要对信号的发送方做出更严格的限制,比如如果想发送0,必须保证输出电压小于1V,想发送1,必须保证输出电压大于9V。
对于同样的0,发送方的门槛是1v,而接收方的门槛是3V,两者之间相差的2V电压就构成了信号传输的噪音容限。噪音容限的设置能够增加信号传输的抗干扰能力。这就是数字电路设计中最基本的“静态法则”(static discipline)。
静态法则的核心思想在于相较于信息的接收方,对信息的发送方要施加更严格的约束,确保发送方想表达的意思叠加上接收方的理解误差后,仍然不会进入“无效地带”甚至被理解成相反的意思。
根据这个思想,当你想表达一个明确的意思时,表达方式应该偏向“极端”而非“中庸”。面面俱到、四平八稳那是领导的讲话风格。和理工宅说话还是直接点好,行就是行,不行就不行,不要搞“婉拒”。婉拒很可能传递了无效信息,甚至被误解为“欲拒还迎”。
所以我倡议,亟需为好人卡制定统一的发放标准:
不愿意:“你是一个好人,但我对你毫无兴趣。”
犹豫期:“你是一个好人。”
愿意:“你是一个好人,一个人在家好无聊…”
参考文献:
1、网易公开课 《MIT电路与电子学》
更多内容欢迎关注微信公众号《周工讲理》:用理工思维生活育儿。
网友评论