脉冲展宽

对 1bit 的脉冲信号进行展宽,转为 32bit 位宽,并产生有效信号:

1
module pulse_spreading(
2
	input clk, rstn,
3
    input pulse_in,
4
    output reg pulse_out
5
);
6
    reg [5:0] cnt;
7
    parameter cnt_max = 6'd31;
8
    // 计数器
9
    always @(posedge clk or negedge rstn) begin
10
        if(!rstn) begin
11
           cnt <= 'b0; 
12
        end
13
        else if(cnt == 6'd31) begin
14
           cnt <= 'b0; 
15
        end
16
        else if(pulse_out == 1'd1) begin
17
           cnt <= cnt + 1; 
18
        end
19
    end
20
    
21
    always @(posedge clk or negedge rstn) begin
22
        if(!rstn) begin
23
           pulse_out <= 1'b0; 
24
        end
25
        else if(pulse_in) begin
26
           pulse_out <= 1'b1; 
27
        end
28
        else if(cnt == cnt_max) begin
29
           pulse_out <= 1'b0; 
30
        end
31
    end
32
endmodule