对 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 |