Prev Problem
Next Problem

29. One Shot Pulse

Back To All Submissions
Previous Submission
Next Submission

Solving Approach

How do you plan to solve it?

 

 

Code

// module rise_pulse(
//   input  wire clk,
//   input  wire rst,      // synchronous active-high reset
//   input  wire sig_in,
//   output reg  pulse
// );
//   reg prev;             // previous sampled value of sig_in

//   always @(posedge clk) begin
//     // Write your code here
//     pulse <= 1'b0;
//     if(rst) begin
//       prev <= 1'b0;
//       pulse <= 1'b0;
//     end
//     else if(~prev & sig_in) begin
//       pulse <= 1'b1;
      
//     end
//     prev <= sig_in;
//   end

module rise_pulse(
  input  wire clk,
  input  wire rst,      // synchronous active-high reset
  input  wire sig_in,
  output reg  pulse
);
  reg prev;             // previous sampled value of sig_in

  always @(posedge clk) begin
      if(rst) begin
        prev  <= 1'b0;
        pulse <= 1'b0;
      end
      else begin
        // This logic says: "If it was 0 and now it's 1, pulse is 1. Otherwise, 0."
        pulse <= (~prev & sig_in); 
        prev  <= sig_in;
      end
  end
endmodule

 

Was this helpful?
Upvote
Downvote