题解 | #时钟切换#
时钟切换
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
因为两个时钟是同步的,所以不用在与门后面再打两拍实现跨时钟同步。
