Skip to content

multi_ch_tx_indept_task

rfsoc_rfdc.transmitter.multi_ch_tx_indept_task

Attributes

Classes

MultiChTxIndeptTask(overlay, mode='iq2real', channel_count=4, dp_vect_dim=1)

Bases: MultiChTxTask

Source code in rfsoc_rfdc/transmitter/multi_ch_tx_indept_task.py
def __init__(self, overlay, mode="iq2real", channel_count=4, dp_vect_dim=1):
    super().__init__(overlay, mode, channel_count, dp_vect_dim)
Functions
run()
Source code in rfsoc_rfdc/transmitter/multi_ch_tx_indept_task.py
def run(self):
    if self.mode == "iq2real":
        tx_data_generator = TxDataGenerator()
        sch_data = tx_data_generator.get_iq_samples()
    else:
        sch_data = wg.generate_sine_wave(repeat_time=100, sample_pts=8)
    # Replicate across all channels
    data = np.tile(sch_data, (self.channel_count, 1))
    # Generate multi-channel memory layout
    mch_data = self.mch_mem_layout.gen_layout(data)
    # Convert to np.int16
    mch_data = mch_data.astype(np.int16)
    # Perform data copy
    self.tx_ch.data_copy(mch_data)
    # Start transmission
    while self.task_state != TASK_STATE["STOP"]:
        if self.task_state == TASK_STATE["RUNNING"]:
            # Streaming IQ samples
            self.tx_ch.stream(duty_cycle=100)
            time.sleep(1)
        else:
            self.tx_ch.tx_dma.stop()
            time.sleep(1)