题解 | #脉冲同步电路#

脉冲同步电路

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_edge;
	always @(posedge clk_fast or negedge rst_n) begin
		if (~rst_n) begin
			data_edge <= 0;
		end else begin
			if (data_in) begin
				data_edge <= ~data_edge;
			end else begin
				data_edge <= data_edge;
			end
		end
	end

	reg data_edge_br;
	reg data_edge_br2;
	reg data_edge_br3;
	always @(posedge clk_slow or negedge rst_n) begin
		if (~rst_n) begin
			data_edge_br <= 0;
			data_edge_br2 <= 0;
			data_edge_br3 <= 0;
		end else begin
			data_edge_br <= data_edge;
			data_edge_br2 <= data_edge_br;
			data_edge_br3 <= data_edge_br2;
		end
	end

	assign dataout = (data_edge_br2 & ~data_edge_br3) | (~data_edge_br2 & data_edge_br3);
			

endmodule

脉冲转换为边沿,对边沿打两拍,再边沿转换为脉冲。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务