题解 | #时钟切换#
时钟切换
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再打一拍即可。
查看28道真题和解析