题解 | #脉冲同步电路#
脉冲同步电路
https://www.nowcoder.com/practice/b7f37e6c55e24478aef4ec2d738bbf07
`timescale 1ns/1ns module pulse_detect( input clk_fast , input clk_slow , input rst_n , input data_in , output dataout ); reg data_in_latch ; reg data_in_latch_r1 ; reg data_in_latch_r2 ; reg data_in_latch_r3 ; //data_in_latch always @(posedge clk_fast or negedge rst_n) begin if(!rst_n) data_in_latch <= 1'b0 ; else if(dataout) //回落 data_in_latch <= 1'b0 ; else if(data_in) //拉高 data_in_latch <= 1'b1 ; end //data_in_latch 在clk_slow中打拍 always @(posedge clk_slow or negedge rst_n) begin if(!rst_n) begin data_in_latch_r1 <= 1'b0 ; data_in_latch_r2 <= 1'b0 ; data_in_latch_r1 <= 1'b0 ; end else begin data_in_latch_r1 <= data_in_latch ; data_in_latch_r2 <= data_in_latch_r1; data_in_latch_r3 <= data_in_latch_r2; end end //dataout assign dataout = data_in_latch_r2 & !data_in_latch_r3 ; endmodule