コンテンツにスキップ

QuEL-1 連続波出力

Quel1BackendController は、QuEL-1 の 1 つの AWG channel で長時間動作する 連続波を開始・停止できます。これは hardware 検証や CW 実験のための controller-level capability です。MeasurementExperiment にはまだ公開していません。

使う場面

有限長の MeasurementSchedule 実行ではなく、mixer、周波数計画、analyzer trace、 意図的な aliasing などを確認したい場合に使います。

実行中の wavegen task は controller が保持します。停止は同じ controller instance から行ってください。

実機 workflow として実行する場合は、guard 付きの QuEL-1 連続波 notebook も参照してください。

出力を開始する

from qubex.backend.quel1 import Quel1BackendController

controller = Quel1BackendController()
controller.define_clockmaster(ipaddr="10.3.0.x")
controller.define_box(
    box_name="S173R",
    ipaddr_wss="10.1.0.x",
    boxtype="quel1se-riken8",
)
controller.connect(box_names="S173R")

config = controller.start_continuous_wave(
    box_name="S173R",
    port=2,
    channel=0,
    awg_freq_hz=7_812_500.0 * 20,
    amplitude=0.2,
)

awg_freq_hz は AWG baseband 周波数です。QuEL-1 の CW 出力は 128 ns の chunk を繰り返して生成するため、周波数は 1 / 128 ns = 7.8125 MHz の整数倍で、 AWG baseband の Nyquist 範囲内である必要があります。

戻り値の Quel1ContinuousWaveConfig には、実際の AWG 周波数、chunk 内周期数、 波形名、ログ用に解決した LO/CNCO/FNCO、計算できた場合の出力周波数、repeat count、 名目上の duration が入ります。

現在の LO/NCO 設定を保つ

デフォルトでは、start_continuous_wave()config_port() を呼ばず、FNCO も 更新しません。現在の hardware LO/CNCO/FNCO 設定を使い、dump_port() から読める値を ログに出します。

configure_port=False のままでも awg_freq_hz は反映されます。この場合に変わるのは 生成する AWG waveform だけです。

このデフォルトは、CW 出力開始の副作用として port の位相基準を変えないためのものです。

出力設定を明示的に更新する

CW 開始時に出力設定も更新したい場合だけ、configure_port=True を渡します。 対象には LO/CNCO/FNCO、sideband、VATT、full-scale current、RF switch state を 含められます。

config = controller.start_continuous_wave(
    box_name="S173R",
    port=2,
    channel=0,
    awg_freq_hz=0.0,
    amplitude=0.1,
    configure_port=True,
    lo_freq_hz=10_500_000_000,
    cnco_freq_hz=2_250_000_000,
    fnco_freq_hz=750_000_000,
    sideband="U",
    vatt=2048,
    fullscale_current=39000,
    rfswitch="pass",
)

configure_port=True なしで出力設定引数を指定した場合、Qubex は hardware に 触る前に ValueError を送出します。

出力を停止する

1 つの出力は同じ物理 key で停止します。

stopped = controller.stop_continuous_wave(
    box_name="S173R",
    port=2,
    channel=0,
)

stop_continuous_wave() は、controller が記憶している task を停止・削除した場合に True、該当 task がない場合に False を返します。

記憶しているすべての CW task を停止するには、次を使います。

controller.stop_all_continuous_waves()

disconnect() も backend resource を解放する前に best-effort で stop_all_continuous_waves() を呼びます。

異なる box 集合を指定して connect() し直す場合、QuEL-1 runtime state は作り直されます。 その場合、controller は reconnect の前に記憶している CW 出力を停止します。

ログと alias warning

開始時には、LO/CNCO/FNCO/AWG の各周波数、FNCO + AWG、および LO/CNCO/FNCO/sideband が揃っている場合の RF 出力周波数を GHz 単位で INFO level に 出します。

abs(FNCO + AWG) が 800 MHz を超える場合は、出力に aliasing が含まれる可能性が あるため warning を出します。この条件は error ではありません。意図的な aliasing テストは warning 後も継続できます。