FPGA边沿检测

        有一个缓慢变化的1bit信号sig,编写一个程序检测a信号的上升沿给出指示信号rise,当sig信号出现下降沿时给出指示信号down。
        注:rise,down应为单脉冲信号,在相应边沿出现时的下一个时钟为高,之后恢复到0,一直到再一次出现相应的边沿。

`timescale 1ns / 1ps

module edge_detect (
    input rst,      //异步复位信号,低电平有效 
    input clk,      //系统时钟信号
    input sig,      //单比特信号,作为待检测的信号
    output rise,    //单比特信号,当输入信号sig出现上升沿时为1,其余时刻为0
    output down     //单比特信号,当输入信号sig出现下降沿时为1,其余时刻为0
);

reg [1:0] sig_reg;

always @(posedge clk or posedge rst)
    if (rst == 1'b1)
        sig_reg <= 2'b00;
    else
        sig_reg <= {sig_reg[0], sig};

assign rise = (sig_reg === 2'b01) ;
assign down = (sig_reg === 2'b10) ;

endmodule

你可能感兴趣的:(fpga开发)