在设计中,需要检测某一信号发生0->1跳转的变化时,可以采用边沿检测。
边沿检测的实现思路如下图所示,为了保证采样信号沿的准确,首先对信号进行打拍处理。由波形图可以看出,上升沿出现时,可以由d1与d2非的与检测得到,同理可得下降沿和双沿检测。
实现代码如下:
/*
* @Author: yaohao
* @Date: 2022-06-09 20:55:37
* @Last Modified by: yaohao
* @Last Modified time: 2022-06-09 21:01:45
*/
module edge_detect (
input clk,
input rst,
input data,
output wire pose_detect,
output wire neg_detect,
output wire dou_detect
);
reg d1, d2;
always @(posedge clk or negedge rst) begin
if(!rst)
begin
d1 <= 0;
d2 <= 0;
end
else begin
d1 <= data;
d2 <= d1;
end
end
assign pose_detect = d1 & (~d2);
assign neg_detect = (~d1) & d2;
assign dou_detect = d1 ^ d2;
endmodule