nsqdriver 0.5.7__cp310-cp310-win_amd64.whl → 0.6.1__cp310-cp310-win_amd64.whl
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.
Potentially problematic release.
This version of nsqdriver might be problematic. Click here for more details.
- nsqdriver/NS_QSYNC.py +59 -1
- nsqdriver/__init__.py +1 -1
- nsqdriver/compiler/assembler.cp310-win_amd64.pyd +0 -0
- nsqdriver/compiler/ns_wave.cp310-win_amd64.pyd +0 -0
- nsqdriver/compiler/py_wave_asm.cp310-win_amd64.pyd +0 -0
- nsqdriver/nswave/__init__.py +2 -0
- nsqdriver/nswave/__init__.pyi +2 -0
- nsqdriver/nswave/_asm.cp310-win_amd64.pyd +0 -0
- nsqdriver/nswave/_asm.pyi +94 -0
- nsqdriver/nswave/_functions.cp310-win_amd64.pyd +0 -0
- nsqdriver/nswave/_functions.pyi +25 -0
- nsqdriver/nswave/kernel.cp310-win_amd64.pyd +0 -0
- nsqdriver/nswave/kernel.pyi +44 -0
- {nsqdriver-0.5.7.dist-info → nsqdriver-0.6.1.dist-info}/METADATA +37 -33
- nsqdriver-0.6.1.dist-info/RECORD +26 -0
- nsqdriver-0.5.7.dist-info/RECORD +0 -18
- {nsqdriver-0.5.7.dist-info → nsqdriver-0.6.1.dist-info}/WHEEL +0 -0
- {nsqdriver-0.5.7.dist-info → nsqdriver-0.6.1.dist-info}/top_level.txt +0 -0
nsqdriver/NS_QSYNC.py
CHANGED
|
@@ -3,8 +3,9 @@ import socket
|
|
|
3
3
|
import struct
|
|
4
4
|
import threading
|
|
5
5
|
import time
|
|
6
|
-
import enum
|
|
7
6
|
import pickle
|
|
7
|
+
import enum
|
|
8
|
+
import copy
|
|
8
9
|
from concurrent.futures import ThreadPoolExecutor
|
|
9
10
|
from concurrent.futures import wait as wait_futures
|
|
10
11
|
from multiprocessing import shared_memory
|
|
@@ -120,10 +121,14 @@ class Driver(BaseDriver):
|
|
|
120
121
|
Quantity('TrigPeriod', value=200e-6, ch=1), # set/get, 触发周期
|
|
121
122
|
Quantity('TrigWidth', value=800e-9, ch=1), # set/get, 触发周期
|
|
122
123
|
Quantity('TrigDelay', value=0, ch=1), # set/get, 触发周期
|
|
124
|
+
Quantity('TrigDelayList', value=0, ch=1), # set/get, 触发周期
|
|
123
125
|
Quantity('TrigFrom', value=0, ch=1), # Trig来源: 0:内部产生;1:外部输入
|
|
124
126
|
Quantity('RefClock', value='out', ch=1), # 参考时钟选择: ‘out’:外参考时钟;‘in’:内参考时钟
|
|
125
127
|
Quantity('DiscoveryMode', value=ScannMode.local, ch=1), # QC/QR等被同步设备的发现方式,见DiscoveryMode说明
|
|
126
128
|
Quantity('UpdateFirmware', value='', ch=1), # qsync固件更新
|
|
129
|
+
Quantity('GeneratePrtTrig', value=None, unit='s'), # 生成subprt trig
|
|
130
|
+
Quantity('SubDelayCount', value=0, ch=1),
|
|
131
|
+
Quantity('TrigWidth', value=0, ch=1),
|
|
127
132
|
]
|
|
128
133
|
|
|
129
134
|
SystemParameter = {
|
|
@@ -145,6 +150,15 @@ class Driver(BaseDriver):
|
|
|
145
150
|
self.addr = addr
|
|
146
151
|
|
|
147
152
|
self.param = {'Shot': 1024, 'TrigPeriod': 200e-6, 'MixMode': 2}
|
|
153
|
+
self.subprtparam = [
|
|
154
|
+
[[ 0x5F5F5F5F,
|
|
155
|
+
0x41000001,
|
|
156
|
+
0x00000000,
|
|
157
|
+
4*(17*100+17*4+5), # 指令长度 ,uint32个数*4
|
|
158
|
+
0,]],
|
|
159
|
+
[[0, 0, 800, 0] for _ in range(17)],
|
|
160
|
+
[[0 for _ in range(100)] for _ in range(17)],
|
|
161
|
+
]
|
|
148
162
|
print_debug(f'QSYNC: 实例化成功{addr}')
|
|
149
163
|
|
|
150
164
|
@property
|
|
@@ -210,6 +224,7 @@ class Driver(BaseDriver):
|
|
|
210
224
|
@return:
|
|
211
225
|
"""
|
|
212
226
|
print_debug(f'QSYNC: set操作被调用{name}')
|
|
227
|
+
self.subprt(name, value, channel)
|
|
213
228
|
if name in {'SystemSync', 'ReInit'}:
|
|
214
229
|
self.sync_system()
|
|
215
230
|
elif name == 'TRIG':
|
|
@@ -229,6 +244,15 @@ class Driver(BaseDriver):
|
|
|
229
244
|
self._send_command(data, connect_timeout=2)
|
|
230
245
|
self.gen_trig_num += 1
|
|
231
246
|
elif name == 'ResetTrig':
|
|
247
|
+
self.subprtparam = [
|
|
248
|
+
[[ 0x5F5F5F5F,
|
|
249
|
+
0x41000001,
|
|
250
|
+
0x00000000,
|
|
251
|
+
4*(17*100+17*4+5), # 指令长度 ,uint32个数*4
|
|
252
|
+
0,]],
|
|
253
|
+
[[0, 0, 800, 0] for _ in range(17)],
|
|
254
|
+
[[0 for _ in range(100)] for _ in range(17)],
|
|
255
|
+
]
|
|
232
256
|
data = self.__fmt_qsync_common(self.icd_head_reset)
|
|
233
257
|
self._send_command(data)
|
|
234
258
|
elif name == 'RefClock':
|
|
@@ -242,9 +266,34 @@ class Driver(BaseDriver):
|
|
|
242
266
|
data = self.__fmt_qsync_mask(*value)
|
|
243
267
|
self._send_command(data)
|
|
244
268
|
|
|
269
|
+
elif name == "GeneratePrtTrig":
|
|
270
|
+
data = self.__fmt_qsync_prt(self.subprtparam)
|
|
271
|
+
self._send_command(data)
|
|
245
272
|
else:
|
|
246
273
|
self.param[name] = value
|
|
247
274
|
|
|
275
|
+
def subprt(self, name, value, ch=1):
|
|
276
|
+
"""
|
|
277
|
+
subprt参数过滤
|
|
278
|
+
Args:
|
|
279
|
+
name: _description_
|
|
280
|
+
value: _description_
|
|
281
|
+
ch: _description_
|
|
282
|
+
"""
|
|
283
|
+
if name == "Shot":
|
|
284
|
+
self.subprtparam[1][ch-1][1] = round(value) & 0xFFFFFFFF
|
|
285
|
+
elif name == "TrigPeriod":
|
|
286
|
+
self.subprtparam[1][ch-1][0] = round(value * 1e9) & 0xFFFFFFFF
|
|
287
|
+
elif name == "TrigWidth":
|
|
288
|
+
self.subprtparam[1][ch-1][2] = round(value * 1e9) & 0xFFFFFFFF
|
|
289
|
+
# elif name == "TrigDelay":
|
|
290
|
+
# self.subprtparam[1][ch-1][3] = round(value * 1e9) & 0xFFFFFFFF
|
|
291
|
+
elif name == "SubDelayCount":
|
|
292
|
+
self.subprtparam[1][ch-1][3] = round(value) & 0xFFFFFFFF
|
|
293
|
+
elif name == "TrigDelayList":
|
|
294
|
+
self.subprtparam[2][ch-1] = [round(i * 1e9) & 0xFFFFFFFF for i in value]
|
|
295
|
+
self.subprtparam[2][ch-1].extend([0]*(100-len(self.subprtparam[2][ch-1]))) # 长度为100
|
|
296
|
+
|
|
248
297
|
def get(self, name, channel=1, value=0):
|
|
249
298
|
"""!
|
|
250
299
|
查询设备属性,获取数据
|
|
@@ -475,6 +524,15 @@ class Driver(BaseDriver):
|
|
|
475
524
|
|
|
476
525
|
return struct.pack('=' + 'I' * len(cmd_pack), *cmd_pack)
|
|
477
526
|
|
|
527
|
+
# @lru_cache(maxsize=8)
|
|
528
|
+
def __fmt_qsync_prt(self, para):
|
|
529
|
+
cmd_pack = []
|
|
530
|
+
for i in para:
|
|
531
|
+
for ii in i:
|
|
532
|
+
for iii in ii:
|
|
533
|
+
cmd_pack.append(iii)
|
|
534
|
+
return struct.pack('=' + 'I' * len(cmd_pack), *cmd_pack)
|
|
535
|
+
|
|
478
536
|
@staticmethod
|
|
479
537
|
def __fmt_update_firmware(file_data):
|
|
480
538
|
cmd_pack = (
|
nsqdriver/__init__.py
CHANGED
|
@@ -4,7 +4,7 @@ from .NS_CST import Driver as CSTDriver
|
|
|
4
4
|
from .compiler.ns_wave import InsChannel
|
|
5
5
|
from .compiler.py_wave_asm import nsw_config, AssemblyError
|
|
6
6
|
|
|
7
|
-
version_pack = (0,
|
|
7
|
+
version_pack = (0, 6, 1)
|
|
8
8
|
|
|
9
9
|
__version__ = '.'.join(str(_) for _ in version_pack)
|
|
10
10
|
__all__ = ['MCIDriver', 'QSYNCDriver', 'CSTDriver', 'InsChannel']
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
|
|
4
|
+
__all__ = ['AssemblyError', 'GenTagMixin', 'NSQCommand', 'QInsFrame', 'nsw_config', 'QInsEnvelope', 'QInsWait', 'QInsNop', 'QInsJumpImmediate', 'QInsPlayImm', 'QInsWaitTrig', 'QInsFrameRst', 'QInsWaitTrig', 'QInsFrameAdd', 'QInsCapture']
|
|
5
|
+
|
|
6
|
+
def nsw_config(name, value) -> None: ...
|
|
7
|
+
|
|
8
|
+
class QNumber:
|
|
9
|
+
value: int
|
|
10
|
+
def __init__(self) -> None: ...
|
|
11
|
+
def __int__(self) -> int: ...
|
|
12
|
+
def __float__(self) -> float: ...
|
|
13
|
+
def __bool__(self) -> bool: ...
|
|
14
|
+
|
|
15
|
+
class AssemblyError(RuntimeError): ...
|
|
16
|
+
|
|
17
|
+
class GenTagMixin:
|
|
18
|
+
@property
|
|
19
|
+
def generate_tag(self): ...
|
|
20
|
+
|
|
21
|
+
class NSQCommand(GenTagMixin):
|
|
22
|
+
tag: Incomplete
|
|
23
|
+
def __init__(self) -> None: ...
|
|
24
|
+
@property
|
|
25
|
+
def overhead(self): ...
|
|
26
|
+
@classmethod
|
|
27
|
+
def compile(cls, inst_list: list[Self]) -> tuple[np.ndarray, str]: ...
|
|
28
|
+
|
|
29
|
+
class QInsFrame(NSQCommand):
|
|
30
|
+
freq: Incomplete
|
|
31
|
+
phase: Incomplete
|
|
32
|
+
idx: Incomplete
|
|
33
|
+
def __init__(self, freq, phase, idx) -> None: ...
|
|
34
|
+
@property
|
|
35
|
+
def overhead(self): ...
|
|
36
|
+
|
|
37
|
+
class QInsEnvelope(NSQCommand):
|
|
38
|
+
envelope: Incomplete
|
|
39
|
+
envelop_slice: Incomplete
|
|
40
|
+
def __init__(self, envelope: np.ndarray) -> None: ...
|
|
41
|
+
def __len__(self) -> int: ...
|
|
42
|
+
def __bytes__(self) -> bytes: ...
|
|
43
|
+
|
|
44
|
+
class QInsFrameRst(NSQCommand):
|
|
45
|
+
@property
|
|
46
|
+
def overhead(self): ...
|
|
47
|
+
|
|
48
|
+
class QInsFrameAdd(NSQCommand):
|
|
49
|
+
frames: Incomplete
|
|
50
|
+
frequency: Incomplete
|
|
51
|
+
phase: Incomplete
|
|
52
|
+
def __init__(self, frames: list[QInsFrame], frequency: float, phase: float) -> None: ...
|
|
53
|
+
@property
|
|
54
|
+
def overhead(self): ...
|
|
55
|
+
|
|
56
|
+
class QInsWait(NSQCommand):
|
|
57
|
+
width: Incomplete
|
|
58
|
+
def __init__(self, width) -> None: ...
|
|
59
|
+
@property
|
|
60
|
+
def overhead(self): ...
|
|
61
|
+
|
|
62
|
+
class QInsWaitTrig(NSQCommand):
|
|
63
|
+
def __init__(self) -> None: ...
|
|
64
|
+
@property
|
|
65
|
+
def overhead(self): ...
|
|
66
|
+
|
|
67
|
+
class QInsNop(NSQCommand):
|
|
68
|
+
@property
|
|
69
|
+
def overhead(self): ...
|
|
70
|
+
|
|
71
|
+
class QInsJumpImmediate(NSQCommand):
|
|
72
|
+
idx: Incomplete
|
|
73
|
+
def __init__(self, idx: int) -> None: ...
|
|
74
|
+
|
|
75
|
+
class QInsCapture(NSQCommand):
|
|
76
|
+
fre: Incomplete
|
|
77
|
+
acq_width: Incomplete
|
|
78
|
+
delay_width: Incomplete
|
|
79
|
+
play_width: Incomplete
|
|
80
|
+
para: Incomplete
|
|
81
|
+
def __init__(self, fre: list[int], acq_width: float, delay_width: float, play_width: float, raw_data_store: bool, iq_data_store: bool, judge_data_store: bool, double_fre_mode: bool) -> None: ...
|
|
82
|
+
@property
|
|
83
|
+
def overhead(self): ...
|
|
84
|
+
|
|
85
|
+
class QInsPlayImm(NSQCommand):
|
|
86
|
+
frame: Incomplete
|
|
87
|
+
freq: Incomplete
|
|
88
|
+
amp: Incomplete
|
|
89
|
+
bias: Incomplete
|
|
90
|
+
envelope: Incomplete
|
|
91
|
+
phase: Incomplete
|
|
92
|
+
def __init__(self, frame: QInsFrame, envelope: QInsEnvelope, amp, bias, freq, phase) -> None: ...
|
|
93
|
+
@property
|
|
94
|
+
def overhead(self): ...
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from ._asm import NSQCommand, QInsEnvelope, QInsFrame
|
|
3
|
+
from typing import Iterable, TypeVar
|
|
4
|
+
|
|
5
|
+
__all__ = ['Frame', 'Envelope', 'Int', 'Var', 'wait_for_trigger', 'ins_envelope', 'ins_frame', 'evlp_gaussian', 'evlp_square', 'evlp_cospulse', 'inc_phase', 'inc_frequency', 'reset_frame', 'play_wave', 'wait']
|
|
6
|
+
|
|
7
|
+
Frame = TypeVar('Frame', bound=QInsFrame)
|
|
8
|
+
Envelope = TypeVar('Envelope', bound=QInsEnvelope)
|
|
9
|
+
Placeholder = TypeVar('Placeholder', bound=NSQCommand)
|
|
10
|
+
Var = TypeVar('Var')
|
|
11
|
+
Int = TypeVar('Int')
|
|
12
|
+
Uint = TypeVar('Uint')
|
|
13
|
+
Float = TypeVar('Float')
|
|
14
|
+
|
|
15
|
+
def ins_frame(freq: float, phase: float, *, idx: int = None) -> QInsFrame: ...
|
|
16
|
+
def ins_envelope(envelope: np.ndarray) -> QInsEnvelope: ...
|
|
17
|
+
def evlp_gaussian(width: float, srate: float = 8000000000.0) -> QInsEnvelope: ...
|
|
18
|
+
def evlp_cospulse(width: float, srate: float = 8000000000.0) -> QInsEnvelope: ...
|
|
19
|
+
def evlp_square(width: float, srate: float = 8000000000.0) -> QInsEnvelope: ...
|
|
20
|
+
def reset_frame(frame_list: Iterable[Frame] = ...) -> Placeholder: ...
|
|
21
|
+
def wait_for_trigger() -> Placeholder: ...
|
|
22
|
+
def inc_phase(frame_list: Iterable[Frame], phase: float) -> Placeholder: ...
|
|
23
|
+
def inc_frequency(frame_list: Iterable[Frame], freq: float) -> Placeholder: ...
|
|
24
|
+
def play_wave(envelope: QInsEnvelope, frame: QInsFrame, amp: int = 1, freq: int = 0, phase: int = 0) -> Placeholder: ...
|
|
25
|
+
def wait(width) -> Placeholder: ...
|
|
Binary file
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from ._functions import *
|
|
2
|
+
import ast
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
|
|
5
|
+
__all__ = ['kernel', 'Kernel']
|
|
6
|
+
|
|
7
|
+
class KernelParseError(Exception): ...
|
|
8
|
+
|
|
9
|
+
class NSQCKernel(type):
|
|
10
|
+
def __init__(cls, name, bases, attrs) -> None: ...
|
|
11
|
+
|
|
12
|
+
class Kernel(ast.NodeVisitor, metaclass=NSQCKernel):
|
|
13
|
+
max_frame: int
|
|
14
|
+
name: Incomplete
|
|
15
|
+
func_args: Incomplete
|
|
16
|
+
func_kwargs: Incomplete
|
|
17
|
+
top_src: Incomplete
|
|
18
|
+
top_node: Incomplete
|
|
19
|
+
var_symbol: Incomplete
|
|
20
|
+
frame_symbol: Incomplete
|
|
21
|
+
frame_idx: int
|
|
22
|
+
envelope_symbol: Incomplete
|
|
23
|
+
register_symbol: Incomplete
|
|
24
|
+
register_idx: int
|
|
25
|
+
instruction_list: Incomplete
|
|
26
|
+
def __init__(self, func: Incomplete | None = None, args: Incomplete | None = None, kwargs: Incomplete | None = None) -> None: ...
|
|
27
|
+
def clear(self) -> None: ...
|
|
28
|
+
def parse(self): ...
|
|
29
|
+
def show(self) -> None: ...
|
|
30
|
+
def visit_arg(self, node: ast.arg): ...
|
|
31
|
+
def visit_Assign(self, node: ast.Assign): ...
|
|
32
|
+
def visit_AugAssign(self, node: ast.AugAssign): ...
|
|
33
|
+
def visit_AnnAssign(self, node: ast.AnnAssign): ...
|
|
34
|
+
def visit_Call(self, node: ast.Call) -> object: ...
|
|
35
|
+
def visit_BinOp(self, node: ast.BinOp): ...
|
|
36
|
+
def visit_Constant(self, node): ...
|
|
37
|
+
def visit_Expr(self, node: ast.Expr): ...
|
|
38
|
+
def visit_If(self, node: ast.If): ...
|
|
39
|
+
def visit_Return(self, node) -> None: ...
|
|
40
|
+
def visit_FunctionDef(self, node: ast.FunctionDef): ...
|
|
41
|
+
def visit_arguments(self, node: ast.arguments): ...
|
|
42
|
+
def visit_Module(self, node: ast.Module): ...
|
|
43
|
+
|
|
44
|
+
def kernel(func): ...
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: nsqdriver
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary:
|
|
5
|
-
Home-page: https://g2hoyqcmh4.feishu.cn/wiki/
|
|
6
|
-
Author: Naishu Technology
|
|
7
|
-
Author-email: jilianyi@naishu.tech
|
|
3
|
+
Version: 0.6.1
|
|
4
|
+
Summary: Q series measurement and control equipment driver interface
|
|
5
|
+
Home-page: https://g2hoyqcmh4.feishu.cn/wiki/Jgt1wxlKniveYQkqCgbcJHsMnoe
|
|
8
6
|
Classifier: Intended Audience :: Developers
|
|
9
7
|
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator
|
|
10
8
|
Classifier: Operating System :: MacOS :: MacOS X
|
|
@@ -14,6 +12,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
14
12
|
Classifier: Programming Language :: Python :: 3.9
|
|
15
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
16
|
Requires-Python: >=3.8
|
|
18
17
|
Description-Content-Type: text/markdown
|
|
19
18
|
Requires-Dist: numpy >=1.18
|
|
@@ -30,7 +29,7 @@ Requires-Dist: waveforms ; extra == 'waveforms'
|
|
|
30
29
|
***
|
|
31
30
|
|
|
32
31
|
### 简介
|
|
33
|
-
NSQDriver
|
|
32
|
+
NSQDriver为一套测控系列设备的Python通用驱动接口。可使用Python作为编程语言,基于此驱动接口可以实现对测控设备的控制,进而完成各种超导量子芯片的表征实验和高保真门操作。
|
|
34
33
|
|
|
35
34
|
```
|
|
36
35
|
+------------------------+
|
|
@@ -47,9 +46,7 @@ NSQDriver为一套耐数®量子测控系列设备的Python通用驱动接口。
|
|
|
47
46
|
+-----------+ +-----------+ +-----------+
|
|
48
47
|
```
|
|
49
48
|
|
|
50
|
-
NSQDriver
|
|
51
|
-
|
|
52
|
-
耐数®量子测控系列设备详细信息参考: [耐数](http://naishu.tech)
|
|
49
|
+
NSQDriver接口可用于统一控制Q100/PQ系列测控仪器,可详细控制每台仪器每个OUT、IN通道的播放与采集行为,以及查看设备的运行状态等。在一个多台测控设备组成的多比特测控系统中,可以有效的在软件层面实现对系统中每台设备的详细控制。
|
|
53
50
|
|
|
54
51
|
***
|
|
55
52
|
### 快速开始
|
|
@@ -73,32 +70,39 @@ qsync.sync_system()
|
|
|
73
70
|
driver.set('Shot', 1024)
|
|
74
71
|
```
|
|
75
72
|
|
|
76
|
-
- NSWave
|
|
77
|
-
- NSWave
|
|
73
|
+
- NSWave语言
|
|
74
|
+
- NSWave是一种对于Sequence序列发生技术的配套编程语言,属于python语法的子集,支持与python程序进行混编
|
|
75
|
+
- Sequence序列发生模式将测控所需的各种门的编辑由主控计算机直接生成波形转化成了设备实时计算
|
|
78
76
|
- 提供了一套直观的时序编辑接口
|
|
79
|
-
- 如下示例展示了使用nswave控制设备重复播放一段波形200次
|
|
80
77
|
```python
|
|
81
|
-
from nsqdriver import
|
|
78
|
+
from nsqdriver import nswave as nw
|
|
79
|
+
from nsqdriver import MCIDriver
|
|
82
80
|
import numpy as np
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
82
|
+
@nw.kernel
|
|
83
|
+
def program(envelope: np.ndarray):
|
|
84
|
+
srate: nw.Var = 8e9
|
|
85
|
+
time_width: nw.Var = 6e-6
|
|
86
|
+
freq: nw.Var = 4.1e9
|
|
87
|
+
time_line: np.ndarray = np.linspace(0, 6e-6, int(time_width * srate + 1))
|
|
88
|
+
wave: np.ndarray = np.cos(2 * np.pi * time_line * freq)
|
|
89
|
+
frame_0: nw.Frame = nw.ins_frame(0e9, 0*np.pi)
|
|
90
|
+
frame_1: nw.Frame = nw.ins_frame(4.3e9, 0*np.pi)
|
|
91
|
+
envelope_0: nw.Envelope = nw.ins_envelope(wave)
|
|
92
|
+
envelope_1: "nw.Envelope" = nw.evlp_gaussian(2e-6, srate)
|
|
93
|
+
envelope_2: nw.Envelope = nw.ins_envelope(envelope)
|
|
94
|
+
|
|
95
|
+
nw.wait_for_trigger()
|
|
96
|
+
nw.reset_frame([frame_0, frame_1])
|
|
97
|
+
nw.wait(3.2e-6)
|
|
98
|
+
nw.play_wave(envelope_1, frame_1)
|
|
99
|
+
nw.play_wave(envelope_0, frame_0)
|
|
100
|
+
nw.inc_phase(frame_1, np.pi)
|
|
101
|
+
nw.play_wave(envelope_2, frame_1)
|
|
102
|
+
|
|
103
|
+
return nw.Kernel()
|
|
104
|
+
|
|
105
|
+
driver: MCIDriver
|
|
106
|
+
envelope = np.ones((10240, ))
|
|
107
|
+
driver.set("Program", program(envelope), 'S5-O1')
|
|
104
108
|
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
nsqdriver/NS_CST.py,sha256=zA5YcM65v66EqwBnplDvA6HM0I-y8damDOerE2CKyZE,8137
|
|
2
|
+
nsqdriver/NS_MCI.py,sha256=CAOzRpRfpVMmGrY5_oko9yGXEe1PoUAVChIFXJTDcJo,21355
|
|
3
|
+
nsqdriver/NS_QSYNC.py,sha256=bdvl5tDKrqqWuHnCR7h88SyeZ4UA4ZNjH_6e4ZEGguE,27881
|
|
4
|
+
nsqdriver/__init__.py,sha256=KR4SeswMyqRLtSUXXeCsPZsSNVIwf8dhYPmceKdpsrE,381
|
|
5
|
+
nsqdriver/common.py,sha256=5BRActb9TgNdVwWtfuZ_gki47H1WbABzYr5XbxLKlh4,519
|
|
6
|
+
nsqdriver/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
nsqdriver/compiler/assembler.cp310-win_amd64.pyd,sha256=6cFlDOc-2XgVnwXRrKZqN6k2zTCI_LEXus5gpZv0yQk,360448
|
|
8
|
+
nsqdriver/compiler/ns_wave.cp310-win_amd64.pyd,sha256=rG7HNEu8QEHGghjMp2NpD50y_F784sZzq6hc4c9A7oA,237568
|
|
9
|
+
nsqdriver/compiler/ns_wave.pyi,sha256=axQaxrMaKRPx8k9sDVlRj3SjR03AmXUDzkVW4D_2RJw,3975
|
|
10
|
+
nsqdriver/compiler/py_wave_asm.cp310-win_amd64.pyd,sha256=lNmZxQ-kY1urTqsYRNAcMdorCApvtPcw1j7aI17qN6Y,331264
|
|
11
|
+
nsqdriver/compiler/py_wave_asm.pyi,sha256=PqEZuNt83CCu_FJUczUjStowOz2TBgvfIytGanFPHuQ,685
|
|
12
|
+
nsqdriver/nswave/__init__.py,sha256=bRrHMAhfzPd9LWGUZ5JkNPq4ulT48bpZ8odtP51sr1w,50
|
|
13
|
+
nsqdriver/nswave/__init__.pyi,sha256=bRrHMAhfzPd9LWGUZ5JkNPq4ulT48bpZ8odtP51sr1w,50
|
|
14
|
+
nsqdriver/nswave/_asm.cp310-win_amd64.pyd,sha256=VpL5qdfvEF47LW-vd9UWsyMSE6Yp2i69EvwgrZff0M4,180736
|
|
15
|
+
nsqdriver/nswave/_asm.pyi,sha256=UaKmCbD218hwi82l0YFzwfKSI4aiM97Kaw1qbL7XYng,2774
|
|
16
|
+
nsqdriver/nswave/_functions.cp310-win_amd64.pyd,sha256=XpnlVKgaFH2EHD6LJ_8Pz-CSfdBi6os1gDnD7HS1A-M,86016
|
|
17
|
+
nsqdriver/nswave/_functions.pyi,sha256=l97-iaYqDTsXnOaPQK45scP1eimWAFu77QD4bS5XgPk,1397
|
|
18
|
+
nsqdriver/nswave/kernel.cp310-win_amd64.pyd,sha256=xK0-YtopeL_C02GctnJ-qvq1atHWbtE91_4ulHn6LmQ,163328
|
|
19
|
+
nsqdriver/nswave/kernel.pyi,sha256=_eEB9tS8YXkScmY-2pU-oz6AnecDl52Ifs6kq2zVJTU,1554
|
|
20
|
+
nsqdriver/wrapper/AWG_ADC.py,sha256=wLtkbJe39hDcnbWZ-8jyGZ78RQtn7iAZ7P7H0n-2IWU,19733
|
|
21
|
+
nsqdriver/wrapper/ND_NSMCI.py,sha256=e0j7BUdfrhfYb1GqBPlO4vSoZPXTKyictXy1nPvoMFE,6533
|
|
22
|
+
nsqdriver/wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
nsqdriver-0.6.1.dist-info/METADATA,sha256=LsHbkFHXY_310bDlgo-FU2Xrn5mBRbxP7xS2lTCiC6Q,4356
|
|
24
|
+
nsqdriver-0.6.1.dist-info/WHEEL,sha256=lO6CqtLHCAi38X3Es1a4R1lAjZFvN010IMRCFo2S7Mc,102
|
|
25
|
+
nsqdriver-0.6.1.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
|
|
26
|
+
nsqdriver-0.6.1.dist-info/RECORD,,
|
nsqdriver-0.5.7.dist-info/RECORD
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
nsqdriver/NS_CST.py,sha256=zA5YcM65v66EqwBnplDvA6HM0I-y8damDOerE2CKyZE,8137
|
|
2
|
-
nsqdriver/NS_MCI.py,sha256=CAOzRpRfpVMmGrY5_oko9yGXEe1PoUAVChIFXJTDcJo,21355
|
|
3
|
-
nsqdriver/NS_QSYNC.py,sha256=quXScV0Z1JnPlrtToO1D_3YWHywAhOL7PJAVWcykZ9o,25464
|
|
4
|
-
nsqdriver/__init__.py,sha256=qzGWMsVndThZhn7lqHlBEXAPVrcnNicRJpS5cs1T6do,381
|
|
5
|
-
nsqdriver/common.py,sha256=5BRActb9TgNdVwWtfuZ_gki47H1WbABzYr5XbxLKlh4,519
|
|
6
|
-
nsqdriver/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
nsqdriver/compiler/assembler.cp310-win_amd64.pyd,sha256=2mYgrcZkNb62nLWkMrFRWZlZq7LOaqrPkMBB8QL9BP0,349184
|
|
8
|
-
nsqdriver/compiler/ns_wave.cp310-win_amd64.pyd,sha256=7b2f6Kq0t662KKkdya8XAgGNvS9lMLYzLkUABLASAko,237568
|
|
9
|
-
nsqdriver/compiler/ns_wave.pyi,sha256=axQaxrMaKRPx8k9sDVlRj3SjR03AmXUDzkVW4D_2RJw,3975
|
|
10
|
-
nsqdriver/compiler/py_wave_asm.cp310-win_amd64.pyd,sha256=XdSkcaAIaGhLofTk5aibb8HmYTb5JmcgAQ_0itC2cW0,330752
|
|
11
|
-
nsqdriver/compiler/py_wave_asm.pyi,sha256=PqEZuNt83CCu_FJUczUjStowOz2TBgvfIytGanFPHuQ,685
|
|
12
|
-
nsqdriver/wrapper/AWG_ADC.py,sha256=wLtkbJe39hDcnbWZ-8jyGZ78RQtn7iAZ7P7H0n-2IWU,19733
|
|
13
|
-
nsqdriver/wrapper/ND_NSMCI.py,sha256=e0j7BUdfrhfYb1GqBPlO4vSoZPXTKyictXy1nPvoMFE,6533
|
|
14
|
-
nsqdriver/wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
nsqdriver-0.5.7.dist-info/METADATA,sha256=7-OxNt4IzibGrtrg2guFnbC6vtW_bNsuek0Bi-XyFj0,4463
|
|
16
|
-
nsqdriver-0.5.7.dist-info/WHEEL,sha256=lO6CqtLHCAi38X3Es1a4R1lAjZFvN010IMRCFo2S7Mc,102
|
|
17
|
-
nsqdriver-0.5.7.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
|
|
18
|
-
nsqdriver-0.5.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|