题解 | 多bit MUX同步器
多bit MUX同步器
https://www.nowcoder.com/practice/30e355a04a454e16811112cb82af591e
`timescale 1ns/1ns module mux( input clk_a , input clk_b , input arstn , input brstn , input [3:0] data_in , input data_en , output reg [3:0] dataout ); reg [1:0] data_en_r; always @(posedge clk_b or negedge brstn) begin if (!arstn) begin data_en_r <= 2'b00; // Reset data_en_r on reset end else begin data_en_r <= {data_en_r[0], data_en}; // Shift in the new data_en value end end always @(posedge clk_b or negedge brstn) begin if (!brstn) begin dataout <= 4'b0000; // Reset dataout on reset end else if (data_en_r[1]) begin dataout <= data_in; // Update dataout with data_in when data_en is high end else begin dataout <= dataout; // Maintain previous value of dataout when data_en is low end end endmodule