annotate doc/VCXO-vs-VCTCXO @ 117:4c3f4231a021

autocal: vout_t definition factored out of txband.h into txvout.h
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 13 Feb 2018 07:02:17 +0000
parents 65577bb967f7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
64
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 Some TI-based GSM mobile station devices use VCTCXOs (voltage-controlled,
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 temperature-compensated crystal oscillators), while others use "plain" VCXOs
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 without the TC part. The Leonardo reference design for the Calypso+Iota+Rita
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 chipset, adopted first by Openmoko and then by FreeCalypso, uses a "plain" VCXO,
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 and the Rita RF chip itself was designed with non-TC VCXOs in mind, as it
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 includes the active part of the XO on-chip, with the external VCXO circuit
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 becoming purely passive. The same Rita chip does support the option of
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 disabling its internal active XO part and using an external VCTCXO; this
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 approach is used in the Pirelli DP-L10 GSM+WiFi dual mode phone - but it is no
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 longer Leonardo, and not properly supported by our available TCS211 reference
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 firmware.
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 However, it appears that Rita was TI's first RF chip to include the on-chip
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 active part for a non-TC VCXO, whereas Clara (D-Sample) and earlier RF chips
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 always required the VCXO or the VCTCXO to be external. Furthermore, it appears
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 that TI's original approach in the days of Sara RF (before Clara) was to use
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 VCTCXOs mandatorily, then later they improved their AFC (automatic frequency
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 control) algorithm to work with the cheaper non-TC VCXOs, and eventually the
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 non-TC VCXO approach became standard.
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 It also appears that the requirements for VC(TC)XO calibration changed with the
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 transition from VCTCXOs to "plain" VCXOs: of the two TI calibration documents
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 we have (see TI-docs), the Sara document seems to assume a VCTCXO, whereas
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 LoCosto's DCXO is apparently more like the Leonardo VCXO.
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 TI's Layer 1 sources we have include a C preprocessor symbol called VCXO_ALGO,
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 defined to 1 in TCS211, and it is my (Mychaela's) guess that this preprocessor
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 symbol enables the new code developed for non-TC VCXOs. The dac_center,
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 dac_min and dac_max fields in the afcparams table (T_AFC_PARAMS) exist only
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 when VCXO_ALGO is nonzero, and these numbers are calibrated per unit on Openmoko
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 devices. Without VCXO_ALGO the afcparams table contains only Psi constants,
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 and it is my guess that in the days of Sara VCTCXOs these Psi constants were
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 calculated theoretically and hard-coded, rather than calibrated per unit, hence
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 the lack of corresponding calibration instructions in the Sara
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 rf_calibration.pdf document. Only the "EEPROM" DAC value set with rfpw 10
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 needed to be calibrated back then, apparently.
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 It is not particularly clear to me whether or not the non-TC VCXO used with
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 VCXO_ALGO really needs to be calibrated on a per-unit basis, or if it would be
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 sufficient to calibrate it on a per-design basis and put these per-design
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 calibrated values in the firmware image. My own experience indicates that the
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 frequency put out by the non-TC VCXO varies quite significantly with
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 temperature, thus even if the factory calibration is done in a temperature-
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 controlled chamber, it is not clear how much this calibration helps in
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 subsequent end user operation when the phone can be used in a very cold
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 environment or a very hot one, and must work flawlessly nonetheless.
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 The truth may very well be that TI supplied their chipset customers with their
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 standard production calibration software that includes the VCXO calibration
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 step before Rx and Tx calibrations, and it was easier for the device
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 manufacturers to just run this production calibration software as-is than to
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 understand the meaning of various numbers in the afcparams table and come up
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 with some good-for-all values. TCS211 firmware does not work without VCXO
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 calibration on Openmoko's modem or on our semi-clone thereof (FCDEV3B) because
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 the hard-coded values of the Psi constants (which Openmoko couldn't change
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 because they were shackled by binary-only libs) are too far from the correct
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 values for the VCXO featured in this design, but the calibrated Psi values
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 differ very little from one unit to the next.
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 We no longer have the binary-only problem that Openmoko faced, but our current
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 approach is to replicate Om's factory per-unit calibration procedures pretty
65577bb967f7 doc/VCXO-vs-VCTCXO written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 closely, including the VCXO calibration.