QUBIT-Driver 1.2.2__tar.gz → 1.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: QUBIT_Driver
3
- Version: 1.2.2
3
+ Version: 1.2.4
4
4
  Summary: Drive adapted for the quantum control system of the CeYear 1U Qubit_Driver Institute
5
5
  Home-page:
6
6
  Author: He Guo Yang
@@ -41,6 +41,10 @@ $ pip install QUBIT_Driver
41
41
 
42
42
  ### License
43
43
  ## Update log
44
+ ### 1.2.4
45
+ - 添加思仪波形文件CY_Waveform.py
46
+ ### 1.2.3
47
+ - 修改中频任意波形发生器初始化设置奈奎斯特为1区间
44
48
  ### 1.2.2
45
49
  - 修改设备名称与驱动文件名称
46
50
  ### 1.2.1
@@ -21,7 +21,7 @@ class CYDADCDriver:
21
21
  self.sock_query('*RST')
22
22
 
23
23
  #设置奈奎斯特区间为2区
24
- self.set('::AWG:NYZONE',2)
24
+ self.set('::AWG:NYZONE',1)
25
25
  #幅度校准加载
26
26
  self.set(':AWG:WORK:VOLT?')
27
27
  self.set(':AWG: DECoder:MODe', 1) # 1为SNR模式(高信噪比);2为线性模式(低谐波失真);
@@ -0,0 +1,366 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+ import math
4
+
5
+ # 全局字体配置:解决中文、特殊箭头符号乱码
6
+ plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei', 'PingFang SC']
7
+ plt.rcParams['axes.unicode_minus'] = False
8
+
9
+ #====================== 单音信号=====================================
10
+ ###############sin##################
11
+ def Gen_Sin(SampleRate,Freq,Time,delay=0):###samplerate Mhz,Freq Mhz,time us
12
+ phase = 2*np.pi*delay*Freq
13
+ nums = round(Time*SampleRate)
14
+ cycle = round(Time*Freq)
15
+ t = np.linspace(0,cycle,nums,endpoint=False)
16
+ y = np.sin(2*np.pi*t-phase)
17
+ return y,nums
18
+
19
+
20
+
21
+ def Sin_C(SampleRate,Freq,delay = 0):########用于产生完整周期的函数##############
22
+ phase = 2*np.pi*delay*Freq
23
+ nums = int(np.lcm(round(SampleRate),round(Freq))/Freq)
24
+ cycle = int(np.lcm(round(SampleRate),round(Freq))/SampleRate)
25
+ t = np.linspace(0,cycle,nums,endpoint=False)
26
+ y = np.sin(2*np.pi*t-phase)
27
+ return y,nums
28
+
29
+ def Gen_Sin_C(SampleRate,Freq,delay = 0):
30
+ a,nums = Sin_C(SampleRate,Freq,delay)
31
+ times = int(np.lcm(nums,512)/nums)
32
+ return np.tile(a,times),nums*times
33
+
34
+ ###############cos###################
35
+ def Gen_Cos(SampleRate,Freq,Time,delay = 0):
36
+ phase = 2*np.pi*delay*Freq
37
+ nums = round(Time*SampleRate)
38
+ cycle = round(Time*Freq)
39
+ t = np.linspace(0,cycle,nums,endpoint=False)
40
+ y = np.cos(2*np.pi*t-phase)
41
+ return y,nums
42
+ def Cos_C(SampleRate,Freq,delay):
43
+ phase = 2*np.pi*delay*Freq
44
+ nums = int(np.lcm(round(SampleRate),round(Freq))/Freq)
45
+ cycle = int(np.lcm(round(SampleRate),round(Freq))/SampleRate)
46
+ t = np.linspace(0,cycle,nums,endpoint=False)
47
+ y = np.cos(2*np.pi*t-phase)
48
+ return y,nums
49
+
50
+ def Gen_Cos_C(SampleRate,Freq,delay = 0):
51
+ a,nums = Cos_C(SampleRate,Freq,delay)
52
+ times = int(np.lcm(nums,512)/nums)
53
+ return np.tile(a,times),nums*times
54
+
55
+ ##############pulse########################
56
+
57
+
58
+ def Gen_Pulse_C(SampleRate,time_all,time_up):
59
+ a,nums = Gen_Pulse(SampleRate,time_all,time_up,time_all)
60
+ times = int(np.lcm(nums,512)/nums)
61
+ return np.tile(a,times),nums*times
62
+ def Gen_Pulse(SampleRate,time_all,time_up,Time): #timeall一个脉冲总时间,timeup上升沿时间,time脉冲时间
63
+ nums = round(SampleRate*Time)
64
+ cycle = round(SampleRate*time_all)
65
+ up = round(SampleRate*time_up)
66
+ arr = np.zeros(nums)
67
+ full_cycles = nums//cycle
68
+ for i in range(full_cycles):
69
+ end_idx = (i+1)*cycle
70
+ arr[end_idx-int(0.5*(cycle+up)):end_idx-int(0.5*(cycle-up))] = 1
71
+ remain = nums%cycle
72
+ if(remain-int(0.5*(cycle-up))>0):
73
+ end = remain if remain<cycle-int(0.5*(cycle-up)) else cycle-int(0.5*(cycle-up))
74
+ arr[end_idx + int(0.5*(cycle-up)):end_idx+end] = 1
75
+ return arr,nums
76
+
77
+ def generate_single_pulse(
78
+ sample_rate: float = 10e9, # AWG采样率(固定10GSa/s)
79
+ pulse_amplitude: float = 1.0, # 脉冲幅值(单位:V,需≤AWG最大输出)
80
+ pulse_width: float = 100e-9, # 脉冲平顶宽度(单位:s,示例100ns)
81
+ rise_time: float = 50e-12, # 上升沿时长(单位:s,示例50ps,需≥40ps)
82
+ fall_time: float = 50e-12, # 下降沿时长(单位:s,示例50ps,需≥40ps)
83
+ pre_pulse_silence: float = 200e-9, # 脉冲前静默区(单位:s,避免AWG读取不完整)
84
+ post_pulse_silence: float = 200e-9, # 脉冲后静默区(单位:s)
85
+ output_dtype=np.float32 # 输出数据类型(适配AWG导入)
86
+ ) -> tuple[np.ndarray, float]:
87
+ """
88
+ 生成适配射频AWG的单脉冲波形数据
89
+ :param sample_rate: AWG采样率(固定10GSa/s,不可修改)
90
+ :param pulse_amplitude: 脉冲高电平幅值(建议0.1~1.0V,避免AWG过载)
91
+ :param pulse_width: 脉冲平顶时间(从上升沿90%到下降沿10%的时长)
92
+ :param rise_time: 上升沿(10%→90%幅值)时长(需≥AWG最小上升沿40ps)
93
+ :param fall_time: 下降沿(90%→10%幅值)时长(需≥AWG最小下降沿40ps)
94
+ :param pre_pulse_silence: 脉冲前低电平静默时间(建议≥200ns,稳定基线)
95
+ :param post_pulse_silence: 脉冲后低电平静默时间(建议≥200ns,避免尾部振荡)
96
+ :return: (pulse_data: 脉冲波形数据数组, time_axis: 对应的时间轴数组)
97
+ """
98
+ # 校验参数合法性(匹配AWG硬件限制)
99
+ # if sample_rate != 10e9:
100
+ # raise ValueError("当前AWG采样率固定为10GSa/s,不可修改")
101
+ # if rise_time < 40e-12 or fall_time < 40e-12:
102
+ # raise ValueError(f"边沿时长需≥40ps,当前上升沿{rise_time*1e12:.1f}ps,下降沿{fall_time*1e12:.1f}ps")
103
+ # if pulse_amplitude <= 0 or pulse_amplitude > 2.0:
104
+ # raise ValueError("脉冲幅值建议0.1~2.0V(需符合AWG最大输出限制)")
105
+
106
+ # 计算总采样点数
107
+ total_duration = pre_pulse_silence + rise_time + pulse_width + fall_time + post_pulse_silence
108
+ total_samples = int(np.ceil(total_duration * sample_rate))
109
+ time_axis = np.linspace(0, total_duration, total_samples, endpoint=False)
110
+
111
+ # 初始化波形数据(全低电平0V)
112
+ pulse_data = np.zeros(total_samples, dtype=output_dtype)
113
+
114
+ # 计算各阶段的采样点索引范围
115
+ sample_interval = 1 / sample_rate # 采样间隔(0.1ns)
116
+ pre_silence_samples = int(np.ceil(pre_pulse_silence / sample_interval))
117
+ rise_samples = int(np.ceil(rise_time / sample_interval))
118
+ pulse_samples = int(np.ceil(pulse_width / sample_interval))
119
+ fall_samples = int(np.ceil(fall_time / sample_interval))
120
+
121
+ # 1. 上升沿(10%→90%幅值,用线性斜坡模拟,贴合硬件实际响应)
122
+ rise_start_idx = pre_silence_samples
123
+ rise_end_idx = rise_start_idx + rise_samples
124
+ rise_t = np.linspace(0, 1, rise_samples) # 0→1归一化时间
125
+ # 10%→90%幅值映射:避免突变,模拟硬件缓升
126
+ pulse_data[rise_start_idx:rise_end_idx] = pulse_amplitude * (0.1 + 0.8 * rise_t)
127
+
128
+ # 2. 脉冲平顶(90%→90%幅值,稳定高电平)
129
+ pulse_start_idx = rise_end_idx
130
+ pulse_end_idx = pulse_start_idx + pulse_samples
131
+ pulse_data[pulse_start_idx:pulse_end_idx] = pulse_amplitude * 0.9
132
+
133
+ # 3. 下降沿(90%→10%幅值,线性斜坡模拟)
134
+ fall_start_idx = pulse_end_idx
135
+ fall_end_idx = fall_start_idx + fall_samples
136
+ fall_t = np.linspace(0, 1, fall_samples) # 0→1归一化时间
137
+ pulse_data[fall_start_idx:fall_end_idx] = pulse_amplitude * (0.9 - 0.8 * fall_t)
138
+
139
+ # 4. 前后静默区保持0V(已初始化,无需额外处理)
140
+
141
+ return pulse_data, time_axis
142
+ #####################双音信号########################
143
+ def GenWave_Dtmf(f1_sin, f2_sin,Time, SampleRate):
144
+ # nums = round(SampleRate*Time)
145
+ t = np.arange(0,Time,1/SampleRate)
146
+ y1_sin = np.sin(2*np.pi*f1_sin*t)
147
+ y2_sin = np.sin(2*np.pi*f2_sin*t)
148
+ return y1_sin+y2_sin,len(t)
149
+
150
+ def GenWave_Dtmf_C(f1_sin, f2_sin, SampleRate):
151
+ f1_sin = np.int64(f1_sin)
152
+ f2_sin = np.int64(f2_sin)
153
+ f = math.gcd(f1_sin, f2_sin)
154
+ a,nums = GenWave_Dtmf(f1_sin, f2_sin,1/f, SampleRate)
155
+ times = int(np.lcm(nums,512)/nums)
156
+ return np.tile(a,times),nums*times
157
+
158
+ def fir_allpass_delay(signal_in, fs, delay_ps, filter_order=101):
159
+ import numpy as np
160
+ from scipy import signal
161
+ from scipy.signal import firwin, lfilter
162
+ # 基于FIR分数延迟滤波器实现皮秒级全通延时
163
+ # :param signal_in: 输入波形(一维数组)
164
+ # :param fs: 采样率(Hz),需≥10GHz以支持皮秒级精度
165
+ # :param delay_ps: 目标延时(皮秒,ps)
166
+ # :param filter_order: FIR滤波器阶数(奇数,阶数越高精度越好,计算量越大)
167
+ # :return: 延时后的输出信号、FIR滤波器系数
168
+
169
+ # 1. 单位转换:皮秒 -> 秒 -> 采样点数(支持小数,即分数延迟)
170
+ delay_s = delay_ps * 1e-12
171
+ delay_samples = delay_s * fs # 核心:分数延迟值(如0.5个采样点=5ps@100GHz)
172
+
173
+ # 2. 设计分数延迟FIR全通滤波器(基于Sinc插值+窗函数)
174
+ # 滤波器半长度
175
+ half_len = filter_order // 2
176
+ # 生成滤波器系数的采样索引
177
+ n = np.arange(-half_len, half_len + 1)
178
+ # Sinc函数实现分数延迟:sinc(n - D),D为分数延迟值
179
+ sinc_coeffs = np.sinc(n - delay_samples)
180
+ # 加汉宁窗降低旁瓣,保证全通特性(幅频平坦)
181
+ window = np.hanning(filter_order)
182
+ fir_coeffs = sinc_coeffs * window
183
+
184
+ # 3. 归一化系数,保证幅值不变(全通核心要求)
185
+ fir_coeffs = fir_coeffs / np.sum(fir_coeffs)
186
+
187
+ # 4. 应用FIR滤波器实现延时(线性相位,无幅值失真)
188
+ signal_delayed = lfilter(fir_coeffs, 1.0, signal_in)
189
+
190
+ # 补偿滤波器引入的固定延时(滤波器半长度)
191
+ fixed_delay_samples = half_len
192
+ # 截断前导零(可选,根据实际需求)
193
+ signal_delayed = signal_delayed[fixed_delay_samples:]
194
+
195
+ return signal_delayed, fir_coeffs
196
+
197
+
198
+ # ======================基础调制波形库(9类通用波形,核磁/超导共用)======================
199
+ # 1.高斯包络调制脉冲
200
+ def gen_gauss_mod_pulse(amp=5, t0_ns=45, sigma_ns=12, total_ns=100, fc=8e9, fs=100e9):
201
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
202
+ t0, sigma = t0_ns*1e-9, sigma_ns*1e-9
203
+ env = amp * np.exp(-((t-t0)**2)/(2*sigma**2))
204
+ wave = env * np.cos(2*np.pi*fc*t)
205
+ return t*1e9, wave, env, t
206
+
207
+ # 2.矩形包络调制脉冲
208
+ def gen_rect_mod_pulse(amp=5, start_ns=25, pulse_w_ns=45, total_ns=100, fc=8e9, fs=100e9):
209
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
210
+ start_s = start_ns*1e-9
211
+ end_s = (start_ns + pulse_w_ns)*1e-9
212
+ rect_env = np.zeros_like(t)
213
+ mask = (t >= start_s) & (t <= end_s)
214
+ rect_env[mask] = amp
215
+ wave = rect_env * np.cos(2*np.pi*fc*t)
216
+ return t*1e9, wave, rect_env, t
217
+
218
+ # 3.DRAG校正脉冲(高斯基底)
219
+ def gen_drag_pulse(amp=5, t0_ns=45, sigma_ns=12, total_ns=100, fc=8e9, fs=100e9, lam=0.5):
220
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
221
+ t0, sigma = t0_ns*1e-9, sigma_ns*1e-9
222
+ g_env = amp * np.exp(-((t-t0)**2)/(2*sigma**2))
223
+ g_diff = -amp * (t-t0)/(sigma**2) * np.exp(-((t-t0)**2)/(2*sigma**2))
224
+ omega = 2 * np.pi * fc
225
+ drag_wave = g_env*np.cos(omega*t) - lam*g_diff*np.sin(omega*t)
226
+ return t*1e9, drag_wave, g_env, t
227
+
228
+ # 4.梯形包络调制脉冲
229
+ def gen_trap_mod_pulse(amp=5, start_ns=20, rise_ns=8, flat_ns=30, total_ns=100, fc=8e9, fs=100e9):
230
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
231
+ t_ns_arr = t * 1e9
232
+ env = np.zeros_like(t_ns_arr)
233
+ end_rise = start_ns + rise_ns
234
+ end_flat = end_rise + flat_ns
235
+ end_fall = end_flat + rise_ns
236
+ mask_rise = (t_ns_arr >= start_ns) & (t_ns_arr < end_rise)
237
+ env[mask_rise] = amp * (t_ns_arr[mask_rise]-start_ns)/rise_ns
238
+ mask_flat = (t_ns_arr >= end_rise) & (t_ns_arr < end_flat)
239
+ env[mask_flat] = amp
240
+ mask_fall = (t_ns_arr >= end_flat) & (t_ns_arr <= end_fall)
241
+ env[mask_fall] = amp*(end_fall - t_ns_arr[mask_fall])/rise_ns
242
+ wave = env * np.cos(2*np.pi*fc*t)
243
+ return t_ns_arr, wave, env, t
244
+
245
+ # 5.超高斯调制脉冲
246
+ def gen_super_gauss_pulse(amp=5, t0_ns=45, sigma_ns=12, n_order=4, total_ns=100, fc=8e9, fs=100e9):
247
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
248
+ t0, sigma = t0_ns*1e-9, sigma_ns*1e-9
249
+ env = amp * np.exp(-np.abs((t-t0)/sigma)**(2*n_order))
250
+ wave = env * np.cos(2*np.pi*fc*t)
251
+ return t*1e9, wave, env, t
252
+
253
+ # 6.高斯包络线性调频Chirp脉冲
254
+ def gen_chirp_gauss_pulse(amp=5, t0_ns=45, sigma_ns=12, f_start=7e9, f_end=9e9, total_ns=100, fs=100e9):
255
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
256
+ t0, sigma = t0_ns*1e-9, sigma_ns*1e-9
257
+ env = amp * np.exp(-((t-t0)**2)/(2*sigma**2))
258
+ k = (f_end-f_start)/(total_ns*1e-9)
259
+ phase = 2*np.pi*(f_start*t + 0.5*k*t**2)
260
+ wave = env*np.cos(phase)
261
+ return t*1e9, wave, env, t
262
+
263
+ # 7.升余弦包络调制脉冲
264
+ def gen_raised_cos_pulse(amp=5, start_ns=20, flat_ns=30, roll_ns=10, total_ns=100, fc=8e9, fs=100e9):
265
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
266
+ t_ns_arr = t*1e9
267
+ env = np.zeros_like(t_ns_arr)
268
+ r_end = start_ns + roll_ns
269
+ f_start = r_end + flat_ns
270
+ f_end = f_start + roll_ns
271
+ mask_r = (t_ns_arr >= start_ns) & (t_ns_arr < r_end)
272
+ tau_r = (t_ns_arr[mask_r]-start_ns)/roll_ns
273
+ env[mask_r] = amp*0.5*(1-np.cos(np.pi*tau_r))
274
+ mask_flat = (t_ns_arr >= r_end) & (t_ns_arr < f_start)
275
+ env[mask_flat] = amp
276
+ mask_f = (t_ns_arr >= f_start) & (t_ns_arr <= f_end)
277
+ tau_f = (f_end-t_ns_arr[mask_f])/roll_ns
278
+ env[mask_f] = amp*0.5*(1-np.cos(np.pi*tau_f))
279
+ wave = env*np.cos(2*np.pi*fc*t)
280
+ return t_ns_arr, wave, env, t
281
+
282
+ # 8.Sinc辛格包络调制脉冲
283
+ def gen_sinc_mod_pulse(amp=5, t0_ns=50, half_w_ns=20, total_ns=100, fc=8e9, fs=100e9):
284
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
285
+ t0_s, hw_s = t0_ns*1e-9, half_w_ns*1e-9
286
+ tau = (t-t0_s)/hw_s
287
+ env = amp*np.sinc(tau)
288
+ wave = env*np.cos(2*np.pi*fc*t)
289
+ return t*1e9, wave, env, t
290
+
291
+ # 9.CORPSE失谐校正脉冲
292
+ def gen_corpse_pulse(amp=5, t0_ns=50, sigma_ns=10, dt_ns=8, total_ns=150, fc=8e9, fs=100e9):
293
+ t = np.linspace(0, total_ns*1e-9, int(fs*total_ns*1e-9), endpoint=False)
294
+ t_ns = t*1e9
295
+ env = np.zeros_like(t_ns)
296
+ env += amp*np.exp(-((t_ns-(t0_ns-dt_ns))**2)/(2*(sigma_ns*0.7)**2))*0.5
297
+ env += amp*np.exp(-((t_ns-t0_ns)**2)/(2*sigma_ns**2))
298
+ env += amp*np.exp(-((t_ns-(t0_ns+dt_ns))**2)/(2*(sigma_ns*0.7)**2))*0.5
299
+ wave = env*np.cos(2*np.pi*fc*t)
300
+ return t_ns, wave, env, t
301
+
302
+ # ======================一、核磁自旋(氢核等)专用角度换算函数======================
303
+ def calc_angle_amp_nmr(target_angle, gamma, pulse_width_s, base_amp=1.0):
304
+ """平顶包络(矩形/梯形)核磁幅值计算
305
+ target_angle:目标弧度(np.pi/np.pi/2)
306
+ gamma:旋磁比,氢核固定267.52e6 rad/(s·T)
307
+ pulse_width_s:有效脉宽(s)
308
+ """
309
+ amp = target_angle/(gamma*pulse_width_s)*base_amp
310
+ return amp
311
+
312
+ def scale_env_angle_nmr(env_arr, dt, target_angle, gamma):
313
+ """渐变包络核磁缩放:高斯/DRAG/超高斯适用"""
314
+ area = np.trapz(env_arr, dx=dt)
315
+ scale = target_angle/(gamma*area)
316
+ return env_arr*scale
317
+
318
+ # ======================二、超导量子比特专用角度换算函数(无旋磁比,拉比频率积分)======================
319
+ def calc_angle_amp_super(target_angle, pulse_width_s):
320
+ """超导平顶脉冲幅值计算,θ=Ω·T"""
321
+ return target_angle/pulse_width_s
322
+
323
+ def scale_env_angle_super(env_arr, dt, target_angle):
324
+ """超导渐变包络缩放,θ=∫Ω(t)dt"""
325
+ area = np.trapz(env_arr, dx=dt)
326
+ scale = target_angle/area
327
+ return env_arr*scale
328
+
329
+ # ======================运行演示======================
330
+ if __name__ == "__main__":
331
+ # --------案例1:核磁氢核,矩形π/π/2脉冲对比--------
332
+ gamma_h = 267.52e6
333
+ pw_ns = 45
334
+ pw_s = pw_ns*1e-9
335
+ amp_pi_nmr = calc_angle_amp_nmr(np.pi, gamma_h, pw_s)
336
+ amp_hpi_nmr = calc_angle_amp_nmr(np.pi/2, gamma_h, pw_s)
337
+ t1, w1, e1, ts1 = gen_rect_mod_pulse(amp=amp_pi_nmr, pulse_w_ns=pw_ns)
338
+ t2, w2, e2, ts2 = gen_rect_mod_pulse(amp=amp_hpi_nmr, pulse_w_ns=pw_ns)
339
+
340
+ fig1, axs1 = plt.subplots(2,1,figsize=(12,7))
341
+ axs1[0].plot(t1,w1,c="r",lw=1,label="核磁矩形π脉冲")
342
+ axs1[0].plot(t1,e1,c="#3699cc",ls="--",lw=2,label="包络")
343
+ axs1[0].set_title(r'π脉冲(完整能级翻转 $|0\rangle \leftrightarrow |1\rangle$)')
344
+ axs1[0].grid(alpha=0.3);axs1[0].legend()
345
+ axs1[1].plot(t2,w2,c="darkorange",lw=1,label="核磁矩形π/2脉冲")
346
+ axs1[1].plot(t2,e2,c="#3699cc",ls="--",lw=2,label="包络")
347
+ axs1[1].set_title("π/2脉冲(制备叠加态,用于Ramsey/自旋回波)")
348
+ axs1[1].set_xlabel("时间(ns)");axs1[1].grid(alpha=0.3);axs1[1].legend()
349
+ plt.tight_layout()
350
+
351
+ # --------案例2:超导比特,高斯包络适配π/2脉冲--------
352
+ fs=100e9
353
+ dt=1/fs
354
+ t_ns_raw, wave_raw, env_raw, t_s_raw = gen_gauss_mod_pulse()
355
+ env_super_hpi = scale_env_angle_super(env_raw, dt, np.pi/2)
356
+ fc=8e9
357
+ wave_super_hpi = env_super_hpi*np.cos(2*np.pi*fc*t_s_raw)
358
+
359
+ fig2, ax2 = plt.subplots(figsize=(12,4))
360
+ ax2.plot(t_ns_raw,env_super_hpi,c="#3699cc",label="缩放后高斯包络")
361
+ ax2.plot(t_ns_raw,wave_super_hpi,c="r",lw=1,label="超导π/2调制波形")
362
+ ax2.set_title("超导比特高斯型 π/2 脉冲")
363
+ ax2.set_xlabel("时间(ns)");ax2.grid(alpha=0.3);ax2.legend()
364
+ plt.tight_layout()
365
+
366
+ plt.show()
@@ -0,0 +1 @@
1
+ __version__ = "1.2.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: QUBIT_Driver
3
- Version: 1.2.2
3
+ Version: 1.2.4
4
4
  Summary: Drive adapted for the quantum control system of the CeYear 1U Qubit_Driver Institute
5
5
  Home-page:
6
6
  Author: He Guo Yang
@@ -41,6 +41,10 @@ $ pip install QUBIT_Driver
41
41
 
42
42
  ### License
43
43
  ## Update log
44
+ ### 1.2.4
45
+ - 添加思仪波形文件CY_Waveform.py
46
+ ### 1.2.3
47
+ - 修改中频任意波形发生器初始化设置奈奎斯特为1区间
44
48
  ### 1.2.2
45
49
  - 修改设备名称与驱动文件名称
46
50
  ### 1.2.1
@@ -7,6 +7,7 @@ QUBIT_Driver/CY_6Z.py
7
7
  QUBIT_Driver/CY_8Couple.py
8
8
  QUBIT_Driver/CY_AD.py
9
9
  QUBIT_Driver/CY_SYNC.py
10
+ QUBIT_Driver/CY_Waveform.py
10
11
  QUBIT_Driver/__init__.py
11
12
  QUBIT_Driver.egg-info/PKG-INFO
12
13
  QUBIT_Driver.egg-info/SOURCES.txt
@@ -15,6 +15,10 @@ $ pip install QUBIT_Driver
15
15
 
16
16
  ### License
17
17
  ## Update log
18
+ ### 1.2.4
19
+ - 添加思仪波形文件CY_Waveform.py
20
+ ### 1.2.3
21
+ - 修改中频任意波形发生器初始化设置奈奎斯特为1区间
18
22
  ### 1.2.2
19
23
  - 修改设备名称与驱动文件名称
20
24
  ### 1.2.1
@@ -5,7 +5,7 @@ with open("README.md", "r",encoding="utf-8") as fh:
5
5
 
6
6
  setuptools.setup(
7
7
  name="QUBIT_Driver",
8
- version="1.2.2",
8
+ version="1.2.4",
9
9
  author="He Guo Yang",
10
10
  author_email="2060817247@qq.com",
11
11
  description="Drive adapted for the quantum control system of the CeYear 1U Qubit_Driver Institute",
@@ -1 +0,0 @@
1
- __version__ = "1.2.2"
File without changes
File without changes