实验三
• 1、参照代码,设计一个0-17的计数器,当计数值为17的时候, OV输出1,其他输出0,注意设定合理的信号位宽。
• 2、针对以上计数器,修改输出逻辑,当计数值为0-8时, OV输出0,9-17时OV输出1
• 用SignalTap验证
• 尝试并思考,如果时钟是50MHz,把OV接到一个LED上,能看见什么现象,为什么?
1.设计一个0-17的计数器,当计数值为17的时候, OV输出1,其他输出0,注意设定合理的信号位宽。
设计过程如下:
由上图可以看到时序仿真存在毛刺。我们放大来看,由2变到3的时候是正常的,但是由3变到4的时候中间却出现了2和6,这是因为2(010)到3(011)只发生最低位从0到1变化一次即可,但是3(011)到4(100)却要三位全都改变,这在计算机处理的时候需要一个过程先要最低位的1变为0(出现2(010)),再把最高位的0变成1(出现6(110)),再把第二位的1变成0,就是最终的结果4了!
用SignalTap验证:
2、针对以上计数器,修改输出逻辑,当计数值为0-8时, OV输出0,9-17时OV输出1
尝试并思考,如果时钟是50MHz,把OV接到一个LED上,能看见什么现象,为什么?
如果时钟是50MHz,那么一个周期就是20ns,再执行上面的程序,也就是说LED灯会在9-17这个过程变亮,其余时间是灭的,但是亮的持续时间只有9*20=180ns,用肉眼分辨不出来,看到的是常亮的状态。如下图所示:
1