Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Current state of the stft pulsegen #14

Closed
nkrackow opened this issue Dec 19, 2020 · 1 comment
Closed

Current state of the stft pulsegen #14

nkrackow opened this issue Dec 19, 2020 · 1 comment
Labels
enhancement New feature or request question Further information is requested

Comments

@nkrackow
Copy link
Contributor

nkrackow commented Dec 19, 2020

Note

"STFT pulsegen" is not the Miqro mode of phaser menioned in the ARTIQ manual

Current state of the stft pulsegen

PNG4
The spectrum above shows a demo of the current capabilities of the stft pulsegen. There are three sets of a variable number of tones, each with a different tone spacing and individually upconverted to a precise frequency offset.

A pulse with this spectrum can be windowed in time by a narrow-band window specified using 1024 fft parameters and emitted with deterministic latency. The architecture is essentially the same as proposed in STFT Pulsegen, only that the pulse is now gated in the window path and not in the stft branches.
Gatepulse_Blockdiagram_annotated_new

Specifications

  • Three branches, each containing:
    • One 1024 point radix2 fft with variable shift schedule allowing for maximized SNR in different conditions.
    • Two (real/imaginary signal part) variable rate interpolators:
      • Max ratechange = 1024
      • Possible ratechanges: 2, 4, 8, 12, 16, 20, ...
      • Image rejection > 89.5 dB in all conditions
      • Passband droop < 10%/0.9dB (can be compensated for in fft coefficients)
      • Cutoff at 80% input nyquist (meaning the highest 10% of positive and negative fft coefficients cannot be used)
    • One complex upconverter
      • Same as in "classic" phaser mode
      • mHz resolution
      • SNR > 100dB
  • Window/shaper path
    • Window specified using another 1024 point fft (however less tones can be used eg. only 3 for a hann window)
    • Another interpolator with the same specs but a maximum ratechange of 8192
    • Pulse emission can be triggered deterministically with single cycle (4ns) precision
  • ARTIQ API
    • Each fft can be loaded/cleared/(re-)started individually
    • All interpolator rates can be changed individually
    • Pulse can be triggered either by sending a start frame from Kasli or as soon as an fft computation is done
    • Windower/shaper can be bypassed so there is a continuous stft output
    • Channel 1 can be switched from phaser "classic" to stft pulsegen on the fly (Ch.0 is always Ch.0 of phaser "classic")

Questions

  • Is a minimum tone spacing of ~500Hz enough or does it need to be narrower?
  • Is a maximum pulse time of ~16ms enough?
  • Is the fft computation time critical? Then smaller ffts could be used, leading to significantly lower computation time.
  • Are 3 branches enough?
  • Is the exact phase/sample relation of the branches and the window of interest? Currently they are uncorrelated.
  • Would a gated branch output (aka just emit the stft outputs a specified number of times) be of interest?
  • Is a specification of the branch waveforms/window in time domain (aka no fft computation) of interest?
@nkrackow nkrackow added enhancement New feature or request question Further information is requested labels Dec 19, 2020
@jordens jordens mentioned this issue Jan 14, 2021
@jordens
Copy link
Member

jordens commented Aug 22, 2023

Closing as there are no actionable issues/problems here.

@jordens jordens closed this as completed Aug 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants