题解 | #时钟切换#
时钟切换
https://www.nowcoder.com/practice/1de5e9bf749244cb8e5908626cc36d36
`timescale 1ns/1ns module huawei6( input wire clk0 , input wire clk1 , input wire rst , input wire sel , output reg clk_out ); //*************code***********// //******切换电路 reg Q0,Q1; always@(negedge clk0 or negedge rst) begin if(!rst) Q0 <= 0; else Q0 <= ~sel & ~Q1; end always@(negedge clk1 or negedge rst) begin if(!rst) Q1 <= 0; else Q1 <= sel & ~Q0; end //*************** always@(*) begin clk_out = (clk0 & Q0) | (clk1 & Q1); end //*************code***********// endmodule
同步时钟切换仿真波形应该是如下这样的,题目给的参考不对。
PS:如果是异步时钟切换,则对于clk0和clk1的下降沿DFF再打一拍即可。