欢迎光临散文网 会员登陆 & 注册

一个计数器引发的思考—4好的解决方法

2020-08-29 12:11 作者:硬木课堂  | 我要投稿

一种好的解决问题的方法

        将异步清零改为同步置数,也可以解决问题。Load管脚是74HC161的同步置数端。将组合逻辑输出的G点接Load管脚。计数到10的时候G=0,由于是同步置数,要一个时钟周期在第11步置数为0. 这样电路不改的情况下就是0到10计数,比异步清零计数器多一个数。鉴于本文讨论的内容,这个区别可以忽略。


        先用数码管测试,Dout频率改为1Hz。将74HC161的QA QB QC QD这4根数据线接硬木课堂仪器平台的Din0 Din1 Din2 Din3用数码管观察。数码管显示0到0x0A循环计数。功能正常。

        用逻辑分析仪测试。Load接DIN4。QA QB QC QD接 Din0 Din1 Din2 Din3。可以看到0到0x0A的整个计数过程。由于组合逻辑没有改变,在7到8跳变时load上也会有冒险造成的毛刺。

        为什么这个load管脚上的毛刺没有造成问题呢?咱们用示波器观察一下。AIN1黄色线测试E点,AIN2蓝色线测试F点,AIN3红色线测试G点。AIN4绿色线测试CLK。可以看到时钟CLK的边沿之前红色线Load都是稳定的,在时钟边沿后才出现竞争冒险的毛刺。


        通过示波器的观察测试,引出时序逻辑中的两个重要概念。建立时间和保持时间。

        建立时间:是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu就是指这个最小的稳定时间。

        保持时间:是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th就是指这个最小的保持时间。

        从示波器的测试波形可以看出,绿色时钟边沿之前load信号都是稳定的,必然满足建立时间。74HC161对保持时间要求为0 。必然也就满足了保持时间。所以同步置数可以解决竞争冒险问题。

74HC161的手册对建立时间保持时间的说明

        同步时序逻辑对组合逻辑的时延要求不像异步那么苛刻。并且如果组合逻辑时延过长,还可以在组合逻辑中加一级触发器暂存中间结果,将组合逻辑分为两个部分。这样组合逻辑时延就减半,多一个节拍。可以使整个数字电路速度提高。

总结

        本文对竞争冒险,建立时间和保持时间做了一个入门讲解,通过实验使读者有一个直观的认识。并且通过一个简单实例的排查过程,给读者展示了数字电路的调试技巧和思路。关于建立时间和保持时间在FPGA的理论书中有详细说明,这里不再赘述。


一个计数器引发的思考—4好的解决方法的评论 (共 条)

分享到微博请遵守国家法律