题解 | #边沿检测#
边沿检测
http://www.nowcoder.com/practice/fed4247d5ef64ac68c20283ebace11f4
检测信号的上升沿和下降沿,代码如下:
`timescale 1ns/1ns module edge_detect( input clk, input rst_n, input a, output reg rise, output reg down ); reg a_1t; always@ (posedge clk&nbs***bsp;negedge rst_n) begin //对a延迟一拍 if(~rst_n) a_1t <= 0; else a_1t <= a; end always@ (posedge clk&nbs***bsp;negedge rst_n) begin if(~rst_n) begin rise <= 0; down <= 0; end else begin if(rise == 1) rise <= 0; else rise <= rise; if(down == 1) down <= 0; else down <= down; if((a_1t == 0)&&(a == 1)) begin rise <= 1; end else if((a_1t == 1)&&(a == 0)) begin down <= 1; end else begin rise <= 0; down <= 0; end end end endmodule