updated wiki url
[debian/gnuradio] / usrp2 / fpga / sdr_lib / integrate.v
1 module integrate
2   #(parameter INPUTW = 16,
3     parameter ACCUMW = 32,
4     parameter OUTPUTW = 16)
5
6    (input clk_i,
7     input rst_i,
8     input ena_i,
9
10     input dump_i,
11     input [INPUTW-1:0] data_i,
12
13     output reg stb_o,
14     output reg [OUTPUTW-1:0] integ_o
15    );
16    
17    wire [ACCUMW-1:0] data_ext = {{ACCUMW-INPUTW{data_i[INPUTW-1]}},data_i};
18    reg  [ACCUMW-1:0] accum;
19
20    always @(posedge clk_i)
21      if (rst_i | ~ena_i)
22        begin
23           accum <= 0;
24           integ_o <= 0;
25        end
26      else
27        if (dump_i)
28          begin
29             integ_o <= accum[ACCUMW-1:ACCUMW-OUTPUTW];
30             accum <= data_ext;
31          end
32        else
33          accum <= accum + data_ext;
34
35    always @(posedge clk_i)
36      stb_o <= dump_i;
37    
38 endmodule // integrate