FPGA边沿检测Verilog代码

Posted liujiahong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 FPGA边沿检测Verilog代码相关的知识,希望对你有一定的参考价值。

 FPGA边沿检测Verilog代码(上升沿,下降沿,双边沿)

实现思路:用两个一位寄存器直接异或可以实现

代码实现:

?
module edge_detect(
                   input    clk,                        
                   input    rst_n, 
                   input    data_in, 
                   output   raising_edge_detect,         //上升沿标志位
                   output   falling_edge_detect,         //下降沿标志位
                   output   double_edge_detect           //双边沿标志位
 );

//reg define
  reg   data_in_d1;        //寄存器d1
  reg   data_in_d2;        //寄存器d2

assign  raising_edge_detect = data_in_d1  & (~data_in_d2);   //上升沿,标志位置1
assign  falling_edge_detect = ~data_in_d1 &  data_in_d2;     //下降沿,标志位置1
assign  double_edge_detect  = data_in_d1 ^ data_in_d2;       //双边沿,标志位置1

always @ (posedge clk or negedge rst_n)begin
    if(!rst_n)begin 
       data_in_d1 <= 1b0; 
       data_in_d2 <= 1b0;
    end 
    else begin 
       data_in_d1 <= data_in;             //这里需注意data_in 采集数据的电平状态,延时了2个时钟                                       
       data_in_d2 <= data_in_d1;            周期才到寄存器data_in_d2
    end 
end 

endmodule

?

下降沿检测原理示意图(延时了2个时钟周期):

?技术图片技术图片??

以上是关于 FPGA边沿检测Verilog代码的主要内容,如果未能解决你的问题,请参考以下文章

verilog 上下边沿同时触发 可综合代码实现

verilog hdl中有了posedge和negedge为啥还要用脉冲边沿检测?。

边沿检测电路设计verilog

边沿检测电路设计verilog

verilog 按键消抖 vs 边沿检测

FPGA基础入门篇 边沿检测电路