题解 | #边沿检测#
边沿检测
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也是不确定
查看11道真题和解析