一个计数器引发的思考—2 使用仪器排查问题
使用逻辑分析仪和示波器排查问题
用逻辑分析仪来找一下问题原因。为了配合逻辑分析仪的高速采样,将Dout0的时钟频率改为500KHz。将CLR异步清零管脚接DIN4同时进行观察。


可以看到数据线QA到QD从0到7循环,跟数码管显示结果一致。CLR上出现一个毛刺0,使得计数到7后被清零。这就是计数器没有按设计从0到9计数的原因。CLR上出现了异常的毛刺0.

进一步排查组合逻辑产生CLR信号。将电路的CLR信号断开,不要这个清零反馈。按上图接线。DIN0测试E点,DIN1测试F点。DIN4测试G点信号。

以看到在最后一级与非门的E和F信号同时发生跳变时,G点信号产生毛刺。理论分析如下,F和E同时发生跳变时,当F点跳变超前E点跳变则会在G点产生毛刺。这个毛刺为低,使计数器错误清零。

用示波器观察信号的对齐时间差别,AIN1黄色线测试E点,AIN2蓝色线测试F点,AIN3红色线测试G点。打开cursor功能,用虚线卡一下跳变的边沿,可以看到蓝色线超前黄色线跳变,出现了一个20ns的同为1的时刻,红色线就出现了毛刺。实测跟理论分析一致。

理解竞争和冒险
通过示波器,我们观察到了竞争和冒险的情况。数字电路中对竞争和冒险描述如下。
竞争:在组合电路中,信号经由不同的途径达到某一会合点的时间有先有后,这种现象称为竞争。
冒险:由于竞争而引起电路输出发生瞬间错误现象称为冒险。表现为输出端出现了原设计中没有的窄脉冲,常称其为毛刺。
竞争与冒险的关系:有竞争不一定会产生冒险,但有冒险就一定有竞争。
数字电路设计中,竞争和冒险一定会出现。但是好的设计不会让竞争冒险制造问题。好的设计可以让数字电路的速度跑的更快。