soc实习记录
边沿检测
边沿的检测,对要进行边沿检测的信号,进行两级同步(这也是对单bit信号跨时钟域的一种处理方式)。
对边沿的检测在实际设计中可以产生脉冲信号,可以用于可逆计数器的数值计算等。
代码
代码还是很简单的。
//soc note
//edge detect
module edge_detect(
clk,
rstn,
singal_in
);
input clk;
input rstn;
input singal_in;
reg singal_in_reg1;
reg singal_in_reg2;
wire rise_detect;
wire fall_detect;
always @(posedge clk or negedge rstn)
if(!rstn)
{ singal_in_reg2,singal_in_reg1 } <= 2'b0;
else
{ singal_in_reg2,singal_in_reg1 } <= {singal_in_reg1,singal_in};
assign rise_detect = singal_in_reg1 & ~singal_in_reg2;
assign fall_detect = ~singal_in_reg1 & singal_in_reg2;
endmodule