从D的触发机制到寄存器的同步清零
之前助教向我们介绍了利用MUX进行同步清零的操作,但是对于寄存器的clk端没有进行使用。当我在看到D的触发器的触发冒险机制时,我在思考能否将这种机制应用到寄存器的同步复位上,最终结果证明是可行的。
D触发器的触发
D触发器的实现
我在这里截取了PPT中D触发器的一种实现方式,通过对于时钟信号以及时钟信号的非的与操作,利用1冒险,实现了上升沿那一小瞬间的数据写入。
关键部分在这一部分
D触发器触发原理——冒险(1冒险)
D触发器利用的就是AA的冒险机制,当A端为低电平时,A端为高电平,当A端变成高电平的一瞬间(即时钟上升沿),由于非门的延迟,导致非门后的输出还来不及改变,此时与门的两端输入都为高电平,输出为高电平,但由于延迟只是很短一瞬间,之后便立即恢复稳定,即非门后输出低电平,最终与门输出为低电平。*
正是这一瞬间的高电平输入,使得触发器可以存入内容,并且在之后保持不变。
寄存器同步复位的实现
同步复位实现及正确性证明
上面的D触发器是自动的触发,可是我们想实现的是可控。要实现可受控的触发,可以对以上的模块稍作改变,在与门接上第三个输入,当第三个输入为高电平时,实现触发功能,为低电平时,关闭触发功能。我们可以这样改进:
我们可以用逻辑表达式的形式说明这个改进的正确性:
当clr=1时,F=clk*clk*clr=clk*clk*1=clk*~clk 与初始功能一致
当clr=0时,F=clk*clk*clr=clk*clk*0=0 输出始终为0,无操作
在FSM(P0.Q4)中的效果
最终可顺利通过评测。
写在最后
感谢大家阅读,如有疏漏,请多多指教。