一个计数器引发的思考—3 不是很好的解决方法
一种不是很好的解决问题的方法
通过之前的分析,是E点信号的延时导致了竞争,冒险产生了G点的毛刺。将F点的信号进行延时,让它跟E点信号对齐跳变,就可以消除竞争。用门电路来进行延时,在F信号中插入两个非门。这样QD到F的时延跟QB QC到E的时延都是两个门电路。

用示波器测试,AIN1黄色线测试E点,AIN2蓝色线测试F点,AIN3红色线测试G点。可以看到添加门延时后,信号跳变对齐,毛刺消失。

将G点接回到CLR上,构成异步清零计数器。Dout0的时钟改为1Hz。将74HC161的QA QB QC QD这4根数据线接硬木课堂仪器平台的Din0 Din1 Din2 Din3用数码管观察。数码管0到9循环显示。

用逻辑分析仪测试,DIN4接CLR。Dout0的频率改为500KHz,这样可以配合使用逻辑分析仪的高采样率。可以看到0到9的计数循环,并且状态10的短暂瞬间也可以看到。因为状态10被异步清零。教科书中将异步清零的这个状态称为“过渡态”

为什么说这是一种不是很好的解决问题的方法呢。因为靠逻辑门延时很不可靠。门延时受到多个因素影响,比如器件的温度,器件的工艺(器件的型号里的字母丝印),供电电压等等。比如用这个方法在FPGA芯片里面设计,有可能换了一个FPGA芯片型号,电路就出故障了。(本文以计数器举例,请不要局限于计数器电路,可以推广到数字电路中的诸多控制和时序设计中。)