Project

General

Profile

LMS6002DCalibration » History » Version 2

Anonymous, 02/19/2016 10:52 PM

1 2
= LMS6002D calibration =
2
3 1
LMS6002D should be calibrated to provide good results. Below we describe our own experience with LMS6002D calibration and any peculiarities we don't want to forget. Hopefully it will be helpful for other LMS6002D users also.
4
5
Most people start reading about the calibration procedures in the "Programming and Calibration Guide" and quickly find out that the description there is somewhat vague. A more hands-on description of calibration procedures can be found in the "EVB Quick Starter Manual" and thus it's recommended reading even if you don't have an LMS EVB.
6
7
LMS6002D calibration involves several parts:
8
9
1. DC calibration procedures:
10
  1. General DC calibration (automatic)
11
  2. DC Offset Calibration of LPF Tuning Module (automatic)
12
  3. Tx LPF DC Offset Calibration (automatic)
13
  4. Rx LPF DC Offset Calibration (automatic)
14
  5. RXVGA2 DC Offset Calibration (automatic)
15
2. LPF Bandwidth Tuning (automatic)
16
3. Tx LO leakage cancellation (manual)
17
4. Tx I/Q balance calibration (manual)
18
5. Tx PLL charge pump current `Icp` (manual)
19
6. Rx PLL charge pump current `Icp` (manual)
20
7. ''... more to be added here.''
21
22
== Automatic procedures ==
23
24
=== General DC calibration ===
25
26
From "EVB Quick Starter Manual", section 4.5.2:
27
28
 Carries out the top level DC calibration for the device, this is the R component of the RC cal value which is used in each of the LPF (Tx and Rx) process calibration values.
29
30
=== LPF Bandwidth Tuning  ===
31
32
From "EVB Quick Starter Manual", section 4.5.1 under "LPF Core Tuning":
33
34
 Executes the process related resistor capacitor (RC) calibration. LPF Core calibration is performed once per device to ensure that the corner frequencies of the LPFs are optimized. The calibration selects the LPF response which is closest and above the required bandwidth. This ensures modulation quality is not adversely impacted but sufficient rejection is provided for adjacent and alternate channel attenuation.
35
36
 This procedure should be run before any other Tx tuning/calibration, as optimum DC calibration values for LPF’s will change if this is done after the filter DC calibration.
37
38
=== Tx LPF DC Offset Calibration ===
39
40
From "EVB Quick Starter Manual", section 4.5.1:
41
42
 This makes the DC contribution at output of filters zero so that DC level at the mixer input does not change when the TX VGA1 gain is changed.
43
44
 When executing this calibration make sure that no signal is applied to the transmit path. For better DC calibration low DC level signal can applied from baseband via DAC’s to transmit path.
45
46
=== Rx LPF DC Offset Calibration and RXVGA2 DC Offset Calibration ===
47
48
From "EVB Quick Starter Manual", section 4.5.1:
49
50
 This minimizes the DC contribution at output of filters and Rx VGA2.
51
52
 When executing this calibration make sure that there is no signal applied to Rx input.
53
54
== Manual procedures ==
55
56
=== Tx LO leakage calibration ===
57
58
Described in section 4.8 of the "Programming and Calibration Guide" and in section 6.1 of the "EVB Quick Starter Manual".
59
60
Performed in LMS6002D.
61
62
Near the optimum point even change of calibration registers by 1 makes big difference. When you're far off, a change of a calibration register could be almost unnoticeable.
63
64
=== Tx I/Q balance calibration ===
65
66
Described in section 4.10 of the "Programming and Calibration Guide" and in section 6.2 of the "EVB Quick Starter Manual".
67
68
Performed in baseband, i.e. in UHD in the UmTRX case.
69
70
UHD stores its I/Q compensation values in a file under the `${HOME}/.uhd/cal/` file under `*`nix and under the `%APPDATA%\.uhd\cal\` under Windows. With the current version of UHD the file name is `tx_iq_cal_v0.1_<serial>.csv`. The file name is constructed in the `apply_fe_corrections()` function in `lib/usrp/common/apply_corrections.cpp`.
71
72
UHD resets I/Q imbalance compensation values in the FPGA on startup, so you have to use this file to compensate I/Q imbalance. Setting those values manually before you run your application won't have any effect.
73
74
To manually calibrate your UmTRX:
75
76
1. Copy this text into the aforementioned file:
77
{{{
78
name, TX Frontend Calibration
79
serial, 0
80
timestamp, 1335295846
81
version, 0, 1
82
DATA STARTS HERE
83
lo_frequency, correction_real, correction_imag, measured, delta
84
232.5e+06, -0.6, -0.55, 0, 0
85
}}}
86
2. Tune LMS6002D to the desired frequency.
87
3. Transmit 1MHz sine, e.g. using `tx_waveforms`. Write down level of the unwanted (lower) sideband.
88
4. Change -0.6 and -0.55 values until you get the smallest level of the unwanted sideband. This will correspond to the minimum I/Q imbalance.
89
90
'''To-do''': This calibration could be done automatically using `uhd_cal_tx_iq_balance`, but to do that we have to 1) implement PLL tuning in UHD and 2) implement RF loopback controls for LMS.
91
92
=== Tx PLL charge pump current `Icp` ===
93
94
'''Control''': Register 0x16, default `Icp`=1200mA.
95
96
Charge pump current affects LMS' internal PLL phase noise and we found that `Icp`=1900mA provides the best Tx phase noise performance.
Add picture from clipboard (Maximum size: 48.8 MB)