Rise & Fall-Edge Signal Detection:

As a Digital Designer, often times it is needed to define an interface to communicate to other Design Modules. This communication is defined by a protocol that may involve detection of Rising or Falling edge of a Signal. For E.g Rising edge of request and Falling edge of Ack. In such cases Edge detection logic can be designed as follows:

Rising Edge Detection :

logic rise_edge_sig_a;
logic level_sig_a;
logic level_sig_a_ff;

always_ff @(posedge clk or negedge reset) begin
    level_sig_a_ff <= 1'b0;
    level_sig_a_ff <= level_sig_a;

assign rise_edge_sig_a = level_sig_a & (~level_sig_a_ff);
Rising Edge Detection

Falling Edge Detection :

logic fall_edge_sig_b;
logic level_sig_b_ff;
logic level_sig_b;

always_ff @(posedge clk or negedge reset) begin
    level_sig_b_ff <= 1'b0;
    level_sig_b_ff <= level_sig_b;

assign fall_edge_sig_b = (~level_sig_b) & level_sig_b_ff;
Falling Edge Detection

Please note that if your intention is to use Level Signal information & convert it into corresponding pulses (Level-to-Pulse Converter) then this design is not a good design fit. This is because the design is Edge detection circuit and relies on edge of the source signal. Therefore, Level Signal information may get lost in the conversion from Level to Pulse.