1. User Manual: WFG-600
Part No.: 4031.604.66001
Revision: 2
Date: July 2022
2. Introduction
The website https://pendulum-instruments.com contains the most recent software updates and information about new hardware. All software can be downloaded free of charge.
2.1. TECHNICAL DATA
2.1.1. Operating modes
- continuous,
- continuous with frame counting,
- burst,
- burst with waveform inversion,
- multiple burst,
- script (programmable burst and roll sequences),
- matrix (emulating a 4×4 part of a virtual matrix)
- forward/reverse direction (controlled by an external signal, low = reverse)
- halt indefinetly (controlled by an external signal, active low)
2.1.2. Outputs
- high-voltage output of generated waveforms (red BNC)
- low voltage waveform monitor output
- pulse-attached control bit (TTL level), each channel
- oscilloscope trigger pulse (TTL level, multiple trigger points possible)
- low-voltage superposition of two channels, inputs are made for high voltage
2.1.3. Inputs
- external clock (internally divided by 2)
- external trigger (active high)
- waveform direction
- halt waveform
2.1.4. Timing
resolution: max 12287 pulses of 3÷32767 clock units wide each (i.e. 15 bits resolution); every pulse may have different width
clocks: 20 MHz (crystal controlled, 1 time unit = 50 ns; default),
1 MHz (crystal controlled, 1 time unit = 1 μs),
≤1kHz (software controlled, adjustable in multiples of 1 ms), external.
pulse width: min 150ns (with 20 MHz internal clock)
2.1.5. Amplitude
max: ±100V, 185mA; other models: ±200V 120mA, ±400V 60mA
output impedance: ≤ 0.1 Ω
load: resistive || capacitive
slew rate: ca 400 V/μs at load ≤350pF
resolution: 12 bits (1 lsb = 50 mV in ±100V model)
accuracy: ±1LSB or ≤2% of setting, limited by settling time
Settled amplitude is independent on the load within the current limits.
2.1.6. Interface
serial (RS232), 57600 baud, 8bit, N, 1
2.1.7. Power supply
either 220/230V or 110/120V or 100V (factory setting), 50/60Hz, 160W
clean sinewave AC required (high voltage power supply contains a toroidal transformer)
2.1.8. Case
nVENT RatiopacPRO 19″ (3HE 84TE)
2.1.9. Computer
PC: Minimum requirements: any PC running Windows95 or above, including Windows 10, having a free serial port or USB-to-serial converter and a color monitor of at least 800×600 resolution.
Macintosh: Minimum requirements: any Macintosh with a serial port acting as “printer” or “modem” port, running MacOS 7 to 9 (including MacOS X in Classic mode) and at least 10Mb free RAM.
Software updates: Free download of all software for the waveform generator from the Company’s web site pendulum-instruments.com
2.2. SAFETY INSTRUCTION
2.2.1. Introduction
This instrument has been designed and tested for Measurement Category I, Pollution Degree 2, in accordance with EN/IEC 61010-1:2001 and CAN/CSA-C22.2 No. 61010-1-04 (including approval). It has been supplied in a safe condition.
Study this manual thoroughly to acquire ade- quate knowledge of the instrument, especially the section on Safety Precautions hereafter.
2.2.2. Safety Precautions
All equipment that can be connected to line power is a potential danger to life. Handling restrictions imposed on such equipment should be observed.
To ensure the correct and safe operation of the instrument, it is essential that you follow generally accepted safety procedures in addition to the safety precautions specified in this manual.
The instrument is designed to be used by trained personnel only. Removing the cover for repair, maintenance, and adjustment of the instrument must be done by qualified personnel who are aware of the hazards involved.
The warranty commitments are rendered void if unauthorized access to the interior of the instrument has taken place during the given warranty period.
2.2.2.1. Caution and Warning Statements
CAUTION: Shows where incorrect procedures can cause damage to, or destruction of equipment or other property.
The instrument cannot be powered from a DC-AC converter nor from a solid-state AC generator with non-sinusoidal output. It is recommended to monitor the output signal of the amplifier on the oscilloscope.
WARNING: Shows a potential danger that requires correct procedures or practices to prevent personal injury.
Red BNC contacts are high voltage outputs. Do not make/change connection during operation due to dangerous voltage levels.
High voltage outputs can only be connected to high voltage inputs on the summing modules, marked -IN and +IN, respectively. Never connect high voltage outputs to TTL inputs nor to each other.
Inside the WFG600 exist dangerously high voltage levels. Do not open the instrument!
2.2.2.2. If in Doubt about Safety
Whenever you suspect that it is unsafe to use the instrument, you must make it inoperative by doing the following:
- Disconnect the line cord
- Clearly mark the instrument to prevent its further operation
- Inform your Pendulum Instruments representative.
For example, the instrument is likely to be unsafe if it is visibly damaged.
2.2.3. Environmental Considerations
This section provides information about the environmental impact of the product.
2.2.3.1. Product End-of-Life Handling
Observe the following guidelines when recycling an instrument or component:
2.2.3.2. Equipment recycling
Production of this equipment required the extraction and use of natural resources. The equipment may contain substances that could be harmful to the environment or human health if improperly handled at the product’s end of life. To avoid release of such substances into the environment and to reduce the use of natural resources, we encourage you to recycle this product in an appropriate system that will ensure that most of the materials are reused or recycled appropriately.
2.3. WARRANTY
The Warranty Statement is part of the folder Important Information that is included with the shipment.
2.4. DECLARATION OF CONFORMITY
The complete text with formal statements concerning product identification, manufacturer and standards used for type testing is available on request.
2.5. QUICK START
More detailed exercises are described in the “Tutorial” chapter.
2.5.1. Follow these simple steps
- Turn on the computer and run the Waveform Generator program.
- Draw a few pulses. Click in the design window A or B. Note the pulse selection marker below the waveformsuperposition display at the top of the screen, and the active waveform mark (A and B buttons, to the left).
- Place an oscilloscope-trigger for easy synchronization with an oscilloscope. Select a pulse and press space key or use menu TIMING -> SET TRIGGER POINT.
- Turn on the waveform Generator. Connect the WFG600 to the mains and turn it on. The LED diodes will light on while the generator performs the self-check procedure and then they will all be turned off.
- The serial communication.
- PC: COMx (9-pin female D-SUB contact) and the waveform generator (9-pin male D-SUB contact).
- Important: Go to menu FILE->PREFERENCES and choose the communication port, the model of your waveform generator (WFG600) and communication speed (57600 baud). There you may also turn off the initial splash screen and define the file-saving behavior.
- Mac: Connect the serial communication cable between the “Printer” port and the WFG600 using the round mini-DIN plug; (for the software with letters “MP” use “modem” port)
- Connect an oscilloscope to the waveform generator. High-voltage outputs (OUT) require a 10:1 probe. Connect the synchronization output (TRG OUT) to the “external trigger” input in the oscilloscope. Set the scope trigger source to External, TTL level, Normal. It is recommended to use a probe also for the trigger signal.
- Initialize the communication. Establish a contact between the computer and the WFG600 (use menu OUT -> CONFIGURE CHANNELS… or press PC: control-T / Mac: T). The dialog with the list of installed output modules will be displayed. Click on pop-up menus to assign waveforms to the channels (a waveform may be assigned to more than one channel). Click on the RUN button. All waveforms will be downloaded and the generation will start.
- Play with the output signal
- Change pulse amplitude or width by clicking on it and dragging with the mouse. Observe how the generator follows the changes.
- Change a pulse width by dragging a marker on the time axis or (on PC) use the right-click to drag the pulse width.
- Change the amplitude of the whole waveform using Amax and Bmax controls at the righthand side of the screen.
- Change the waveform frequency using the timing control at the bottom-right. The display shows the width of the selected pulse. The remaining pulses are scaled proportionally.
- Click on the icon next to the timing control. Its picture changes from “waveform” to a single “pulse”. The width control applies now the selected pulse only.
- End the signal generation. Use menu OUT -> STOP or click on STOP button in order to stop the generator. When the data is loaded to the generator, it can be started simply by clicking on RUN button or using menu OUT -> RUN.
- More advanced functions or described in the Tutorial Chapter.
2.6. TROUBLESHOOTING
2.6.1. Run self-test
- Press and keep the RESET button on the generator.
- Observe the LED diodes. The six LEDs in the control module should light on and none in the other modules.
- Release the RESET button.
- Observe the LED diodes. LED diodes on all modules will sequentially blink and then all LEDs should be off. This means that the generator has successfully performed the self-test and is ready for operation.
- If this test fails – contact the manufacturer.
2.6.2. Red ERROR LED is on
- There was a communication error, probably caused by an unexpected command sent to the generator. It may occur if the generator was reset and the computer program was not notified. Execute OUT->CONFIGURE CHANNELS command to cancel the error. If the problem persists reset the generator and invoke the OUT->DISCONNECT command.
- If you always get an error then check the communications speed. You need a software communicating at 57600 baud. Older instruments require 19200 baud.
- Do not forget to Select the baud rate in FILE->PREFERENCES.
- If the error occurs in response to a certain function in the software you might need a firmware update. Please contact Pendulum Instruments.
2.6.3. “TIME OUT” message when trying to communicate
- Observe the blue “COM” LED on the control panel while executing OUT->CONFIGURE CHANNELS command – it should briefly light on. If there is no light blink – check the cable and port connections.
The new WFG600 uses a PC-standard modem cable pinout. A standard straight serial cable can be used here.
The WFG400 and some older versions of WFG500 used a Macintosh-standard printer cable pinout. Two cables were supplied with the instrument. Please use the supplied serial communication cable since a standard PC cable will not work.
If you use USB-to-serial converter please check the port number that was assigned and select it in the “Preferences” dialog (Windows computers).
If uncertain please contact Pendulum Instruments (send email to service@pendulum-instruments.com).
Mac: Change the serial port. The software rev 5.x is compiled for the “printer” port (the one with a printer symbol) as standard, and the software with suffix MP was compiled for the “modem” port (the one with a telephone symbol). Software rev 4.x (for WFG400) was compiled for the modem port.
USB-Mac: Newer Macintosh models do not have serial ports and an USB-serial converter or a serial port card has to be used (for example a Keyspan SXpro card). Typically, the Port#1 emulates the Mac printer port. If uncertain consult your Mac dealer or FLC Electronics AB.
- “Time out” may also occur when running a very slow waveform since the system waits for the waveform to end. Confirm the “Keep waiting?” dialog to continue or press RESET button on the WFG600 to abort and reset the generator.
2.6.4. No channels exist in configuration dialog
- The communication speed is wrong. WFG400 communicates at 19200 baud; WFG500 and WFG600 at 57600 baud. Use a proper version of the software.
- Check if correct baud rate is selected in FILE->PREFERENCES.
2.6.5. “Serial port occupied” message
- (Mac only) Check AppleTalk and Modem settings in the Control Panels. On PowerBooks with only one serial connection turn the AppleTalk off. On USB Mac check the control panel of the serial adapter.
2.6.6. Error LED while executing a command
If the problem repeats at the same place use older revision of the software, as it might use commands not supported in the waveform generator hardware (WFG600 is constantly expanding). Contact Pendulum Instruments for advice.
2.6.7. Still wrong …
- Restart the computer and reset the generator (as usual in such cases).
- Define the problem and send email to Pendulum Instruments, service@penduluminstruments. com.
2.6.8. Feedback
- Please inform us also if you discover bugs in the program, dislike any part of its behavior or wish to have some additional features.
- Do not hesitate to contact us if you have any questions or suggestions concerning the program or the instrument itself.
2.7. FRONT PANEL CONNECTIONS
2.7.1. Controller module
The “TTL Inputs” accept a TTL-compatible signal with amplitude between 0 and +5V, i.e. logic LOW and HIGH . Do not apply any negative voltage!
External trigger: After choosing menu OUT->External triggering a LOW level at this input will perform command “Run” while HIGH level (default) will execute the “STOP” command. LOW level may be achieved by simply shorting the input to ground.
External clock: A square wave, no minimum frequency. Observe the output to establish the max frequency.
Forward/Reverse: A LOW level (for example shorting to ground) will immediately reverse the direction of the waveform scanning. Provide a clean, debounced signal. (New in WFG600)
Hold: A LOW level at this input will hold the current amplitudes at all outputs until released. (New in WFG600)
2.7.2. Summing module
2.7.3. Timer module / Output channels
The channels are numbered from LEFT to RIGHT.
2.8. CIRCUIT DESCRIPTION
2.8.1. Introduction
The Waveform Generator has its origin in the research work on liquid crystals. It is thus optimized to produce, simultaneously in many channels, trains of pulses, each having its own duration, polarity and amplitude value. Typical arbitrary waveform generators are not well suited to this task since they were designed with quite different application in mind – generation of advanced analog functions, usually in one channel and at low voltage. Frequency and amplitude of such signals may be changed easily, but there is no easy and safe (for the connected device) way to alter the pulse trains during operation.
The generator has 8 channels and a common time base. The minimum pulse width is 150ns and the maximum amplitude is ±100 volts. The resolutions are 50ns and 50mV, respectively. The generator is controlled by a PC-Windows computer or Macintosh (OS9), taking advantage of the user-friendly operating system.
The waveform generator has the ability to change the applied waveforms during operation without transients. It has been accomplished by the use of two memory banks.
Mathematical relations between pulses in the waveforms and between different time-steps can be programmed-in to avoid repeated, manual adjustments of many pulses each time the waveforms should be altered. The waveforms may also be grouped for simultaneous amplitude adjustments, as for example, row and column electrodes in a matrix display.
2.8.2. General Concept
Undisturbed waveform modification during operation is based on the incorporation of two memory sets. When the data from one memory set are used for the waveform synthesis, the other memory set can be freely updated. After successful updating, the memory sets are interchanged (swapped) immediately after completing the generation of the old waveform.
It is, thus, possible to consider the waveform generator as consisting of two, fairly independent, parts: a microprocessor system associated with one memory set and a hardware- controlled waveform-synthesis circuitry (Figure 1). Here, the second memory set is scanned by an address counter at a rate defined by the timing module. Obtained data are then transformed into a corresponding voltage level by a digital-to-analog converter (DAC) and a series of operational amplifiers.
Waveforms are not synthesized from equidistant points. Instead, there is a 15-bit width data associated with each individual pulse number. In other words – each time slot can have individual width.
2.8.3. Controller Module
The central device in the controller module is a Motorola 68HC11F1CFN4 microprocessor. It communicates with the host computer by a standard serial port. Received commands and data are used to update the currently associated memory on the designated module (or modules). They are also stored in own “note-pad” memory, since identical updating must later be performed on the other memory set in order to bring both sets to identical state.
Both memory sets have separate address busses. The address-bus selector block connects one of them to the microprocessor’s address bus and the other to the scanning counter. The ‘memory swapping’ is performed by interchanging the above address bus assignments and forcing the modules to make corresponding change in their data-selector blocks. Swapping does not cause any delay.
The relation between the microprocessor address lines and the address inputs of the memory circuits is not straightforward. The microprocessor’s lowest address line, A0, is used as ‘Low/High-Byte’ control signal, which activates one of the two memory circuits. The memories’ address inputs are, thus, shifted up by one bit, and the RAM_A0 inputs are connected to the microprocessor’s A1 line, RAM_A1 to A2, and so on. Since the memories on all modules occupy the same address space, the microprocessor has to use the module-access selector functional block to aid choosing the desired memory circuit to communicate with. The specific memory circuit is, thus, chosen by three signals: module-select (the board), swap (the memory set) and low/high byte (the circuit). The data may be written into a few modules at once, if so desired.
While one memory set is associated with the microprocessor, the second one gets its addresses from the scanning counter, which counts from zero upwards (unless REVERSE direction is activated). The counter is driven by the scanning clock delivered from the timing module. The value, generated by the scanning counter, is compared with the address of the last waveform-pulse data, stored in a top address register. When the end of the waveform is reached, the comparator sends the ‘equal’ signal to the control logic block, which, in turn, checks if the microprocessor flags out for memory swapping or for terminating the waveform generation. If the memory swap is requested, then the ‘swap’ control-signal is inverted and the top address register is updated to the prepared value (because the waveform length might have been changed). The counter is then reset to zero and the new scan begins.
The control-logic block takes also care of some additional functions. It prepares the time-base clock, senses the external start-signal (if enabled), and supervises the operating mode, which may be either continuous, burst (i.e. the waveforms are generated once only) or other special modes.
2.8.4. Timer
The duration of each pulse is defined by a timing module (Figure 3). Here, a 15-bit data is loaded to a down-counter at the beginning of each waveform step. The counter is driven by a time-base clock, the speed of which is selectable and may be 1 or 20 Mhz (crystal controlled), a slower, software-controlled clock (in 1 ms steps) or an externally supplied one (should be less than 20 MHz but can be very slow). The output of this counter produces a scanning clock, which, in turn, advances a memory-address counter.
The 16th data bit contains arbitrarily placed trigger information, used to synchronize an oscilloscope (or other device) with the desired step of the waveform.
2.8.5. Data Memories
The part of the block scheme from Figure 3, enclosed in the dashed rectangle, is present both in the timing module and all analog-output modules. It consists of the memories, buffers, a data selector and a control logic, and its purpose is to deliver 16-bit data to the counter or, in the case of the analog-output channel, to the DAC.
Since the microprocessor operates on 8-bit data bytes, a conversion to the required 16-bit data words is needed. Thus, each memory set consists of two 8k*8 random-access memories, which store the lower and upper byte of the 16-bit data word, respectively. The memories are tied to the microprocessor data bus through a programmable logic device (CPLD). Normally, the buffers of the CPLD are in the high-impedance state (disabled), effectively disconnecting the memories from the data bus. When a specific memory circuit is selected by the microprocessor (in the previously described way), the control logic activates the corresponding buffer. The direction of data flow is then defined by the microprocessor’s read/ write signal.
The buffers associated with the memory set being scanned are always disabled. The memories are, thus, isolated from the microprocessor activity and the data may be delivered undisturbed through the data selector to the DAC.
2.8.6. Digital-to-Analog Conversion
The process of conversion of binary data into the analog signal is crucial for the obtainable speed and amplitude. We use a 14-bit digital-to-analog converter DAC904U settling within 30 ns. The current output from the DAC is converted to a voltage by a fast operational amplifier OPA690. This signal is fed to a high-voltage amplifier PA98.
The DAC uses twelve bits (b11…0) out of sixteen data bits available, that gives 50 mV resolution of the pulse amplitude at the high voltage output. The sixteenth bit (b15) may be set via software and is provided as TTL-level output on the front panel. It may be used for other purposes, like controlling external devices.
Two isolated BNC contacts for high voltage (±100V) output are provided on the front panel of each module, since one usually connects both the load and the oscilloscope probe to the same signal. If the load is connected between two outputs (as in the case of a liquid crystal cell) one needs to monitor the difference between the two applied signals. For this purpose two summation modules are provided. The summation module has one inverting (-IN) and one non-inverting (+IN) inputs which can accommodate the ±100V signals from high-voltage outputs of the generator. The output of the summation module is low voltage in the range ±10V, low power and intended for oscilloscope only.
2.8.7. Programmable Logic Design
All digital logic is incorporated into programmable logic devices – CPLDs from Lattice.
2.8.8. Options
The generator is controlled through a standard serial interface and different computers or programs may be used in order to adapt the system to specific requirements. The communication protocol and commands are described at the end of this manual. This allows also to control the generator using LabView or similar software. It is advisable to contact Pendulum Instruments for the latest listing before programing a dedicated driver. Do not hesitate to contact the company when specific needs arise as it may be possible to adapt the software or hardware of the generator.
2.9. THE SOFTWARE
2.9.1. Overview
The software has initially been written for Macintosh computer and then translated to the PC- Windows environment. It has its origin in the liquid crystal research. The waveform generator is designed to be as straightforward to work with as possible, but containing all the features we found helpful in addressing of liquid crystal displays.
The snapshot of the Windows screen indicates the important functional parts of the program. Macintosh screen is analogous and can be seen in the Tutorial Chapter of this manual. Two waveforms (marked A and B, respectively) may simultaneously be designed, since we are usually interested in the relation between row and column signals. For the same reason, the superposition of these two waveforms (A-B or B-A), corresponding to the effective driving voltage seen by the liquid crystal cell, is presented for the reference (in a quarter scale) on the upper part of the screen. The optional, thin vertical lines mark here the line addressing periods. The waveforms, to be displayed on the screen, are chosen via ‘pop-up’ menus. The text on the menu button consists of the associated output-channel number and the waveform name
The pulses may be created or altered either by the usual ‘point, click and drag’ method (cursor) or by entering the desired value from the keyboard. A grid may be defined to facilitate the editing operation.
The timing information is drawn in the lower part of the screen. Short vertical lines mark the time-slots. The widths of the pulses may be altered in the same way as their amplitudes.
Additionally, the boundary between two time-slots may be moved. An arbitrarily placed oscilloscope trigger signal, marked as a small triangle, is also visible here. Since the waveforms are normally much longer than the available window size, a scroll bar is provided at the bottom of the window. The Goto menu assists in finding the desired waveform step.
Pulses, sequences and entire waveforms may be copied, cut, pasted, cleared, deleted and duplicated in the usual way. They may also be inverted, mirrored or rolled. The last editing operation can be undone. The commands affect the selected pulse or waveform. In the example presented, waveform A is active, which is marked by a frame around the ‘A’ letter. The pulse selection is visualized by a thick red line (on Mac: by an animated ‘marching ants’ pattern). Parameters of the selected waveform-step are displayed in the bottom-right part of the screen. The units are selectable via pop-up menus (volts, respective μs, or ±100 arbitrary units). The maximum-amplitude controls for respective waveform are drawn above the waveform names. ‘Clicking’ with the mouse on an up or down arrow makes an expected change, while clicking on the value allows for the keyboard entry. The timing may be changed in a similar way. The DC-content in the effective driving signal is continuously monitored.
The waveforms may be joined as column, row or arbitrary groups (called in the program as C, R, X, Y and Z-groups, respectively). Adjusting the maximum amplitude of a waveform assigned to a group, results in the corresponding adjustment in the remaining waveforms. It is, thus, possible to simultaneously change the amplitude of all column waveforms.
Three buttons for communication with the generator (‘Run’, ‘Stop’ and ‘Send all’) are placed in the upper-right corner of the screen. The fourth ‘Auto’/’Manual’ button controls the way the generated waveforms are updated. The default setting is ‘Auto’ which means that all changes are immediately followed by the generator. If more extensive alternations of the waveforms have to be done, the communication may be switched to a manual mode (then the ‘Send all’- button changes to ‘Update now’). Prior to using any of these buttons, the communication with the generator must be established and the waveforms assigned to physical channels of the generator, using a ‘dialog window’ where only the existing channels are shown.
The pull-down menus, shown in the menu-bar at the top of the screen, provide many additional features. The ‘Coupling’ menu requires special attention. It allows for defining the relations between pulses in the waveforms. The coupled pulses are presented by a distinct color when waveforms are drawn on the screen. Any number of pulses may have their amplitudes coupled together. This is done by choosing one of them as a ‘Master’ (for reference) and assigning the coupling parameters (master pulse name, multiplication factor ‘n’ and offset) to a ‘Slave’ pulse, so that its amplitude will always follow the relation:
Aslave = Amaster * factor + offset
When a ‘coupled’ pulse is altered, the software re-adjusts the amplitude of the master pulse and propagates the change to all related pulses, which may be in different waveforms, even those not shown on the screen. These slave pulses make then corresponding changes in their amplitude values. Finally, the appropriate information is transmitted to the waveform generator. There is no limit on the number of coupling chains nor on the number or placement of pulses within each chain.
The time-slots may be coupled together in the same way.
The number of waveforms is limited only by the available memory in the computer. The program has been written in object-oriented C (Symantec) for Macintosh, Borland Pascal for Windows3.x (revision 1.x) and Borland C++ for Windows95/98/NT/2000/ME/XP/ Vista/7/10 (from revision 2.0 up).
3. Tutorial
All examples shown in this chapter are taken from the Macintosh software revision 4. The WFG600 software for Windows looks and behaves in a very similar way. Differences are indicated in the context. In general, the keyboard shortcuts described as command-key correspond to control-key in Windows.
3.1. WINDOW LAYOUT
Start the program by double-clicking on its icon. The program window has areas dedicated for different things. The important ones, at this time, are shown in the drawing below:
Remember that you change the pulse amplitude in the A or B pane, and its width by dragging the marker on the time axis. In the upper (superposition) pane you can only make a selection, which can be used for copy, paste, duplicate etc. commands. Parameters of the first pulse in the selection are always shown (in the bottom-right corner of the window).
3.2. DRAWING PULSES
Lets start from an empty screen, like the one you see just after starting the Waveform
Generator program (if you have already started to draw, use FILE->NEW to clean up). Point somewhere in the A pane, press the mouse button and keep it pressed down. You see a vertical line at the click point and the horizontal one between the beginning of the screen and the click-point. As you move the mouse up and down, the line marking the pulse amplitude moves within the maximum levels. There is another horizontal line in the upper part of the window showing the superposition of this pulse with the corresponding pulse in the B pane. Release the mouse button and the first pulse will be drawn:
The width of your newly created pulse corresponds to the X-coordinate of the click-point. You may change it by dragging the pulse-boundary marker on the time axis, as shown in the next figure (PC-Windows only: you may also click with the right mouse button on the pulse amplitude).
The broken vertical lines show the pulse width you are changing. The solid vertical line, which follow the cursor movements denotes the new position of the end of the pulse. You cannot move it more left than the beginning of the pulse, since a negative time would not make sense. The minimum width allowed is 2 units. You can move this vertical line almost as far right as you like – the screen will auto-scroll to make you more space. If you really drag it far you might encounter another limit at 32000 units, which is the maximum pulse width allowed by the generator hardware.
Click now in the B-pane, to the right of the pulse end. You will create a new pulse there. Observe that the red frame surrounding the letter A has now jumped to B. This symbol tells you which of the two waveforms is “active” (it is important if you, for example, want to copy the current selection of pulses – you take them from the active waveform). Try now to draw a screen like this:
The last click created the pulse number 4 in the A-pane. The current selection is shown by an animated pattern (called “marching ants”) on the Mac and a grey box in Windows.
Remember: if you click on the existing pulse, you will change its amplitude. If you click to the right of the last pulse, you will create a new one. You know also that if you drag the pulse- boundary marker you will change the width. Try now to drag such marker with the “option” key pressed. Notice a change in the cursor shape! You are now moving the boundary between two pulses.(see fig. on the next page)
If you are not happy with the new width or amplitude of the pulse – just select “Undo” from the “Edit”-menu (or type cmd-Z). The text in the menu changes and always tells you what you can undo, which usually is the last editing action. (A few commands cannot be undone in such an easy way. The most “dangerous” ones will warn you before proceeding.) Most often you will like to create pulses of equal length. You may fix the desired width of all new pulses by using the menu PULSE->SET NEW PULSE WIDTH… (or type cmd-W). You will see a dialog asking you to type the desired (integer!) value. If you feel that you need a similar help with drawing the amplitudes, use menu VIEW->SET GRID->EQUAL STEPS…(or type cmd-Y). The default values are 20 in both cases. Let’s draw some steps:
Of course, you may prefer just to write the amplitude and length values for each pulse. Use menu PULSE->SET VALUES… or type cmd-A, and the following dialog window will appear:
The default button is drawn with a thicker line and responds to the “Enter” and “Return” keys in all dialogs in the Waveform Generator program. The default button of the dialog above moves you to the right on the time axis. If you are at the last pulse (as in the picture above) it reads “New”, because it will create a new pulse for you. Otherwise it tells “Next” as opposed to the “Previous” button. Use TAB or shift-TAB to jump between the edit-fields. The “Cancel” button, which responds also to the “Escape” key, allows you to leave the dialog without making any change (this is also true for all dialogs in the Waveform Generator program). Click on “Done” button when you are ready. If you wonder what the “control bit” is: there is an output marked “C-BIT” on the front panel of each channel, if you click on the “control bit” check-box here, a logical “one” level will be generated from that output during this pulse.
You do not have to type everything by hand. There is a number of quite powerful editing commands for your assistance. As in nearly all programs there is an “Edit” menu, which has a copy, cut, paste and duplicate functions. Let’s try to use these simple commands now. And remember the rule: you always copy from, or paste into, the active waveform.
Let’s make a simple exercise. Select last 4 pulses in the A-waveform – point with the mouse on the first of them in the superposition pane, press the mouse button and drag to the right. The “marching ants” pattern will show the selection. (There are two other ways to make a selection – read the description of the PULSE menu). Choose EDIT->COPY or press cmd-C. Click on the B-letter (or anywhere to the left from Y-axis of the B-waveform) to select the B-waveform. Pressing a down-arrow key would also select the B-waveform. Choose EDIT->PASTE or press cmd-V. Your screen might now look like this:
OK, that was simple. But there is a snag in it: the copy always contains both the information about amplitudes and about the timing. Since we pasted the selection at the same place, only in the other waveform, there was no problem because there was no difference in timing. If we now paste our 4 pulses over the pulses from1 to 4, the widths of pulses in the copy and waveform differs, and we must decide what to keep. The default setting (as you start the program) is to override without asking both the existing amplitude and the existing timing.(Do not worry: the paste command can be undone). You may choose to override only the amplitude or only the timing or to be asked each time – call PREFERENCES… dialog from the EDIT menu to do this. With the default settings you would get:
Try now the INVERT SELECTION command (from EDIT menu, or press cmd-5/ctrl-F5). It will invert amplitudes of all pulses within the selection. Go back to A-waveform and try INVERT WAVEFORM command (cmd-6/ctrl-F6). If you wish to insert a pulse before the selection, use INSERT PULSE command (cmd-I) or if you need many pulses, call N*INSERT… instead.
The screen might look now like this:
The DUPLICATE command (cmd-D) copies the selected pulses and pastes them just after the selection.
So far, we have been drawing amplitudes and widths in arbitrary units. The scale is, as you can see on the screen, ±100 amplitude unites. Thus, the superposition is in the range of ±200 units. The resolution of the screen within A- and B-pane is ±50 pixels. So, if you drag the amplitude you get only even values. Press option key to access the odd values.
In the picture above 100 units correspond to 10 volts, as you can see in the maximum amplitude control panel. Click on an arrow symbol to increase or decrease this value in 1V steps or 0.1V steps if you press an option key. You can also click on the digital display and type a new value directly (in a dialog which will come up). If you now click on the pop-up menu (the rectangle with a shadow), you may change “units” to “volts” and the superposition waveform will be calculated according to max amplitude values for both waveforms (note the color change).
In the timing control you have more possibilities. You can read the pulse width in units, μs or ms. Not all the choices are available at the same time. They depend on the choice of the time-base clock, which you select using the TIMING menu.
Please notice the small symbol between the up and down arrows above the time-display. Normally it resembles a waveform. If you click on it, it changes to a symbol presenting a width of one pulse.
This symbol tells you what will change when you click on one of the arrows or the digital display. In the case as above, when one-pulse width symbol is shown, you will change the width of the selected pulse only (or the first pulse of the selection, like the pulse #5 in this example) and you will not alter other pulses. Let’s change it to 40 μs:
In the other case, when the waveform symbol is shown, you will scale the entire timing.
Let’s try it. Click on the mode symbol or use the menu TIMING->SCALE TIMING. The symbol changes. Click on the digital display. The dialog comes up (Mac only, in Windows you may edit the displayed text directly). The message in the dialog explains what you are about to do. Type 20 and press Enter key (or click on OK button if you like). We are changed the width of the pulse number five from 40 μs to 20 μs and at the same time we changed the widths of all other pulse by multiplying them by one half (20/40=0.5). The result you can see on the next figure.
If you think that the picture is too dense now, use a “Zoom” function from the “View” menu. You can zoom in or out in the ratio of 2 each time, but there is no limit on the zoom level. You might prefer to use the keyboard shortcuts: command + to zoom in, command – to zoom out and command 0 (zero) to return to the 1:1 scale.
And after zoom-in twice:
Please notice, that the display has scrolled to make the selected pulse number 5 well visible. Before proceeding to the next chapter, scroll it back to the first pulse by using the scroll bar or the menu GOTO->START or by pressing command-left cursor.
3.3. USING COUPLINGS BETWEEN PULSES
Quite often it is necessary to change parameters of many pulse at the same time. Doing it “by hand”, one by one, would not be a nice solution. Let the computer do the job! All you need is to describe the relations between these pulses. And you can do it using the COUPLING menu.
It works in the following way (let us start with the amplitudes, the timing is analogous). First you have to choose a reference pulse, we call it a “master”. Next you make another pulse to be this master’s “slave” and define the function for its amplitude:
Aslave = Amaster * factor + offset
You can create many “masters” and each of them may have many “slaves”. There is no limit on their number nor on their placement (different waveforms, even those not seen on the screen).
Let us make the pulse number 1 in the A-waveform a master-amplitude. If this pulse is not selected, click on it in the superposition pane and make sure that the red frame surrounds the “A” letter. Choose COUPLING->SET MASTER AMPLITUDE… and the dialog will be displayed asking you to type a name for this master pulse.
Type a name (like “the first master”, as in the example) and click OK.
Now go to the pulse number 4 and choose COUPLE TO… from the same menu (or press cmd-K). You will see another dialog. It has a pop-up menu to choose the master and two edit fields to write the equation describing the relation between this slave pulse and its master:
If you type the factor “-1” as in this example, the pulse number 5 will be a counter pulse of the pulse number 1. Click OK and try to change the amplitude of the master or the slave pulse to see how they follow each other.
Please notice that the horizontal lines in the coupled pulses have changed their color to red (master) or blue (slaves). In practice you do not need to care which pulse is a master and which is a slave (with one exception, see below). If you change an amplitude of a slave, it informs its master about this. The master calculates its own new amplitude and broadcasts it to all its slaves, which, in turn, change their amplitudes according to the programmed equation.
The only time you need to know which are the masters is when you want to delete some pulses or waveforms. If such selection contains a master, the computer will protest. The solution to your problem is quite simple – you just tell another slave to become a master. Then the old master will become a slave and you will be able to do whatever you like with it. The command is called PROMOTE TO MASTER.
It is, of course, a lot of job to make slave pulses one by one. Try the following sequence of commands: zoom out once, select all, duplicate, copy, change to B-waveform, paste, invert selection. You should get something like this:
Try to change an amplitude of the coupled pulses and observe how they behave. You see that the copy/paste/duplicate commands create new slaves and the “invert” command changes the sign of the multiplication factor in the equation. So, you can create a master first and make all the slaves just by duplicating, copying, inverting, etc.
You may change the name of a master, jump to the master, clear one coupling chain or all couplings.
4. The Menus
This Chapter describes the menu commands as laid out in Windows version of the program.
Notation:
- The “…” after the title of the menu item means that it invokes a dialog window, where further choices may be done.
- If the menu item appears grayed out – it is not available at this time.
- The “ » ” after the menu item denotes here a hierarchical menu.
4.1. FILE
4.1.1. New
Close the current design and open a new, empty one. The current design will be saved or not according to the preferences (see later on).
4.1.2. Open…
ctrl–O
Save the current design (if there is any) according to chosen preferences and open a file containing a previously saved design.
4.1.3. Import…/Export...
A text file of tabulated data (like a spreadsheet). Open exported file in text editor to see the format. The coupling information is not preserved here.
4.1.4. Save
ctrl–S
Save the current design to the disk. First time you call this command you will be prompted for the file name and location.
4.1.5. Save as…
Save the current design to the disk under another name. You will be prompted for the file name and location.
4.1.6. Print setup…
A standard setup dialog where you can choose the size of the printer paper, scale of the printout and its orientation (recommended: “landscape”).
4.1.7. Print…
ctrl–P
Print the design on the attached printer. The following information is added on the first page: file name, date, time, waveform names, groups, amplitude, type of superposition, chosen units, total number of pulses and the DC offset.
4.1.8. Preferences
Set file save preferences, disable splash screen, select communication port, baud rate and waveform generator model.
4.1.9. Quit
ctrl–Q
Quit the program. The current design will be saved or not according to the preferences (see above).
4.2. EDIT
4.2.1. Undo
ctrl–Z
Undo the last operation. If the text is dimmed – the operation cannot be undone.
4.2.2. Cut
ctrl–X
Copy the selected sequence of the pulses from the active waveform (A or B).
Clear the sequence (i.e. set the amplitude of pulses included in the sequence to zero).
4.2.3. Copy
ctrl–C
Copy the selected sequence of the pulses from the active waveform to the private clipboard of the program (you cannot paste it into any other program, the system clipboard is used for text editing only).
4.2.4. Paste
ctrl–V
Paste the content of the program’s clipboard (prepared by COPY or CUT commands) into the active waveform starting at the selected pulse. The waveform will be extended if needed (zero-amplitude pulses will be appended to all waveforms):
You can override existing amplitude and/or timing information according to settings in “Preferences” dialog. Click on a corresponding check-box. You can make your choices permanent by checking “Remember and do not ask again”. You can then access this dialog again using PASTE PREFERENCES… item described below.
4.2.5. Clear
Clear the selected sequence of the pulses in the active waveform (i.e. set the amplitude of the pulses included in the sequence to zero).
4.2.6. Select all
ctrl–A
Select all pulses in the active waveform.
4.2.7. Delete
ctrl–DEL (PC)
Delete the selected range of pulses from all waveforms.
4.2.8. Insert pulse
ctrl–I
Insert a new pulse before the selected one (or the beginning of the selected sequence) into all waveforms. The pulse amplitude will be zero in all waveforms. The width of the inserted pulse will be equal to the width of currently selected pulse.
Use DELETE to undo.
4.2.9. N* Insert pulse…
Insert a number of new pulse before the selected one (or the beginning of the selected sequence) into all waveforms (see above).
Use DELETE to undo.
4.2.10. Insert Duplicate
Copy the selected sequence of the pulses from the active waveform.
&
Insert it immediately after the selected sequence.
4.2.11. N* insert duplicate…
Perform INSERT DUPLICATE command N times. You will be prompted for the value of N.
4.2.12. Duplicate
ctrl–D
Copy the selected sequence of the pulses from the active waveform.
Paste it immediately after the selected sequence.
4.2.13. N* duplicate…
Perform DUPLICATE command N times. You will be prompted for the value of N.
4.2.14. Invert selection
ctrl–F5
Invert all pulse amplitudes within the current selection in the active waveform. If anyone of the pulses is coupled (cf. COUPLING menu), its coupling parameters will be adjusted accordingly.
4.2.15. Invert waveform
Ctrl–F6
Invert all pulse amplitudes in the active waveform. If anyone of the pulses is coupled (cf. COUPLING menu), its coupling parameters will be adjusted accordingly.
4.2.16. Invert copy
Invert all pulse amplitudes within the copy. If anyone of the pulses is coupled (cf. COUPLING menu), its coupling parameters will be adjusted accordingly.
4.2.17. Mirror the copy
Revert the order of pulses in the copy (the last pulse becomes the first and the first becomes the last one, and so on).
4.2.18. Scale selection...
Reduce/enlarge the amplitudes of selected pulses in the active waveform by a factor set in percent. Coupled pulses within the selection will have their coupling factors changed to reflect the scaling.
4.2.19. Roll selection
ctrl–alt–shift left/right arrow
Roll marked selection in the active waveform to the left or right. Only the amplitudes will be shifted, the timing will not move. You will be prompted for the direction and number of pulses. First time you use the keyboard shortcut, a dialog will ask you the number of steps, and that number will then be used until you invoke the command from the menu (not from shortcut). Choose ROLL SELECTION from the menu to get the dialog again.
Example: “roll right by 2 pulses” means that the following operation will be performed twice: the last pulse will be moved to the first position and the remaining pulses will be shifted right by one slot.
4.2.20. Roll waveform
ctrl–alt left/right arrow
Roll the active waveform to the left or right. Only the amplitudes will be shifted, the timing will not move. You will be prompted for the direction and number of pulses. First time you use the keyboard shortcut, a dialog will ask you the number of steps, and that number will then be used until you invoke the command from the menu (not from shortcut). Choose ROLL SELECTION from the menu to get the dialog again.
Example: “roll right by 2 pulses” means that the following operation will be performed twice: the last pulse will be moved to the first position and the remaining pulses will be shifted right by one slot.
4.2.21. Paste preferences
Call the dialog to set the way the PASTE command should be performed – you can paste amplitudes or timing information or both. You may also chose to be asked before each paste.
4.3. VIEW
4.3.1. Pixel
Control the presentation of the “superposition waveform” in the top panel.
PIXEL = A-B
The waveform shown in the top panel will be calculated by subtracting pulse amplitudes of the B-waveform from the corresponding pulse amplitudes of the A-waveform.
This is the default choice.
PIXEL = B-A
The waveform shown in the top panel will be calculated by subtracting pulse amplitudes of the A- waveform from the corresponding pulse amplitudes of the B-waveform.
4.3.2. Mark sequences…
Draw a thin vertical line every N pulses in the superposition display. You will be prompted for the value of N. Use it, for example, to mark line addressing times. Choose this menu item again to remove the marks.
Alt–click to select entire sequence of pulses between the marks.
4.3.3. Zoom in
Zoom buttons above time units
Alter the scale of the waveform display. The current zoom ratio is shown at the bottom of the window.
4.3.4. Zoom 1:1
Center button above time units.
Restore the situation where the pulse width expressed in “units” corresponds directly to the same number of pixels on the screen.
4.3.5. Zoom out
Zoom buttons above time units
Alter the scale of the waveform display. The current zoom ratio is shown at the bottom of the window.
4.3.6. Set grid
Hierarchical menu. Chose the size of the support grid for drawing pulse amplitudes. It automatically calls SNAP TO GRID and, if the grid is not too dense to display, SHOW GRID.
SET GRID » EQUAL STEPS…
ctrl–Y
You will be prompted for the step size. The positive and negative values are symmetrical by default.
SET GRID » SAME AS OTHER WAVEFORM
Make the grid in the active waveform exactly the same as in the non active waveform.
4.3.7. Snap to grid
The value of a currently edited pulse amplitude is adjusted to the nearest grid level. The grid does not have to be visible.
4.3.8. Show grid
Make the grid visible. Choose this menu item again to hide the grid.
4.4. GOTO
Move around in the design.
4.4.1. Start
ctrl–HOME
The waveform display will be scrolled to the first pulse and the first pulse will be selected.
4.4.2. Current selection
Use this menu if you have scrolled the waveform display away from the selection.
4.4.3. Marked selection
Use PULSE –> MARK SELECTION to store the current pulse range and then you can jump to it at any time by calling this menu item.
4.4.4. Restore selection…
Use PULSE –> MARK SELECTION to store the current pulse range. Choose from the hierarchical menu of stored pulse selections and jump there.
4.4.5. Pulse nr…
Go to a specified pulse number and select it. You will be prompted for the pulse number.
4.4.6. Marked pulse »
A hierarchical menu of marked pulses. Use PULSE –> MARK THIS PULSE to include a selected pulse in this menu.
4.4.7. Trigger point
Ctrl–left/right arrow to jump with trigger between marked pulses
(see menu PULSE –> MARK THIS PULSE).
Jump to a pulse containing the oscilloscope trigger point. This menu is active if there is a trigger point and only one trigger point at a time is allowed (the default setting).
4.4.8. Master pulse »
If you have coupled pulses or time-slots, you can scroll the display to a chosen reference (i.e. “master”) pulse.
4.4.9. End
ctrl–HOME
The waveform display will be scrolled to the last pulse and the last pulse will be selected.
4.5. WAVEFORM
4.5.1. Add new waveform…
ctrl–N
Put a new, empty waveform into the selected display (A or B). The waveform currently present there will be hidden and you may access it again via pop-up menus on the right margin of the window or via tabs at the bottom of the window.
Use WAVEFORM–>REMOVE WAVEFORM to undo.
4.5.2. Remove waveform
Remove and delete the selected waveform. Replace it with a first available from the waveform list or a new, empty one.
Cannot be UNDONE!
4.5.3. Edit name…
ctrl–L
Change the name of the active waveform.
4.5.4. Max amplitude…
Calls a dialog to set the maximum amplitude of the selected waveform in volts that corresponds to 100 units (full scale) of the amplitude. Same result can be achieved by clicking in the max-amplitude display and typing a value.
To fine-tune the value use up/down arrow buttons on the right hand side of the display. They change the value in 0.1V steps. The step can be increased to 1V by holding shift key.
The DC offset control below allows offsetting the generated waveform. This is not shown on the display, use oscilloscope to monitor the output signal. The sum of offset and max waveform amplitude is limited to the maximum amplitude of the signal that can be generated by your WFG model or the set amplitude limit.
4.5.5. Group waveforms…
ctrl–U
Join waveforms in the groups in order to control the amplitude simultaneously for all waveforms within the group. The choices are: free, column, row, arbitrary group X, Y, Z. The symbol of the group will be displayed on the left margin of the window, near the lower part of the amplitude axis.
If the current waveform is not the first member of the group, its maximum amplitude will automatically be adjusted to the value defined by the group members.
Max amplitude change of any member of a group propagates to the remaining members.
4.5.6. Set amplitude limit
This command provides an extra security against accidentally increasing the signal amplitude over the allowed value for the device under test. When the program starts, this limit is set by default to 100V (i.e. the maximum).
4.5.7. Functions » Ramp…
A single-slope ramp will be automatically created in the selected range of pulses. (Hence, before invoking this command you have to create a desired number of pulses and select them). The ramp may be unipolar or bipolar, rising or falling, the amplitudes and pulse width may be coupled (see COUPLING menu for explanation). The widths of involved pulses will be equal to the value set in the dialog.
4.5.8. Functions » Sine wave…
Create a sine wave over the selection of pulses. (Hence, before invoking this command you have to create a desired number of pulses and select them). In the dialog you have to state starting angle in degrees, total length in degrees, pulse width and also if you want couplings between pulses.
4.5.9. Functions » DC-waveform…
Create a DC waveform. It will be as long as the existing waveforms, have amplitudes of all pulses coupled together and initially zero volts. A dialog asks you to name the waveform.
4.5.10. Duplicate waveform
Create a new waveform exactly the same as the active one. Hide the original waveform and display the copy instead. Since the new waveform is not associated with any output channel, no additional data will be sent to the generator.
Use WAVEFORM–>REMOVE WAVEFORM to undo.
4.6. PULSE
4.6.1. Set values…
ctrl–F2 / ⌘–click on the waveform display
Invokes a dialog, where you can type the values of pulse amplitudes in both waveforms, pulse width and set/reset the associated control bits.
Use NEXT/NEW and PREVIOUS buttons to move around in the waveform. Press DONE when you are ready or CANCEL to discard changes made to the currently selected pulse.
4.6.2. Mark this pulse
ctrl–M
Include the selected pulse number in the list. Use GOTO –> MARKED PULSE » menu to find it again. The pulse number is remembered and it does not change if an original pulse changes its position in the waveform.
4.6.3. Unmark pulse »
A hierarchical menu to remove a chosen pulse from the list.
4.6.4. Define sequence…
- ctrl–F
- shift–click
- click and drag in the waveform superposition display
Define a selection of pulses by typing the pulse numbers in the dialog (from – to, inclusive).
4.6.5. Mark selection
Remember the current selection. You may restore it later using GOTO menu. You may store multiple selections.
4.6.6. Set new pulse width…
ctrl–W
Invokes a dialog to define the width of each new pulse you draw. It automatically changes the choice to FIXED WIDTH.
FIXED WIDTH
Force each new pulse to have a predefined width.
AS HIT
The click coordinates define both the width and the amplitude of each new pulse.
This is the default choice.
4.6.7. Set control bit
Set a control bit associated with the selected pulse. This bit controls the TTL-compatible C-BIT output on the front panel of the corresponding output channel. It can be used to control some external devices.
If the control bit is set, the title of this menu item changes to RESET CONTROL BIT. The horizontal part of the affected pulse will be displayed in grey.
Setting one or more control bits is another way of generating a trigger pulse, especially useful in Matrix mode with even/odd frame inversion (to trigger the scope on either frame, not both).
You may set the control bit in a selection of pulses at once.
4.7. TIMING
This menu deals with the clock speed in the generator, oscilloscope trigger points, the way the pulse width can be changed and the waveform speed.
4.7.1. Select time-base clock…
Chose the time-base clock. It defines how long 1 time-unit will be. The choices are:
20MHz (1 unit = 50 ns, default)
1MHz (1 unit = 1 μs)
software-controlled (generated by the onboard timer, 1 unit = N ms)
external clock source (connected to X-CLK input on the front-panel of the Control Module; use TTL-compatible square-wave generator of good quality; do not exceed 0…+5 V range).
4.7.2. Onboard timer speed…
Set the speed of the software-controlled time-base clock. It can be set in units of 1 ms (1…64 ms). The actual value in the microprocessor timer will be updated at the beginning of the waveform scan.
4.7.3. Set trigger point
space
Place a trigger point in the selected time-slot. The text in this menu item changes then to REMOVE TRIGGER POINT.
4.7.4. Remove all triggers
Delete all triggering information from the timing data.
This operation cannot be undone.
4.7.5. [ Allowed: ] Single trigger point
Allow only one trigger point to be present in the timing data. If you place a trigger point in another slot, the previous trigger point will be removed.
If the you change from MULTIPLE TRIGGER POINTS to SINGLE TRIGGER POINT, only the first existing trigger point will remain, others will be deleted. This operation cannot be undone.
The single trigger point is the default choice.
4.7.6. [ Allowed: ] Multiple trigger points
There may as many trigger points in the timing data as you like.
The C-BIT output complement and extends the triggering possibilities. A TTL-compatible level (true/false) can be assigned to individual pulses in each or any waveform.
4.7.7. [ Click on time axis: ] Drag pulse width
Set the way the pulse width is changed by click & drag.
IF THIS OPTION IS ENABLED (DEFAULT AT STARTUP):
Click on the desired time slot or right-click on the pulse (anywhere in the pulse area) and drag its right boundary to the desired position. Dragging past the right edge of the display will auto scroll. Dragging the pulse width to zero will set it to 2 units, which is the minimum.
IF THIS OPTION IS DISABLED:
Use shift–click
4.7.8. [ Click on time axis: ] Move pulse boundary
Set the way the pulse width is changed by click & drag.
IF THIS OPTION IS ENABLED:
Click on the desire time slot marker or right-click on the pulse (anywhere in the pulse area) and drag its right boundary. You will move the boundary between this slot and its right neighbor. The rest of the waveform will not be affected as the sum of widths of these two pulses is kept constant.
IF THIS OPTION IS DISABLED:
Use shift–click
4.7.9. [ Mode: ] Waveform scaling
At the bottom-right part of the screen there are two arrow buttons, a symbol of a waveform and a box displaying the width of the currently selected pulse (or the first one in the selected sequence). By changing this width the entire timing will be scaled proportionally.
Clicking on the symbol toggles it and has the same effect as the menu choice.
This is the default setting.
4.7.10. [ Mode: ] One pulse only
At the bottom-right part of the screen there are two arrow-buttons, a symbol of a pulse width and a box displaying the width of the currently selected pulse (or the first one in the selected sequence). Changing this width will not affect other pulses (unless they are coupled to this one, see the COUPLING menu).
4.8. COUPLING
In this menu you can set the relations between pulses and time slots in the design. It makes possible to change amplitude or width of many pulses at once by just a single mouse click.
4.8.1. [ Amplitude ] Set master…
Make the selected pulse an amplitude reference – a “master”. You will be prompted to give it a name. The default name is “AmplMaster1”. You may change the name later using RENAME MASTER >> hierarchical menu.
The color of the pulse changes to red.
Some restrictions apply to “master” pulses – you may not delete, cut, clear or paste over them. For work-around see PROMOTE TO MASTER command below.You may copy a “master” and the copied pulse will automatically become its “slave” equal in size.
4.8.2. [ Amplitude ] Couple to…
ctrl–K
Couple the selected pulse to a reference pulse (make it a “slave” pulse). Invokes a dialog where have to chose a master using a pop-up menu and type the coupling parameters (multiplication and offset).
Its amplitude will from now on follow the equation:
Aslave = n * Amaster ± offset
The default is n = 1 and offset = 0. When a ‘coupled’ pulse is altered, the software readjusts the amplitude of the master pulse, propagates the change to all members of the coupling chain (coupled pulses may be in different waveforms, even those not shown on the screen), and finally transmits the appropriate information to the waveform generator (if connected and in “auto” mode).
The color of the coupled pulse changes to blue.
A “slave”’ can be created by simply executing DUPLICATE or COPY / PASTE commands on a “master” pulse. The “slave” created in such way will have the same amplitude as its
“master”. To obtain an inverted “master” invoke INVERT SELECTION command (ctrl-F5).
If changing an amplitude of a coupled pulse should cause that another coupled pulse runs out of range, the amplitude of the current pulse will be readjusted in order to keep all amplitudes within limits. So do not get angry, when the program refuses to place the amplitude bar exactly where you want it – check what happens with other pulses in the coupling chain!
4.8.3. [ Amplitude ] Promote to master
Move the “master” properties over to the selected “slave” pulse. The waveforms will not change, the name will not change, but the colors of the pulses will interchange, indicating the transfer of the properties.
Use this menu command if you wish to delete, cut or clear a sequence containing a master or paste over it and the program does not allow this.
4.8.4. [ Amplitude ] Clear coupling
Erase the coupling of this “slave” pulse to its “master”.
4.8.5. [ Amplitude ] Couple selection
Couple together the selection of pulses creating a new coupling chain preserving the current relations between pulse amplitudes. The first pulse in the selection becomes a master. Pulses with zero amplitude will not be included in the chain, hence if the first pulse is zero it will be excluded from the selection.
4.8.6. [ Amplitude ] Connect masters
Join two coupling chains.
4.8.7. [ Amplitude ] Append selection
Append the selected pulses to an existing coupling chain chosen from dialog.
4.8.8. [ Timing ] Set master…
Make the selected slot a width-reference. You will be prompted to give it a name. The default name consists of the text “TauMaster1”. You may change the name later using RENAME MASTER hierarchical menu.
The color of the pulse changes to red.
The same restrictions apply to “master” slots as to “master” pulses – you may not delete, cut, clear or paste over them. For work around see the [ TIMING ] PROMOTE TO MASTER command. You may DUPLICATE or COPY / PASTE them and the copied pulse will automatically become its “slave” equal in size.
4.8.9. [ Timing ] Couple to…
ctrl–J
Couple the selected slot to a reference slot (make it a “slave” slot). Invokes a dialog where you have to choose a master from a pop-up menu and type the coupling parameters (multiplication and offset).
The width of the slave pulse will from now on follow the equation:
Tslave = n * Tmaster ± offset
The default is n = 1 and offset = 0. When a “coupled” slot is altered, the software readjusts the width of the master slot, propagates the change to all related slots, and finally transmits the appropriate information to the waveform generator (if connected and in “auto” mode).
The color of the coupled pulse changes to blue.
If decreasing the with of a coupled slot should cause that the width of another slot would be reduced to zero, it will be set to 2 time units.
4.8.10. [ Timing ] Promote to master
Move the “master” properties over to the selected “slave” slot. The waveforms will not change. The name will not change.
Use this menu command if you wish to delete, cut or clear a sequence containing a master or paste over it (which is not allowed).
4.8.11. [ Timing ] Clear coupling
Free this “slave” slot from its “master”.
4.8.12. [ Timing ] Couple selection
Couple together the selection of pulses creating a new coupling chain preserving the current relations between pulse amplitudes. The first pulse in the selection becomes a master.
4.8.13. [ Timing ] Connect masters
Join two coupling chains.
4.8.14. [ Timing ] Append selection
Append the selected pulses to an existing coupling chain chosen from dialog.
4.8.15. Rename master »
Hierarchical menu of “masters”. Invokes a dialog where you can change the name of a chosen “master” pulse or slot.
4.8.16. Remove master »
Hierarchical menu of “masters”. Removes the entire chosen coupling chain i.e. the master and all slave slots in the chain will become free.
Cannot be undone.
4.8.17. Clear all couplings
Erases all relations between pulses and slots in the current design.
Cannot be undone.
4.9. MATRIX
This menu controls a special mode of operation where Channels 1-4 act as column electrodes and channels 5-8 act as row electrodes in a matrix. The mode is described in separate Chapter.
If items in this menu are dimmed – turn on MARK SEQUENCES… from VIEW menu.
4.9.1. Build addressing scheme…
Before issuing this command you have to prepare:
- building blocks for construction of the waveform set;
- a tabulated text file describing the pattern in subsequent frames;
- only if desired – a tabulated text file describing the pattern in the first frame and background (random pattern is default).
The command calls a dialog asking for details of the addressing scheme. It is the only necessary command in this menu.
4.9.2. Send all tables
Corresponds to normal SEND ALL command in OUT menu.
4.9.3. Set matrix mode
The mode is set automatically by the BUILD… command. Deselect to return to the normal operating mode (preferably resetting the generator as well).
4.9.4. Choose frame from data file…
You are prompted to select the spreadsheet file containing frame pattern data.
4.9.5. Reset generator
Same command as in OUT menu.
4.10. OUT
By this menu you can communicate with the generator. Initially all items are disabled (dimmed) except CONFIGURE CHANNELS menu (and a SPECIAL hierarchical test menu described later). First thing you have to do is to establish a contact with the generator. After the positive reply and channel assignment the remaining menu items become available.
4.10.1. Configure channels…
ctrl–T
This is the very first command you have execute to establish a contact with the generator. The generator reports which output modules are installed and invokes a dialog to associate the waveforms with the output channels.
The default button in this dialog is RUN which automatically sends all data to the generator and starts it. You may also exit the dialog without starting or sending data.
This command will also cancel the red error LED on the controller panel if such is turned on.
Use this command to cancel the red error LED on the controller panel.
4.10.2. Disconnect
Terminate connection with the generator. Useful to inform the program that the generator has been reseted, and also to inhibit updating the generator memories when a large number of changes are about to be performed and the generator should not follow (alternatively – switch the updating mode to manual).
4.10.3. Run
ctrl–R
The same as RUN button. Start the generation of the waveforms. It is enabled only when the data has been downloaded to the generator.
4.10.4. Stop
ctrl–H
The same as STOP button.
Terminate the generation of the waveforms after the end of the current scan.
4.10.5. Send all
ctrl–E
Same as SEND ALL button.
Send all data to the generator. After execution of this command, the RUN command will be enabled.
If you chose this command when the generator is running, it will be stopped, all data downloaded and the generator restarted.
4.10.6. Update now
Use this command to update the data in the generator if the MANUAL UPDATE mode is chosen.
4.10.7. Auto update
All changes you make to the waveforms will immediately be transmitted to the generator if a contact has been established and all data downloaded.
This is the default choice.
4.10.8. Manual update
The changes will not be transmitted to the generator. The text on the button will change to UPDATE NOW. Use this option if you want to make many changes before you update the data in the generator.
4.10.9. Continuous mode
The Run command or the high level on the X-TRG input (if enabled) initiates the continuous generation of the waveforms.
This is the default choice.
4.10.10. Continuous & frame cnt
In this mode the RUN command starts a 32-bit frame counter. After a STOP command, the total number of generated frames is displayed in an editable field of a dialog. The number is selected and can directly be cut and pasted to a file/spreadsheet, etc. Editing this number does not have any effect.
4.10.11. Burst mode
The Run command or the high level on the X-TRG input (if enabled) initiates a single generation of the waveforms. The generator will stop after the end of waveform. Implemented in hardware – no constrains on the pulse width nor frame length.
4.10.12. Burst and invert
It is analogous to the normal BURST command, except that amplitudes of all waveforms are inverted after each burst. Implemented in hardware.
4.10.13. Burst N frames
Selecting the mode invokes a dialog to set the requested number of frames. Pressing RUN button starts the burst. This mode is a software extension and there are some restrictions. If the width of the last pulse is less than 21 μs then N+1 frames will be generated. Avoid frames shorter than about 500 μs.
4.10.14. Script [ Roll ]…
Programmable burst mode with waveform rolling described in separate Chapter.
4.10.15. Matrix mode
The mode corresponding to the MATRIX menu which is described in separate Chapter.
4.10.16. Computer in control
The RUN and STOP commands control the generator.
This is the default choice.
4.10.17. External triggering
The generator is controlled by the signal supplied to the X-TRG input on the front panel of the Control module. Low level (or short to ground) corresponds to the RUN command and high level (TTL compatible) corresponds to the STOP command.
4.10.18. Special » Force reset
It is possible to reset the generator by a menu command. The advantage of this feature is that the program becomes aware that the generator has been restarted and adjusts its menus accordingly.
4.10.19. Special » Firmware revision
Displays the revision number of the microprocessor software stored in controller’s read-only memory.
4.11. HELP
Start the default browser and access documentation, manuals and FLC Electronics’ web site.
4.11.1. Menu help
F1
Starts your default browser and searches for a folder named “Help” in the same directory, where the waveform_generator.exe file resides. It then tries to open file index.html in this folder.
4.11.2. Manuals
Starts your default browser and searches for a folder named “Help” in the same directory, where the waveform_generator.exe file resides. It then tries to open file wfg500_m.html in this folder.
4.11.3. Check for updates
Please contact Pendulum Instruments for info.
4.11.4. About...
Displays the short information about the program, its version, copyright claim and the company address
5. Matrix
The MATRIX menu controls a special mode of operation originally designed to drive a 4×4 liquid crystal matrix display. Channels 1-4 act as data electrodes (columns) and channels 5-8 act as selection electrodes (rows), respectively. The display is assumed to be a part of a large imaginary display (the size of the display is defined by the length of the waveforms). Similar operation can be achieved in a standard mode as well, but the matrix mode provides means for altering the displayed image in every frame as well as setting the initial image (random or spreadsheet file).
5.1. WAVEFORM LAYOUT
The display addressing waveforms are created automatically by the software from provided “building blocks” – a groups of pulses called here Control Windows (CW). These have to be drawn in a specific way, as described below.
The “A” waveform contains all definitions of pulse sequence for columns (data sequences). Zero-voltage pulses may be appended to the end; they will be ignored.
The “B” waveform concerns the rows. The first CW is the “non-select” sequence and will be repeated everywhere in row waveforms outside the “selection” part. The latter is defined after the CW1 (but not necessarily starting at CW2).
It is necessary that the CWs are marked by vertical lines. Use VIEW menu MARK SEQUENCES…to obtain this.
The screen should look like this:
For a typical one line at a time addressing there can only be two waveforms present. If there is a third waveform, the program understands that row signals are different in odd and even frames.
5.2. BUILDING THE WAVEFORM SET
It is useful to select the “row selection sequences” (as shown) and place a trigger point before calling the BUILD ADDRESSING SCHEME… dialog. The default values will then be set properly.
This dialog will be immediately followed by (see THE *.CWS FILE):
and the created waveforms will be transmitted to the Waveform Generator. The above will work if there are exactly 2 waveforms defined.
If there are exactly 3 waveforms then the program assumes that the row waveforms in odd and even frames are different. The “B” waveform will define the odd frame and the hidden waveform will define the even frame. For example:
5.3. THE *.CWS FILE
You also have to prepare at least one tabulated text file (a spreadsheet file) with frame data describing which data sequences should be applied at each consecutive frame, for example:
;ROLLING 11 seqs in 8 CWs
;sequence starts in CW number 3
83
12345678
12345678
12345678
12345678
23456789
23456789
23456789
23456789
345678910
345678910
345678910
345678910
……….
Any line starting with “;” is treated as a comment and ignored
First data line “8 TAB 3 CR” (8 tabulator 3 carriage-return) tells that the active part of column waveforms spans over 8 CWs and starts from CW number 3.
The following groups of 4 lines holding 8 numbers each describe which data sequences are to be inserted into respective column waveforms (first line corresponds to Column1, etc.). The numbers refer to the data sequences defined in the “A” waveform (CW1 defines data sequence number 1, CW2 defines data sequence number 2, etc.).
The total number of data bytes transmitted to the generator (all definition tables and frame data) is limited by available internal memory of the Controller module (about 24k).
5.4. RUN MATRIX MODE
After preparing the file and data, issue the command BUILD ADDRESSING SCHEME… and then SEND ALL TABLES. You will be asked to chose the frame data file (you can also designate a file by the menu item CHOOSE FRAME FROM DATA FILE…). The Matrix mode will be set. After RUN command you will see a changing pattern in a part of column waveforms.
6. Script
The “Script” defines a series of multiple-frame bursts where chosen waveforms are rolled between successive bursts. A “frame” is here defined as the full length of the waveform drawn on the computer.
Before starting to edit the script you have to assign the waveforms to the generator channels using the compulsory initial command CONFIGURE CHANNELS…
6.1. PREPARATION STEPS
You are presented with a series of dialogs to define the steps in the “script”.
Step 1
State how many frames are to be generated during this step. By default this number is same as in the N*BURST command. The waveforms are generated as defined on the computer screen.
Step 2
In this dialog you have to state how the waveforms in each channels should be rolled (see ROLL WAVEFORM… command) before entering each consecutive step. The rolling is defined in terms of the number of pulses:
- Negative numbers mean roll left;
- Positive numbers mean roll right;
- Zero means unchanged.
The number of pulses is relative to the previous state. Values in the fields corresponding to channels that are not present in the hardware have no effect.
The rolling refers to channels, not waveforms. Same waveform can be assigned to all channels, but each channel is then treated individually in the script.
In each row you have also to state how many frames are to be generated in the step.
Step 3
The script can be generated once or a 32-bit number of times. Please note the total number of steps in the script shown in this dialog equals one initial step plus the number of rows in the second dialog.
6.2. USING SCRIPT
Each time you press the RUN button (or ctrl-R) all waveforms will be reloaded and the execution of the script will start. It can be terminated by STOP button (ctrl-H).
The Script is a software-based extension to the normal mode of the waveform generator operation and has several important limitations. The two memory banks are no longer updated to hold the same data at all times. Alternatingly one memory bank is used for waveform generation, while the other memory bank is used to perform the waveform rolling in a background in order to prepare the generator for the next step in the script. In this way there is no delay between the steps.
Limitation: it is not possible to update waveform parameters, nor to move the trigger point, during execution of the script. Generally – issuing a command that causes a memory swap in the generator results in incorrect calculation of the waveform roll.
The frequency can be altered by using an external generator.
7. LabVIEW® Core Driver Library
The LabVIEW® Core Driver Library complies with the strict rules imposed by National Instruments. It has been reviewed, accepted and included in the National Instruments legacy instrument driver library at http://www.ni.com/devzone/idnet. The following information is provided on the driver download page:
LabVIEW®: Legacy Instrument Driver
Manufacturer(s): FLC Electronics
Description: Multichannel High Voltage Generator
Model(s): WFG500, WFG600
Interface(s): Serial – VISA is used in the driver API
History: New
Driver version: 1.0
Original Release Date: 08/06/2001
DRIVER AVAILABLE FOR USE IN LABVIEW 6i OR HIGHER
The published driver was written for use with LabVIEW version 6i. It has been converted to LabVIEW 8 and can be opened by any recent versions of LabVIEW. The library applies both to WFG500 and to WFG600 models.
7.1. LCWFG500.LLB CORE LIBRARY CONTENTS
7.1.1. LCWFG500 VI Tree.vi
The library of core driver Virtual Instruments with examples. The VI Tree displays all the user-callable VIs of the instrument driver in an organized table.
7.1.2. LCWFG500 Application.vi
Application example VI that shows how to use the driver VIs in this library. In particular it shows how to request the status and check which channels are available and functioning correctly on your WFG500 generator. It creates suitable arrays for producing a continuous signal such as in a frequency generator, in addition it creates the array for setting the trigger at the first point of the signal. The data will be loaded into the channels that are present. Then it configures the clock to 10 MHz with continuous operation and internal triggering.
7.1.3. LCWFG500 Close.vi
This VI closes the serial port VISA session that was opened using the initialize VI. It should always be called when you want to disconnect from the generator. This frees the serial port for other applications.
7.1.4. LCWFG500 Configure Clock.vi
With this VI you can set up the clock. All commands for controlling the clock are grouped into this vi to obtain a familiar functionality. The clock is configured using three choices and an optional control for setting the software clock period. The possible clock types are [10 MHz, 1 MHz, software clock, external clock]. Possible modes are [continuous, burst, burst and invert]. Possible triggering sources are [internally, externally]. In addition if the software clock was chosen, also its period will be set, otherwise this control will be ignored. Valid values for the software clock period are [1…35] ms with 1 ms resolution. It also sets the general time out of the VISA session depending on the clock type. For the 10 MHz clock the maximum time that can be generated is about 40261 ms for the 1 MHz clock this is about 402608 ms. For the software clock this ranges from 1 to 35 times 402608129 ms. These values are set as general time out when configuring the clock. For the external clock a value of 402608129 ms is set, corresponding to a 1 kHz or higher clock, if a clock lower than 1 kHz is used you should set the time out manually after calling this VI with an attribute node.
7.1.5. LCWFG500 Delete Range.vi
Using this VI you can delete a range of pulses from the waveforms stored in the generator channels. All channels and the timing are affected. In order to specify the range you chose the start address [1…12287] and the number of pulses (Pulse count) [1…12287] in the range. The start address is given as a pulse number where 1 represents the first pulse. The range includes the pulse at the start address.
7.1.6. LCWFG500 Error Message.vi
This VI will report if an error is set in the error cluster. It contain all possible error byte codes that generate a warning, the error code for the error “Ready query failed” and the warning code for “Generator not ready to accept run”. In all cases of a warning, the communication with the generator has not been endangered. Only errors coming from VISA operations and the “Ready query failed” error will disable communication with the generator. Use this VI especially during debugging of your VIs.
7.1.7. LCWFG500 Error Query.vi
This is a mandatory utility VI for instrument drivers. However the WFG500 generator does not support an error query as such, instead it returns an error byte after most commands. All VI’s that have to deal with this error byte will do so and place a warning in the error out cluster if necessary. You can read the warnings directly in the source string from the error cluster or you can call the Error Message VI to display them in a window. Calling this VI will place the
“Error query not supported” warning in the error cluster. This VI is only added to comply to National Instruments’ strict standards for inclusion of this driver into the IDL (Instrument Driver Library).
7.1.8. LCWFG500 Frequency Generator.vi
This is a soft panel example which simulates an interactive frequency generator using the WFG500. Connect the generator to a serial port and select that port’s number in the front panel, then start the program. Click UPDATE to send the desired waveform to the generator. When this is done the generator should be ready to run, click RUN. Connect an oscilloscope to one of the channels and connect the external trigger input of the oscilloscope to the trigger output of the generator, select external triggering on the oscilloscope. If you now change the phase of the waveform in the cluster and click UPDATE you will see the waveform roll left or right. This is because the application VI also sets a trigger point at the first point of the waveform. Click STOP to stop signal generation on the generator. Click END PROGRAM to end this example VI.
7.1.9. LCWFG500 Getting Started.vi
This VI shows how to use the Application VI and other driver VI’s in this library. When running, it first initializes the serial port, configures the clock, calls the Application VI which will send a waveform to the generator (see LCWFG500 Application.vi for more information) and sends the run command. It finishes by calling the Error Query VI, the Error Message VI and then closes the VISA session on the serial port.
7.1.10. LCWFG500 Initialize.vi
This VI will initialize the serial port you have specified in the instrument descriptor, you can reset the generator by wiring true to the reset input. An identification query is not supported by the WFG500 and setting this input to true will set the “ID Query not supported” warning in the error cluster. This VI sets all necessary serial parameters.
7.1.11. LCWFG500 Insert Range.vi
Using this VI you can insert a range of pulses into the waveforms stored in the generator channels. All channels and the timing are affected. You chose the before address [1…12287] and the number of pulses (Pulse count) [1…12287] in the range. The address is given as a pulse number where 1 represents the first pulse. The pulses are inserted before the specified address.
7.1.12. LCWFG500 Invert Amplitudes In Range.vi
With this VI you can invert the amplitudes of a range of pulses stored in the generator. In order to specify the range you chose the start address and the number of pulses (Pulse count) [1…12287] in the range. The start address [1…12287] is given as a pulse number where 1 represents the first pulse. The range includes the pulse at the start address. In addition to the range you have to specify the channel byte, this is a number which represents the binary translation of the eight possible channels, a `true’ will address that channel, e.g 1 (00000001) selects channel 1 only, 9 (00001001) selects channel 4 and 1 etc. If you set the Pulse count to -1, all pulses in the waveform will be inverted.
7.1.13. LCWFG500 Reset.vi
This utility VI will execute a remote reset of the generator. The default setup is sent after resetting.
7.1.14. LCWFG500 Revision Query.vi
This VI queries the current instrument firmware revision and instrument driver revision.
This Instrument Driver’s Revision number is “Rev 1.0, May 2001, LV 6.0.2″ and is compatible with Instrument Firmware Revision 128. (WFG500 high voltage waveform generator) Created By: FLC Electronics Release Date: May 2001 Originally Developed in LabVIEW Version: 6.0.2 Originally Developed in Firmware Revision: 128
7.1.15. LCWFG500 Roll Waveform.vi
With this VI you can roll waveforms stored in the generator over a specified amount of steps (pulses). You specify the Direction [F: left (default), T: right], and the amount of steps in Step count [1…12287]. You also need to specify the channel byte, this is a number which represents the binary translation of the eight possible channels, a `true’ will address that channel, e.g 2 (00000010) selects channel 2 only, 131 (10000011) selects channel 8, 2 and 1 etc. Only the selected channels will be affected.
7.1.16. LCWFG500 Run.vi
This VI will issue a run command to the generator if it is ready to run and not already running. If the “Generator was not ready to accept run” (e.g. not enough or no data stored) then this warning will appear in the error cluster. The actual state of the generator is returned through the output “running”.
7.1.17. LCWFG500 Self Test.vi
This is a mandatory utility VI for instrument drivers. However the WFG500 generator does not support a self test command. The WFG500 always performs a self test at startup. Calling this VI will place the “Self test not supported” warning in the error cluster. This VI is only added to comply to National Instruments’ strict standards for inclusion of this driver into the IDL (Instrument Driver Library).
7.1.18. LCWFG500 Send Data.vi
This is a VI which takes care for sending entire waveforms, timing, c-bit information and trigger information to the generator. Timing is passed to this VI as a 1D array where each element represents a pulse and its value [2…32767] is the length of that pulse in basic clock units, e.g. 1 μs for 1 MHz clock or 0.05 μs for 20 MHz clock. Together with the array containing the trigger information the correct string is distilled and sent to the generator, the same goes for the 2D array Waveforms together with the 2D C-bits array and the 1D Channels array. If the Trigger array contains less elements than the Timing array it will be filled up with extra `false’ (no trigger) elements, when it contains more elements it will be truncated to the length [1…12287] of Timing. The same applies to the C-bits array with the Waveforms array whose data values represent voltages [-100…100] with 0.05 V resolution. The Channels array should have the same size as the size along the first index of the Waveforms array, i.e. number of waveforms. If it contains more elements it will be truncated, if it contains less elements it becomes dominant and only those waveforms with a corresponding element in the channels array will be sent. Valid values for elements of the Channels array are numbers that represents the binary translation of the eight possible channels, a `true’ will address that channel, e.g 16 (00010000) selects channel 5 only, 7 (00000111) selects channel 1, 2 and 3 together, etc. Only the selected channels will be affected. The correct interpretation of the indices of both Waveforms and C-bits arrays are: first index equals number of waveforms [1…8], second index equals number of pulses [1…12287]. You should take care that the number of pulses is equal to the size of the Timing array otherwise incorrect rendering of the waveforms on the generator may occur. If you leave the Trigger array unwired or empty no trigger point will be set, if you leave C-bits unwired or empty no c-bit will be set. If you leave Timing unwired or empty no timing data including triggers will be sent. If you leave Waveforms unwired or empty than no waveform data including c-bits will be sent. On the other hand if you leave Channels unwired the VI will send waveforms to individual channels starting from 1 up to eight provided that Waveforms is not empty. You should reconfigure the clock after calling this VI if the generator was running. When the generator is running, the amount of data that can be sent is reduced. The actual amount that can be sent is about 7000 individual pulses if only one waveform and timing is sent. If you need to sent more data you should first stop the generator and set it to run after loading all the data.
7.1.19. LCWFG500 Send Multiple Times.vi
This VI allows you to change time values and triggers of the timing data which is already stored in the generator. You specify arrays containing addresses, time values in basic clock units [2…32767] and trigger data. The address is given as a pulse number, 1 being the first pulse [1…12287]. You should take care that all arrays have the same size, however in the case that the trigger array contains less elements it will be filled up with extra `false’ (no trigger) elements. If Addresses or Times contains less elements it will become dominant, and only those pulses with complete data will be sent starting from the first elements in the arrays.
7.1.20. LCWFG500 Send Multiple Voltages.vi
This VI allows you to change Voltage values and triggers of the timing data which is already stored in the generator. You specify arrays containing addresses, voltages [-100…100], c-bit data and channel data. The address is given as a pulse number, 1 being the first pulse [1…12287]. You should take care that all arrays have the same size, however in the case that the C-bits array contains less elements it will be filled up with extra false’ (no trigger) elements. If Addresses, Voltages or Channels contains less elements it will become dominant, and only those pulses with complete data will be sent starting from the first elements in the arrays. A valid element of the Channels array is a number that represents the binary translation of the eight possible channels, atrue’ will address that channel, e.g 4 (00000100) selects channel 3 only, 192 (11000000) selects channel 8 and 7 etc. Only the selected channels will be affected.
7.1.21. LCWFG500 Send One Time.vi
With this VI you can change the timing of one pulse. You specify an address given as a pulse number, 1 being the first pulse [1…12287], the Time value [2…32767] is given in basic clock units. The Trigger can be set by setting this input to `true’.
7.1.22. LCWFG500 Send One Voltage.vi
With this VI you can change the Voltage of one pulse. You specify an address given as a pulse number, 1 being the first pulse [1…12287], the Voltage value [-100…100] has a resolution of 0.05 V. The C-bit can be set by setting this input true’. In addition you specify the Channel, a valid value is a number that represents the binary translation of the eight possible channels, atrue’ will address that channel, e.g 8 (00001000) selects channel 4 only, 96 (01100000) selects channel 7 and 6 etc. Only the selected channels will be affected.
7.1.23. LCWFG500 Set Range To Zero.vi
With this VI you can set the amplitudes of a range of pulses stored in the generator to zero voltage. In order to specify the range you chose the start address and the number of pulses (Pulse count) [1…12287] in the range. The start address [1…12287] is given as a pulse number where 1 represents the first pulse. The range includes the pulse at the start address. In addition to the range you have to specify the channel byte, this is a number which represents the binary translation of the eight possible channels, a `true’ will address that channel, e.g 32 (00100000) selects channel 6 only, 18 (00010010) selects channel 5 and 2 etc.
7.1.24. LCWFG500 Status Request.vi
This VI reads the current status of the generator and returns it in a cluster. You can select each property by unbundling the status cluster by name and selecting what you desire. A description of the status bytes can be found in the WFG500 manual. Some bytes have been translated to useful values and are accessed as such.
7.1.25. LCWFG500 Stop.vi
This VI will issue a stop command to the generator if it is running. The actual state of the generator is returned through the output “running” (false in this case means it is stopped or running out the waveform for the last time).
7.2. LCWFG500U.LLB UTILITY LIBRARY CONTENTS
7.2.1. LCWFG500 Utility Error Byte Test.vi
This Utility VI interprets the error byte returned by most commands and takes appropriate action to set a warning in the error cluster if necessary.
This VI is called only from VIs in the LCWFG500 driver library, and is not meant to be altered. Changing this VI can cause those VIs to operate improperly.
7.2.2. LCWFG500 Utility Clean Up Initialize.vi
This Utility VI closes any open VISA sessions in the event that there is an error during an initialization.
This VI is called only from VIs in the LCWFG500 driver library, and is not meant to be altered. Changing this VI can cause those VIs to operate improperly.
7.2.3. LCWFG500 Utility Default Instrument Setup.vi
This Utility VI sends the default command string to the generator whenever a new VISA session is opened, or the generator is reset.
This VI is called only from VIs in the LCWFG500 driver library, and is not meant to be altered. Changing this VI can cause those VIs to operate improperly.
7.2.4. LCWFG500 Utility Ready Query.vi
This VI performs a ready query on the generator to see if it is ready t accept data. This is necessary if long waveforms are used as the generator can be busy for a long time. If the generator returns that the status command was expected this is send and the “Status command was expected” warning is set in the error cluster and the query is renewed. If the generator does not respond within the time out the “Ready query failed” error is set in the error cluster and all further communication is suspended. The time out is dependent on the clock type and is therefore set by the configure clock VI.
This VI is called only from VIs in the LCWFG500 driver library, and is not meant to be altered. Changing this VI can cause those VIs to operate improperly.
8. LabVIEW® Toolbox Library
The driver library that was previously released and is still useful for people running LabVIEW version 5.1.1 on a Macintosh, has now evolved into a toolbox addition to the core driver. The VIs in this toolbox build on the core driver library for all communication with the waveform generator. The VIs in the toolbox are backward compatible with those introduced in the previous driver release. It is recommended to visit pendulum-instruments.com before starting the work on your own application to assure that you are using the most recent release.
8.1. COMPATIBILITY AND PLATFORM ISSUES
The toolbox is composed for use with LabVIEW version 6.0.2 and is now recompiled for LabVIEW version 8 compatible with present software revisions.
In order to take advantage of all the toolbox VIs you also need the core driver, you can install them together as one package. The VIs in the toolbox are backward compatible with the previous release, however those VIs that no longer serve any purpose or whose functionality has been taken over by the core driver have been removed.
The following were removed as they are no longer necessary:
- FLCWFG Build Timing String.vi
- FLCWFG Build Waveform String.vi
- FLCWFG End Data Transfer.vi
- FLCWFG Log Global.vi
- FLCWFG T-Data To Word.vi
- FLCWFG V-Data To Word.vi
- FLCWFG Write & Read.vi
- FLCWFG Write To Log.vi
- FLCWFG PREF_U.llb
The functions of the following VIs are available in the core driver:
- FLCWFG Burst and Invert All.vi (LCWFG500 Configure Clock.vi)
- FLCWFG Clock Setup.vi (LCWFG500 Configure Clock.vi)
- FLCWFG Close.vi (LCWFG500 Close.vi)
- FLCWFG Errorcode Interpretation.vi (LCWFG500 Error Message.vi)
- FLCWFG Initialize.vi (LCWFG500 Initialize.vi)
- FLCWFG Normal Burst.vi (LCWFG500 Configure Clock.vi)
- FLCWFG Ready Querry.vi (LCWFG500 Utility Ready Query.vi)
- FLCWFG Reset.vi (LCWFG500 Reset.vi)
- FLCWFG Run.vi (LCWFG500 Run.vi)
- FLCWFG Set Software Clock.vi (LCWFG500 Configure Clock.vi)
- FLCWFG Status Request.vi (LCWFG500 Status Request.vi)
- FLCWFG Stop.vi (LCWFG500 Stop.vi)
8.2. INSTALLATION OF THE DRIVER PACKAGE
First shut down LabVIEW if it is running.
If you have already installed the core driver, remove first all personal VIs that you have added to the folder LCWFG500 and store them in a safe place (e. g. move them to the user library, user.lib). Now delete the folder LCWFG500.
Proceed by copying or moving the folder LCWFG500 (which also contains the folder toolbox) to the instrument library (instr.lib) of your copy of LabVIEW.
If you so whish you can now move your personal VIs back to the folder FLCWFG500, however we recommend you do not store any personal VIs in the driver folder.
Once you restart LabVIEW a menu will be created in the instrument library pallet as well as all submenus.
Before you start working with the drivers for the first time, chose mass compile from the file menu and select the folder you just installed.
That’s all.
8.3. BASIC IDEA BEHIND THE DRIVER SET
Creating modular programs such as subvi’s is something entirely different from creating a stand alone program such as that delivered with your WFG 500. Extreme care has been taken to make all VIs robust but at the same time execution speed has been an important factor. The communication with the waveform generator is based on the VISA system.
As for handling the data in LabVIEW the best way to represent a waveform is in a two dimensional array. In this way one immediately avoids the chance that individual waveforms and timing contain different amounts of data. Another important issue is that one should work with the ‘real’ values, that is true times, e.g. microseconds, and true voltages. A number of VIs are included that perform conversion of the data to and from this format as well as VIs which provide easy tools to handle the data.
This version of the drivers does not yet support the use of couplings. When you import data from a file the couplings will be ignored.
8.4. GETTING STARTED
The first thing is to open the communication channel with the generator, that is initialize the LCWFG500 Initialize.vi and setting the appropriate parameters. The layout of a basic program is shown in the figure below.
The error handler contains only ‘serious errors’ that means those that will endanger the communication. Most errors that occur during operation are soft-solved and will not interfere with your program, that is if you do not specifically want them to change your program flow.
After you have decided to quit the program you must close the VISA session of the serial port.
You can control more than one generator from the same LabVIEW program. All you have to do is initialize two (or more) serial ports and separate the operations with them.
8.5. IMPORTING DATA FROM FILES
The VI library contains a file filter FLCWFG File Filter.vi which extracts all relevant information from files created with the normal WFG programs on Mac and PC, however the current version does not extract the coupling data. Most users have no use for all of this information in a LabVIEW program, therefore a translator is provided, FLCWFG File Data Translator.vi that will create a cluster containing all necessary information for handling the waveforms. It is such a cluster which is “send ready”, that is all information to unambiguously send the data to the generator. As mentioned above, the best way to handle the real data is in a 2D array, FLCWFG Unmold Data.vi does just this starting from the full data cluster.
Once you have a 2D array you are ready to perform all sorts of operations on it. In addition to the data array, an array containing all trigger-bit and control-bit information with the same dimension as the data array is available as well as arrays containing the waveform names and there channel data and the time unit used for these waveforms, e.g. 0,1 μs for the 10 MHz clock.
The data array is structured as rows, that is the first row (first index=0) contains the timing data in microseconds, all subsequent rows contain the voltage data of a waveform. The above layout of the data array makes it possible to access timing and individual waveforms subsequently by wiring it to a for loop. Should you wish to access a column of pulses simultaneously you can first transpose the array and then wire it to a for loop. To view the data in a graph use FLCWFG Build Graph Data.vi to obtain the correct LabVIEW format for graphs, set the graph to ‘square interpolation’ with the jump on the fist point (or copy it from the VI).
8.6. HANDLING WAVEFORM DATA
One of the major differences with working with the 2D arrays and the full data clusters is that the timing is in true values. We recommend that you use microseconds throughout your programs and convert appropriately when desired. In doing so one will encounter situations where a pulse as entered in the 2D array can no longer be represented by a single slot on the generator. As an example consider that you have selected the 10MHz clock and want to create a pulse of 5 ms that is 50000 clock units, then one needs to split this pulse into two slots. As a user you do not want to be bothered with this and hence FLCWFG Partition Raw data.vi does the job for you.
A situation as described above can appear quite easily when you scale timing data, which can be done with FLCWFG Scale Data.vi. This VI takes a set of scaling factors and changes the 2D data accordingly, but be sure to partition the data before you mold it back into a full data cluster which is needed for downloading operations.
8.7. LOADING WAVEFORMS INTO THE GENERATOR
Once you have composed a full data cluster ready to send, you use FLCWFG Download Wavefroms.vi to get them into the generator. Everything will be taken care of to get all information into the generator, including timing. An important part of the information is the assignment of the channels to which each waveform should be written. This is an array of integer elements of a size equal to the amount of waveforms. The integer itself is a translation of the bit pattern to a number. This means that you add powers of two to control the channels:
- 2 (binary 00000010) means channel 2,
- 3 (binary 00000011) means channel 1 and 2,
- 4 (binary 00000100) means only channel 3
- etc.
A lot can happen when you handle data and related information, therefore one should be careful when making changes. A dedicated VI is included to perform a standard check of the waveform cluster. FLCWFG Check Waveforms.vi will also warn you when actions have been taken to correct errors or will prompt you for setting the channel data.
If you already feel more comfortable, take a look at the vi LCWFG500 Send Data.vi which provides even more possibilities. The vi FLCWFG Download Waveforms.vi is based on this core driver vi.
As of LabVIEW version 6, National Instruments has introduced a new data type called VISA Resource Name, which replaces the VISA descriptor strings. When you insert such a control into a subvi, you can directly select the eligible port for communication. The figure below shows a call chain for initalizing, sending and closing.
For running and stopping the waveforms one just calls the subvi’s LWFG500 Run.vi and LCWG500 Stop.vi respectively.
Setting the clock is usually done during the download action when the VI decides from the time unit which clock should be set. You can change all the clock settings using the VI LCWFG500 Configure Clock.vi located in the core driver.
As a default the run mode is set to continuous and internal triggering, using the configure clock VI one can change the triggering or run mode.
8.8. APPLICATION EXAMPLES
8.8.1. FLCWFG Waveform Player.vi
FLCWFG Waveform Player.vi is a program that enables you to open a file created with a normal WFG500 program (Mac or PC), send it to the generator, run it and rescale timing and waveform amplitudes.
8.8.2. FLCWFG Frequency Generator.vi
FLCWFG Frequency Generator.vi is a much more elaborate program. It simulates a frequency/phase generator using the WFG 500. Before it runs it checks which channels are available. You will see a green indicator above those channels. For each channel you can select the desired waveform such as sine, triangle, square etc. and its parameters. The frequency is set on the Timing panel together with the number of samples you wish to use. Keep in mind that larger amounts of samples not only take longer time to generate, but also to send. As all channels have a common time base, the frequency difference between them must be an integral number. You can set this using the frequency factor of each channel. Next, you can control all amplitudes separately, as well as the phase and offset. The duty cycle control works with the square wave only. A trigger point is set at the beginning of the base period. The button Propose will give you the best approximation of the desired timing. To send the information to the generator click the button Update. Should you want to see the data in a graph click Scope on.
8.8.3. FLCWFG Waveform Editor.vi
FLCWFG Waveform Editor.vi is a rather elaborate program. It allows for selecting pulses on a graph using a mouse. If you click a pulse it will be selected and show up red. If you click and drag you can select a range of pulses. When you hold down shift and then click a pulse you add the just selected pulse to the already existing selection, shift click drag adds a range of pulses. If you shift click an already selected pulse it will be removed from the selection. Clicking left from the voltage axis will deselect all. The amplitude and time controls contain the total time of the waveform and the maximum amplitude encountered in it if scale is set to “Waveform”. If you chose “selection” for scale, then the value of the first pulse in the selection will be visible. Changing anything in these two controls will immediately scale either the entire waveform or just the selection. To the left of the scaling section you find stepper control buttons. The individual step sizes are listed to the left of the stepper buttons and can be altered at your convenience. An extra option is included to allow for symmetric stepping, this is similar to scaling but will reduce or increase the amplitude by the step value. If this option is off, then the step value is just added or subtracted from the voltage data. To find the trigger positions click Show Trigger Points, to find c-bit positions in the current waveform click Show C-bits. To set the trigger points over the entire selection on the graph click Set Trigger Points, and similarly, if you which to set the c-bits click Set C-bits.
In order to send anything to the generator you must first connect to it, so click Connect. If you are connected, then the button shows Disconnect and the buttons Send All, Run and Stop are enabled. If this is not the case then an error has occurred during connecting. To end the program click Stop. Any changes you make will immediately be send to the generator, in this way you can easily optimize time and voltage settings for individual pulses.
Scroll the window left to find controls to change the graph settings; these include the maximum amplitude shown in the graph, the time zoom and the time scroll.
8.9. ALPHABETIC INDEX
8.9.1. FLCWFG Add At Index.vi
This vi will increment all data points at the index selection positions with the add step value. To select timing wire 0 to the “timing/waveform” control, another value represents the subsequent rows of waveforms in the data array. When the option “symmetric adding?” is true, the vi will add the step when the data is positive and subtract it when it is negative. This allows for setting the “amplitude” of the selected pulses as in a frequency generator, no additional offset will be created.
8.9.2. FLCWFG Assign Channels.vi
This vi opens a pop-up panel in which you must assign each available channel a waveform or action. The vi probes automatically which channels are available on the generator connected to the VISA reference.
The input array of strings “Waveform name(s)” is in principle unlimited. This means that you can not only pass the physical waveforms themselves, but also actions related to that string. The output “channel data” contains as much elements as the “waveform name(s)” input. If elements are added for actions, e.g. as is or set zero, this must be detected afterwards and these elements should be removed from the “channel data” before they are replaced in the waveform cluster.
The input “Channels” can be used to preload a choice of the channels. If the given channel array is non-unique (e.g. a channel is assigned twice or more) the last in order will be pre-loaded.
8.9.3. FLCWFG Build Graph Data.vi
This vi prepares the data in such a way that it can be displayed in an xy-graph. An extra (0,0) element is added to each waveform in order to be able to show the data in the graph in a correct manner. The interpolation style of the plot should be set to “squaring” with the transition on the first point (or just choose “create indicator” when you wire the output of this vi).
8.9.4. FLCWFG Build Picture Data.vi
Starting from the array “Data”, this vi will create the necessary output to create a plot of the waveforms such that it can be build up with line segments in a picture.
8.9.5. FLCWFG Clock Pop Up.vi
This vi is a pop up window that may be called to set the time unit. The “FLCWFG Waveform Check.vi” calls this window if the data contains an incorrect time unit.
8.9.6. FLCWFG Download Waveforms.vi
This vi uses the vis contained in the Core Library LCWFG500.llb to send the data to the waveform generator. The cluster full data contains all necessary information about waveforms and timing. What actually is sent to the generator can be controlled with the boolean array “Send?”. It should contain the number off wavefroms+1 elements. The first element of that array controls the timing. If an element is true the corresponding waveform (or timing) will be sent. If it is left unwired the timing and the first eight waveforms will be sent.
This vi actually translates functionality already available in the Core Library but is added here to ensure compatibility with previous posted beta-versions and examples therein.
8.9.7. FLCWFG File Data Translator.vi
This vi translates data obtained from a file to a convenient LabView cluster. This version (October 2000) does not yet contain the coupling data, it will be added as a separate cluster in a later version.
If the file indicates that the software clock must be used, the data in “reserved 1″ contains the time unit in microseconds [1000..35000]. If this is 0, a pop up window will appear prompting you to enter the value of the time unit.
8.9.8. FLCWFG File Export.vi
This vi exports a full data cluster to a wfg-file which can be read by the other programs. Data which is not relevant in LabView has been set to a default value. If you replace an existing file then all coupling data will be lost as the current version does not yet support couplings.
8.9.9. FLCWFG File Filter.vi
This vi opens and translates a file created with the FLC Electronics program for the WFG waveform generator. The output is a cluster containing all necessary data for reconstruction. Translation of the coupling data will be added in later versions.
8.9.10. FLCWFG Find Index by Time.vi
This vi finds the index (column in the array “Data”) of the pulse which is active at a given time.
8.9.11. FLCWFG Frequency generator.vi
This is an application program that simulates a frequency/phase generator.
8.9.12. FLCWFG Make Picture.vi
This vi constructs a picture of the supplied “Data” which may be viewed in a picture indicator. It also supplies “origin” and “scale” data which can be used for on-picture editing.
8.9.13. FLCWFG Mold Data.vi
This vi takes correct unitized and partitioned data and reshapes it into a full data cluster which can be used directly for sending to the generator. (use “FLCWFG Partion Raw Data.vi” to convert raw data into a suitable format for the WFG 500)
8.9.14. FLCWFG Mouse Position to VT.vi
This vi calculates from a set of inputs (such as the mouse pointer position in a picture, the origin of the axes system and the scale of the drawn waveform in a picture) what the time and the voltage level of the indicated point are inside the waveform.
8.9.15. FLCWFG Partition Raw Data.vi
This vi “partitions” raw data into a useful form for the FLCWFG 500. It creates slots with unitized timing values based on the “time unit” (in microseconds) input. This means that the data contains true time values in microseconds. The vi evaluates if extra slots need to be inserted to obtain the true time if the waveform is to be downloaded into the generator. If a slot would contain 1 unit it is automatically set to two units as this is the minimum requirement. If it would contain no unit (or set to zero time) it is simply erased from the data. The timing data is contained in the first row of the data array. All other rows represent individual waveforms by their voltage data.
8.9.16. FLCWFG Pop Up Time Unit.vi
This is a pop up window which queries the user to input a time unit for the software clock. It is called by “FLCWFG File Data Translator.vi”.
You should normally have no need to use this VI directly, as it is called by higher level VIs.
8.9.17. FLCWFG Scale At Index.vi
This vi will scale all data points at the index selection positions with the scale factor. To select timing wire 0 to the “timing/waveform” control, another value represent the subsequent rows of waveforms in the data array.
8.9.18. FLCWFG Scale Data.vi
This vi will scale data. It will scale time regardless of the clock setting and it can therefore deliver time data which is not executable with the current clock setting. Use “FLCWFG Partition Raw data.vi” to alleviate this problem using another clock setting. Also the voltage data may exceed 100 V which can not physically be produced by the WFG 500, values higher then 100 V amplitude will be sent as 100 V amplitude.
8.9.19. FLCWFG Scale Waveforms Pop Up.vi
This vi is used as a pop up window. The user can choose the scale settings at will starting from the current (TRUE!) maximum amplitudes of the waveforms and by the total time of the waveforms.
8.9.20. FLCWFG Set At Index.vi
This vi will set the trigger or c-bit in a trigger/c-bit data array at the selected indices of either timing or a waveform. If the option “add?” is true existing triggers will remain in the array, otherwise triggers will only be set at the index positions.
8.9.21. FLCWFG Unmold Data.vi
This vi takes data from a full data cluster (as obtained from the file translator) and transforms it into easy to use arrays in LabView. The data is contained in a two dimensional array with the first row the timing data in microseconds and all other rows representing the amplitude data of a waveform in volts. The same data layout is used in the array containing trigger/c-bit data.
8.9.22. FLCWFG Waveform Check.vi
This vi will perform a set of test to ensure that the waveforms make sense. Appropriate actions will be taken to correct errors.
IT IS RECOMENDED THAT YOU USE THIS VI EACH TIME BEFORE DOWNLOADING THE WAVEFORMS.
8.9.23. FLCWFG Waveform Editor.vi
This is an application example that enables you to make selections on a graph, scale and step values dynamically and set trigger or c-bit information.
8.9.24. FLCWFG Waveform Player.vi
This is an application example with which you can open a file, scale it and send it to the generator.
9. Windows Shortcuts
In addition to control-key sequences shown next to menu items there exist following shortcuts.
9.1. MOUSE
Left click in | Modifier | Action |
Superposition display | select a pulse | |
Superposition display | Alt | select a sequence between markers (vertical lines) |
Waveform A display | select waveform A, drag pulse amplitude (even values of amplitude units) | |
Waveform B display | select waveform B, drag pulse amplitude (even values of amplitude units) | |
Timing display | drag pulse width or move boundary (according to preferences) | |
Left margin | select waveform A or B, select superposition mode (A-B or B-A) | |
max-amplitude display | type the value for the waveform amplitude | |
max-amplitude arrow icon | increase or decrease the value | |
slot-width display | type new width of the selected slot (and rescale the waveform timing accordingly if in “waveform scaling” mode) | |
slot-width arrow icon | increase or decrease by 1 unit the width of the selected slot (and rescale the waveform timing accordingly, if in “scaling” mode) | |
icon above slot- width display | change mode (“waveform scaling” or “one pulse only”) | |
waveform pop-up menu | choose the waveform to appear in corresponding display area | |
amplitude units pop- up menu | choose between arbitrary units (default) and volts, the superposition display will adjust accordingly and change color: dark red – units, green – volts | |
time units pop-up menu | choose between arbitrary units (default), μs and ms | |
Waveform A or Waveform B display | Alt | drag pulse boundary or pulse width (opposite action to the setting chosen in the Timing menu) |
Superposition display | Shift | extend pulse selection |
Waveform A or Waveform B display | drag pulse width or pulse boundary (according to the setting chosen in the Timing menu) |
9.2. KEYBOARD
Key | Modifier | Action |
space | set/remove trigger point | |
Left / right arrow | move pulse selection left and right | |
Up / down arrow | changes the waveform selection (A or B) | |
Left / right arrow | Control | jump with trigger between marked pulses |
Left / right arrow | Control-Alt | roll waveform |
Left / right arrow | Shift-Control-Alt | roll selection |
10. Macintosh Shortcuts
In addition to the command-key sequences shown next to menu items there exist shortcuts listed in the tables below. The modifier keys – Command, Option, Control, Shift – are named according to the Macintosh style.
10.1. MOUSE
Click in | Modifier | Action |
Superposition display | select a pulse | |
Superposition display | Option | select a sequence between markers (drawn as vertical lines; markers must be visible) |
Superposition display | Shift | define the end of the sequence selection |
Superposition display | Command | invoke dialog to type in pulse data |
Waveform A display | select waveform A, drag pulse amplitude (even values of amplitude units) | |
Waveform A display | Option | select waveform A, drag pulse amplitude (odd values of amplitude units) |
Waveform A display | Command | invoke dialog to type in pulse data |
Waveform A display | Shift | define the end of the sequence selection |
Waveform B display | select waveform B, drag pulse amplitude (even values of amplitude units) | |
Waveform B display | Option | select waveform B, drag pulse amplitude (odd values of amplitude units) |
Waveform B display | Command | invoke dialog to type in pulse data |
Waveform B display | Shift | define the end of the sequence selection |
Timing display | drag pulse width or move boundary (according to preferences) | |
Timing display | Option | drag pulse width or move boundary (opposite to what is set in the preferences) |
Timing display | Command | set/remove trigger point |
Timing display | Shift | define the end of the sequence selection |
Left margin | select waveform A or B, select superposition mode (A-B or B-A) | |
Max-amplitude display | invoke the “Waveform amplitude” dialog | |
Max-amplitude arrow icon | increase or decrease the value by 1V; keep pressed to roll | |
Max-amplitude arrow icon | Option | increase or decrease the value by 0.05V; keep pressed to roll |
Slot-width display | type new width of the selected slot (and rescale the waveform timing accordingly if in “Waveform scaling” mode) | |
Slot-width display | Command | type new width of the selected slot in opposite mode to what is currently set |
Slot-width arrow icon | increase or decrease by 10 units the width of the selected slot (and rescale the waveform timing accordingly, if in “Scaling” mode); corresponds to 1μs step with 10MHz clock | |
Slot-width arrow icon | Option | increase or decrease by 1 unit the width of the selected slot (and rescale the waveform timing accordingly, if in “Scaling” mode); corresponds to 0.1μs step with 10MHz clock |
Icon above slot- width display | change mode (“Waveform scaling” or “One pulse only”) | |
DC-offset display | if dimmed: calculate and show the current value | |
Waveform pop-up menu | choose the waveform to appear in the corresponding display area | |
Amplitude units pop-up menu | choose between arbitrary units (default) and volts, the superposition display will adjust accordingly and change color | |
Time units pop-up menu | choose between μs (default), ms and arbitrary units |
10.2. KEYBOARD
Key | Modifier | Action |
space | set/remove trigger point | |
Up / down arrow | changes the waveform selection (A or B) | |
Left / right arrow | move pulse selection left and right | |
Left / right arrow | Option | move trigger point |
Left / right arrow | Control | jump with trigger between marked pulses |
Left / right arrow | Command | Scroll to first/last pulse |
Left / right arrow | Control-Option | roll waveform; invokes a dialog only when used for the first time |
Left / right arrow | Shift-Control-Option | roll selection; invokes a dialog only when used for the first time |
11. Communication Protocol
The serial communication between a computer and the Waveform Generator WFG600 is based on specially designed protocol and does not use hardware nor XON/XOFF handshake.
WFG600 always echoes all characters it receives and appends an Error Code (1 byte; noErrror = 0) at the end of its transmission. The only exceptions are:
- status request,
- short status request,
- ’Q’ command,
- RESET command.
The commands are ASCII characters, repeated twice to avoid misunderstanding. All other data is transmitted in the binary form.
This Appendix lists the basic set of commands that is supported in all versions of hardware and software. Please contact Pendulum Instruments for the list of additional commands and compressed data transfer protocols included in the revision 5 (or higher) of the controller.
11.1. SPECIAL COMMANDS
11.1.1. Status
Direction | Data | Description |
Tx transmit | ‘TT’ | ASCII character ‘T’ repeated twice |
Rx receive | ‘TT’ + 10 status bytes | see the description of the status record total number of bytes to receive: 12 bytes |
11.1.2. Short status
Direction | Data | Description |
Tx | ‘??’ | |
Rx | byte1 byte2 | State (see the description of the State record) ErrCode total number of bytes to receive: 2 bytes (’??’ not echoed!): |
11.1.3. Ready for communication?
Direction | Data | Description |
Tx | ‘Q’ | once only! |
Rx | ’Q’ ’T’ ’E’ ’Y’ or none | one of the following: ok to communicate expecting the status (’T’) command error, send ’T’ to cancel error flag busy |
11.1.4. Reset the generator
Direction | Data | Description |
Tx | ’PP’ | |
Rx | none |
11.2. COMMANDS NOT CONTAINING DATA
run | R |
stop | S |
normal burst | G |
burst and invert all waveforms | B |
end of data transfer | F (ends L, W, M commands) |
11.2.1. Example
Direction | Data | Description |
Tx | ‘R’ ‘R’ | send 2 bytes |
Rx | ‘R’ ‘R’ ErrCode | receive 3 bytes |
11.3. COMMANDS CONTAINING DATA
11.3.1. Download all at STOP
Tx Data | Size | Description |
‘L’ | byte | ASCII character ‘L’ |
‘L’ | byte (repeated) | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte (repeated) | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
count | word | = number of data words to follow; HiAddr = count-1 |
data | word | |
data | word | |
…… | words | |
undefined length (at least 8 bytes) |
Download one by one (timing and all waveforms) and then send ‘F’ command.
11.3.2. Download waveform(s) at RUN
Tx Data | Size | Description |
‘W’ | byte | |
‘W’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
count | word | = number of data words to follow; HiAddr = count-1 |
data | word | |
data | word | |
…… | words | |
undefined length (at least 8 bytes) |
Download one by one (timing and all waveforms) and then send ‘F’ command.
For large number of data to be sent (>24k) stop the generator first, download and restart.
11.3.3. Send one data value
Tx Data | Size | Description |
‘D’ | byte | |
‘D’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
address | word | defined as offset from memory start as: (pulse number)*2-2 |
data | word | amplitude or pulse-width |
undefined length (at least 8 bytes) |
11.3.4. Multiple send 1 data value
Tx Data | Size | Description |
‘M’ | byte | |
‘M’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
address | word | defined as offset from memory start as: (pulse number)*2-2 |
data | word | |
undefined length (at least 8 bytes) |
11.3.5. Set software clock
Tx Data | Size | Description |
‘C’ | byte | |
‘C’ | byte | |
data | word | |
undefined length (at least 8 bytes) |
11.3.6. Setup
Tx Data | Size | Description |
‘U’ | byte | |
‘U’ | byte | |
theClock Choice | byte | see Setup codes |
theMode | byte | see Setup codes |
total length of the command: 4 bytes |
11.3.7. Delete range of pulses
Tx Data | Size | Description |
‘X’ | byte | |
‘X’ | byte | |
start address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | |
total length of the command: 6 bytes |
11.3.8. Insert range of pulses
Tx Data | Size | Description |
‘I’ | byte | ASCII character, capital ‘i’ |
‘I’ | byte | |
before address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | |
total length of the command: 6 bytes |
11.3.9. Set amplitudes to zero in the range of pulses
Tx Data | Size | Description |
‘Z’ | byte | ASCII character, capital ‘i’ |
‘Z’ | byte | |
select | byte | designated channels; ‘1’ at bit position selects the channel |
select | byte | b0 = channel1,…,b7 = channel8; all ‘0’ = timing |
start address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | |
total length of the command: 8 bytes |
11.3.10. Roll waveform
Tx Data | Size | Description |
‘O’ | byte | ASCII character, capital ‘o’, not ‘zero’ |
‘O’ | byte | |
select | byte | designated channels; once only |
direction | byte | Boolean; right = TRUE, left = FALSE(0) |
step count | word | |
total length of the command: 6 bytes |
11.3.11. Invert amplitudes of pulse selection in one waveform
Tx Data | Size | Description |
‘V’ | byte | ASCII character, capital ‘o’, not ‘zero’ |
‘V’ | byte | |
select | byte | designated waveform; one at a time only; |
select | byte | designation of timing not allowed |
start address | word | inclusive, defined as offset (see ’D’ cmd) |
pulse count | word | -1 means ’all’ |
total length of the command: 8 bytes |
11.4. STATUS, STATE AND ERROR CODES
11.4.1. Status record
The status record contains 10 bytes.
Byte 1 | Variable | Meaning |
b0 | XCLK | monitors the external clock |
b1 | XTRG | monitors external start/stop signal |
b2 | START | control signal (as placed by the microprocessor) |
b3 | MEM | swap control: =0 CPU accesses RAM1 and scanning counter <-> RAM2, (as placed by the microprocessor) |
b4 | RST | extended reset signal (as placed by the microprocessor) |
b5 | XI | external/internal time-base clock choice (see below) |
b6 | FS | external/internal time-base clock choice (see below) |
b7 | SOFTCK | software generated time-base output |
Byte 2 | Variable | Meaning |
b0…5 | not implemented | |
b6 | CLEAR | monitors the real state of RUN/STOP, =0 running, =1 stopped |
b7 | SWAP | monitors which RAM is being scanned for output (cf. MEM bit above) |
Byte | Content | Description |
Byte 3 | Card Mask | bit b0…7 set if the corresponding output channel is installed and working properly |
Byte 4 | Ready Flag | if <>0 then the generator may accept the RUN command |
Byte 5,6 | HiAddr | highest occupied RAM address |
Byte 7 | model | 2 or 8-channel model |
Byte 8 | decimal value | firmware revision |
Byte 9 | State message | Meaning |
b0 | XCLK | monitors the external clock |
b1 | XTRG | monitors external start/stop signal |
b2 | START | control signal (as placed by the microprocessor) |
b3 | MEM | swap control: =0 CPU accesses RAM1 and scanning counter <-> RAM2, (as placed by the microprocessor) |
b4 | RST | extended reset signal (as placed by the microprocessor) |
b5 | XI | external/internal time-base clock choice (see below) |
b6 | FS | external/internal time-base clock choice (see below) |
b7 | SOFTCK | software generated time-base output |
Byte 10 | Error Code | Meaning |
kNoError | 0 | |
kNotReady | 1 | |
kFramingError | 2 | serial i/f flags, bits 1..3 |
kNoiseFlag | 4 | |
kOverrun | 8 | |
kOverflow | 16 | data or command |
kNotRecognized | 32 | |
kHardwareError | 64 | |
kTimeOutError | 128 |
11.4.2. State codes
Constant | Value | Meaning |
kStopped | 0 | all bits must be 0 |
kRunning | 1 | |
kRunOut | 2 | STOP command received, finishing the waveform |
kWaitSwap | 4 | one memory bank has been updated and WFG is waiting for the end of waveform to swap the memory banks and gain access to the other memory bank |
kBurst | 8 | the single burst mode is selected |
kPanel | 16 | external triggering selected |
kUndefined | 32 | |
kArmed | 64 | ready to run |
kExpectingData | 128 | current communication not completed |
11.4.3. Setup codes
theMode | Hex value | Meaning |
codeBurst | 0x04 | burst / continuous mode |
codePane | 0x08 | enable external triggering |
theClockChoice | Hex value | Meaning |
codeEclock | 0x60 | 20 MHz internal clock |
codeE2clock | 0x20 | 1 MHz internal clock |
codeSoft | 0x40 | software-controlled internal clock (slow) |
codeExt | 0x00 | external clock |