Page 2
SpinCore Technologies, Inc. makes every effort to verify the correct operation of the equipment. This equipment version is not intended for use in a system in which the failure of a SpinCore device will threaten the safety of equipment or person(s).
A unique and distinguishing feature of the PulseBlaster processor is that the execution time of instructions is user programmable. This feature makes the PulseBlaster capable of executing complex output timing patterns at greatly varying update rates, ranging from nanoseconds to years, with a constant setting accuracy of just one clock period (e.g., a 10 ns setting accuracy at a 100 MHz clock...
IBC over the peripheral component interconnect (PCI) bus. PCI Bus PCI Bus Figure 1: PulseBlaster board architecture. The clock oscillator signal is derived from an on-chip PLL circuit typically using a 50 MHz on-board reference clock. Key Features Output Signals The PulseBlaster PB24 models allow for 24 digital output signal lines.
IDC connector pins labeled “Status”. The same output can be read through software using C. See Section IV (Connecting to the PulseBlaster Board, page 18) for more detail about the hardware lines and Appendix I (Controlling the PulseBlaster with SpinAPI, page 25) for more detail about the C function pb_read_status().
RadioProcessor lines of boards still rely on the same PulseBlaster core for TTL pulse generation. Therefore, the basic example programs for the PulseBlaster will be able to produce the same results on any of the more complex boards. The exception is the PulseBlaster-DDS-II board which uses a 96-Bit or 124-Bit instruction word, depending on the firmware, instead of an 80-Bit instruction word and is currently not compatible with PulseBlaster methods of programming the board.
API will also install the necessary drivers. 2. Shut down the computer, unplug the power cord, insert the PulseBlaster card into an appropriate slot (PCI for PCI boards and PCIe for PCIe boards) and fasten the PC bracket securely with a screw.
Page 10
Figure 4 below shows a typical pattern displayed by an oscilloscope when running pb24_ex1.exe with the above described connections. Verifying this behavior confirms the board is installed properly. Figure 4: Expected signal from a PulseBlaster output running pb24_ex1.exe. http://www.spincore.com 2021/03/22...
Page 11
PulseBlaster You may also run the remaining example programs available for this board to observe different output patterns and pulse durations. Keep in mind that pb24_programmable_clock.exe is only compatible with PulseBlasters with the programmable clock feature which is available upon request.
Interpreter, LabVIEW extensions, .NET GUI, MATLAB GUI, and C/C++ methods of programming will be introduced. In addition to these, the PulseBlaster is programmable using nearly any higher level programming software that lets you utilize a C language API package, in this case SpinCore's SpinAPI.
Figure 6 shows an example instance of the program. Figure 6: An example pulse program in PulseBlaster.NET. This example creates a pulse that has all TTL bits on for 100 ms, alternating bits on for 400 ms (looping three times), and then all bits off for 100 ms.
The package contains basic subVIs, that can be used to include PulseBlaster interaction from your own LabVIEW programs, as well as some complete example VIs. Additionally, all of the examples are available as stand-alone applications, so that no programming is necessary for use.
PulseBlaster would like to make a custom interface for the PulseBlaster board. For more information and downloads please visit: http://www.spincore.com/support/PBLV/TTL.shtml PulseBlaster MATLAB GUI PulseBlaster MATLAB GUI is a graphical interface for creating pulse programs and loading them to the PulseBlaster board. PulseBlaster MATLAB GUI currently provides the simplest interface possible to pulse control.
PulseBlaster C/C++ Programming The most dynamic and flexible way to program the PulseBlaster board is with C/C++ using the SpinAPI package. While GUI's are easier to use, coding in C/C++ allows you to better utilize all features of the board, and in some cases it may be easier to copy and paste lines of code than to make 100 instructions on a GUI.
Page 17
PulseBlaster • The first is the hexadecimal 0xFFFFFF which corresponds to setting the 24 output bits to a logical high since it translates to a binary string of 24 1's. • The second parameter is CONTINUE which means to proceed on to the next instruction after this one completes.
PulseBlaster IV. Connecting to the PulseBlaster Board Connector Information Figure 10: Sketch of PulseBlaster, Board Version SP17 On the SP17 board, the Clock_Out and Ext_Clk are SMA connectors, Flag0..15 is a DB-25 connector, Other versions of Flag0..11, Flag12..23, Flag24..26 and HW Trig/Reset are shrouded IDC header connectors.
This SMA connector outputs the reference clock as a 3.3 V TTL signal, i.e., it generates positive- only voltage. Note that the PulseBlaster PCI and PCIe boards use 50 MHz as the reference clock frequency and that clock is internally multiplied to provide that actual PulseBlaster Core frequency The output resembles a square wave if properly terminated.
The shrouded IDC connector labeled Flag 12..23 can be connected to IDC-MMCX adapter boards (Figure 17, page 36) which allows the use of MMCX cables. This enables the individual bits of the PulseBlaster to be more easily accessed. Pin 1 on the MMCX adapter board can identified with a square pin.
Reset – Driven high when the PulseBlaster device is in a RESET state and must be reprogrammed before code execution can begin again. Running – Driven high when the PulseBlaster device is executing a program. It is low when the PulseBlaster enters either a reset or idle state.
PulseBlaster Waiting – The PulseBlaster device has encountered a WAIT Op Code and is waiting for the next trigger (either hardware or software) to resume operation. Note that the Running bit will also be high during a WAIT state. Shrouded IDC Connector HW Trig/Reset This is an input connector, for hardware triggering (HW_Trigger) and resetting (HW_Reset).
Page 23
2V and 3.3V), then must be pulled low (to ground) and stay low for at least 10 ns before returning to high voltage. The PulseBlaster will continue to trigger or reset for as long as the HW_Trigger or HW_Reset signals stay at ground. If using a long TTL cable, make sure it is terminated and a buffer is used.
PulseBlaster Clock Oscillator Header The PulseBlaster comes with a crystal oscillator mounted on the oscillator socket to provide a timing signal for the board. If required, it is possible to remove the oscillator that comes standard, and instead drive the PulseBlaster with an external clock signal. The oscillator module can be removed from the board, and an external signal can be input through the header pins.
This section provides detailed descriptions of the instruction set for the processor on the PulseBlaster board and the C functions in SpinAPI that utilize them. The information on the instruction set is very in depth and knowledge of this is essential to be able to properly operate the board.
Page 26
PulseBlaster The 80-bit VLIW is broken up into 4 sections: 1. Output Pattern and Control Word - 24 bits. 2. Data Field - 20 bits. 3. Op Code - 4 bits. 4. Delay Count - 32 bits. Output Pattern and Control Word Please refer to Table 6 for output pattern and control bit assignments of the 24-bit output/control word.
Page 27
Delay Count field should account for this inherent delay. (NOTE: the pb_inst() family of functions in SpinAPI and the PulseBlaster Interpreter automatically account for this delay.) http://www.spincore.com...
PulseBlaster. It returns a 0 on success or a negative number on an error. int pb_close(); Releases PulseBlaster board. Needs to be called as last command in pulse program. It returns a 0 on success or a negative number on an error.
Page 29
PulseBlaster int pb_core_clock(double clock_freq); Used to set the clock frequency of the board. The variable clock_frequency is specified in MHz when no units are entered. Valid units are MHz, kHz, and Hz. The default clock value is 50MHz. You only need to call this function if you are not using a 50 MHz board which is reflected in the model (e.g.
Page 30
SpinAPI. int pb_select_board(int board_num); If multiple boards from SpinCore Technologies are present in your system, this function allows you to select which board to communicate with. Once this function is called, all subsequent commands (such as pb_init(), pb_core_clock(), etc.) will be sent to the selected board.
PulseBlaster Example Use of C Functions * PulseBlaster example 1 * This program will cause the outputs to turn on and off with a period * of 400ms #include <stdio.h> #define PB24 #include "spinapi.h" int main(){ int start, status; printf ("Using spinapi library version %s\n", pb_get_version());...
PulseBlaster Appendix II: Sample C Program * PulseBlaster example 2 * This example makes use of all instructions (except WAIT). #include <stdio.h> #define PB24 #include <spinapi.h> int main(int argc, char **argv){ int start, loop, sub; int status; printf ("Using spinapi library version %s\n", pb_get_version());...
Page 33
PulseBlaster // End of pulse program pb_stop_programming(); // Trigger the pulse program pb_start(); //Read the status register status = pb_read_status(); printf("status = %d", status); pb_close(); return 0; http://www.spincore.com 2021/03/22...
PulseBlaster Appendix III: Available Firmware Designs The following table contains information about the various firmware designs available on the PulseBlaster series of boards. Firmware Board Clock Speed Number of Memory Depth Output Current Revision (MHz) Output Bits (words) Strength (mA)
This cable uses the parallel type DB-25 connector to easily access the TTL bits of the PulseBlaster Board. 2. PulseBlasterESR-PRO – Alternate version of the PulseBlaster that are capable of Higher Clock Frequencies (currently up to 500 MHz). For more information, please visit http://www.spincore.com/products/PulseBlasterESR-PRO/...
Page 36
6. SpinCore MMCX Adapter Board Figure 17 – This adapter board allows easy access to the individual bits of the PulseBlaster. This adapter board can be part of a package that includes 12 MMCX to BNC cables and three SMA to BNC adapters. This package can be changed to include any number of cables and any number of adapter boards.
Page 37
PulseBlaster The SMA-BNC Adapter Board, shown in Figure 18, provides easy access to four additional output signals from the back panel of your computer. SMA-SMA cables are available from SpinCore upon request. For ordering information, please visit http://spincore.com/products/Adapters/ contact SpinCore at http://www.spincore.com/contact.shtml.
Page 38
Figure 20: TTL Line Driver assures TTL levels over 50 Ohm loads. 8. If you require a custom design, custom interface cables, or other custom features, please inquire with SpinCore Technologies through our contact form, which is available at http://www.spincore.com/contact.shtml.
PulseBlaster Contact Information SpinCore Technologies, Inc. 4631 NW 53rd Avenue, SUITE 103 Gainesville, FL 32653 Telephone (USA): 352-271-7383 Website: http://www.spincore.com Web Form: http://spincore.com/contact.shtml Document Information Page Revision history available at SpinCore. http://www.spincore.com 2021/03/22...
Need help?
Do you have a question about the PulseBlaster and is the answer not in the manual?
Questions and answers