Merged r9433:9527 from features/gr-usrp2 into trunk. Adds usrp2 and gr-usrp2 top...
[debian/gnuradio] / usrp2 / fpga / sdr_lib / dummy_rx.v
1
2 `define DSP_CORE_RX_BASE 160
3 module dummy_rx
4   (input clk, input rst,
5    input set_stb, input [7:0] set_addr, input [31:0] set_data,
6
7    input [13:0] adc_a, input adc_ovf_a,
8    input [13:0] adc_b, input adc_ovf_b,
9    
10    output [31:0] sample,
11    input run,
12    output strobe
13    );
14
15    wire [15:0] scale_i, scale_q;
16    wire [31:0] phase_inc;
17    reg [31:0]  phase;
18
19    wire [23:0] i_decim, q_decim;
20    wire [7:0]  decim_rate;
21    
22    setting_reg #(.my_addr(`DSP_CORE_RX_BASE+0)) sr_0
23      (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
24       .in(set_data),.out(phase_inc),.changed());
25    
26    setting_reg #(.my_addr(`DSP_CORE_RX_BASE+1)) sr_1
27      (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
28       .in(set_data),.out({scale_i,scale_q}),.changed());
29    
30    setting_reg #(.my_addr(`DSP_CORE_RX_BASE+2)) sr_2
31      (.clk(clk),.rst(rst),.strobe(set_stb),.addr(set_addr),
32       .in(set_data),.out(decim_rate),.changed());
33    
34    strobe_gen strobe_gen(.clock(clk),.reset(rst),.enable(run),.rate(decim_rate),
35                          .strobe_in(1),.strobe(strobe) );
36
37    reg [15:0] i_out, q_out;
38    assign      sample = {i_out,q_out};
39
40    always @(posedge clk)
41      if(rst)
42        i_out <= 0;
43      else if(~run)
44        i_out <= 0;
45      else if(strobe)
46        i_out <= i_out + 1;
47
48    reg         run_d1;
49    always @(posedge clk)
50      if(rst)
51        run_d1 <= 0;
52      else
53        run_d1 <= run;
54
55    always @(posedge clk)
56      if(rst)
57        q_out <= 0;
58      else if (run & ~run_d1)
59        q_out <= q_out + 1;
60        
61    
62 endmodule // dsp_core_rx