题解 | #时钟切换#

时钟切换

https://www.nowcoder.com/practice/1de5e9bf749244cb8e5908626cc36d36

`timescale 1ns/1ns

module huawei6(
	input wire clk0  ,
	input wire clk1  ,
	input wire rst  ,
	input wire sel ,
	output wire clk_out
);
//*************code***********//
reg sel_clk0;
reg sel_clk1;
wire sel_clk0_n;
wire sel_clk1_n;
wire sel_clk0_in;
wire sel_clk1_in;
wire sel_clk1_out;
wire sel_clk0_out;
//*************code***********//
assign sel_clk1_n = ~sel_clk1            ;
assign sel_clk1_in = sel & sel_clk0_n   ;//告诉另一个时钟沿已经关闭

assign sel_clk0_n = ~sel_clk0            ;
assign sel_clk0_in = (~sel) & sel_clk1_n;//告诉另一个时钟沿已经关闭
assign sel_clk0_out = clk0 & sel_clk0    ;//搬移到低电平跳变的sel 信号
assign sel_clk1_out = clk1 & sel_clk1    ;//搬移到低电平跳变的sel 信号
//下降沿触发器
always@(negedge clk1 or negedge rst)
begin
	if(!rst)
		sel_clk1<=0;
	else
		sel_clk1<=sel_clk1_in;
end

always@(negedge clk0 or negedge rst)
begin
	if(!rst)
		sel_clk0<=0;
	else
		sel_clk0<=sel_clk0_in;
end

assign clk_out = sel_clk1_out|sel_clk0_out;
endmodule
//避免毛刺:1.当一路时钟使能的时候,必须知道另一路时钟已经关闭(避免竞争冒险,触发器反向输出反馈) 2.sel切换信号必须在两个时钟低电平的时候跳变,防止产生尖峰(下降沿打拍)

全部评论

相关推荐

点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
想按时下班的我在等o...:我投测试也是这个情况,不知道咋办了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务