예제 #1
0
    def test_generate_large_csv_sequence_program(self):
        expected = textwrap.dedent(f"""
                        // generated by {self.driver_class_name}

                        wave wave_1 = "wave_1";
                        wave marker_1 = "marker_1";
                        wave_1 = wave_1 + marker_1;
                        wave marker_2 = "marker_2";
                        wave marker_3 = "marker_3";
                        wave wave_4 = "wave_4";
                        wave wave_5 = "wave_5";
                        wave marker_5 = "marker_5";
                        wave_5 = wave_5 + marker_5;
                        wave wave_6 = "wave_6";
                        wave wave_7 = "wave_7";
                        wave marker_7 = "marker_7";
                        wave_7 = wave_7 + marker_7;
                        wave marker_8 = "marker_8";

                        while(true){{
                            playWave(1, wave_1, 2, marker_2, 3, marker_3, 4, wave_4, 5, wave_5, 6, wave_6, 7, wave_7, 8, marker_8);
                        }}
                        """)
        sequence_program = ZIHDAWG8.generate_csv_sequence_program([
            (1, "wave_1", "marker_1"), (2, None, "marker_2"),
            (3, None, "marker_3"), (4, "wave_4", None),
            (5, "wave_5", "marker_5"), (6, "wave_6", None),
            (7, "wave_7", "marker_7"), (8, None, "marker_8")
        ])
        self.assertEqual(expected, sequence_program)
예제 #2
0
    def test_generate_csv_sequence_program_with_marker_no_waves(self):
        expected = textwrap.dedent(f"""
                        // generated by {self.driver_class_name}

                        wave marker_1 = "marker_1";

                        while(true){{
                            playWave(6, marker_1);
                        }}
                        """)
        sequence_program = ZIHDAWG8.generate_csv_sequence_program([
            (6, None, "marker_1")
        ])
        self.assertEqual(expected, sequence_program)
예제 #3
0
    def test_generate_csv_sequence_program_1_wave(self):
        expected = textwrap.dedent(f"""
                        // generated by {self.driver_class_name}

                        wave wave_1 = "wave_1";

                        while(true){{
                            playWave(7, wave_1);
                        }}
                        """)
        sequence_program = ZIHDAWG8.generate_csv_sequence_program([
            (7, 'wave_1', None)
        ])
        self.assertEqual(expected, sequence_program)
예제 #4
0
    def test_generate_csv_sequence_program(self):
        expected = textwrap.dedent(f"""
                        // generated by {self.driver_class_name}

                        wave wave_1 = "wave_1";
                        wave wave_2 = "wave_2";
                        wave wave_3 = "wave_3";

                        while(true){{
                            playWave(1, wave_1, 2, wave_2, 3, wave_3);
                        }}
                        """)
        sequence_program = ZIHDAWG8.generate_csv_sequence_program([
            (1, 'wave_1', None), (2, 'wave_2', None), (3, 'wave_3', None)
        ])
        self.assertEqual(expected, sequence_program)
예제 #5
0
    def test_generate_csv_sequence_program_with_2_markers_1_wave(self):
        expected = textwrap.dedent(f"""
                        // generated by {self.driver_class_name}

                        wave wave_1 = "wave_1";
                        wave marker_1 = "marker_1";
                        wave_1 = wave_1 + marker_1;
                        wave marker_2 = "marker_2";

                        while(true){{
                            playWave(1, wave_1, 2, marker_2);
                        }}
                        """)
        sequence_program = ZIHDAWG8.generate_csv_sequence_program([
            (1, "wave_1", "marker_1"), (2, None, "marker_2")
        ])
        self.assertEqual(expected, sequence_program)
예제 #6
0
    def test_create_parameters_from_node_tree(self):
        with patch.object(zhinst.utils, 'create_api_session',
                          return_value=3 * (MagicMock(),)), \
             patch.object(ZIHDAWG8, 'download_device_node_tree',
                          return_value=self.node_tree):
            hdawg8 = ZIHDAWG8('hdawg8', 'dev-test')

            self.assertIn('system_awg_channelgrouping', hdawg8.parameters)
            with self.assertRaises(ValueError):
                hdawg8.system_awg_channelgrouping.set(4)
            self.assertEqual('None', hdawg8.system_awg_channelgrouping.unit)
            self.assertEqual('system_awg_channelgrouping',
                             hdawg8.system_awg_channelgrouping.name)
            self.assertIsNotNone(hdawg8.system_awg_channelgrouping.vals)
            self.assertIsInstance(hdawg8.system_awg_channelgrouping.vals,
                                  validators.Enum)

            self.assertIn('sigouts_0_on', hdawg8.parameters)
            self.assertEqual('None', hdawg8.sigouts_0_on.unit)
            self.assertEqual('sigouts_0_on', hdawg8.sigouts_0_on.name)
            self.assertIsNone(hdawg8.sigouts_0_on.vals)

            self.assertIn('system_owner', hdawg8.parameters)
            self.assertEqual('None', hdawg8.system_owner.unit)
            self.assertEqual('system_owner', hdawg8.system_owner.name)
            self.assertIsNone(hdawg8.system_owner.vals)

            self.assertIn('sines_0_amplitudes_0', hdawg8.parameters)
            self.assertEqual('None', hdawg8.sines_0_amplitudes_0.unit)
            self.assertEqual('sines_0_amplitudes_0',
                             hdawg8.sines_0_amplitudes_0.name)
            self.assertIsNone(hdawg8.sines_0_amplitudes_0.vals)

            self.assertIn('awgs_1_waveform_memoryusage', hdawg8.parameters)
            self.assertEqual('%', hdawg8.awgs_1_waveform_memoryusage.unit)
            self.assertEqual('awgs_1_waveform_memoryusage',
                             hdawg8.awgs_1_waveform_memoryusage.name)
            self.assertIsNone(hdawg8.awgs_1_waveform_memoryusage.vals)
            hdawg8.close()
예제 #7
0
 def __init__(self, address: str, instrument_name: Optional[str] = None) -> None:
     super().__init__(address, instrument_name)
     self._instrument: ZIHDAWG8 = ZIHDAWG8(self._instrument_name, address)
        for awg_gate in self.awg_map:
            parameter_name = 'awg_to_{}'.format(awg_gate)
            parameter_label = '{} (factor)'.format(parameter_name)
            self.add_parameter(parameter_name,
                               parameter_class=ManualParameter,
                               initial_value=1000,
                               label=parameter_label,
                               vals=Numbers(1, 1000))


settings = HardwareSettings()

# Initialize the arbitrary waveform generator

awg = ZIHDAWG8(name='HDAWG8', device_id='DEV8049')

grouping_1x8 = 2
awg.set_channel_grouping(grouping_1x8)

output1_marker1 = 4
awg.triggers_out_4_source(output1_marker1)

output2_marker1 = 6
awg.triggers_out_5_source(output2_marker1)

sampling_rate_293KHz = 13
awg.awgs_0_time(sampling_rate_293KHz)

# Initialize the lock-in amplifier