题解 | #脉冲同步电路#

 //总体代码
`timescale 1ns/1ns

module pulse_detect(
	input 				clk_fast	, 
	input 				clk_slow	,   
	input 				rst_n		,
	input				data_in		,

	output  		 	dataout
);

reg pulse_mux;  //翻转电路
reg pulse_reg1;
reg pulse_reg2;
reg pulse_reg3;

always @(posedge clk_fast or negedge rst_n) begin
	if(!rst_n) begin
		pulse_mux <= 1'b0;
	end
	else if(data_in) begin
		pulse_mux <= ~pulse_mux;
	end
end

//两级寄存器打拍同步
always @(posedge clk_slow or negedge rst_n) begin
	if(!rst_n) begin
		pulse_reg1 <= 1'b0;
	end
	else begin
		pulse_reg1 <= pulse_mux;
	end
end

always @(posedge clk_slow or negedge rst_n) begin
	if(!rst_n) begin
		pulse_reg2 <= 1'b0;
	end
	else begin
		pulse_reg2 <= pulse_reg1;
	end
end

//因为跨时钟域电路在打完两拍后才能稳定,所以需要加上第三个寄存器,与第二个寄存器的结果组合来恢复脉冲
always @(posedge clk_slow or negedge rst_n) begin
	if(!rst_n) begin
		pulse_reg3 <= 1'b0;
	end
	else begin
		pulse_reg3 <= pulse_reg2;
	end
end

assign dataout = pulse_reg3 ^ pulse_reg2;
endmodule

全部评论

相关推荐

11-20 22:03
东北大学 Java
用哈基米写的简历,有点夸大,等我后面改谦虚点,能不能找个日常实习,项目是点评和天机,没什么荣誉要不要把蓝桥杯和六级删了算了,实在没门面
程序员花海:日常实习这份简历够用的,等实习之后把实习经历结合业务好好写一下 到时候把实习经历放在项目经历的前面 可以看我主页修改简历的模板
如何写一份好简历
点赞 评论 收藏
分享
淬月星辉:专利是什么?至少描述一下吧,然后把什么计算机二级、普通话这种拉低格调的证书删掉,不然hr以为你没东西写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务