1.原理
组合逻辑的缺点就是竞争和冒险,使用时序逻辑可以极大的避免这一问题。
寄存器的异步指的是不关心时钟来不来,只要检测到复位信号有效,立即执行复位操作。
上面的led_out是同步,下面的是异步。
如图所示,组合逻辑不关心时钟,在输入发生变化时,输出就发生变化。因此组合逻辑对毛刺不能屏蔽,而时序逻辑对毛刺有较好的屏蔽作用,因为它只在时钟的某一个上升沿或者下降沿采样。
时序逻辑还可以起到延迟一拍的效果。
时序逻辑延迟了一个时钟周期,因为表达组合逻辑时,如果时钟和数据是对齐的,默认当前时钟沿采集到的数据是在该时钟上升沿同一时刻的值,如果是时序逻辑,如果时钟和数据是对齐的,默认当前时钟沿采集到的数据是在该时钟输入数据前一时刻的值
2.代码
这是同步的复位。
这是异步的复位,不用等到下一个时钟的上升沿就可以复位。
因此同步会多出一个选择器,消耗逻辑资源。建议使用异步复位。
时钟周期是对的
20+210=230延迟210s把复位信号拉低是正确的。如图因为是时序逻辑,输出信号延迟输入信号1拍,输出信号延迟正确,
复位信号在此刻拉低,但输出信号并无影响,而是在下一个时钟上升沿受到了影响,到下一个位置复位信号拉高,输出无影响,而在下一个时钟上升沿变化。这就是同步复位。
如图,这就是异步复位,不用等到时钟的上升沿才复位,而是只要复位信号低电平,就有效,输出就会清0。