SpinCore Logo Contact Us
Software Downloads

banner_left.jpg banner_right.jpg

SpinCore PulseBlaster MATLAB GUI

** This GUI is as is. **

   Available for 64-bit system with MATLAB 2017a

     The PulseBlaster MATLAB GUI provides a simple but powerful user interface for SpinCore Technologies, Inc. PulseBlaster™. It allows the user to control the PulseBlaster board, and create  complex pulse sequences without ever writing a single line of code.

  • Provides access to the full instruction set available to the PulseBlaster™.

  • Allows easy to change TTL signals without knowledge of  hexadecimal or knowledge of board specifications.

  • Can take advantage of multiple PulseBlaster™ boards simultaneously.

  • Compatible with most SpinCore hardware devices, which are TTL pulse generation capable. This software has only been tested with the PulseBlaster™ (SP17 and SP2) boards.

  • NOTE: This software is unsupported and is provided "AS IS" with no warranty, express or implied.

Download and Installation

Please verify that you have SpinAPI installed on your computer prior to installing the PulseBlaster MATLAB GUI. SpinAPI can be found at SpinAPI: SpinCore API and Driver Suite.

Next download the PulseBlaster™ MATLAB GUI .zip file. Next, unzip the downloaded file and place its contents into the MATLAB directory you plan on working in. Next, open MATLAB and navigate into the PulseBlasterGUI directory that was downloaded. Then in your MATLAB command prompt type 'PulseBlasterGUI'. The PulseBlasterGUI window will open.


PulseBlaster MATLAB GUI (01-11-2017) .zip file (64-bit)      Download Link

PulseBlaster24 Example Code                                                    Download Link

Program Flow

     The PulseBlaster GUI begins the process by acquiring the instructions input by the user. Then these instructions are loaded onto the PulseBlaster™ board, and the program begins when the user presses start. This causes the PulseBlaster™ hardware to begin executing the users instructions and outputting pulses on the TTL lines.

Software Flow
User Interface

Matlab GUI

The main window is the only window which is used in the PulseBlaster™ MATLAB GUI. It contains a variety of controls which allow the user to create instructions, change parameters, and perform specific functions. They are categorized into the following groups:

Menu Bar
The menu bar allows the user to run traditional program functions such as saving. It has the following menu items:

  • File
    • New File - Opens a new PulseBlaster™ instruction set. It will ask you if you would like to save the current instruction set.
    • Open File - Opens a file navigator to open existing PulseBlaster™ instruction set. It will ask you if you would like to save the current instruction set.
    • Save - Will save your current PulseBlaster™ instruction set. If you have not previously saved this instruction set it will open a file navigator to ask you where to save your instruction set.
    • Save As - Will open a file navigator to ask you where to save your current instruction set.
    • Exit - Will exit the GUI and ask you if you would like to save the current instruction set.
  • Help
    • Manual... - Will bring you to the SpinCore web page.
    • About...- Will open a dialog box that provides information about the current version of PulseBlaster MATLAB GUI you are using.

Information Box

  • SpinAPI Version - Will tell you what SpinAPI version you are using. It will show an error message if a version SpinAPI is not found.
  • Board Number - An editable text box that allows you to type in what SpinCore board you would like to control. Boards count in decimal from the number 0 upwards. Will return "no board found" if a board is not detected.
  • Firmware ID - will output the firmware of the current SpinCore board that is selected.

Instruction Box

  • Duration Box - Specifies how much time each instruction will take.
    • Editable text box - that allows you to enter a decimal number specifying how many time periods as specified by the units drop down menu that each instruction will take.
    • Drop down menu - allows you to select the unit of time that the editable text box will be scaled by. It has the selectable values of nanosecond (ns), microsecond (us), millisecond (ms), second (s), minute (min), and hour (hr).
  • Output State Box - Specifies what TTL lines should be high or low for each instruction
    • Check Boxes - Allows you to make a TTL line logic high for that instruction cycle by selecting the check box with a left click of the mouse.
    • Text box - allows you to enter a hexadecimal representation of the logic levels of the TTL lines for each instruction.(should not be preceded by 0x or any other hexadecimal specifier. Should only include ascii 0-F.
  • Flow Control Box - Allows you to control what instruction to go to next
    • Drop down menu (Flow Control)- allows you to select the available PulseBlaster™ instructions. They are seen in the table below.
    • Edit text box(Flow Control Data) - allows you to enter Instruction data from each instruction that changes attributes of certain instructions. These attributes can be seen the table below under Flow Control_data.

Flow Control

Flow Control_data




Program execution continues to next instruction



Stop execution of program (*Note: Output behavior is dependent on device firmware. All TTL outputs will either hold the value assigned from the previous instruction or reset to zero. All analog outputs will turn off)


Number of desired loops. This value must be greater than or equal to 1.

Specify beginning of a loop. Execution continues to next instruction. Data used to specify number of loops


Address of beginning of loop

Specify end of a loop. Execution returns to beginning of loop and decrements loop counter.


Address of first subroutine instruction

Program execution jumps to beginning of a subroutine



Program execution returns to instruction after JSR was called


Address of next instruction

Program execution continues at specified instruction


Number of desired loops. This value must be greater than or equal to 3.

For long interval instructions. Data field specifies a multiplier of the delay field. Execution continues to next instruction



Program execution stops and waits for software or hardware trigger. Execution continues to next instruction after receipt of trigger. The latency is equal to the delay value entered in the WAIT instruction line plus a fixed delay of 6 clock cycles. A WAIT instruction must be preceded by an instruction lasting longer than the minimum instruction time.


  • Load Board - Loads the current instruction set as specified in the instruction list box onto the currently selected PulseBlaster™.
  • Start - Will send the start command to the currently selected PulseBlaster™. This will make the PulseBlaster™ begin to output pulses.
  • Stop - Will send the stop command to the currently selected PulseBlaster™. This will stop the current instruction execution.
  • Add Instruction Below - Will create a new instruction below the currently selected instruction in the Instruction List box.
  • Remove Instruction - Will remove the currently selected instruction in the Instruction List box.

Instruction List Box

    The Instruction List Box provides a view of the current instructions and all of their parameters in the order that they will be loaded into the PulseBlaster™ hardware. They will be executed from first instruction to last instruction, with the exception of program flow instructions branch, loop, jump to subroutine that will modify the program execution order.

Instruction to Create Pulse Program

    PulseBlaster MATLAB GUI provides necessary functions to write custom pulse programs for PulseBlasters in MATLAB.  To do so, you must load the library with spinapi.h and pulseblaster.h correctly. The following template provides an outline of a custom MATLAB program that calls functions relating to PulseBlaster control.

Home | Products | Design Services | Applications | Contact Us | Purchasing Info | About Us | Software Downloads

© 2013 SpinCore Technologies, Inc.