SMuRF Resonator Frequency Measurement
date | topic | link |
---|---|---|
4/26/21 | eta scans, firmware | |
4/27/21 | eta scans, firmware | |
4/28/21 | eta scans, tracking/flux ramp demodulation | |
4/29/21 | pilot tones | |
5/3/21 | polyphase filters, filter bank | |
5/5/21 | uMUX tracking, demodulation | |
5/6/21 | SMuRF tutorial |
Here I'll generate an S21 curve. What eta params should we use?
close all clear Fdsp = 2.4e6; % can place resonator +/- Fdsp/2 fres = 300e3; fnorm = fres/Fdsp; z0 = 0.98*exp(1j*2*pi*fnorm); p0 = 0.95*exp(1j*2*pi*(fnorm+0.002)); b = [1, -z0]; a = [1, -p0]; fvtool([1, -z0], [1, -p0], 'Fs', Fdsp) theta = 0.5; % arbitrary phase offset, rad tau = 1e-9; % 1 ns delay % digital frequency -- -pi to pi maps to -Fs/2 to Fs/2 w = linspace(-pi, pi, 2^13); f = w*Fdsp/2/pi; % frequencies in Hz [s21, w] = freqz(b, a, w); % resonator S21 s21 = s21.*exp(-1j*theta); % apply arb phase offset s21 = s21.*exp(-1j*2*pi*f*tau); % apply time delay figure subplot(2,1,1) plot(f, 20*log10(abs(s21)), 'LineWidth', 2) title('Resonator Transfer Function', 'FontSize', 12) grid minor xlabel('Frequency', 'FontSize', 12) ylabel('Magnitude (dB)', 'FontSize', 12) subplot(2,1,2) plot(f, unwrap(angle(s21)), 'LineWidth', 2) grid minor xlabel('Frequency', 'FontSize', 12) ylabel('Phase (rad)', 'FontSize', 12) figure plot(real(s21(1:10:end)), imag(s21(1:10:end)), '.', 'LineWidth', 2) grid minor title('S_{21}', 'FontSize', 12) xlabel('Real S_{21}', 'FontSize', 12) ylabel('Imag S_{21}', 'FontSize', 12)
Here's my result
%% Here's the real test -- move the resonator and see how it responds apply_eta = @(x, eta_offset, eta) (x + eta_offset)*eta; % can place resonator +/- Fdsp/2 dfres = 1e3; % move the resonator from it's original frequency fres = 300e3 + dfres; fnorm = fres/Fdsp; z0 = 0.98*exp(1j*2*pi*fnorm); p0 = 0.95*exp(1j*2*pi*(fnorm+0.002)); b = [1, -z0]; a = [1, -p0]; [s21, w] = freqz(b, a, w); % resonator S21 s21 = s21.*exp(-1j*theta); % apply arb phase offset s21 = s21.*exp(-1j*2*pi*tau*f); % apply time delay s21_eta = apply_eta(s21, eta_offset, eta); % apply eta disp(['We moved the resonator ', num2str(dfres), 'Hz and measured ', num2str(round(imag(s21_eta(ftone)))), ' Hz error']) >> We moved the resonator 1000Hz and measured -984 Hz error