基于LLRFLibsPy库的脉冲模式下射频超导腔仿真示例
source code: Github
这段代码模拟了腔体(cavity)和机械模式(mechanical modes)的响应行为。包括RF信号源、I/Q调制器、放大器和腔体在内的各个部分。以下是详细的解读:
主要部分和功能
通用参数设置:
Ts:仿真时间步长,1微秒。t_fill和t_flat:腔体填充阶段和平顶阶段的时间长度(以样本数为单位)。
RF信号源:
fsrc和Asrc:RF信号源的频率偏移和振幅。sim_rfsrc函数:模拟RF信号源的行为,通过相位累积生成复数信号。
I/Q调制器:
pulsed:指示是否为脉冲模式。base_pul和base_cw:分别是脉冲和连续波模式下的基带信号。sim_iqmod函数:模拟I/Q调制器,基于输入信号和模式生成输出信号。
放大器:
gain_dB:放大器增益,以dB为单位。sim_amp函数:根据输入信号和增益生成放大后的信号。
腔体模型:
mech_modes:机械模式参数,包括频率、品质因数和耦合系数。- 腔体相关参数(
f0、beta、roQ、QL、RL、wh、ib、dw0)。 beam_pul和beam_cw:分别是脉冲和连续波模式下的束流驱动信号。cav_ss_mech和ss_discrete:分别生成机械模式的状态空间矩阵和离散化后的状态空间矩阵。sim_cav函数:模拟腔体和机械模式的行为,包括电压和失谐的计算。
RF系统仿真器:
sim_len和pul_len:仿真长度和脉冲长度(以样本数为单位)。- 初始化信号数组:
sig_src、sig_iqm、sig_amp、sig_vc、sig_vr、sig_dw。 - 仿真循环:
- 生成RF信号源。
- 执行I/Q调制。
- 放大信号。
- 添加微音效应。
- 模拟腔体的行为。
- 收集仿真结果。
绘制结果:
- 绘制信号的实部和虚部。
- 绘制腔体电压幅值、相位和失谐。
核心函数说明
**
sim_rfsrc**:1
2
3def sim_rfsrc(fsrc, Asrc, pha_src, Ts):
pha = pha_src + 2.0 * np.pi * fsrc * Ts
return Asrc*np.exp(1j*pha), pha模拟RF信号源,通过相位累积生成复数信号。
**
sim_iqmod**:1
2
3
4
5
6def sim_iqmod(sig_in, pulsed=True, base_pul=None, base_cw=0, buf_id=0):
if pulsed:
sig_out = sig_in * base_pul[buf_id if buf_id < len(base_pul) else -1]
else:
sig_out = sig_in * base_cw
return sig_out模拟I/Q调制器,基于输入信号和模式生成输出信号。
**
sim_amp**:1
2def sim_amp(sig_in, gain_dB):
return sig_in * 10.0**(gain_dB / 20.0)根据输入信号和增益生成放大后的信号。
**
sim_cav**:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23def sim_cav(half_bw, RL, dw_step0, detuning0, vf_step, state_vc, Ts, beta=1e4,
state_m0=0, Am=None, Bm=None, Cm=None, Dm=None,
pulsed=True, beam_pul=None, beam_cw=0, buf_id=0):
if pulsed:
vb = -RL * beam_pul[buf_id if buf_id < len(beam_pul) else -1]
else:
vb = beam_cw
status, vc, vr, dw, state_m = sim_scav_step(half_bw,
dw_step0,
detuning0,
vf_step,
vb,
state_vc,
Ts,
beta=beta,
state_m0=state_m0,
Am=Am,
Bm=Bm,
Cm=Cm,
Dm=Dm,
mech_exe=True)
state_vc = vc
return vc, vr, dw, state_vc, state_m模拟腔体和机械模式的行为,包括电压和失谐的计算。
代码解读
通用参数
1 | Ts = 1e-6 # 仿真时间步长,1微秒 |
RF信号源
1 | fsrc = -460 # 频率偏移 |
sim_rfsrc函数生成复数信号:
1 | def sim_rfsrc(fsrc, Asrc, pha_src, Ts): |
I/Q调制器
1 | pulsed = False # 脉冲模式 |
sim_iqmod函数模拟I/Q调制器:
1 | def sim_iqmod(sig_in, pulsed=True, base_pul=None, base_cw=0, buf_id=0): |
放大器
1 | gain_dB = 20 * np.log10(12e6) # 放大器增益 |
sim_amp函数根据输入信号和增益生成放大后的信号:
1 | def sim_amp(sig_in, gain_dB): |
腔体模型
1 | mech_modes = {'f': [280, 341, 460, 487, 618], |
生成机械模式状态空间矩阵和离散化矩阵:
1 | status, Am, Bm, Cm, Dm = cav_ss_mech(mech_modes) |
这段代码通过逐步模拟RF信号源、I/Q调制器、放大器和腔体的行为,来研究腔体在不同机械模式下的响应情况。最终,代码绘制了模拟过程中获得的信号和参数,以便分析腔体的电压幅值、相位和失谐等特性。

