Revision fb1f8e1a

b/host/lib/usrp/dsp_utils.cpp
30 30
    return std::ceil(std::log(num)/std::log(T(2)));
31 31
}
32 32

  
33
/*!
34
 *     3                   2                   1                   0
35
 *   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
36
 *  +-------------------------------+-------+-------+-------+-------+
37
 *  |                                               | DDC0Q | DDC0I |
38
 *  +-------------------------------+-------+-------+-------+-------+
39
 */
33 40
boost::uint32_t dsp_type1::calc_rx_mux_word(subdev_conn_t subdev_conn){
34 41
    switch(subdev_conn){
35
    case SUBDEV_CONN_COMPLEX_IQ: return (0x1 << 2) | (0x0 << 0); //DDC0Q=ADC1, DDC0I=ADC0
36
    case SUBDEV_CONN_COMPLEX_QI: return (0x0 << 2) | (0x1 << 0); //DDC0Q=ADC0, DDC0I=ADC1
37
    case SUBDEV_CONN_REAL_I:     return (0x3 << 2) | (0x0 << 0); //DDC0Q=ZERO, DDC0I=ADC0
38
    case SUBDEV_CONN_REAL_Q:     return (0x1 << 2) | (0x3 << 0); //DDC0Q=ADC1, DDC0I=ZERO
42
    case SUBDEV_CONN_COMPLEX_IQ: return (0x1 << 4) | (0x0 << 0); //DDC0Q=ADC0Q, DDC0I=ADC0I
43
    case SUBDEV_CONN_COMPLEX_QI: return (0x0 << 4) | (0x1 << 0); //DDC0Q=ADC0I, DDC0I=ADC0Q
44
    case SUBDEV_CONN_REAL_I:     return (0xf << 4) | (0x0 << 0); //DDC0Q=ZERO,  DDC0I=ADC0I
45
    case SUBDEV_CONN_REAL_Q:     return (0x1 << 4) | (0xf << 0); //DDC0Q=ADC0Q, DDC0I=ZERO
39 46
    default:                     UHD_THROW_INVALID_CODE_PATH();
40 47
    }
41 48
}
42 49

  
50
/*!
51
 *     3                   2                   1                   0
52
 *   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
53
 *  +-------------------------------+-------+-------+-------+-------+
54
 *  |                                               | DAC0Q | DAC0I |
55
 *  +-------------------------------+-------+-------+-------+-------+
56
 */
43 57
boost::uint32_t dsp_type1::calc_tx_mux_word(subdev_conn_t subdev_conn){
44 58
    switch(subdev_conn){
45
    case SUBDEV_CONN_COMPLEX_IQ: return (0x1 << 4) | (0x0 << 0); //DAC1=DUC0Q, DAC0=DUC0I
46
    case SUBDEV_CONN_COMPLEX_QI: return (0x0 << 4) | (0x1 << 0); //DAC1=DUC0I, DAC0=DUC0Q
47
    case SUBDEV_CONN_REAL_I:     return (0xf << 4) | (0x0 << 0); //DAC1=ZERO,  DAC0=DUC0I
48
    case SUBDEV_CONN_REAL_Q:     return (0x0 << 4) | (0xf << 0); //DAC1=DUC0I, DAC0=ZERO
59
    case SUBDEV_CONN_COMPLEX_IQ: return (0x1 << 4) | (0x0 << 0); //DAC0Q=DUC0Q, DAC0I=DUC0I
60
    case SUBDEV_CONN_COMPLEX_QI: return (0x0 << 4) | (0x1 << 0); //DAC0Q=DUC0I, DAC0I=DUC0Q
61
    case SUBDEV_CONN_REAL_I:     return (0xf << 4) | (0x0 << 0); //DAC0Q=ZERO,  DAC0I=DUC0I
62
    case SUBDEV_CONN_REAL_Q:     return (0x0 << 4) | (0xf << 0); //DAC0Q=DUC0I, DAC0I=ZERO
49 63
    default:                     UHD_THROW_INVALID_CODE_PATH();
50 64
    }
51 65
}
b/host/lib/usrp/usrp2/fw_common.h
33 33
#endif
34 34

  
35 35
//fpga and firmware compatibility numbers
36
#define USRP2_FPGA_COMPAT_NUM 1
36
#define USRP2_FPGA_COMPAT_NUM 2
37 37
#define USRP2_FW_COMPAT_NUM 6
38 38

  
39 39
//used to differentiate control packets over data port
b/host/lib/usrp/usrp2/usrp2_regs.hpp
124 124
#define U2_REG_DSP_TX_FREQ         _SR_ADDR(SR_TX_DSP + 0)
125 125
#define U2_REG_DSP_TX_SCALE_IQ     _SR_ADDR(SR_TX_DSP + 1) // {scale_i,scale_q}
126 126
#define U2_REG_DSP_TX_INTERP_RATE  _SR_ADDR(SR_TX_DSP + 2)
127

  
128
  /*!
129
   * \brief output mux configuration.
130
   *
131
   * <pre>
132
   *     3                   2                   1                       
133
   *   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
134
   *  +-------------------------------+-------+-------+-------+-------+
135
   *  |                                               | DAC1  |  DAC0 |
136
   *  +-------------------------------+-------+-------+-------+-------+
137
   * 
138
   *  There are N DUCs (1 now) with complex inputs and outputs.
139
   *  There are two DACs.
140
   * 
141
   *  Each 4-bit DACx field specifies the source for the DAC
142
   *  Each subfield is coded like this: 
143
   * 
144
   *     3 2 1 0
145
   *    +-------+
146
   *    |   N   |
147
   *    +-------+
148
   * 
149
   *  N specifies which DUC output is connected to this DAC.
150
   * 
151
   *   N   which interp output
152
   *  ---  -------------------
153
   *   0   DUC 0 I
154
   *   1   DUC 0 Q
155
   *   2   DUC 1 I
156
   *   3   DUC 1 Q
157
   *   F   All Zeros
158
   *   
159
   * The default value is 0x10
160
   * </pre>
161
   */
162 127
#define U2_REG_DSP_TX_MUX  _SR_ADDR(SR_TX_DSP + 4)
163 128

  
164 129
/////////////////////////////////////////////////
......
170 135
#define U2_REG_DSP_RX_DCOFFSET_I   _SR_ADDR(SR_RX_DSP + 3) // Bit 31 high sets fixed offset mode, using lower 14 bits,
171 136
                                                       // otherwise it is automatic 
172 137
#define U2_REG_DSP_RX_DCOFFSET_Q   _SR_ADDR(SR_RX_DSP + 4) // Bit 31 high sets fixed offset mode, using lower 14 bits
173
  /*!
174
   * \brief input mux configuration.
175
   *
176
   * This determines which ADC (or constant zero) is connected to 
177
   * each DDC input.  There are N DDCs (1 now).  Each has two inputs.
178
   *
179
   * <pre>
180
   * Mux value:
181
   *
182
   *    3                   2                   1                       
183
   *  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
184
   * +-------+-------+-------+-------+-------+-------+-------+-------+
185
   * |                                                       |Q0 |I0 |
186
   * +-------+-------+-------+-------+-------+-------+-------+-------+
187
   *
188
   * Each 2-bit I field is either 00 (A/D A), 01 (A/D B) or 1X (const zero)
189
   * Each 2-bit Q field is either 00 (A/D A), 01 (A/D B) or 1X (const zero)
190
   *
191
   * The default value is 0x4
192
   * </pre>
193
   */
194 138
#define U2_REG_DSP_RX_MUX  _SR_ADDR(SR_RX_DSP + 5)         // called adc_mux in dsp_core_rx.v
195 139

  
196 140
////////////////////////////////////////////////

Also available in: Unified diff