Monday, December 17, 2012

SCPI Example and Tools for the 34970A and 34972A

In this post we will look at a Standard Commands for Programmable Instruments (SCPI) example for controlling Agilent's 34970A / 34972A DAQ / Switch Units remotely. In the example we will remotely monitor a channel and then setup and execute a scan. From there we will look at controlling the 34972A via its built-in web interface and how the web interface can be used as a SCPI programming tool for building a custom program.

In the following example a pseudo programming language is used around the SCPI examples. In our pseudo programming language "//' represents comments that will be used to explain what is happening in the demo as we go. The connect() function will be used to connect to the 34970A / 34972A (in our example we will be using a 34972A with LAN, but they each use the same SCPI language). The printf() function will be used to send a command to the 34972A. The query() function will be used to send a command and read back the response from the 34972A. The "data:" will be used to print out the response from the instrument. The SCPI commands will be handled as strings so they will be placed in quotation marks "". A newline "\n" character will be used after each command, depending on the programming language and driver you are using in your program this may or may not be needed.

In the following example we will monitor temperature measurement using a thermocouple J-type sensor. Next will execute a multiple channel.

//Connect to the 34972A via LAN using the IP address, the instruments hostname could also be used
instr = connect("555.555.555.555");
//send a reset so we are starting at a known state
printf(instr, "*RST\n");
//identify the 34972A we are talking to
data = query(instr, "*IDN?\n");
//display the returned identity of the 34972A
data: Agilent Technologies,34972A,ALFREDO172,1.11-1.12-02-01
//configure channel 12 in slot 1 for thermocouple J-type 
printf(instr, "CONF:TEMP TC,J,(@112)\n");
//set channel 12 in slot 1 to the channel we want to monitor
printf(instr, "ROUT:MON:CHAN (@112)\n");
//Start monitoring channel 12, the 34972A will now continuously make measurements on channel 12
printf(instr, "ROUT:MON:STAT ON\n");
//query for channel 112 measurement
data = query(instr, "ROUT:MON:DATA?\n");
//display channel 12 temp measurement in degrees C
data: +1.81960000E+01
//query for another channel 112 measurement (remember monitor runs continuously) 
data = query(instr, "ROUT:MON:DATA?\n");
//display channel 12 temp measurement in degrees C
data: +1.81760000E+01
//turn the monitor function off
printf(instr, "ROUT:MON:STAT OFF\n");
//Now lets setup the scan using four channels in slot 1, 2 temp measurements and 2 resistance measurements
//Since one temperature measurement has already been configured lets do the other
printf(instr, "CONF:TEMP TC,J,(@113)\n");
//Configure both of the resistance measurements
printf(instr, "CONF:RES (@103,108)\n");
//Create a scan list with the four channels
printf(intr, "ROUT:SCAN (@101,105,112,113)\n");
//set the scan list to run five times so we will have a total of 20 measurements (4 channels x 5 sweeps = 20)
printf(intr, "TRIG:COUN 5\n");
//run the scan list
printf(instr, "INIT\n");
//wait 2 seconds for scan to finish 
//get the 20 readings from the 34972A's memory
data = query(instr, "FETC?\n");
//display the readings from the scan
data: +2.85266320E+03,+1.49620420E+02,+1.75500000E+01,+1.77660000E+01,+2.85271470E+03,+1.49617860E+02,+1.75350000E+01,+1.77510000E+01,+2.85271470E+03,+1.49620420E+02,+1.75320000E+01,+1.77510000E+01,+2.85270180E+03,+1.49620420E+02,+1.75420000E+01,+1.77510000E+01,+2.85271470E+03,+1.49621710E+02,+1.75200000E+01,+1.77410000E+01
//clear the scan list (optional)
printf(intr, "ROUT:SCAN (@)\n");
//close the connection to the 34972A

The 34970A and the 34972A, for the most part, offer the same functionality and measurement capability. The main differences come from the remote IO. The 34970A offers GPIB and RS232 connectivity and the 34972A offers LAN and USB connectivity. The 34972A also offers a built-in web interface that can be accessed via the LAN connection. All you need is a LAN connection and a web browser to access the 34972A's web interface. The web interface allows you to control the 34972A remotely and offers tools that help you create custom software for controlling the 34972A remotely.

A 34972A was connected to the same local LAN network that my PC was connected to. I obtained the 34972A's IP address from its front panel. I entered the IP address in the address bar of the web browser on my PC and I was able to connect to the 34972A's web interface. The below figure shows the web interface control page for the 34901A card in slot 1 of the 34972A. From this page I can close switches, monitor a channel, and create scans.

By selecting the "Utility..." button in, the SCPI programming tools can be accessed. As an example, the "Command Monitor" function in the Utility menu provides a list of SCPI commands that coincides with the settings and functionality that were implemented via the web interface. This allows you to mimic on the web interface what you plan to do in your software and then simply cut and paste the resulting commands from the Command Monitor into your program. The below figure shows the Command Monitor window with recorded commands that show a relay being opened and closed continuously, a channel being setup for monitoring, and the monitor reading being fetched from the 34972A. 

In this blog post we looked at some examples of how to remotely control the 34970A and 34972A using SCPI. We then looked at the LAN web interface on the 34972A and how it can be used as a tool for creating custom software based on SCPI. As always if you have anything to add use the comments section below and if you have any questions feel free to email me.

For more information on the 34972A click here

For more information on the 34970A click here

For more information on a free program for controlling the 34970A and the 34972A click here

Sunday, December 9, 2012

Reducing Measurement Errors with Proper Cabling Part 2

This is part 2 of a two part post where we look at reducing measurement errors with proper cabling and grounding methods. The principles covered in this post can be applied to basic measurement setups, DAQ systems, and automated test systems. Click here to read part 1.

Radio Frequency Interference 
Most voltage-measuring instruments can generate false readings in the presence of large, high-frequency signals. Possible sources of high-frequency signals include nearby radio and television transmitters, computer monitors, and cellular telephones. High-frequency energy can be coupled to a DMM on the system cabling. To reduce the interference, try to minimize the exposure of the system cabling to high-frequency RF sources. If your application is extremely sensitive to RFI radiated from the instrument, use a common mode choke in the system cabling as shown below to attenuate instrument emissions. Note you most likely will see a choke on your computer monitor video input cable used for this purpose, look for a cylindrical hard object that has a small subsection of the cable running through the center of it.

Thermal EMF Errors 
Thermoelectric voltages are the most common source of error in low-level DC voltage measurements. Thermoelectric voltages are generated when you make circuit connections using dissimilar metals at different temperatures. Each metal-to-metal junction forms a thermocouple, which generates a voltage proportional to the junction temperature difference. You should take the necessary precautions to minimize thermocouple voltages and temperature variations in low-level voltage measurements. The best connections are formed using copper-to-copper crimped connections. The table below shows common thermoelectric voltages for connections between dissimilar metals.

Noise Caused by Magnetic Fields 
If you are making measurements near magnetic fields, you should take precautions to avoid inducing voltages in the measurement connections. Voltage can be induced by either movement of the input connection wiring in a fixed magnetic field or by a varying magnetic field. An unshielded, poorly dressed input wire moving in the earth’s magnetic field can generate several millivolts. The varying magnetic field around the AC power line can also induce voltages up to several hundred millivolts. You should be especially careful when working near conductors carrying large currents. Where possible, you should route cabling away from magnetic fields. Magnetic fields are commonly present around electric motors, generators, televisions, and computer monitors. Also make sure that your input wiring has proper strain relief and is tied down securely when operating near magnetic fields. Use twisted-pair connections to the instrument to reduce the noise pickup loop area, or dress the wires as close together as possible. When I worked in calibration we would run into the problem of measurement fluctuations caused by magnetic fields when calibrating milli-ohm and milli-volt meters. To reduce these fluctuations we built a metal box that would surround the meter and block magnetic fields. The box had a small opening just big enough to read measurements and change settings.

Low-Level AC Measurement Errors 
When measuring AC voltages less than 100 mV, be aware that these measurements are especially susceptible to errors introduced by extraneous noise sources. An exposed test lead will act as an antenna and the internal DMM will measure the signals received. The entire measurement path, including the power line, act as a loop antenna. Circulating currents in the loop will create error voltages across any impedances in series with the instrument’s input. For this reason, you should apply low-level AC voltages to the instrument through shielded cables. You should also connect the shield to the input LO terminal. Be sure to minimize the area of any ground loops that cannot be avoided. A high-impedance source is more susceptible to noise pickup than a low impedance source. You can reduce the high-frequency impedance of a source by placing a capacitor in parallel with the instrument’s input terminals. You may have to experiment to determine the correct capacitance value for your application. Most extraneous noise is not correlated with the input signal. You can determine the error as shown below.

Correlated noise, while rare, is especially detrimental. Correlated noise will always add directly to the input signal. Measuring a low-level signal with the same frequency as the local power line is a common situation that is prone to this error. You should use caution when switching high-level and low-level signals on the same switch card or module. It is possible that high-level charged voltages may be discharged onto a low-level channel. It is recommended that you either use two different modules or separate the high-level signals from the low-level signals with an unused channel connected to ground.

As always if you have anything to add use the comments section below and if you have any questions feel free to email me.

Click here to read part 1

Monday, December 3, 2012

Reducing Measurement Errors with Proper Cabling Part 1

In this two part post we will look at reducing measurement errors with proper cabling and grounding methods. The principles covered in this post can be applied to basic measurement setups, DAQ systems, and automated test systems.

Cable Specifications
A wide variety of general-purpose and custom cables are available. The following factors influence the type of cable that you choose.
  • Signal Requirements – such as voltage, frequency, accuracy, and measurement speed.
  • Interconnection Requirements – such as wire sizes, cable lengths, and cable routing.
  • Maintenance Requirements – such as intermediate connectors, cable terminations, strain relief, cable lengths, and cable routing.
Cables are specified in a variety of ways. Be sure to check the following specifications for the cable type you intend to use.
  • Nominal Impedance (insulation resistance) – Found on cables that are intended for frequencies above DC. It varies with the frequency of the input signal. Check for HI-to-LO, channel-to-channel, and HI- or LO-to-shield. High frequency RF applications have exact requirements for cable impedance.
  • Dielectric Withstand Voltage – Must be high enough for your application.
Warning: To prevent electrical shock or equipment damage, insulate all channels to the highest potential in the system. It is recommended that you use wire with 600 V rated insulation.
  • Cable Resistance – Varies with wire gauge size and cable length. Use the largest gauge wire possible and try to keep the cable lengths as short as possible to minimize the cable resistance. The following table lists typical cable resistance for copper wire of several gauge sizes (the temperature coefficient for copper wire is 0.35% per °C). Using the sense lines on instruments such as DMMs and performance power supply can compensate for cable resistance.
  • Cable Capacitance – Varies with the insulation type, cable length, and cable shielding. Cables should be kept as short as possible to minimize cable capacitance. In some cases, low-capacitance cable can
    be used.
Cabling resistance table (top) and Impedance table (bottom)
Grounding Techniques
One purpose of grounding is to avoid ground loops and minimize noise. Most systems should have at least three separate ground returns.
  1. One ground for signals. You may also want to provide separate signal grounds between high-level signals, low-level signals, and digital signals.
  2. A second ground is used for noisy hardware such as relays, motors, and high-power equipment.
  3. A third ground is used for chassis, racks, and cabinets. The AC power ground should generally be connected to this third ground.
In general, for frequencies below 1 MHz or for low-level signals, use single-point grounding (see below). Parallel grounding is superior but is also more expensive and more difficult to wire. If single-point grounding is adequate, the most critical points (those with the lowest levels and/or the most precise measurement requirements) should be positioned near the primary ground point. For frequencies above 10 MHz, use the separate grounding system. For signals between 1 MHz and 10 MHz, you can use a single-point system if the longest ground return path is kept to less than 1/20 of a wavelength. In all cases, return-path resistance and inductance should be minimized.

Grounding Schemes

For a detailed look at ground loops and noise check the post Ground Loops and Other Spurious Coupling Mechanisms and How to Prevent Them

Shielding Techniques
Shielding against noise must address both capacitive (electrical) and inductive (magnetic) coupling. The addition of a grounded shield around the conductor is highly effective against capacitive coupling. In switching networks, this shielding often takes the form of coaxial cables and connectors. For frequencies above 100 MHz, double-shielded coaxial cable is recommended to maximize shielding effectiveness. Reducing loop area is the most effective method to shield against magnetic coupling. Below a few hundred kilohertz, twisted pairs may be used against magnetic coupling. Use shielded twisted pair for immunity from magnetic and capacitive pickup. For maximum protection below 1 MHz, make sure that the shield is not one of the signal conductors.

Separation of High-Level and Low-Level Signals
Signals whose levels exceed a 20-to-1 ratio should be physically separated as much as possible. The entire signal path should be examined including cabling and adjacent connections. All unused lines should be grounded (or tied to LO) and placed between sensitive signal paths. In DAQ systems or ATE system when making your wiring connections to screw terminals on a connection interface, be sure to wire like functions on adjacent channels.

Stay tuned for part two next week. And as always if you have anything to add use the comments section below and if you have any questions feel free to email me.

Sunday, November 25, 2012

Agilent's New 4000 X-Series of Oscilloscopes: They are Amazing!

Agilent recently released the InfiniiVision 4000 X-Series of DSO and MSO Oscilloscopes. I had an opportunity play around with one and they are simply amazing! The 4000 X-series has a capacitive touch screen that makes zooming into and triggering off of waveform segments easier than its ever been before. If you can see it you can trigger off of it! Below is a list of key features followed by a short video that provides a great overview of the 4000 X-Series experience.

InfiniiVision 4000 X-Series Oscilloscope:
  • Industry-exclusive capacitive touch screen technology and interface designed for touch
  • Industry’s largest 12.1-inch display
  • Industry’s fastest 1,000,000 waveforms/sec update rate
  • Innovative InfiniiScan Zone touch triggering
  • Full upgradability, including bandwidth
  • Get 5 instruments in 1: oscilloscope, logic analyzer (MSO), serial protocol analyzer (including USB), dual-channel WaveGen, and 3-digit voltmeter

Tuesday, November 13, 2012

Capturing Inrush Current on Battery Powered Drill

In the below video a colleague of mine demonstrates how to capture the inrush current of a power drill with a single instrument solution. The drill is just used as an example it could be replaced by any device that has inrush current that needs to be characterized. The point is to show how easy it is to measure inrush current with an advanced power supply. The first part of the video starts with a low power automatic screw driver and the second part features a higher power portable drill. You may be surprised at how high the inrush current draw is when the motor first starts up!

You may have noticed that in the video you actually do not see the drill connected to the front panel channel 1 connector. It is actually connected to channel 1 via the rear connectors on the N6705B DC power analyzer. This is because the front panel connectors can only handle up to 20A.

If you have any questions on the video feel free to email me and if you have anything to add based on your experience use the comments section below.

For more information on the N6705B DC Power Analyzer click here

Wednesday, November 7, 2012

Charging Batteries with a Power Supply

In this post we will look at how to charge a battery using an instrument grade power supply. The most common algorithm suggested by battery manufacturers to charge a battery, regardless of the technology, is for a charger to supply the discharged battery with a constant current level until the voltage level of the battery reaches a specified value. Once the specified voltage level is reached the charger should remain at that voltage level and continue to charge the battery until the current draw of the battery drops to approximately zero or to some specified low level value. Both the constant current level at the start of the charge and the constant voltage level at the end of the charge are typically specified by the manufacturer in the battery's data sheet. Also the data sheet will specify any charging conditions that could damage the battery or present a safety risk. The figure below shows a typical charge cycle for a Li-ion battery rated at 3.6 V and 1.9 Ah.

Figure 1. Li-ion charge cycle

From the figure, notice the first stage of charging consists of a constant current level set to 1295 mA. After about 1.25 hours the voltage across the cell reaches the 4.2 V specified charging level. At that point the charger switches from constant current mode to constant voltage mode (note the CVCC at the top stands for constant voltage constant current). The charger regulates its voltage at 4.2V until the current reaches about 100 mA. At this point the cell is charged and the charger can be shut off.

When charging a battery with a power supply ensure that any and all current sinking capabilities (if the supply can sink current) have been disabled. For instance if the power supply is 2 quadrant (source and sink current) or if it has down-programming capability (can sink a limited amount of current to pull voltage level down) disable these capabilities so the power supply will only source current to charge the battery and not sink current and drain it. This may be as easy as setting the power supply's low level current limit to 0 A so it disables the output if the current goes negative (sinking current from battery). Check the batteries data sheet to see if any voltage or current levels could damage or degrade the batteries performance. Use the power supply's over voltage or over current protection features to ensure the power supply output shuts off if any unwanted voltage or current levels are reached.

Setting up the power supply to charge a battery:
  1. Connect the power supply to the battery. Positive terminal of supply to positive terminal of the battery and the negative / reference low terminal of the supply to the negative terminal of the battery. Use quality connectors and short wiring for making the connection. The lower the resistance between the battery and power supply the better charged the battery will be.
  2. Set the power supply voltage level to the specified charging level.
  3. Set the current limit on the power supply to the specified constant current charging value.
When you turn the power supply on the voltage and current will rise until it hits the set current limit, which is the charging current for the battery. The battery will then begin to charge at the constant current level. In the meantime the voltage across the battery from the supply will slowly begin to rise. It will rise until it hits the set voltage amount of the supply, which is the specified charging voltage. From there the battery will continue to charge at a slower rate with the voltage remaining constant and the current slowly dropping until it hits the cutoff point. The difficult part of the test is what to do when the battery is done discharging. If you are monitoring it manually you can simply shut off the output. Or if it is a programmable supply with measurement capabilities you can write a simple program that polls the power supply making current measurements until the cutoff current is reached and then the program simply shuts off the output of the supply. In a lot of cases the battery technology is robust enough to be charged and just remain at the constant voltage value with little or no current flow until it is convenient for you to shut off the power supply. In this case you just need to ensure that the power supply will not begin sinking power from the battery (discharging it) and the battery will not be damaged. 

Lets walk through an example of the charging process using an example Lithium ion battery CGA103450A from Panasonic and a N6783A power supply module in a N6705B DC power analyzer from Agilent. The CGA103450A battery's charge specifications from the data sheet are shown above in figure 1. The following explains how the CGA103450A battery was charged with the N6783A:
  1. The sink capability on the N6783A was disabled so it could only source power
  2. It was properly connected to the battery with the output off
  3. In constant voltage mode the N6783A was set to 4.2 V as per the data sheet and the current limit was set to 1295 mA as per the data sheet
  4. The output was turned on and the charge cycle was captured and shown below in figure 2
  5. The output of the supply was switched off once the current reached ~ 100 mA
Figure 2. Charge cycle captured with N6705B screen shot
The N6783A inside the N6705B mainframe features a datalog function that was used to capture the charge cycle (figure 2 shows screen shot from N6705B). From figure 2 you can see the voltage ramp up to the 4.2 V level in about 40 min. During that time the charge current remained constant at 1295 mA. Once the voltage level reached 4.2 V the charge current dropped to 100 mA in just over 1.3 hours leaving the battery fully charged.

In this post we looked at the most common algorithm used for charging batteries of various technologies and power ranges.We then went over how to apply that charging algorithm to charge a battery using an instrument grade power supply. If you have anything to add to this post please use the comments section below. And if you have any questions please feel free to email me.

For more information on the N6783A click here

Monday, October 22, 2012

Taking Advantage of Double and Triple Modulation in a Two Channel Waveform Generator

In this post we will look at two modulation capabilities found in some two channel waveform generators that we shall refer to as "Double Modulation" (DM) and "Triple Modulation" (TM). DM and TM give you the ability to create some complex waveforms that are not possible with a single channel generator or, in some cases, with an arbitrary waveform created in external software.

DM is the ability to modulate one of the waveform generator's channels with either the internal modulation engine or an external source and then modulate the other channel with the first modulated channel. That explanation is a little confusing so lets use a diagram to clarify. The below figure shows a high level diagram of how the two channel waveform generators from Agilent's 33500B series performs DM (33510B, 33520B, 33522B, and the 33522A).

High level overview of how DM is done in two channel waveform generators from the 33500B series
The above figure shows how two channel waveform generators from the 33500B series perform DM in their main FPGA. Notice that there are four independent waveform generation engines in the FPGA. Two waveform engines are used for channel 1 and 2. The other two less capable engines serve as an internal modulation sources for channel 1 and 2. In the figure channel 2 can be modulated by an external source or the channel 2 modulation waveform engine. From there channel 1 would be modulated using channel 2 as the modulation source, the resulting double modulated waveform will be outputted from channel 1.

Let's look at two examples that takes advantage of using double modulation. In the first example we want to simulate a non-ideal 10 MHz clock signal by adding both random jitter and deterministic jitter in the form of duty-cycle dependent jitter. For the random jitter we want 75 ps of RMS jitter. For the duty-cycle dependent jitter we want a 10 KHz square wave. To build this non-ideal clock signal with double modulation using a 33522B waveform generator we first set the waveform on channel 2 for a 10 KHz squarewave, this is the deterministic jitter. We then modulate the channel 2 waveform with random noise using sum modulation (mathematically add the noise signal to the squarewave). We then set channel 1 to our 10 MHz clock signal and phase modulate it with channel 2 to add the jitter. To obtain the desired jitter magnitudes it is balance between adjusting the sum modulation magnitude on channel 2 and the phase magnitude adjust on channel 1. The example non-ideal clock signal was generated and the resulting random and deterministic jitter can be seen in the scope capture below. The figure shows a zoomed-in view of the clock signal's rising edge. The histogram's standard deviation represents the random jitter's RMS value which is 75.07 ps (click on figure to enlarge). The outlying edges that are about 1.5 ns from the ideal edge is the deterministic jitter from the 10 KHz squarewave.

10 MHz clock signal with random and deterministic jitter
Note that if we refer back to the first figure of the FPGA, the example non-ideal clock signal is using three of the four waveform generators engines: main engine channel 1, main engine channel 2, and modulation engine channel 2.

Let's look at another example where we create a four tone signal and use all four waveform engines to achieve TM. Our four tone signal will consist of tone frequencies 15 MHz, 20 MHz, 25 MHz, and 30 MHz. To build the four tone signal we set channel 1 to a 20 MHz sinewave and sum modulate it with a 15 MHz sinewave. For channel 2 the same steps were repeated except 30 MHz and 25 MHz frequencies were used. The Channel Combine feature on the 33522B was used to mathematically add channel 2 to channel 1. The resulting four tone signal can be seen in the figure below.

Note that the TM abilities in a 2 channel waveform generator are not as capable as the DM capabilities since the channels can only be combined or summed together. This can be used for creating a four tone signal like we just saw or for summing an I and Q signal together.

In this blog post we looked at how a two channel waveform can be used to do double modulation and even triple modulation. If you have any personal insights to add to this post use the comments section below. If you have any questions from the post feel free to email me.

Click here for more info on the 33500B family of waveform generators

Monday, October 15, 2012

Creating an Arbitrary Waveform Remotely on a 33500 Series Waveform Generator

In this post we will look at how to send an arbitrary waveform to a 33500A/B series waveform generator using a remote connection. We will use Standard Commands for Programmable Instruments (SCPI) to communicate and send the waveform data to the waveform generator. We will look at two different ways to send the waveform data first the easier but less efficient method of just using ASCII or string characters for the waveform points. The second method, which is more complex but more efficient, is using binary blocks of the waveform data. Finally we will present information on where you can download a MATLAB function that connects and sends arbitrary waveform data to a 33500A/B series waveform generator using a LAN connection.

The following SCPI command examples will work on the following waveform generators: 33521A, 33522A, 33521B, 33522B, 33511B, 33512B. The SCPI commands are in green and the comments describing them are in blue.

SCPI Commands to Configure and Send Waveform to 33500
//Reset the 33500 to power up state
//Clear volatile memory (not needed, just used for completeness)
//Nine waveform points sent to waveform memory, normalized between 1 and -1 (binary block example //discussed later
DATA:ARB myArb, .75, 1, .50, .25, 0, -.25, -.50,-1, -.75
//Wait for command to finish (optional, do not need on waveforms that do not have a lot of points)
//Select the waveform (chan 1) we just sent to volatile memory
//Select Arb waveform mode on the generator
//Store waveform in non-volatile memory if you want to use it again otherwise it will be erased when //generator is turned off
MMEM:STOR:DATA1 "INT:\myArb.arb"
//Set the sample rate of the waveform generator
//Set the amplitude
//Set the amplitude offset
//Turn off filter for step / staircase response. Other filter settings include "Normal" and "Step" (default)
//Set output Z to 50 Ohms
//Turn on the output

Note that depending on the programming language and drivers being used you may have to add a newline character "\n" at the end of each command. The above SCPI commands resulted in the below waveform:

In the above example the waveform data was sent using data points in ASCII or string form. This method works fine for small to medium sized waveforms, but not large waveforms made up of hundred of thousands or millions of points. The two main reasons are long strings take up large amounts of memory and could cause a program to run out of RAM space and the long string causes to large latencies over the remote IO that often lead to connection timeouts. The answer is to send the data in binary blocks. The command for sending a waveform as a binary block of data is: DATA:ARB myArb, #236[36 bytes of your_binary_data];[PMT]. Notice the first part of the command is the same "DATA:ARB arbname," The number immediately after the pound sign tells the generator how long the byte length number is so in the example '2' means that the byte length number is two digits XX. The next numbers (2 digits) is 36, which tells the generator that there are 36 bytes of waveform data. The "PMT" portion of the example is the endline character.

What makes sending binary block waveform data a little more complex compared to the string example is the waveform data has to be converted into binary data. The details for converting double or float values to binary data differs from programming language to programming language. The following example is done in MATLAB. In this example only the command for sending the waveform data will be shown, the same setup and configuration commands used in the first example would be used here as well.

Sending Waveform using Binary Block Data in MATLAB
%Store waveform in array called wPoints
wPoints = [ .75 1 .50 .25 0 -.25 -.50 -1 -.75];
%Since default is double convert wPoint to single precision and convert to column vector
wPoints = single(wPoints');
%Tells generator that least-significant byte (LSB) of each data point is first. Most computers use this
fprintf(fgen, 'FORM:BORD SWAP');  

%get the length of the waveform data in points in bytes (each points 4 bytes)
iBytes=num2str(length(I) * 4);
%create string header of SCPI command
header= ['SOUR1:DATA:ARB myArb, #' num2str(length(iBytes)) iBytes];
%Convert waveform datapoints to a block of binary data
binblockBytes = typecast(wPoints, 'uint8');  
%combine header and datapoints then send to waveform generator
fwrite(fgen, [header binblockBytes], 'uint8'); 

I created a MATLAB function that connects to a 33500A/B waveform generator via LAN and sends it a waveform from a vector variable. The function is free to download at MATLAB Central using the link provided below or just search on its name "33500 Arbitrary Waveform Function" to find it.

In this post we looked at how to create an arbitrary waveform on the 33500A/B series of waveform generators. We looked at how to send waveform data in string form and binary block form. If you have any questions from this posts please email me and if you have anything to add to this post use the comments section below.

Download MATLAB function to send waveform data to 33500

Click here to download the 33500 series user guide / programming reference

Click here for more information on the 33500B series of waveform generators

Monday, October 8, 2012

How to Calculate Power Supply Accuracy

If we go back a couple decades’ the output level of an instrumentation power supply typically had to be set by turning the supply's analog knob and watching the display of your voltmeter connected to the supply's output to achieve an accurate voltage level. Today that is still true with low end power supplies, but mid range and high performance supplies can deliver an accurate user set voltage level that you can trust. In this post we will take a look at power supply accuracy specs including how to determine a power supply’s voltage level accuracy as well as some other power supply accuracy calculations.

There are typically 5 specifications found on a power supply's data sheet that relate to its voltage level accuracy, they are:
  • Load Effect (Load Regulation): Voltage variations on the supply’s output level caused by changes to the load that the supply is connected to. The error here is caused by the supplies regulation circuitry not able to maintain the exact voltage level after a load change or change in current draw from the supply.
  • Source Effect (Line Regulation): Error on the supply’s set voltage level caused by non-ideal input AC line power. 
  • Programming resolution: When setting a supply’s level, that level is turned into a digital value that is used by a digital to analog converter (DAC). The output of the DAC is used by the supply internally as a reference to set the correct output voltage level. In the digital to analog conversion process there is always quantization error and that is what the programming resolution represents. The higher resolution the DAC (more bits) the less error.
  • Programming Accuracy: This is the key specification that encompasses includes the three just mentioned (load effect, source effect, and prog resolution) as well as parts tolerances such as amplifier drift.
  • Programming Temperature Coefficient: If the power supply is not being operated in its ideal temperature range a temperature coefficient error value is added for every degree out of that range.
As mentioned above, the only specs we need to calculate the supply's output accuracy are the programming accuracy spec, which includes load effect, source effect, and programming resolution, and the programming temperature coefficient spec, but only if we are not in the spec'd ideal temperature range. Of course just like every instrument, the supply's output accuracy cannot be computed until after the spec'd warm-up time which is typically no more than 30 min. Here is what our output accuracy calculation looks like:

Error Tolerance +/- = Prog Accuracy + Temp Coeff (if not in ideal temp range)

The specs will typically be in the form of a static value (such as 4 mV), a percentage of the voltage range, a percentage of the programmed voltage level, or a combination of two of them.

Let's walk through an example calculation using Agilent's N6761A Precision DC Power Module which is part of the N6700 family of modular power supplies. The N6761A is a high performance supply so it will have a high accuracy output level (low error tolerance). Below is a snapshot from the N6761A's data sheet showing the programming accuracy spec as well as other specs. 

For our example we will be operating the N6761A after a 30 min warm-up time at 5 V (low range) with a load pulling 4 A at an environmental temperature of 29 degrees C. Notice in the programming accuracy row that the ideal temperature range is 23 C +/- 5, since we are operating at 29 C we are 1 degree out of the temperature range so we will have to add temp coefficient error to our calculation. The voltage programming accuracy spec for the N6761A in the low range is 0.016% + 1.5 mV. The temperature coefficient spec is 40 ppm + 70 uV. Let's go through the terms of our accuracy calculation:
  • Programming accuracy is 0.016% of programmed value plus 1.5 mV, which is 5*.00016 + .0015 =  2.3 mV
  • Temperature coefficient is 1 degree so 1*(5*30e-6 + 40 uV) = 190 uV 
@ 5 V Err Tolerance is +/- = 2.3 mV + 0.19 mV = 2.49 mV

That is pretty good accuracy for a power supply that is just slightly out of its ideal temperature range! One thing to note from this calculation is that we are assuming that we are looking at the power supply level over some averaged time period lets say 10 power line cycles or 166.7 ms. If we are looking at some instantaneous point on the voltage level of the power supply we can see higher error due to noise. The noise on a supply level is covered in the Output Ripple and Noise or PARD spec on the supply's data sheet. In the above data sheet figure we can see the N6761A has a PARD spec of 4.5 mVpp and 0.35 mVRMS. If we had a high resolution scope we could see the noise on the supply level. If we take an average measurement of the supply level the noise cancels out. 

When working with a supply that has built in measurement capability (like most supplies on the market today) remember that the measurement accuracy is separate from the programming accuracy. Also the measurement accuracy error spec may be worse or larger than the programming accuracy spec. As an example, below is a figure from Agilent's N6741B power supply data sheet. The voltage programming accuracy spec is circled in green and the voltage measurement accuracy is circled in red.

As you can see the voltage measurement accuracy is worse than the voltage programming accuracy. In cases like this it is more accurate to use the programmed voltage level and not the measured voltage value.

In the accuracy calculation we did it was assumed that the supply was being used in constant voltage mode (CV), where the supply regulates the output voltage at a set level and allows the current to fluctuate as the load changes (most common way to use a power supply). What if you are operating the supply in constant current mode (CC), where the supply regulates at a certain current level and the voltage is allowed to fluctuate with the load? The calculation is the same except you use the current specs versus the voltage specs.

In this post we discussed what specs are used to make a power supply output level accuracy calculation. We then walked through an example calculation using Agilent's N6761A precision power module. We also compared measurement accuracy to programming accuracy. If you have any questions from this post feel free to email me and if you have anything to add use the comments section below.

Blog post on Power Supply Resolution versus Accuracy

Monday, October 1, 2012

Free MATLAB Program for Building IQ Baseband Signals

In this post we will take a look at a free MATLAB program called IQ Baseband Builder (IQBB) that is available for free download at MATLAB Central. IQBB program allows you to generate an ideal or non-ideal baseband IQ signal, analyze that signal using various plots, and then download the signal to either a CSV file or one of Agilent's new two channel waveform generators, the 33512B and 33522B.

Back in August Agilent introduced a new family of waveform generators, the 33500B series (click here to view my post on the intro). The 33500B features a new exclusive waveform generation technology called Trueform which delivers the performance specs of a high end waveform generator, but at a much lower price point. For more on Trueform waveform generation technology check my post on it by clicking here. From the 33500B series of waveform generators, the 33522B and 33512B provide excellent solutions for generating baseband IQ signals since they provide two channels that can easily be synchronized.

Let's take a look at an overview of the IQBB's features and capaiblities. Below you will find a screen shot of the IQBB GUI.

The IQBB program creates an IQ signal using digital data (binary ones and zeros), user defined modulation type, and a user defined samples per symbol count. The digital data can either be generated randomly by the program (default) or the user can upload existing digital data via a CSV file. For modulation type, IQBB allows the user to select between 4 to 256 QAM formats (Binary or Gray coding). Once the basis parameters of the IQ signals have been defined, IQBB provides the following features for shaping, distorting, and displaying the resulting IQ baseband signals:
  • Pulse shaping filters including raised cosine, root raised cosine, Gaussian, and rectangular. There are also settings for defining filter parameters such as beta and filter order.
  • The ability to add white noise to the I and Q signals.
  • Phase balance adjust of the signals
  • Amplitude balance adjust of the signals
  • DC offset adjust of the I and Q signal
  • Plots for analyzing the resulting signals including a constellation diagram, eye diagram, frequency domain plot, time domain plot, and filter response plot.
Once the I and Q signals have been generated and analyzed they can be exported to a waveform generator (33512B and 33522B) or a CSV file. The IQBB program uses a LAN connection to export signal data remotely to either the 33512B or 33522B.

Let's look at an example of the 33522B's signal quality using a IQ baseband signal created with the IQBB program. The signal was 64 QAM, 5 samples per symbol, and had a raised cosine impulse response. The resulting signal was captured with a wideband scope and analyzed with Agilent's 89600 Vector Signal Analysis software. A screen shot from the software is shown below.

With Trueform technology the 33522B was able to deliver a 64 QAM baseband signal with only 0.3 % error vector magnitude! Notice too that the phase error is in milli-degrees and the magnitude error is in mV.

In this post we look at a free MATLAB called IQ Baseband Builder that allows you to generate ideal or non-ideal IQ baseband signals. The program can connect remotely to an 33522B or 33512B waveform generators and export the software IQ signals so they can be generated in hardware. If you have any questions from this post send me an email and if you have anything to add use the comments section below.

For more info on the 33500B family of waveform generators click here

Monday, September 24, 2012

Simulating Power Supply Noise

Designs ranging from transceiver chips for smart phones to radar assemblies for fighter jets require power supply noise immunity testing, which is often referred to as power supply rejection ratio (PSRR) testing. Characterizing the design’s ability to reject or attenuate supply noise is critical because the noise can manifest itself as bit errors in the case of transceiver chips and inaccurate target data in the case of radar assemblies. In this post, we will discuss the challenges involved in simulating power supply noise signals for PSRR testing and look at two economical methods for doing it.

Challenges in simulating power supply noise
When you test PSRR, one challenge is modulating a quantitative noise signal onto a DC power supply level. This task is difficult because the power supply inputs typically present extremely low input impedance to any AC signal because of the high input parallel capacitance. While high-performance power supplies do have built-in arbitrary waveform capability, the output bandwidth of power supply waveforms is typically limited to less than 30 KHz. This limitation only allows you to simulate low frequency noise sources, such as power line ripple. It falls well short of the more critical noise source frequency ranges, such as power supply switching noise which ranges from 50 KHz to greater than 20 MHz.

To put the first challenge in perspective, let’s consider an example transceiver chip for a smart phone. The power supply input most likely has a parallel 1-uF bypass ceramic capacitor as well as a large 10-uF electrolytic capacitor to serve as an energy reservoir for the sharp transmit transients. That means a 1-MHz sinewave modulated onto the power supply level of the RF power amplifier would, in theory, only see a load of less than 20 mOhms. In practice, the equivalent series resistance (ESR), equivalent series inductance (ESL), and other parasitic impedances boosts the load impedance up to more than 50 mOhms, but that still presents low input impedance to any AC signal content.

Let's look at two solutions for simulating power supply noise that use (for the most part) general-purpose test equipment and simple components that you can find around the office or lab.

The op amp/MOSFET solution (OMS)
The OMS solution can be seen in the below figure. The solution requires two power supplies, a function/arbitrary waveform generator (FG/AWG), an op amp, and a high-power N-type MOSFET. In Figure 1, C1, C2, and the resistance value labeled “Load” make up a circuit representation of the device under test’s power supply input.

The OMS solution uses the MOSFET as a variable resistor between the power supply and the DUT (load). By varying the MOSFET’s drain to source resistance we can modulate the power supply's DC level with the desired noise signal. The op amp is used to maintain the desired voltage level at the DUT. With the op amp's inverting input connected to the same node as the input to the load, the op amp will drive the MOSFET's gate such that the amplitude level at its inverting input is the same as the amplitude at its non-inverting input.

The FG/AWG’s output creates the amplitude level and noise signal at the DUT's input. The power supply output voltage should be set comfortably higher than the desired amplitude plus any added noise signal amplitude to ensure the MOSFET stays properly biased. This OMS circuit allows you to accurately generate noise signals with bandwidths up to about 500 KHz. The bandwidth can vary depending on the DUT's input impedance and how well the OMS circuit was constructed. For best results, keep wiring and leads as short as possible to prevent oscillations.

As an example, the OMS circuit was implemented using an Agilent 33521A function/arbitrary waveform generator, N6762A power supply, E3630A dual-output power supply (to power the op amp), an IRFP150N N-type MOSFET, and an NE5534A op amp. The below scope capture shows the example OMS implementation generating a 200-mVpp 500-KHz sine wave onto a 5-VDC level. The same DUT load shown in the above diagram was used for this example, the 100-uF capacitor is electrolytic and the 1-uF capacitor is ceramic.

When you implement the OMS, you will need to use a high-performance power supply because you need a supply with a fast transient response and a stable output to ensure the supply can handle the rapidly varying load levels caused by the noise signal. Also, in the OMS the DC level value is limited to the max voltage of the FG/AWG, which today is typically 10 V. To overcome this limitation, you could add a voltage amplifier between the op amp and the FG/AWG.

Amplified modulation solution (AMS)
The AMS does not have the voltage or bandwidth limitations that the OMS has, but it does have a higher price tag. The AMS is shown in the below figure. The AMS consists of a power supply, FG/AWG or signal generator, wide-band or RF power amp and coupling capacitor section.

The FG/AWG and RF amp are used to modulate the DC level from the power supply with the desired noise signal. The coupling capacitor section blocks the DC level from the RF amp's input and provides a low-impedance path for the AC output of the power amp. The power amplifier is needed to boost the noise signal power to deal with the low impedance to AC that the DUT's input presents. You'll want to make the coupling capacitor section's impedance as low as possible, so you may want to use multiple capacitor values and types in parallel to reduce the effects of ESR and ESL. The exact circuit setup, the DUT's true input impedance, and the bandwidth of the noise signal will all determine how many watts the RF amp should be. A good place to start is 50 W, and you can go up from there. Note that the RF amp's output impedance should be as low as possible, which is typically going to be 50 ohms. With the DUT's impedance being so low, the RF amp will see a large amount of reflected power at its input, so when you choose an RF amplifier, be sure to select one that can handle a short-circuit condition.

As an example, the AMS circuit was implemented using an Agilent 33521A function/arbitrary waveform generator, an N6762A power supply, an E&I 1040L RF power amplifier, and 10-uF and 0.1-uF capacitors in parallel (for the coupling capacitor section). A 1040L RF amp provided up to 400 W of output power, which was more than necessary, but I used what was available to me in the lab. Using the same load used in the OMS example, the AMS was used to create a single tone noise signal. The below scope capture shows a 1-Vpp 5-MHz sinewave was modulated onto a 10-VDC level.

Test and measurement power supplies typically have a high capacitance value at their output. In the AMS, the power supply is in parallel with the load in regards to the RF amp’s output. That means the noise signal actually has two low-impedance paths to take, the load and the power supply output. It is hard to know the power supply’s AC power handling characteristic across its input capacitance since it is not specified by the power supply manufacturer, so you may want to contact the manufacturer to avoid costly damage.

One safety precaution you can take is adding blocking impedance between the power supply output and the coupling capacitor section. The blocking impedance can either be an inductor or a resistor. Its purpose is to protect the power supply from being damaged by the noise signal by adding higher series impedance before the power supply output. The inductor is ideal because it acts like a short to the DCV from the power supply, but presents high impedance to the AC noise signal. However, the inductor can cause large oscillations on the DC level if the DUT has a very dynamic current.

Using a resistor avoids the oscillations problem. Be sure to use the power supply’s sense leads to regulate the output voltage at the load to compensate for the voltage drop across the resistor. Also be sure to use a low-value resistor no higher than 1 Ohm. This is to ensure a low voltage drop across the resistor so you do not damage the sense lead circuit on the power supply.

PSRR testing is required on a wide range of devices today from smart phone chips to electronic assemblies for aircraft. Testing PSRR includes generating high-frequency noise signals on power supply levels. This task is challenging due to the high capacitance present at most power supply inputs. In this article we looked at two low-cost solutions for modulating noise signals on power supply levels. If you have any questions on the post send me an email and if you have anything to add use the "Comments" section below.

Monday, September 17, 2012

Overview of Oscilloscope Triggering

In this post we will take a look at Oscilloscope triggering. We will cover the basics and look at some of the advanced triggering capabilities found in modern digital scopes. Triggering is often the least understood but one the most important capabilities of a scope. You can think of oscilloscope triggering as “synchronized picture taking”. And one waveform picture actually consists of many individual and consecutive digitized samples. When monitoring a repetitive input signal the oscilloscope performs repetitive acquisitions (or repetitive picture taking) to show a “live” picture of your input signal. This repetitive picture taking of the oscilloscope must be synchronized to a unique point on the input signal in order to show a stable waveform on the scope’s display.

Although some scopes have various advanced triggering modes to choose from, the most common type of triggering is to trigger the scope when the input signal crosses a particular voltage threshold level in either a positive or negative direction. We call this “edge triggering”. In other words, the scope triggers (takes pictures) when the input signal changes from a lower voltage level to a higher voltage level (rising edge trigger) or when the input signal changes from a higher voltage level to a lower voltage level (falling edge trigger). A photo finish of a horse race is analogous to oscilloscope triggering. To accurately record the finish of the race, the camera’s shutter must be synchronized to when the lead horse’s nose crosses the finish line in the forward direction.

Edge Triggering Examples
Let's look at two examples of oscilloscope edge triggering. In the screen-shot below, the scope’s trigger level is set above the waveform. In this case the input signal never crosses the trigger threshold level in any direction. The scope is taking asynchronous pictures of the input signal and we observe what appears to be an unstable waveform. This is actually an example of not triggering – or unsynchronized picture taking.

Untriggered (unsync'd picture taking)
In the below screen-shot, the scope is setup to trigger on rising edges of the input signal with the trigger level set at +2.01 V. In this case, we can see a rising edge of the input signal at exactly center-screen. 

Triggering on Rising Edge @ +2.01 V
Although the default trigger localization on all digital oscilloscopes is at center-screen (horizontally), you can re-position the trigger location to the left or right by adjusting the horizontal delay knob – sometimes called the horizontal position knob. Older technology analog scopes are only able to trigger at the left side of the screen. This means that analog oscilloscopes are only capable of showing portions of waveforms that occur after the trigger event – sometimes called “positive time data”. But DSOs are able to show portions of waveforms both before (negative time or pre-trigger data) and after (positive time data) the trigger event. Observing pre-trigger data can be useful for analyzing waveform data that may have led up to a specific error trigger condition.

Edge triggering is by far the most common method used for scope triggering. Modern digital scopes also include many advanced triggering methods such as Pulse Width, Pattern, and Runt. Let's take a quick look at a few advanced triggering methods in modern scopes.

Advanced Oscilloscope Triggering – Rise/Fall Time
The below screen shot is an example of signal parametric violation triggering. In this case we are showing an example of triggering on a rising edge that fails to meet a specified rise time of 100 ns. This scope can also trigger on falling edge violations, as well as edge speeds that are faster than a user-specified time.

Triggering on rising edges if slower than 100 ns
Advanced Oscilloscope Triggering – Setup & Hold Time
In the below screen-shot we showing an example of a setup & hold time violation. The scope has been setup to trigger on a rising edge of a clock signal (channel-1, yellow trace). The green trace shows the channel-2 waveform, which is a data signal represented as an eye-diagram. When writing data into a storage device, shift register, or latch, the data signal must be stable for a minimum amount of time before the arrival of the clock signal. This is called “setup time”. In addition, the data signal must remain stable (high or low) for a minimum specified time. This is known as “hold time”. 

Edge Triggering Reveals Data Edge Shift
In this particular example we can see that the data signal occasionally shifts in the positive time direction closer to the clock edge. We know that it is an occasional or infrequent timing shift as evidenced by the dimmer intensity of the trace (assuming that the scope has waveform intensity gradation capability). This is a violation of the device’s setup time.

In this post we looked at oscilloscope triggering, from basic to advanced. If you have anything to add to this post use the "Comments" section below and if you have any questions send me an email.

Monday, September 10, 2012

Overview of Agilent's New M9381A PXI Vector Signal Generator

The following video gives a great overview of Agilent's new M9381A PXI Vector Signal Generator. The M9381A delivers Agilent quality and performance in the PXI form factor. The M9381A is blazing fast with 10 us switching speed, provides 160 MHz of RF modulation bandwidth, and better than +/- 0.4 dB amplitude accuracy.

Monday, August 27, 2012

What is Trueform Waveform Generation Technology?

Trueform waveform generation technology is an exclusive technology found in Agilent’s new 33500B Series waveform generators. Trueform technology provides sizable advantages over direct digital synthesis (DDS), the incumbent technology used in waveform generators. These advantages include significantly lower waveform jitter for less test uncertainty and a true representation of the selected waveform, not an approximation. In this blog post, we will look at Trueform and compare it to DDS.

Conceptually, the simplest way to generate a waveform is to store its points in memory and then read those points out one after another and clock them into a DAC. After the last point has been read, the generator jumps back to the first point again to begin the next cycle. This is sometimes called “point per clock” (PPC) generation. Even though this method seems like the most intuitive way to create waveforms, it has two big drawbacks. First, to change the waveform’s frequency or sample rate, the clock frequency has to change, and making a good low-noise variable-frequency clock adds cost and complexity to the instrument. Second, since the stepwise output of the DAC is undesirable in most applications, complex analog filtering is needed to smooth the steps out. Because of its complexity and cost, this technology is used mainly in high-end waveform generators.

DDS uses a fixed-frequency clock and a simpler filtering scheme, so it’s less expensive than the PPC method. In DDS, a phase accumulator adds an increment to its output in every clock cycle, and the accumulator’s output represents the phase of the waveform. The output frequency is proportional to the increment, so it’s easy to change frequency even though the clock frequency is fixed. The output of the accumulator is converted from phase data into amplitude data typically by passing it through some type of look-up table. The phase accumulator design allows DDS to use a fixed clock, but still execute waveforms at a perceived faster sample rate than the clock. So with DDS, not every individual point is being expressed in the resulting output waveform. In other words, DDS is not using every point in waveform memory, but it creates a really good approximation. But since it is an approximation, waveform data is changed in some way. DDS can skip and/or repeat aspects of the waveform in an unpredictable way. In best-case scenarios, this leads to added jitter; in worst-case scenarios, severe distortion can result. Small features in the waveform can be partly or completely skipped over.

Agilent’s new Trueform technology represents the next leap in waveform generation technology. Trueform provides the best of both worlds. It gives you a predictable low-noise waveform with no skipped waveform points like PPC technology, but at the price point of DDS technology. Trueform works by employing a exclusive virtual variable clock with advanced filtering techniques that track the sample rate of the waveform. In the following sections, we will look at some of the waveform generation advantages Trueform provides over DDS.

Improved signal quality
One of the key advantages Trueform provides over DDS is better overall signal quality. One of the best ways to show this is by doing a jitter measurement comparison with DDS. The following figures show a jitter measurement made on a 10-MHz pulse signal using a high-performance oscilloscope. The scope view is zoomed in on the rising edge of the pulse signal with the persistence setting of the scope turned on. The histogram function of the scope is used to measure the period jitter of the signals. The standard deviation measurement in each figure is circled in red and represents the signal’s RMS jitter. The Trueform pulse signal jitter measurement is shown in the below figure and the DDS pulse signal jitter measurement is shown in the next figure.

Trueform signal with < 5ps of RMS jitter
DDS signal with > 50ps of RMS jitter
In the above figures both the amplitude and time scales for the scope are the same. The Trueform pulse waveform has more than 10 times less jitter compared to the DDS pulse waveform. The substantially lower jitter that Trueform offers over DDS means less uncertainty in your tests. This is especially true when you consider edge-based timing applications like generating a clock signal, trigger signal or communication signal.

The waveform you create is the waveform you get
As we mentioned earlier, DDS uses a fixed clock and a phase accumulator so it cannot guarantee that every point or feature in a waveform will be played. The higher the frequency, the more gaps you will see in the output waveform compared to the ideal waveform. Trueform, on the other hand, plays every waveform point regardless of the set frequency or sample rate. This becomes critical when you are dealing with a waveform that may have a small detail that is critical to the test you are performing. As an example, we created an arbitrary waveform that consisted of a pulse with seven descending amplitude spikes on top of the pulse. The waveform was then loaded into a Trueform waveform generator and a DDS waveform generator. First the waveform was played at a 50-KHz frequency on each generator. The result was captured on a scope, shown in the below figure. The yellow trace is the Trueform waveform and the green trace is the DDS waveform.
Trueform on top in yellow and DDS in green

At 50 KHz, each generator was able to reproduce the waveform with seven spikes on top of the pulse. You can see that the Trueform spikes reached higher amplitude. In the below figure scope screen shot, the waveforms were played again, but this time at 100 KHz.

Trueform on top in yellow and DDS in green. Note that all the DDS spike points were skipped
At 100 KHz, the Trueform waveform generator played all seven spikes and the DDS generator did not play any of the spikes. In the below figure scope screen shot, the waveforms were played again, but the frequency was doubled again to 200 KHz.

Trueform on top in yellow and DDS in green. Note that DDS only shows 3 of the seven spikes

At 200 KHz, once again, the Trueform waveform generator shows all seven spikes in the waveform. The DDS generator went from playing no spikes at 100 KHz to playing three spikes at 200 KHz. Notice that the three spikes played in the 200 KHz waveform do not match the correct time location of any of the seven spikes that are in the actual waveform points. These waveform examples demonstrate that when working with waveforms that have fine detail, DDS cannot be trusted.

Agilent’s Trueform technology offers a new alternative that blends the best of DDS and PPC architectures, giving you the benefits of both without the limitations of either. Trueform technology uses an exclusive digital sampling technique that delivers unmatched performance at the same low price you are accustomed to with DDS.

For more info on the 33500B series with Trueform technology click here