6、电平触发-D型触发器

前面<5>已经了解了R-S触发器,它最大的特点就是它可以记住哪个输入端最终状态为1。

但是有时候,我们需要一种记忆能力更加强大的电路,例如它可以记住在某个特定时间点上的一个信号是0还是1。

在构造这个电路之前,先考虑一下该电路它的具体行为。这个电路存在两个输入端,其中一端称之为“数据段”,取值为0或1.

另外一端称之为“保持位”,它的作用就是使当前的状态被“记住”,通常情况下,它的取值等于0,在这种情况下数据端对电路不会有影响。当保持位取值1,数据端的值就会被电路系统中被记住。

总结出来,它的真值表如下:

在前面两种情况下,保持位取值0,则把数据端的值输出。而当保持位取值0,数据端对输出不会有任何影响。

回想一下<5>学习到的R-S触发器的真值表,如下:

可以看到,如果S和R都为0的情况下,那S和R的输入对输出是没有影响的。因为,如果我们要构造具备保持功能的R-S电路,就可以在R-S的输入添加一个与门,同时添加一个保持位的输入端,电路图如下所示:

上诉的电路和R-S触发器并无差别,只是多了一个保持位,当保持位等于1的情况下,它的R-S触发器的结果就一模一样。

我们的目标是只有2个输入,再观察R-S触发器的真值表,R=1和S=1是禁止的,而R=0和S=0可以通过保持位来实现,那么有意义的输入就只有R=1和S=0或R=0和S=1,因为,我们可以把R和S合并成一个输入,并且R端添加一个反向器,如下图所示:

当保持位取值1,电路的输出就是数据端的输入取值。当保持位等于0,数据端的输入不会对输出有任何影响。

因此,我们就实现了我们的目标:要记录某个时刻点的输入。那就当时保持位取值等于1的时候,电路会保存数据端的取值,然后在把保持位取值等于0,数据端的取值就会被记住了。

这种电路被称之为电平触发的D型触发器,D(data)表示数据端输入。所谓电平触发是指当保持位输入为某一特定电平(上诉电路为“1”)时,触发器才保存数据端的输入值。

通常情况下,这种电路出现在书中的时候,输入端不会被标记为保持位,而是被标记为时钟。当然,这种信号并不是真正的时钟信号,但是在某些情况下它具备有时钟的属性,即它可以在0和1之间有规律的来回变化。但是现在时钟仅仅用来指示什么时候保存数据。

其真值表如下所示:

这个电路也就是所谓的电平输出的D型锁存器,它表示电路锁住一位数据并保持它,以便将来使用。因此,它也称之为1位锁存器。

有了1位锁存器,我们可以很快速的构造出8位锁存器。只需要用8个1位锁存器,并把每个锁存器的时钟线连接在一起,最终可以如下方框来表示一个8位锁存器:

好的,有了8锁存器之后,那我们就可以用它来做点有意思的事情。

回想前面的加法器,假如要进行3个数的相加,则需要先输入两个数,然后在通过观察灯泡,把计算结果写到纸上,接着在把计算结果作为输入A,而第三个数作为输入B去进行加法运算,最终才输出3个数的计算结果。

我们完全可以,把中间的结果存放在这个8位锁存器里面(暂且先不考虑进位输出),然后再进行和第三个数相加的时候,把锁存器的值直接输出到输入端A。

因此,我们需要一个2-1选择器,用来选择是把开关的值作为加法器的输入,或者是把锁存器的值作为加法器的输入。电路图如下所示:

它的真值表如下所示:

可见,当选择端等于0的时候,输出和输入A一样,当选择端等于1的时候,输出和输入端B一样。

需要8个这样子的选择器,它的输出连接到加法器的输入B,它的输入端A连接到面板的8个开关,而输入端B连接到锁存器的输出。

改进后的电路图如下所示:

进行3个数字的相加的操作则是这样子的:

先把两个数在面板上输入,此时选择器取值为0,那么面板开关的值就会作为加法器的输入B。

然后加法器计算出了结果,通过灯泡显示出来,同时传到锁存器,此时锁存器的开关需要闭合一下,让计算结果保存到锁存器里面,然后再断开。这样子前2个数的计算结果就保存到锁存器了,同时不会再影响锁存器的输出了。

最后把锁存器的开关闭合,加法器的输入B来自于锁存器,把第三个数从面板的开关输入到加法器的输入端A,最后加法器就会计算锁存器的值和面板开关A的值的求和。

 

对于加法器来说,它还可以改进一下,去掉一排8个开关。只保留一排8个开关。每次相加都是把开关的输入和锁存器的值进行相加,同时把计算结果保存到锁存器里面。因此需要初始化锁存器的输出为0,当第一次做加法的时候,就是把第一个数和0相加。因此对锁存器需要添加一个清零的输入端。

回想前面看触发器内部实现图,这里其实就是把复位输出在添加一个或门,该或门的另外一个输入就是清零。

当清零信号等于1的时候,或门肯定是输出1,因此等同于复位信号值1,那么Q端就会被置位,从而输出0。

改进后的加法器如下图所示:

此时,我们可以很方便的计算多个数字的相加了。

首先按下清零开关,这个操作使锁存器的输出全部为0,灯泡全部熄灭。然后再开关输入第一个要相加的数,这个时候该数就会和0进行相加,并把结果输出到锁存器。这个时候,锁存器的相加开关闭合,那么计算结果则会保存到锁存器,此时灯泡则会亮起,并且输出到加法器作为输入端B。当开关输入第一个数的时候,它就会和前面一个数的结算结果相加,然后再闭合一下相加开关,保存计算结果,输出到灯泡,作为加法器的输入端B。。。以此类推。。进行多个数的相加。

不过这里有个疑问?当闭合相加开关,锁存器的值输出到加法器,那不就和原本开关的值又相加,然后又输出到锁存器,如果此时锁存器的相加开关还未断开,那不就又再一次相加?

假如说,我们计算1+2。加法器先计算1+0,输出到锁存器,然后锁存器的相加开关闭合,此时计算结果输出到加法器的输入端B,那么就会又计算1+1,然后输出结果到锁存器,如果锁存器开关并没有断开,那不就是把计算结果2保存起来,并且再次输入到加法器。如果相加开关不断开,此时输入1,那则计算1+1+1+1+1+1+1不断的进行下去?

那是否要保证说,闭合之后马上断开?那则不取决于,锁存器的输出到加法器的输入以及加法器做加法运算的时间?

疑惑。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值