*** Wartungsfenster jeden ersten Mittwoch vormittag im Monat ***

Skip to content
Snippets Groups Projects
Commit 755e1a02 authored by Schabbauer, Johannes's avatar Schabbauer, Johannes
Browse files

Spectrum: Print crest factor in BLACS worker and some modifications in testing script

parent a89c76fe
No related branches found
No related tags found
No related merge requests found
...@@ -91,7 +91,7 @@ class SpectrumAWGWorker(Worker): ...@@ -91,7 +91,7 @@ class SpectrumAWGWorker(Worker):
freq = instruction[1:num_tones+1] freq = instruction[1:num_tones+1]
ampl = instruction[num_tones+1:2*num_tones+1] ampl = instruction[num_tones+1:2*num_tones+1]
phase= instruction[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}" initial_values[memory_index] = f"f:{freq}, a:{ampl}, p:{phase}"
else: else:
raise RuntimeError("Instruction length does not match, what happened??") raise RuntimeError("Instruction length does not match, what happened??")
......
...@@ -13,24 +13,30 @@ if __name__ == "__main__": ...@@ -13,24 +13,30 @@ if __name__ == "__main__":
# Set sampling rate, clock and output channels # Set sampling rate, clock and output channels
sample_rate = MEGA(1250) sample_rate = MEGA(1250)
tweezerAWG.set_clock('external',MEGA(10)) tweezerAWG.set_clock('external',MEGA(10))
# tweezerAWG.set_clock('internal')
tweezerAWG.set_sample_rate(sample_rate) tweezerAWG.set_sample_rate(sample_rate)
tweezerAWG.set_channel_status(0,True) tweezerAWG.set_channel_status(0,True)
tweezerAWG.set_channel_enable(0,True) tweezerAWG.set_channel_enable(0,True)
tweezerAWG.set_channel_amplitude(0,100) tweezerAWG.set_channel_amplitude(0,100)
tweezerAWG.set_channel_filter(0,False) 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 # Trigger Settings
#tweezerAWG.print_available_trigger_sources() #tweezerAWG.print_available_trigger_sources()
#tweezerAWG.print_available_ext_trigger_modes() #tweezerAWG.print_available_ext_trigger_modes()
#tweezerAWG.print_available_and_trigger_sources() #tweezerAWG.print_available_and_trigger_sources()
#tweezerAWG.print_available_or_trigger_sources() #tweezerAWG.print_available_or_trigger_sources()
tweezerAWG.set_ext_trigger_mode('ext0','pos',rearm=True) # tweezerAWG.set_ext_trigger_mode('ext0','pos',rearm=True)
tweezerAWG.set_ext_trigger_level('ext0',800,2000) # tweezerAWG.set_ext_trigger_level('ext0',800,2000)
tweezerAWG.set_trigger_or_mask({'ext0'}) # tweezerAWG.set_trigger_or_mask({'ext0'})
# Set Generation Mode # 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. # '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. # '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. # 'fifo': Configures the card for FIFO mode, enabling continuous data streaming by replenishing data in real-time.
...@@ -51,8 +57,15 @@ if __name__ == "__main__": ...@@ -51,8 +57,15 @@ if __name__ == "__main__":
fundamental_frequency = sample_rate/num_samples # Only integer multiples of this frequency can be generated fundamental_frequency = sample_rate/num_samples # Only integer multiples of this frequency can be generated
# Generate Single Tone # 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) 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 # Generate Multi Frequency Tones
#unique_random_numbers = random.sample(range(100, 2000, 10), 100) #unique_random_numbers = random.sample(range(100, 2000, 10), 100)
...@@ -71,10 +84,14 @@ if __name__ == "__main__": ...@@ -71,10 +84,14 @@ if __name__ == "__main__":
num_samples = 4096 num_samples = 4096
fundamental_frequency = sample_rate/num_samples fundamental_frequency = sample_rate/num_samples
for i in range(100): for i in range(50):
data = generate_single_tone(fundamental_frequency*(i+1),num_samples) # 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) 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) tweezerAWG.seq_set_sequence_step(i,i,i+1,1,'on_trigger',last_step=False)
else: else:
tweezerAWG.seq_set_sequence_step(i,i,0,1,'on_trigger',last_step=True) tweezerAWG.seq_set_sequence_step(i,i,0,1,'on_trigger',last_step=True)
...@@ -89,8 +106,9 @@ if __name__ == "__main__": ...@@ -89,8 +106,9 @@ if __name__ == "__main__":
input() input()
if demo_mode == 'seq': if demo_mode == 'seq':
for i in range(100): for i in range(50):
input() input()
print("Frequency [MHz]:", 1e-6*fundamental_frequency*(4*i+1))
tweezerAWG.card_force_trigger() tweezerAWG.card_force_trigger()
if demo_mode == 'fifo': if demo_mode == 'fifo':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment