|
1 | 1 | 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: |
0 commit comments