1.二选一门控时钟电路设计
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5d1a98e760b25d936ed23b98fe2bd6c3.png)
- 这种反馈钳制设计虽然使clk_o在时钟切换的时候会短暂没有时钟,但是切换时无毛刺产生。
- 注意使能寄存器是下降沿触发,原因参考 门控时钟.
这里图中画了反相器,但实际上综合结果会不会有反相器取决于工艺库(若库中缺乏下降沿触发的触发器就会推断出一个带额外反相器的电路)
- 在使能信号寄存器之前多加了一级打拍寄存器(也可以加两个),打拍寄存器和使能寄存器直接无额外逻辑,最大限度保证了在clk1/clk2下降沿可以采到稳定的使能信号。
- 打拍寄存器的亚稳态问题也需要考虑,否则由于使能寄存器是在下降沿采样的也许时间比较紧急,小于寄存器的决断时间,那就可能会导致亚稳态传播。打两拍处理会更好,即在使能寄存器之前再加一打拍寄存器。
2.设计代码
module clk_gating(
input sel_i,
input en_i,
//加入了en_i信号,相当于在使能寄存器之前加了一个选择器,当en_i为0,clk_o无输出时钟。
//这样会把打拍寄存器到使能寄存器的延迟增加。
input clk1_i,
input clk2_i,
output clk_o
);
wire clk1_ando,clk2_ando;
reg clk1_d