FPGA边沿检测Verilog代码

本文介绍了一种使用Verilog HDL在FPGA上实现边沿检测的方法,包括上升沿、下降沿和双边沿检测。通过两个一位寄存器的异或操作,能够有效地检测输入信号的变化。代码中详细展示了寄存器的定义和赋值过程,以及如何通过异或和与非操作来判断边沿状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         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 <= 1'b0; 
       data_in_d2 <= 1'b0;
    end 
    else begin 
       data_in_d1 <= data_in;             //这里需注意data_in 采集数据的电平状态,延时了2个时钟                                       
       data_in_d2 <= data_in_d1;            周期才到寄存器data_in_d2
    end 
end 

endmodule

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疾风小白白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值