1、确定题目要求

通过在每个时钟源的选择路径中插入一个负边沿触发的D触发器,可以确保时钟在高电平时,输出保持不变。 通过这种反馈的方式使得在时钟切换时需要等待当前时钟取消选择,从而避免毛刺的产生。


该电路中有三个时序路径需要特别考虑:sel控制信号到两个负边沿触发触发器任意一个,DFF0的输出到DFF1的输入,DFF1输出的DFF0输入。 如果这三个路径中的任何一条信号在目标触发器时钟的捕获沿发生改变,则该寄存器的输出可能变为亚稳态。因此,需要将两个触发器的捕获沿和sel信号的发射沿设置为彼此分开,这可以通过时序约束实现,因为两个时钟之间的时序关系是已知的。


2、写出v代码

module huawei6(

       input wire clk0  ,

       input wire clk1  ,

       input wire rst  ,

       input wire sel ,

       output wire clk_out

);

reg sel1,sel0;


always @(negedge clk1 or negedge rst) begin

       if(rst == 1'b0) sel1 <= 0;

       else sel1 <= !sel0 & sel;

end

always @(negedge clk0 or negedge rst) begin

       if(rst == 1'b0) sel0 <= 0;

       else sel0 <= !sel1 & !sel;

end


assign clk_out = (sel1 & clk1) | (sel0 & clk0);


 


endmodule


仿真结果如下:

如果关于此次题单有问题或者反馈意见,欢迎加入牛客用户反馈群沟通~