【复位与释放(亚稳态)&模为60的BCD码计数器_2023.11.22】

复位与释放(异步复位,同步释放)

同步复位rst、同步置数load(置数信号只有在时钟上升沿到来时才能生效)、同步清零clr
同步复位:
always@(posedge clk)
if(!rst_n) b<=1’b0;
else b<=a;
同步复位信号rst必须至少长于一个时钟周期,否则这个复位信号引起的变化不会被检测到

异步复位:
always@(posedge clk or negedge rst_n)
if(!rst_n) b<=1’b0;
else b<=a;

亚稳态

若异步复位信号在释放时,刚好发生在时钟有效沿附近,会出现释放时与clk竞争,容易使寄存器输出出现亚稳态

减少亚稳态:两个触发器
当rst复位1→0,直接两个触发器复位
当释放0→1,第一个出现亚稳态,第二个会消除亚稳态,也就是打两拍

模为60的BCD码计数器

分析

1.个位<9且十位<5,个位+1
2.个位=9且十位<5,个位=0,十位+1
3.个位=9且十位=5,个位=0,十位=0

实现

【复位与释放(亚稳态)&模为60的BCD码计数器_2023.11.22】_第1张图片
【复位与释放(亚稳态)&模为60的BCD码计数器_2023.11.22】_第2张图片

思考

【复位与释放(亚稳态)&模为60的BCD码计数器_2023.11.22】_第3张图片
第一个always块中load置1的上升沿qout直接为50,第二个always块中qout为59的下一个上升沿cout置1,这是因为load是在tb中赋值,会被立即拉高

你可能感兴趣的:(IC验证,fpga开发,IC验证)