题解 | #时钟切换#

时钟切换

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再打一拍即可。

全部评论

相关推荐

点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务