题解 | #时钟切换#

时钟切换

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***********//
wire a1o, a2o, en0b, en1b, a3o, a4o;
reg en1, en0;
assign a1o = sel & en0b;
assign a2o = (~sel) & en1b;
assign en0b = ~en0;
assign en1b = ~en1;
always @(negedge clk1, negedge rst) begin
	if (~rst) begin
		en1 <= 1'b0;
	end
	else begin
	    en1 <= a1o;
	end
end
always @(negedge clk0, negedge rst) begin
	if (~rst) begin
		en0 <= 1'b0;
	end
	else begin
	    en0 <= a2o;
	end
end
assign a3o = en1 & clk1;
assign a4o = en0 & clk0;
always @(*) begin
	clk_out = a3o | a4o;
end
//*************code***********//
endmodule

因为两个时钟是同步的,所以不用在与门后面再打两拍实现跨时钟同步。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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