二极管与门的搭建
在C语言中我们学过与逻辑,符号是&,比如说两个事件同时成立,那么输出的布尔代数值是1。例如:1&1=1。且输出的值只有0或者1.
只要不是两个事件同时成立,那么输出的值便为0,例如:0&0=0;0&1=0;1&0=0。
以上就是程序中的与逻辑,实现非常简单,但是程序中逻辑与是怎么运算的呢?不谈硬件、只说软件就是耍流氓,因为软件需要硬件作为载体才能运行。与门电路
在数字电路中与门的电路符号如下图所示
A和B对应我们输入的值,对应上述1&1=1中的1&1,O为输出值,对应最后的结果1.
接下来我们进行仿真,用5V代表1,0V代表0,LED灯亮代表1,LED灯灭代表0.
有一路输入0V,LED不亮
同时给输入5V,LED灯亮
与门电路的实现
以上只是以电路符号的形式表现出来的与门的作用,但是在真实电路中是不存在这样分立元器件的。
那么如何用我们常用的电子元器件搭建与门电路呢?
二极管、电阻
要搭建与门电路最简单的办法是用二极管+电阻实现。电路如下所示
A、B同时为0V
上图中O点可以看做是悬浮状态,A、B为输入,当A、B两端同时输入0V时,由于二极管的钳位作用,O点会输出0.7V,因为二极管的导通电压为0.7V,且保持不变。
此时的电路图等同于下图所示,相当于通过二极管直接接地。
A、B中有一个是3V
当A或者B输入端有一个输入为3V呢?
以上电路的情况和第一种情况是一样的,因为有一支二极管的导通压降为0.7V,那么输出就为0.7V。
A、B同时为3V
当A和B同时为3V时,电路图可以简化为下图
因为同时输入高电平,所以我们可以把两支二极管看成一支,这样电路图也就明了了,A点电势为3V,因为二极管自身有0.7V的压降,所以B点的电势为3.7V,同理输出点O点电势为3.7V。
通过以上分析,我们得出如下结果
如果把0.7V看做0,3.7V看做是1,那么结果和与逻辑的值一致,其结果如下
或门电路的实现
和程序中的或逻辑一样,或逻辑是只要有一个条件成立,其值便为真。
数字电路中电路符号如下:
接下来我们来探讨或门是如何实现的。
二极管、电阻
或门也可以用二极管+电阻的方式来实现,而且比与门电路的实现还要简单,其电路图如下
当A、B同时给0V时,O点自不必说,这时候肯定为0V。
当A、B同时为3V时,这时候可以看做只有一支二极管,由于二极管的压降为0.7V,所以O点输出为3-0.7=2.3V。
当A、B中有一支为3V时,由于二极管的单向导电性,这时候二极管的电流只能通过电阻流向地,所以这时候的情况和第一种情况的结果是一样的,O点输出的也是2.3V。
也就是说只要有一个给3V,结果就是2.3V,其结果整理如下
如果把2.3V看做是高电平,0V看做是低电平,将得到如下真值表
程序中的逻辑运算在电脑芯片中便是通过这种方式实现的(只是其中的一种)。二极管"与或"门的缺陷
二极管与或门虽然可以实现逻辑运算,但也有一些不足的地方,不足的地方如下所示:
①:电压的不一致性
与门和或门的电压不一致,注定二极管与或门不能有深层次的应用,比如与门中高电平为3.7V,而或门中的高电平却只有2.3V;
与门中的低电平为0.7V,而或门中的低电平却只有0V,电压的不一致性,就不能为更为复杂的门电路做衔接,比如与门后面再加上混合逻辑运算,这样就会出现电平的混乱。
②:电阻的选择问题
如下所示的与门电路,如果电阻选择10K的话,流过电阻的电流为(5-0.7)/10=0.43mA,这个电流是没有驱动能力的,只适合把他们设计在芯片内部,如果只是走信号的话,电阻是远远大于10K的,因为芯片需要低功耗。
如果我们选择10Ω的电阻是不是就有驱动能力了?
答案是肯定的,当我们选择的电阻是10Ω是流过电阻的电流为:(5-0.7)/10=430mA。
430ma的电流已经可以驱动一些电路模块、小马达之类的了,那么与门设计成这样不好吗?
当然不行,因为这个电路在没有负载的时候流过的电流仍旧为430mA,如此大的功耗是不允许的。
所以说二极管与门电路只适合应用在芯片内部。