Verilog信號上升沿檢測

在FPGA開發的面試中可能會碰到檢測上升沿和下降沿的題目。以上升沿爲例進行分析。
上升沿是信號從低電平變化爲高電平的時候,因此我們可以將信號的上一個狀態和下一個狀態進行採樣保存,然後來判斷是都是從0變化到1的過程。代碼如下:
  module posedge_detection(clk,rst_n,i_data_in,o_rising_edge);
input clk;
input rst_n;
input i_data_in;
output o_rising_edge;

reg r_data_in0;
reg r_data_in1;

assign o_rising_edge=r_data_in0&~r_data_in1;

always@(posedge clk or negedge rst_n)begin 
  if(rst_n==1'b0)begin 
     r_data_in0<=0;
      r_data_in1<=0;
  end
  else begin 
     r_data_in1<=r_data_in0;
      r_data_in0<=i_data_in;
  end
end
endmodule 

通過信號i_data_in和時鐘、復位信號,可以仿真出正確的結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章