在編寫代碼時候經常會使用到上升沿檢測或則下降沿檢測,這個時候使用寄存器的方式來進行檢測:通過檢測當前信號與上一個時刻的信號對比便可以知道是上升沿還是下降沿。
上升沿檢測的寄存器輸出波形:
下降沿檢測的寄存器輸出波形:
代碼實現:
module top ( input clk_50MHZ ,//系統時鍾50M input rst_n ,//系統復位 input key_in ,//按鍵 output key_posedge,
output key_negedge
); reg key_temp0 ;//用於按鍵上一次狀態存儲 reg key_temp1 ;//用於按鍵當前狀態存儲 //=============================================================================== // //邊沿檢測,采用寄存器方式。 // //=============================================================================== always@(posedge clk_50MHZ or negedge rst_n) begin if(!rst_n) begin key_temp0<=1'b0; key_temp1<=1'b0; end else begin key_temp1<=key_in; key_temp0<=key_temp1; end end assign key_posedge=(!key_temp0)&key_temp1; assign key_negedge=(!key_temp1)&key_temp0; endmodule