这几天一直在研究脉冲边沿检测技术,直到今天看了特权同学的<<深入浅出玩转FPGA>>视频教程后,才恍然大悟,才真正理解verliog语言中的并行语句。可能是以前写过单片机程序原因吧,虽说Verilog语言中有很多并行语句,但是没有真正领悟它的精髓所在。

一、 什么是脉冲边沿检测

脉冲边沿检测就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测。

二、程序代码

module edge_pulse
         (
           sysclk,
           rst_n,
           trigger,
           pos_edge,
           neg_edge
         );
//--------------------------------//         
input   sysclk;
input   rst_n;
input   trigger;
output  pos_edge;
output  neg_edge;
//-------------------------------// 
wire   sysclk;
wire   rst_n;
wire   trigger;
wire   pos_edge;
wire   neg_edge;
//-------------------------------//
reg  trigger_r0;

always @ (posedge sysclk or negedge rst_n)
begin
      if(!rst_n)
         trigger_r0<=1'b0;
           
      else
        trigger_r0<=trigger;
           
         
      
end
//------------------------------//
assign  neg_edge=trigger_r0&&(~trigger);
assign  pos_edge=(~trigger_r0)&&trigger;

endmodule