题解 | #边沿检测#
边沿检测
https://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 a1; always@(posedge clk or negedge rst_n) if(!rst_n) a1<=0; else a1<=a; always@(posedge clk or negedge rst_n) if(!rst_n) begin rise<=0;down<=0; end else if((a==1)&&(a1==0)) begin rise<=1;down<=0; end else if((a==0)&&(a1==1)) begin rise<=0;down<=1; end else begin rise<=0;down<=0; end //让rise和down为0,而不是不确定态 endmodule
如果不用ifelse语句,而用组合逻辑的话,就没有最后一个else,那么a为不确定的时候,rise和down也是不确定