EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
网上搜了一下,结合自己总结的。首先介绍一下基本的原理。 脉冲边沿的特性:两侧电平发生了变化 思路:设计两个或多个一位的寄存器,用来接收被检测的信号,系统时钟来一次记一次输入信号,如果用了两个寄存器直接异或就可以了。 0 p1 d8 j9 g; ]- I, w5 [
- module edge_detect(input clk,
- input rst_n,
- input data_in,
- output raising_edge_detect,
- output falling_edge_detect,
- output double_edge_detect);
- reg data_in_d1;
- reg data_in_d2;
- 7 C2 D& F' o4 U3 E- I
- always @ (posedge clk,negedge rst_n)
- begin
- if(!rst_n)
- begin data_in_d1 <= 1'b0; data_in_d2 <= 1'b0; end
- else
- begin data_in_d1 <= data_in; data_in_d2 <= data_in_d1;end
- end
- assign raising_edge_detect = data_in_d1 & (~data_in_d2);//上升沿
- assign falling_edge_detect = ~data_in_d1 & data_in_d2;//下降沿
- assign double_edge_detect = data_in_d1 ^ data_in_d2;//双边沿
- endmodule
+ x; O' o; n) z) C6 F
- Y2 r+ P5 l+ y) s8 f& N4 D
- _7 P) I9 J* _' B2 B* n% n% M: K; i
! \, x/ n9 {/ G. P2 Z) r# `
. r0 g2 K, N, O- p2 _+ R |