本期是数字电路入门3,我们将讲解「时序电路」,及其核心部件触发器的工作原理。
什么是时序电路?
上期学过的「组合电路」是根据当前输入信号的组合来决定输出电平的电路。换言之,就是现在的输出不会被过去的输入所左右,也可以说成是,过去的输入状态对现在的输出状态没有影响的电路。
这次讲解的「时序电路」和「组合电路」不同。「时序电路」的输出不仅受现在输入状态的影响,还要受过去输入状态的影响。
那么,如何才能将过去的输入状态反映到现在的输出上呢?「时序电路」到底需要些什么呢?人类总是根据过去的经验,决定现在的行动,这时我们需要的就是—记忆。同样,「时序电路」也需要这样的功能。这种能够实现人类记忆功能的元器件就是触发器。按结构和功能,触发器可以分为RS型、JK型、D型和T型。在这里,我们只讲解比较有代表性的类型,RS型和D型。
触发器就象一个跷跷板
图1: RS触发器的电路图
触发器的工作方式与日本的“起坐亲子游戏”很象。日本的“起坐亲子游戏”,指的就是公园里的跷跷板。想起跷跷板,就能想象出RS触发器的工作原理。
图2就是一个跷跷板。这个跷跷板有些生锈,即使没有人坐,也不能恢复水平状态。请记住它保持倾斜的样子。假设:
◇跷跷板的两端是输出Q和Q#。
◇左右的2个人是R君和S君,表示输入。坐上跷跷板表示逻辑高H状态,没有在跷跷板上表示逻辑低L状态。
(每次只允许一个人坐,两人不能同时坐。)
图2:跷跷板的初始状态(Q=L、Q#=H、R=L、S=L)
当S君坐上跷跷板(S=H)时,输出Q就变为H(Q#变成L)(图3)
图3:S君坐在跷跷板上的状态(Q=H、Q#=L、R=L、S=H)
因为跷跷板有些生锈了,动作不灵活,所以,即使S君下来了(S=L),Q#还是L,不改变(图4)。
图4:S君从跷跷板上下来的状态(Q=H、Q#=L、R=L、S=L)
当R君坐上跷跷板时,Q变成L(Q#变成H)。当R君从跷跷板上下来时,也会保持L状态。从这个过程来看,我们是不是可以说跷跷板记住了以前坐过它的人呢。
图5:RS触发器的真值表
用真值表表示RS触发器的工作过程的话,就象图5所示一样。表中Q0和Q0#表示的是输入变化以前的输出。
RS触发器是最简单的触发器。主要用于防止机械式开关的误操作。
按时钟变化记忆的D触发器
D触发器是在时钟信号(CK)的上升沿(信号从L→H的变化)或下降沿(信号从H→L的变化)时,保持输入信号状态,改变输出信号的触发器。
图6:D触发器
Q0:输入变化前的输出
x:H或L都可以
↑:L向H的转移
图7:D触发器的真值表
现在,我们用跷跷板来说明D触发器的工作原理。跷跷板的初始状态如图8所示。D君坐上跷跷板表示输入为H,从跷跷板上下来表示输入为L。跷跷板的另一边,放一个比D君轻的重物。另外,这个跷跷板与一般的跷跷板不同,只有在时钟CK上升沿时,才改变跷起的方向。
图8:D触发器的初始状态(CK=L、D=H、Q=L、Q#=H)
看着图8,你不觉得有些奇怪吗?D君坐在跷跷板上,却没有变化。按理说,由于D君比重物重,D君(Q#)应该降下来,才对。为什么跷跷板没有发生变化呢,这是因为CK还保持L状态。当CK变为H(CK上升)时,跷跷板就跷起来了,D君就下降了(图9)。
图9: D触发器的CK处于上升状态(D=H、Q=H、Q#=L)
然后,CK就稳定在H状态。这时,不管D君是从跷跷板上下来,还是再坐上去,跷跷板都不动。只要不在CK的上升状态,跷跷板就一直保持以前的状态。
这种动作的触发器被称为D触发器,具有在时钟上升瞬间,保持(记忆)输入状态的功能,是一种时钟同步时序电路。D触发器是时序电路的基本元件,用途广泛。D触发器的多级组合,可以做成移位寄存器、分频电路等。也可用于CPU内部的寄存器等。
SRAM是触发器构成的吗?
触发器可以记忆H或L,1位的信息。大量排列触发器,并使之具有可选择性后,就可以构成SRAM。由于SRAM的输入输出速度比DRAM和闪存的访问速度高得多,所以,常用作CPU的缓存和寄存器。
尽管我们这样说,实际上CPU中内置的存储器或寄存器并非使用的是RS触发器这样的逻辑门。由于使用逻辑门,会使电路规模变大,所以,一般使用4到6个FET,再经过优化,构成存储器的1位(图A)。
图A:SRAM的基本电路
时钟同步电路的必要性
我们分两次,「组合电路」和「时序电路」,对逻辑电路的基础进行了讲解。实际上,在设计逻辑电路时,有很多应该注意的事项。其中特别重要的就是关于时钟同步电路的注意事项。
在「组合电路」中,微小的信号传输迟延,都有可能造成输出毛刺。尽管毛刺是一个极其短暂的信号,但也可以引起逻辑电路的误动作。为了回避这个问题,就要使用时钟同步电路。
图10:时钟同步电路的思路
图10给出了时钟同步电路的概要。如图所示,其构造是在FF(触发器)之间夹着「组合电路」。毛刺是「组合电路」在输出稳定之前,输出的短暂信号。因此,在「组合电路」输出稳定以后,再改变时钟,用触发器保持这个输出,就可以回避这种误动作了。
至此,数字电路入门的三次讲座全部结束了。从「什么是数字?」开始,逐步讲解了「基本逻辑电路」、「数字IC的基础」、「组合电路」和「时序电路」。 实际上,电路设计方面还有很多很多必须学习的内容。请大家一定要自己找时间继续学习!下一期,我们将开始学习「微处理器」!