This image shows a high-level block diagram of the microstepper. The colors indicates how functions are divided between the boards.
Implementation
This is a brief description of the current implementation in the prototype
- Refence input stage and DDS1:
- IFB chain:
- DDS2 from ARTIQ Urukul board AD9912
- /4 divider MC12093 followed by LMH6702 in G=+2
- /1024 divider 74AHC1G4210
- IFB thru ADA4898-1 G=+2 to phase-detector
- Phase detector AD630
- OCXO board
- PD input thru PID-controller built with OPA188
- OCXO ConnorWinfield OH300
- /10 output-divider MC12080
- output-amplifiers LMH6702 G=+2
Frequency resolution
This is a basic derivation of the frequency-resolution of the microstepper. This assumes a 100 MHz reference-frequency (from maser), and a 100 MHz OCXO frequency. Other configurations are certainly possible and could be explored.
The phase-detector PD forces both generated IFs to be equal. The reference-IF IF_A
is directly mixed down from the fererence frequency f_R
, while the fine-resolution-IF IF_B
is produced by dividing DDS1.
IF_A=f_R - {{f_{DDS1}}\over{4}}
IF_B={{f_{DDS2}}\over{2^{2}2^{10}}}
When both DDSs are clocked at f_{SYSCLK}=10\cdot f_{OCXO}
the DDS frequencies are given by
f_{DDS}={{f_{SYSCLK} \cdot FTW}\over{2^{48}}} = {{10f_{OCXO} \cdot FTW}\over{2^{48}}}
If we now equate IF_A=IF_B
and insert the DDS frequencies f_{DDS1}(FTW_1)
and f_{DDS2}(FTW_2)
we get for the fractional frequency of the microstepper output (left as an exercise to the reader!)
{f_{OCXO}\over{f_R}} - 1 = { {2^{48} \cdot 2^2}\over{ 10 (FTW_1 + { {FTW_2}\over{ 2^{10}}}) }}-1
DDS1 can be used for coarse frequency adjustments. Around a fractional frequency of zero, changing FTW1 by 2 steps (AD9912 is a 47-bit DDS!) changes the output frequency by 1.8e-14 as follows. This is output from the scripts/ustep_calc.py script. Note that a library like bigfloat is (probably) needed for accurate computation at 18+ digits of precision.
uStep output fractional frequency y
FTW2 = 112589990684057 (constant)
FTW1 dFTW1 y
112480039521475 -10 8.88e-14
112480039521477 -8 7.11e-14
112480039521479 -6 5.33e-14
112480039521481 -4 3.55e-14
112480039521483 -2 1.78e-14
112480039521485 0 5.2e-18
112480039521487 2 -1.78e-14
112480039521489 4 -3.55e-14
112480039521491 6 -5.33e-14
112480039521493 8 -7.1e-14
112480039521495 10 -8.88e-14
y change due to 2 steps in FTW1: -1.8e-14
DDS2 is used for fine frequency adjustments. Around a fractional frequency of zero, changing FTW2 by 2 steps changes the output frequency by 1.7e-17 as follows:
uStep output fractional frequency y
FTW1 = 112480039521485 (constant)
FTW2 dFTW2 y
112589990684047 -10 9.19e-17
112589990684049 -8 7.46e-17
112589990684051 -6 5.72e-17
112589990684053 -4 3.99e-17
112589990684055 -2 2.26e-17
112589990684057 0 5.2e-18
112589990684059 2 -1.21e-17
112589990684061 4 -2.95e-17
112589990684063 6 -4.68e-17
112589990684065 8 -6.42e-17
112589990684067 10 -8.15e-17
y change due to 2 steps in FTW2: -1.7e-17