FPGA之上升沿检测

2019-07-15 22:56发布

脉冲检测计数应用也是蛮重要的,原理也是挺简单的,直接上代码
`timescale 1ns / 1ps
module PD_up(
               
                clk                        ,                        //系统时钟 50MHz        ;
                rest_n                ,                        //系统复位信号        低电平有效        ;
                signal_in        ,                        //待检测信号输入        ;
                rising_flag                                //上升沿标        ;
               
    );

input         clk                        ;
input          signal_in        ;
input         rest_n                ;
output        rising_flag        ;                       

/****************************************************************

signal_in   0 0 0 1 1 0
~signal_in         1 1 1 0 0 1
signal_in_d    0 0 0 1 1 0
-----------------------------
rising_flag    0 0 0 0 1          signal_in_d & ~signal_in  下降沿检测
                           1 1 0 1 1   
                           0 0 1 0 0  ~[signal_in_d | ~signal_in] 上升沿检测       

***************************************************************/

reg                signal                ;                        //待检测信号输入寄存器;
reg                rising_flag        ;                        //上升沿标寄存器,值为 1 被检信号上升沿到来;
reg                signal_in_d        ;                        //signal_in_d 比 signal_in延迟一个时钟周期;

always@(posedge clk or negedge rest_n)begin
        if(!rest_n)begin
                signal <= 0;
        end
                else begin
                        signal <= signal_in;
                end
end


always@(posedge clk or negedge rest_n)begin
        if(!rest_n)begin
                signal_in_d <= 0;
        end
                else begin
                        signal_in_d <= signal;
                end
end

always@(*)begin                                        //上升沿检测;
        rising_flag = ~((~signal) | signal_in_d);
end

endmodule


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
根号2
2019-07-16 08:53
  1. /****************************************************************

  2. signal_in   0 0 0 1 1 0
  3. ~signal_in         1 1 1 0 0 1
  4. signal_in_d    0 0 0 1 1 0
  5. -----------------------------
  6. rising_flag    0 0 0 0 1          signal_in_d & ~signal_in  下降沿检测
  7.                            1 1 0 1 1   
  8.                            0 0 1 0 0  ~[signal_in_d | ~signal_in] 上升沿检测       

  9. ***************************************************************/
复制代码

一周热门 更多>