[What]读书笔记-->电控开关

复习数字电路的关键概念。

实现基本的加法器

理解与或非门

再复杂的数字电路,都是由基本的与或非门所组成的,其电路逻辑为:

  • 与门:两个开关串联,只有两个开关都闭合(为1)时,电路才接通(为1)
  • 或门:两个开关并联,只要其中一个开关闭合(为1)时,电路都可以接通(为1)
  • 非门:一个反向开关

基于以上3个基本门,可以创造出异或门(XOR)等其他基础逻辑门:

xor.jpg

用逻辑门实现1+1=2

将等式 “1+1=2” 转换为2进制等式:

  • 0 + 0 = 0
  • 1 + 0 = 1
  • 0 + 1 = 1
  • 1 + 1 = 10

观察前3个等式,可以看出其逻辑正好与异或门一致。

  • 注意: 逻辑门与数学运算概念并不等价,只是用逻辑门来表示最基础的运算

等式4产生了进位,并且是两个输入同时为1时才会产生进位,那么这个逻辑正好与门一致。

最终用逻辑门实现公式 “1+1=2”的电路如下:

half_adder.jpg

可以在此处在线体验。

更多位的运算

以上加法电路并不能运算多位二进制相加的问题,回过来看二进制的运算过程还需要处理上一级产生的进位。 上面不能处理上一级进位的便是 1位半加器 , 反之能处理进位的便是 1位全加器

adder.jpg
  • 两个半加器的进位通过或门输出,其逻辑是两个半加器最多有一个会产生进位。

而多位的二进制运算便是串联形式的处理上一级产生的进位:

4bits_adder.jpg

可以在此处在线体验。

电路优化–先行/并行进位

上面的4位加法器实际上是一个串行电路,因为下一个1位加法器的运算需要依赖于上一个加法器的进位值。

  • 假设一个1位机械式的加法器的运算时间为1秒,那么4位加法器得到最终正确的结果就需要4秒。

但实际上:每一级的进位结果只与第一级加法器的进位输入和所有的加数值有关,而各级加数值是已知的并且第一级进位输入一般是0, 那么就可以通过先行做逻辑运算得出每一级的进位输出值,而不是等待串行进位。这就是“先行进位”或“并行进位”。

布尔代数便可以抽象出这些逻辑关系并化简电路。

比如有如下原始逻辑:

bool_normal.jpg

如果直接按照此逻辑生成逻辑图如下:

bool_normal_circuit.jpg
  • 可以看到运算逻辑需要8级传递才能得出最终值,比较耗费时间。

经过公式化简后:

bool_simple.jpg

对应的逻辑图为:

bool_simple_circuit.jpg
  • 化简以后的电路只需要3级传递就可得出最终值。

让电路具有记忆功能

D触发器

前面的加法器假设是人通过按键来触发输入,为了不一直按着按键以保持状态。那么除了使用自锁按键,还可以使用记忆组合电路。

D_ff.jpg

上图既是一个D触发器(锁存器)的内部组成逻辑:

  • 当L为1时,Q与D的值一致
  • 当L为0时,Q保持L为0前的值

边沿触发器

edge_trigger.jpg

如上图所示,将两个D触发器级联并且存储端口操作逻辑反向,便形成了上升沿触发器, 实例

  • 当Lock为0时,第一个触发器的值与D一致,同时第二个触发器处于锁存的状态。
  • 当Lock由0到1时,第一个触发器的值被锁存,第二个触发器的值与第一个触发器的锁存值一致
  • 此时D的值无论如何变化都不会影响最终的Q值
  • 当Lock由1到0时,第一个触发器虽然被直通,但是第二个触发器由锁存住了原来的值,所以此时D值的变化也不会影响最终的Q值

通过以上逻辑分析就可以知道这是一个上升沿触发器。

也就是说:允许数据在Lock为低时变化,在Lock变高后的这个上升沿便锁定了信号。

  • 这就是SPI这类通信协议所规定的,时钟为低时数据变化,时钟为高时数据被读入。
    • 到此便有了时钟的概念

时钟

半频器

在上面边沿触发器的基础之上,如果将Q'与D端相连接,就变成了一个半频器。

  • 当时钟的一个上升沿到来之后,Q与Q'形成了稳态
  • Q'的信号又返回给D端,但此时D端新的电平并不能传递至Q和Q’,只有再来一次上升沿触发后才行

也就是说只有锁存端的上升沿才能触发Q'和Q电平翻转,也就相当于将锁存端的时钟信号进行了分频.

注意: 要实现这种效果需要保证时序匹配,也就是 保证Q'的信号反馈到D后(电路时延)锁存端口才能翻转 , 否则结果就是不可预测的!

  • 也就是对时钟源有振荡频率的限制。

多分频器

clock.jpg

如果将一个半频器的输出与下一个半频器的锁存连接,变就形成了4分频器。 以此推类,每增加一个半频器,输出频率除以2.

计数器

counter.jpg

主动操作时钟的输入便会发现Q端的输出便是一个CLK输入的计数器!RST即为计数器清零管脚。

  • 不过这个计数器是个串行计数器,也就是Q端都稳定是需要信号一级一级传递的。
Last Updated 2019-06-09 日 22:49.
Render by hexo-renderer-org with Emacs 26.1 (Org mode 9.1.14)