题解 | #脉冲同步器(快到慢)#
脉冲同步器(快到慢)
https://www.nowcoder.com/practice/9f7c92635b5f49579e8e38fd8c8450d7
`timescale 100ps/100ps
module pulse_detect(
input clka ,
input clkb ,
input rst_n ,
input sig_a ,
output sig_b
);
reg sig_mid;
reg sig_mid_r,sig_mid_rr;
reg detect_b;
always @(posedge clka or negedge rst_n) begin
if(rst_n == 1'b0)
sig_mid <= 1'b0;
else if(sig_a)
sig_mid <= ~sig_mid;
else
sig_mid <= sig_mid;
end
always @(posedge clkb or negedge rst_n) begin
if(rst_n == 1'b0)begin
sig_mid_r <= 1'b0;
sig_mid_rr <= 1'b0;
end
else begin
sig_mid_r <= sig_mid;
sig_mid_rr <= sig_mid_r;
end
end
always @(posedge clkb or negedge rst_n) begin
if(rst_n == 1'b0)
detect_b <= 1'b0;
else
detect_b <= sig_mid_rr;
end
assign sig_b = sig_mid_rr ^ detect_b;
endmodule

