Skip to content

Commit 6ce351c

Browse files
committed
Adding boiler plate for rest of Pseudoclocks.
1 parent 79a3e58 commit 6ce351c

File tree

5 files changed

+162
-5
lines changed

5 files changed

+162
-5
lines changed
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,18 @@
11
Cicero Opal-Kelly XEM3001
2-
=========================
2+
=========================
3+
4+
A pseudoclocking labscript device based on the OpalKelly XEM3001 integration module, which uses a Xilinx Spartan-3 FPGA.
5+
6+
Installation
7+
~~~~~~~~~~~~
8+
9+
Firmware (.bit) files for the FPGA are available `here <https://github.com/labscript-suite/opalkellyxem3001>`_ and should be placed in the labscript_devices folder along with the `CiceroOpalKellyXEM3001.py` file. The Opal Kelly SDK, which provides the python bindings, is also required. The python bindings will need to either be added to the PATH or manually copied to the site-packages of the virtual environment that BLACS is running in.
10+
11+
Detailed Documentation
12+
~~~~~~~~~~~~~~~~~~~~~~
13+
14+
.. automodule:: labscript_devices.CiceroOpalKellyXEM3001
15+
:members:
16+
:undoc-members:
17+
:show-inheritance:
18+
:private-members:
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,13 @@
11
Pineblaster
2-
===========
2+
===========
3+
4+
This labscript device controls the `PineBlaster <https://labscriptsuite.org/hardware/pineblaster/>`_ open-source digital pattern generator based on the Digilent chipKIT Max32 Prototyping platform.
5+
6+
Detailed Documentation
7+
~~~~~~~~~~~~~~~~~~~~~~
8+
9+
.. automodule:: labscript_devices.PineBlaster
10+
:members:
11+
:undoc-members:
12+
:show-inheritance:
13+
:private-members:

docs/source/devices/pulseblaster.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
Pulseblaster
22
============
33

4-
This labscript device controls the Spincore PulseblaserDDS-II-300-AWG. The Pulseblaster is a programmable pulse generator that is the typical timing backbone of an experiment (ie it generates the pseudoclock timing pulses that control execution of other devices in the experiment). This labscript device is the master implementation of the various Pulseblaster devices.
4+
This labscript device controls the Spincore PulseblaserDDS-II-300-AWG. The Pulseblaster is a programmable pulse generator that is the typical timing backbone of an experiment (ie it generates the pseudoclock timing pulses that control execution of other devices in the experiment). This labscript device is the master implementation of the various Pulseblaster devices. Other Pulseblaster labscript devices subclass this device and make the relevant changes to hard-coded values. Most importantly, the `core_clock_freq` must be manually set to match that of the Pulseblaster being used in order for the timing of the programmed pulses to be correct (in the `labscript_device` and the `BLACS_worker`).
55

6-
This particular version of Pulseblaster also has DDS synthesizer outputs.
6+
This particular version of Pulseblaster has a 75 MHz core clock frequency and also has DDS synthesizer outputs.
77

88
Installation
99
~~~~~~~~~~~~
Lines changed: 120 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,121 @@
11
Pulseblaster (-DDS)
2-
===================
2+
===================
3+
4+
Overview
5+
~~~~~~~~
6+
7+
This labscript device controls the Spincore Pulseblasers that do not have DDS outputs. The Pulseblaster is a programmable pulse generator that is the typical timing backbone of an experiment (ie it generates the pseudoclock timing pulses that control execution of other devices in the experiment). This labscript device inherits from the :doc:`Pulseblaster <pulseblaster>` device. The primary difference is the removal of code handling DDS outputs.
8+
9+
The labscript-suite currently supports a number of no-dds variants of the Pulseblaster device, each with different numbers of outputs and clock frequencies:
10+
11+
* `PulseBlaster_No_DDS`: Has 24 digital outputs and a 100 MHz core clock frequency.
12+
* `PulseBlasterUSB`: Identical to the `PulseBlaster_No_DDS` device
13+
* `PulseBlaster_SP2_24_100_32k`: Has slightly lower `clock_limit` and `clock_resolution` than the standard device. Also supports 32k instructions instead of the standard 4k.
14+
* `PulseBlasterESRPro200`: Has a 200 MHz core clock frequency.
15+
* `PulseBlasterESRPro500`: Has a 500 MHz core clock frequency.
16+
17+
ESR-Pro PulseBlasters
18+
^^^^^^^^^^^^^^^^^^^^^
19+
20+
The timing resolution of a normal PulseBlaster is one clock cycle, the minimum interval is typically limited to 5 clock cycles (or nine in the case of the external memory models like the 32k).
21+
The ESR-Pro series of PulseBlasters have the Short Pulse Feature, which allows for pulse lengths of 1-5 clock periods. This is controlled using the top three bits (21-23) according to the following table.
22+
23+
.. csv-table:: Short Pulse Control
24+
:header: "SpinAPI Define", "Bits 21-23", "Clock Periods", "Pulse Length (ns) at 500 MHz"
25+
:widths: auto
26+
:align: center
27+
28+
\- , 000, \- , "All outputs low"
29+
"ONE_PERIOD", 001, 1, 2
30+
"TWO_PERIOD", 010, 2, 4
31+
"THREE_PERIOD", 011, 3, 6
32+
"FOUR_PERIOD", 100, 4, 8
33+
"FIVE_PERIOD", 101, 5, 10
34+
"ON", 111, \- , "Short Pulse Disabled"
35+
36+
Currently, the PulseBlaster labscript device does not use this functionality. However, in order to get any output at all, bits 21-23 must be set high manually.
37+
38+
39+
Installation
40+
~~~~~~~~~~~~
41+
42+
Use of the Pulseblaster requires driver installation available from the manufacturer `here <https://www.spincore.com/support/>`_. The corresponding python wrapper, `spinapi <https://github.com/chrisjbillington/spinapi/>`_ is available via pip.
43+
44+
.. code-block:: bash
45+
46+
pip install -U spinapi
47+
48+
Usage
49+
~~~~~
50+
51+
.. code-block:: python
52+
53+
from labscript import *
54+
55+
from labscript_devices.PulseBlaster import PulseBlaster
56+
57+
PulseBlaster(name='pb',board_number=0,programming_scheme='pb_start/BRANCH')
58+
59+
Clockline(name='pb_clockline_fast', pseudoclock=pb.pseudoclock,connection='flag 0')
60+
Clockline(name='pb_clockline_slow', pseudoclock=pb.pseudoclock,connection='flag 1')
61+
62+
DigitalOut(name='pb_0',parent_device=pb.direct_outputs,connection='flag 2')
63+
64+
start()
65+
66+
stop(1)
67+
68+
Detailed Documentation
69+
~~~~~~~~~~~~~~~~~~~~~~
70+
71+
.. autosummary::
72+
labscript_devices.PulseBlaster_No_DDS
73+
labscript_devices.PulseBlasterUSB
74+
labscript_devices.PulseBlaster_SP2_24_100_32k
75+
labscript_devices.PulseBlasterESRPro200
76+
labscript_devices.PulseBlasterESRPro500
77+
78+
PulseBlaster_No_DDS
79+
^^^^^^^^^^^^^^^^^^^
80+
81+
.. automodule:: labscript_devices.PulseBlaster_No_DDS
82+
:members:
83+
:undoc-members:
84+
:show-inheritance:
85+
:private-members:
86+
87+
PulseBlasterUSB
88+
^^^^^^^^^^^^^^^
89+
90+
.. automodule:: labscript_devices.PulseBlasterUSB
91+
:members:
92+
:undoc-members:
93+
:show-inheritance:
94+
:private-members:
95+
96+
PulseBlaster_SP2_24_100_32k
97+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
98+
99+
.. automodule:: labscript_devices.PulseBlaster_SP2_24_100_32k
100+
:members:
101+
:undoc-members:
102+
:show-inheritance:
103+
:private-members:
104+
105+
PulseBlasterESRPro200
106+
^^^^^^^^^^^^^^^^^^^^^
107+
108+
.. automodule:: labscript_devices.PulseBlasterESRPro200
109+
:members:
110+
:undoc-members:
111+
:show-inheritance:
112+
:private-members:
113+
114+
PulseBlasterESRPro500
115+
^^^^^^^^^^^^^^^^^^^^^
116+
117+
.. automodule:: labscript_devices.PulseBlasterESRPro500
118+
:members:
119+
:undoc-members:
120+
:show-inheritance:
121+
:private-members:

docs/source/devices/rfblaster.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,13 @@
11
RFblaster
22
=========
3+
4+
Another pseudoclock-cable labscript device.
5+
6+
Detailed Documentation
7+
~~~~~~~~~~~~~~~~~~~~~~
8+
9+
.. automodule:: labscript_devices.RFBlaster
10+
:members:
11+
:undoc-members:
12+
:show-inheritance:
13+
:private-members:

0 commit comments

Comments
 (0)