Merged r10770:10887 from jcorgan/iad2 into trunk. Adds alternative USRP2 FPGA build...
[debian/gnuradio] / usrp2 / fpga / top / u2_rev3_iad / impulse.v
1 module impulse
2   (input clk,
3    input rst,
4    input ena,
5    
6    input [13:0] dc_offset_a,
7    input [13:0] dc_offset_b,
8    input [13:0] amplitude,
9    input [15:0] impulse_len,
10    input [15:0] zero_len,
11
12    output [13:0] adc_a,
13    output [13:0] adc_b,
14    output        adc_ovf_a,
15    output        adc_ovf_b
16    );
17
18    reg [13:0] adc_a_int = 0;
19    reg [15:0] count;
20
21    localparam ST_ZERO = 0;
22    localparam ST_HIGH = 1;
23    reg        state;
24    
25    always @(posedge clk)
26      if (rst | ~ena)
27        begin
28           adc_a_int <= 0;
29           count <= 0;
30           state <= ST_ZERO;
31        end
32      else
33        case(state)
34          ST_ZERO:
35            if (count == zero_len)
36              begin
37                 adc_a_int <= amplitude;
38                 state <= ST_HIGH;
39                 count <= 0;
40              end
41            else
42              count <= count + 1;
43
44          ST_HIGH:
45            if (count == impulse_len)
46              begin
47                 adc_a_int <= 0;
48                 state <= ST_ZERO;
49                 count <= 0;
50              end
51            else
52              count <= count + 1;
53
54        endcase // case (state)
55
56    assign adc_a = adc_a_int + dc_offset_a;
57
58    // Ignore for now
59    assign adc_b = dc_offset_b;
60    assign adc_ovf_a = 0;
61    assign adc_ovf_b = 0;
62
63 endmodule // adc_model