基于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调制器、放大器和腔体的行为,来研究腔体在不同机械模式下的响应情况。最终,代码绘制了模拟过程中获得的信号和参数,以便分析腔体的电压幅值、相位和失谐等特性。