个人笔记。
一、下降沿检测
1、 将输入信号打两拍,第一拍是recvIdle0,第二拍是recvIdle1
2、将第一拍信号取反并与第二拍信号相与
3、最后一行时序得到的高电平就是所要的下降沿信号
reg recvIdle0,recvIdle1; //recvIdle信号寄存器,捕捉下降沿滤波用
wire recvIdle_int; // recvIdle所捕捉的下降沿
always @ (posedge clk or negedge rst) begin
if(rst) begin
recvIdle0 <= 1'b0;
recvIdle1 <= 1'b0;
end
else begin
recvIdle0 <= recvIdle; //第一个信号延迟一拍
recvIdle1 <= recvIdle0; //第二个信号延迟一拍
end
end
assign recvIdle_int = ~recvIdle0 & recvIdle1; 捕捉到下降沿后,recvIdle_int拉高保持一个主时钟周期信号 (第一拍信号取反并与第二拍信号相与得到的高电平就是所要的信号)
二、上升沿检测
1、 将输入信号打两拍,第一拍是recvIdle0,第二拍是recvIdle1
2、将第二拍信号取反并与第一拍信号相与
3、最后一行时序得到的高电平就是所要的上升沿信号
reg recvIdle0,recvIdle1;
wire recvIdle_int; // recvIdle所捕捉的上升沿
always @ (posedge clk or negedge rst) begin
if(rst) begin
recvIdle0 <= 1'b0;
recvIdle1 <= 1'b0;
end
else begin
recvIdle0 <= recvIdle; //第一个信号延迟一拍
recvIdle1 <= recvIdle0; //第二个信号延迟一拍
end
end
assign recvIdle_int = ~recvIdle1 & recvIdle0; 捕捉到上升沿后,recvIdle_int拉高保持一个主时钟周期信号 (第一拍信号取反并与第二拍信号相与得到的高电平就是所要的信号)