From 755e1a0295acadc251c19c84dd9b291f8551b7e2 Mon Sep 17 00:00:00 2001 From: Runner PC Cavity Lab <johannes.schabbauer@tuwien.ac.at> Date: Wed, 13 Nov 2024 15:27:25 +0100 Subject: [PATCH] Spectrum: Print crest factor in BLACS worker and some modifications in testing script --- SpectrumAWG/blacs_workers.py | 2 +- SpectrumAWG/testing/SpectrumAWG_testing.py | 38 ++++++++++++++++------ 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/SpectrumAWG/blacs_workers.py b/SpectrumAWG/blacs_workers.py index 14ba2fd..2dc0b8c 100644 --- a/SpectrumAWG/blacs_workers.py +++ b/SpectrumAWG/blacs_workers.py @@ -91,7 +91,7 @@ class SpectrumAWGWorker(Worker): freq = instruction[1:num_tones+1] ampl = instruction[num_tones+1:2*num_tones+1] phase= instruction[2*num_tones+1:] - data = SpectrumCard.generate_multi_tone(freq,ampl,phase,num_samples,self.sample_rate) + data = SpectrumCard.generate_multi_tone(freq,ampl,phase,num_samples,self.sample_rate, print_crest_factor=True) initial_values[memory_index] = f"f:{freq}, a:{ampl}, p:{phase}" else: raise RuntimeError("Instruction length does not match, what happened??") diff --git a/SpectrumAWG/testing/SpectrumAWG_testing.py b/SpectrumAWG/testing/SpectrumAWG_testing.py index 5055a90..8b760c0 100644 --- a/SpectrumAWG/testing/SpectrumAWG_testing.py +++ b/SpectrumAWG/testing/SpectrumAWG_testing.py @@ -13,24 +13,30 @@ if __name__ == "__main__": # Set sampling rate, clock and output channels sample_rate = MEGA(1250) tweezerAWG.set_clock('external',MEGA(10)) + # tweezerAWG.set_clock('internal') tweezerAWG.set_sample_rate(sample_rate) tweezerAWG.set_channel_status(0,True) tweezerAWG.set_channel_enable(0,True) tweezerAWG.set_channel_amplitude(0,100) tweezerAWG.set_channel_filter(0,False) - tweezerAWG.set_channel_mode(0,'double') + tweezerAWG.set_channel_status(1,False) + # tweezerAWG.set_channel_enable(1,False) + # tweezerAWG.set_channel_amplitude(1,100) + # tweezerAWG.set_channel_filter(1,False) + # tweezerAWG.set_channel_mode(0,'double') + tweezerAWG.set_channel_mode(0,None) # Trigger Settings #tweezerAWG.print_available_trigger_sources() #tweezerAWG.print_available_ext_trigger_modes() #tweezerAWG.print_available_and_trigger_sources() #tweezerAWG.print_available_or_trigger_sources() - tweezerAWG.set_ext_trigger_mode('ext0','pos',rearm=True) - tweezerAWG.set_ext_trigger_level('ext0',800,2000) - tweezerAWG.set_trigger_or_mask({'ext0'}) + # tweezerAWG.set_ext_trigger_mode('ext0','pos',rearm=True) + # tweezerAWG.set_ext_trigger_level('ext0',800,2000) + # tweezerAWG.set_trigger_or_mask({'ext0'}) # Set Generation Mode - demo_mode = 'seq' # 'single', 'seq', 'fifo' + demo_mode = 'single' # 'single', 'seq', 'fifo' # 'single': Configures the card for single-shot data replay, where a fixed set of data is played once after the first trigger. # 'seq': Sets the card to sequence mode, allowing for complex, multi-step sequences of data to be replayed in a specified order. # 'fifo': Configures the card for FIFO mode, enabling continuous data streaming by replenishing data in real-time. @@ -51,8 +57,15 @@ if __name__ == "__main__": fundamental_frequency = sample_rate/num_samples # Only integer multiples of this frequency can be generated # Generate Single Tone - frequency = fundamental_frequency*100 + frequency = fundamental_frequency*170000 + # d_freq = fundamental_frequency*1000 + # freqs = np.arange(frequency,frequency+d_freq*10,d_freq) + print(f"Frequency = {frequency*1e-6} MHz") + # print(f"delta freq= {d_freq*1e-6} MHz") + # print(freqs) samples = generate_single_tone(frequency, num_samples) + # phases = np.pi*np.arange(freqs.size)**2/freqs.size + # samples = generate_multi_tone(freqs,np.ones_like(freqs),phases,num_samples) # Generate Multi Frequency Tones #unique_random_numbers = random.sample(range(100, 2000, 10), 100) @@ -71,10 +84,14 @@ if __name__ == "__main__": num_samples = 4096 fundamental_frequency = sample_rate/num_samples - for i in range(100): - data = generate_single_tone(fundamental_frequency*(i+1),num_samples) + for i in range(50): + # if i%2==0: + # data = generate_single_tone(fundamental_frequency*66,num_samples) + # else: + # data = generate_single_tone(fundamental_frequency*330,num_samples) + data = generate_single_tone(fundamental_frequency*(4*i+1),num_samples) tweezerAWG.transfer_sequence_replay_samples(i,data) - if i < 99: + if i < 49: tweezerAWG.seq_set_sequence_step(i,i,i+1,1,'on_trigger',last_step=False) else: tweezerAWG.seq_set_sequence_step(i,i,0,1,'on_trigger',last_step=True) @@ -89,8 +106,9 @@ if __name__ == "__main__": input() if demo_mode == 'seq': - for i in range(100): + for i in range(50): input() + print("Frequency [MHz]:", 1e-6*fundamental_frequency*(4*i+1)) tweezerAWG.card_force_trigger() if demo_mode == 'fifo': -- GitLab