题解 | #时钟切换#

时钟切换

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 r1;
reg r2;

always @(negedge clk0 or negedge rst)begin
	if(!rst)
	r1<=0;
	else
	r1<=~r2&~sel;
end

always @(negedge clk1 or negedge rst)begin
	if(!rst)
	r2<=0;
	else
	r2<=~r1&sel;
end

  always @ (*) begin
        clk_out <= (r2 & clk1) | (r1 & clk0);
    end
	




//*************code***********//
endmodule

时钟切换电路,如果直接用sel与时钟相与,会出现毛刺,原因是sel的上升沿没有完全和需要的时钟上升沿对齐。解决的方法是用下降沿去采集,避免采样毛刺,此外需要保证输出时钟为低的时候进行时钟变化,因此需要接入负反馈,,代表着切换前时钟等待一阵子后,才会转换到切换后时钟。避免切换毛刺

全部评论

相关推荐

04-17 18:32
门头沟学院 Java
野猪不是猪🐗:他跟你一个学校,你要是进来之后待遇比他好,他受得了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务