FPGA之边沿检测设计(上升沿,下降沿,双边沿)

记录FPGA的小知识点,不断积累自己的技能,想要工作顺利,就得成为大牛。
顺便记录一个边沿检测的口诀,方便记忆,我自己瞎编的^-^。
后反前正是上升,后正前反是下降 ; 就是两个寄存器的前后顺序不一样。
边沿检测的方法都很不相同,是最基础的一部分,可以用打两拍实现,也可以用移位寄存器实现,还有的打三拍,其实两拍就已经足够用,用到的地方也很多,检测脉冲,检测SPI接口的时钟上升沿和下降沿,按键消抖等等都会用到,在此记录一下。

module pos_neg(

input						i_sys_clk	,
input						i_sys_rst_n	,
input						i_pulse		,//输入脉冲
output					        o_pos	        ,//输出下降沿
output					        o_neg		 //输出上升沿
);

reg						pulse_reg0	;
reg						pulse_reg1	;
wire						data_edge	;

//2022 0126 Mr li
always @(posedge i_sys_clk or negedge i_sys_rst_n)
begin
	if(!i_sys_rst_n)
		begin
			pulse_reg0 	<= 1'b0;
			pulse_reg1	<= 1'b0;
		end 
	else 
		begin
			pulse_reg0 	<= i_pulse ;
			pulse_reg1	<= pulse_reg0;
		end 
end 
//后反前正是上升,后正前反是下降,两个向或得双边;
assign	o_pos = ~pulse_reg1 && pulse_reg0;//上升沿
assign	o_neg = ~pulse_reg0 && pulse_reg1;//下降沿
assign	data_edge = o_pos | o_neg	 ;//双边沿

endmodule 

上一篇:蓝桥杯 基础练习 查找整数 python


下一篇:1776. 牛的基因组学