Free Shipping logo FREE SHIPPING £75+
50 years of Telonic Instruments Ltd logo CELEBRATING 50+ YEARS
Price Match logo PRICE MATCH GUARANTEE

Analysing GSM Radio Protocol with a Siglent SDS2000X Plus Oscilloscope

Posted on: June 18th, 2021 by Doug Lovell

We took a retired Siemens A36 cellphone to learn the capabilities of this new Siglent scope. Available documentation and medium-density PCB of the selected A36 made the signal probing easy to implement. We used TEK P6243 active probes initially for their low capacity loading but changed to passive probes later as monitored signals proved to be quite robust.

 

Figure 1: probing IQ signals in Tx and Rx path of the Siemens A36

 

Three signals were selected to monitor the cellphone operation:

  1. Transmit IQ baseband modulation signal, Q component, on Pin 48 on scope Channel 1
  2. Receive IQ baseband modulation signal, I component, on Pin 12 on scope Channel 2
  3. Battery current consumption from 0.1 Ohm resistor, between (-) power supply and phone ground on scope Channel 4 (resulting in negative signal polarity)

 

Figure 2: block diagram of PMB6250 Smarti IC with probe inputs

At first we observed the phone attached to the GSM network, periodically listening for an eventual incoming call on paging channel once per second. Once every 33 seconds, the phone is additionally checking the signal level of other base stations to request the network to camp on the stronger base station in the case when the phone is moving.

 

 

 

 

 

 

Figure 3: Rx signals for paging (left) and neighbour cell measurements (right)

Current peaks of 30 mA at the end of Rx signal burst indicate the processing power needed for decoding of the received signal. Neighbour channel measurement need only a part of the burst, allowing for frequency switching (PLL re-tuning) between the 3 bursts. We can see how noisy the other base stations are, and that the first burst of the serving base station has the least noise of all.

 

Figure 4: Rx signal detail and processing power (power consumption)

Using the scope persistence and colour histogram, we can visualise the received signal. We also used the scope Zone Trigger function (area 1) to distinguish between the longer data and shorter paging channels. We see the signal reception is longer than the data burst length of 570 µs. This allows for the demodulation of signals that may be dealing with multipath propagation. In a mountainous region, for example, base station signals can reach the phone on the direct fast track but may also propagate along a path with multiple reflections. Up to +-3 symbols delay can be processed by the A36 channel equaliser.

 

Figure 5: Histogram of Rx signal with 1 sec persistence

Then we set up a call between the phone and the network. For the first time, we can see the phone transmitter operation (yellow Channel 1). As the phone receives an incoming call from the paging channel it changes from idle to the call state after the user picks up the call of the ringing phone.

 

Figure 6: Incoming call setup flow

Parallel to the call, the phone still performs neighbour cell measurements for the case it finds a stronger base station that can handover the call.

 

Figure 7: Call Tx and Rx bursts

On the transmit burst we can observe the permanently changing data bits carrying the speech signal. The static non-changing bits are the Tail Bits at the beginning and the end of the burst. Most important is the Training Sequence in the middle of the burst. The channel equaliser of the receiver is training its best adjustments on this training sequence and use this adjustment for the whole burst. The training sequence is in the middle of the burst, while the propagation conditions are changing as the phone is moving and the position in the middle of the burst is best for the whole burst. 1-second persistence, colour histogram and zone trigger features of the scope are used to visualise this dynamic situation.

 

Figure 8: Histogram of Tx signal with 1-sec persistence

Peak current of almost 2 A at 4 V DCin covers the demand of the Tx power amplifier. During the reception of a call, the peak current is 100 mA. There is no measurable power consumption between the Rx paging reception, the implemented Eco-Mode only powers the 32 kHz clock inside the phone to wake-up the phone for the next paging. That’s why the battery charge can last for many days if no calls performed.

Large memory depth of the scope was very helpful to zoom-in into the captured data. Various trigger options helped to get a stable trigger for fast-changing signals.

We were extremely surprised by the good performance and rich features of the new Siglent SDS2000x Plus oscilloscope. The performance of this mid-class entry model is on the level of high-end units back in the time when one of the authors designed the A36 phone. We recommend this scope to all interested readers and look forward to checking LTE and 5G phones with this scope in our next projects.

Products Mentioned In This Article:

  • SDS2000X Plus series please see HERE

Programming Example: Retrieve data from an XE series Oscilloscope using Kotlin

Posted on: June 18th, 2021 by Doug Lovell

The SDS series of oscilloscopes all feature remote programming and data collection capabilities. They can be integrated easily into many automated test environments to ease the setup and data acquisition during testing.

One of our helpful customers developed a nice programming example designed to set up and retrieve data from a SIGLENT SDS1202X-E Oscilloscope using Kotlin, a free open source coding environment (more on Kotlin here).

The code utilizes a LAN connection and open sockets.

Thanks to Chris Welty for the code!

Here is a text file of the example:

SDSDataRetrievalKotlinExample


/**
* License: 3-Clause BSD
*
* Copyright 2018 Chris Welty
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

package scope

import java.io.BufferedWriter
import java.io.OutputStreamWriter
import java.io.Serializable
import java.net.Socket

/**
* Contains a single waveform downloaded from a Siglent 1202X-E
*/
class Waveform(val vDiv: Double, val vOffset: Double, val tDiv: Double, val tOffset: Double, val data: ByteArray) : Serializable {

val xs: DoubleArray
get() = DoubleArray(data.size, { i -> i * tDiv * 14 / data.size + tOffset – tDiv * 7 })

val ys: DoubleArray
get() = DoubleArray(data.size, { i -> data[i] * vDiv / 25 – vOffset })

companion object {
/**
* Download the waveform displayed on the scope’s screen
*/
fun download(): Waveform {
Socket(“192.168.1.222”, 5025).use { socket ->

println(“connected to ” + socket.inetAddress)
val output = BufferedWriter(OutputStreamWriter(socket.getOutputStream(), Charsets.US_ASCII))

// since the socket can return binary data, we can’t use an InputStreamReader to
// translate the bytes to characters. We’ll have to do it ourselves.
// SCPI generally uses US ASCII, shouldn’t be too hard.
val input = socket.getInputStream()

/**
* Read from the scope until \n is encountered.
* The bytes are translated to characters numerically (so US_ASCII).
*/
fun readLine(): String {
val sb = StringBuilder()
while (true) {
val c = input.read()
when (c) {
-1, ‘\n’.toInt() -> return sb.toString()
else -> sb.append(c.toChar())
}
}
}

/**
* Read a number of bytes from the scope.
*
* The bytes are not translated into characters.
*/
fun readBytes(n: Int): ByteArray {
val result = ByteArray(n)
var i = 0
while (i < n) {
i += input.read(result, i, n – i)
}
return result
}

fun writeLine(string: String) {
output.write(string)
output.write(“\n”)
output.flush()
}

/**
* Read a numerical response from the scope.
*
* The scope returns responses like “C1:VDIV 1.00E+00V”.
* This function extracts the “1.00E+00″, converts it to a double, and returns it.
*/
fun readNumber() = readLine().split(” “)[1].dropLast(1).toDouble()

writeLine(“*IDN?”)
println(readLine())

// reset the scope response format to its default so readNumber() works
writeLine(“CHDR SHORT”)

writeLine(“C1:VDIV?”)
val vDiv = readNumber()

writeLine(“C1:OFST?”)
val vOffset = readNumber()

writeLine(“TDIV?”)
val tDiv = readNumber()

writeLine(“TRDL?”)
val tOffset = readNumber()

// request all points for the waveform
writeLine(“WFSU SP,0,NP,0,F,0”)
writeLine(“C1:WF? DAT2”)

// parse waveform response
val header = String(readBytes(21))
println(“header is $header”)
val length = header.substring(13, 21).toInt()
println(“length is $length”)
val data = readBytes(length)
readBytes(2) // 2 garbage bytes at end

println(“V/div = $vDiv; offset = $vOffset; t/div = $tDiv; tOffset = $tOffset”)

return Waveform(vDiv, vOffset, tDiv, tOffset, data)
}
}
}
}

 

Products Mentioned In This Article:

Siglent Oscilloscopes please see HERE

Comparison / Differences between the SDS1000X and SDS1000X-E oscilloscope families

Posted on: June 18th, 2021 by Doug Lovell

The short list of differences between the X and the 2 channel XE (SDSs1202XE) is as follows:

– X has 50 ohm/ 1 MOhm selectable input impedance. XE only has 1 MOhm fixed. You will need a 50 ohm matching through adapter if you wish to connect to 50 Ohm circuits/minimize reflections.
– The X has a slightly larger display (8″)  vs. the XE (7″)
– The XE has a faster digital platform with 1 Mpt FFT capability. The X has 16,384 pt depth for the FFT.
In addition, the SDS1xx4X-E scopes have additional differences:
– Onboard webpage control (standard)
– Bode Plot (standard.. requires SIGLENT SDG or SAG1021)
– External waveform/function generator (SAG1021 and SDS1000X-E-FG license Optional)
– WiFi control (TL-WN725N and SDS1000X-E-WiFi license Optional)
Products Mentioned In This Article:
  • SDS1202X-E please see HERE
  • SAG1021 please see HERE
  • SDS1000X-E-FG please see HERE
  • TL-WN725N please see HERE
  • SDS1000X-E-WIFI please see HERE

Programming Example: List connected VISA compatible resources using PyVISA

Posted on: June 18th, 2021 by Doug Lovell

PyVISA is a software library that enables Python applications to communicate with resources (typically instruments) connected to a controlling computer using different buses, including: GPIB, RS-232, LAN, and USB.

This example scans and lists the available resources.

It requires PyVISA to be installed (see the PyVISA documentation for more information)

***

#Example that scans a computer for connected instruments that
#are compatible with the VISA communication protocol.
#
#The instrument VISA resource ID for each compatible instrument
#is then listed.
#
#
#Dependencies:
#Python 3.4 32 bit
#PyVisa 1.7
#
#Rev 1: 08302018 JC

import visa

def main():

rm = visa.ResourceManager()
print (rm.list_resources())

if __name__==’__main__’:

main()

*****

Here is the code:

 

And here is the result of a scan:

Each connected instrument returns a specific formatted string of characters called the VISA Resource ID.

The resource ID format is as follows:

‘Communication/Board Type (USB, GPIB, etc.)::Resource Information (Vendor ID, Product ID, Serial Number, IP address, etc..)::Resource Type’

In the response, each resource is separated by a comma. So, we have three resources listed in this example:

‘USB0::0x0483::0x7540::SPD3XGB4150080::INSTR’ – This is a power supply (SPD3X) connected via USB (USB0)

‘USB0::0xF4EC::0x1301::SVA1XEAX2R0073::INSTR’ – This is a vector network analyser (SVA1X) connected via USB (USB0)

‘TCPIP0::192.168.55.122::inst0::INSTR’ – This is an instrument connected via LAN using a TCPIP connection at IP address 192.168.55.122

Products Mentioned In This Article:

  • SPD3000 please see HERE
  • SVA1000X Series please see HERE 

SDS FFT performance on low frequency signals

Posted on: June 18th, 2021 by Doug Lovell

Like many modern oscilloscopes, the SIGLENT SDS series feature FFT math functions that calculate frequency information from the acquired voltage vs. time data. FFT stands for Fast Fourier Transform, and is a common method for determining the frequency content of a time-varying signal. Converting time domain data to the frequency domain makes measuring characteristics like phase noise and harmonics much easier. Oscilloscopes don’t have the dynamic range or sensitivity of a true spectrum analyser, but these new designs can provide a fine level of detail that may be just enough for your application.

FFTs are commonly used on high frequencies, but they can also be used on signals with fairly low frequencies.

In this note, I am going to show the FFT performance of two series of our scopes by sourcing a 10 MHz (100 s period), 10 Vpp sine wave using a SIGLENT SDG805 Function Generator into Channel 1.

SDG805 has been discontinued, to see other models in the SDG800 series please click HERE

SDS1000X/SDS2000X Series:

The SDS1000X and 2000X series feature an FFT function that uses up to 16 kpts of timebase data to calculate the frequency data and a timebase maximum of 50 s/div.

Here are the FFT results with the available window settings for a 10 MHz sinewave –

The scope can show a split timebase and FFT view:

SIGLENT slow FFT split view

 

For the rest, I will use the exclusive FFT view.

Rectangle

SIGLENT slow FFT Exclusive view

 

Blackman

 

SIGLENT slow FFT blackman window

Hanning

SIGLENT slow FFT Hanning window

Hamming

SIGLENT slow FFT hamming window

Flat Top

SIGLENT slow FFT flat top

SDS1000X-E Series:

The SDS1000X-E series feature a new math co-processor that increases the maximum data depth of the FFT function to 1 Mpts. They also feature a timebase maximum of 100 s/div. These increases allow the X-E to have much finer timebase detail and to acquire useful data for even lower frequencies than many scopes on the market.

Here are the FFT results with the available window settings for a 10 MHz sinewave –

The scope can show a split timebase and FFT view:

SIGLENT XE Slow FFT split display

For the rest, I will use the exclusive FFT view.

Rectangle

SlowFFTXE_Rectangle

Blackman

SIGLENT slow FFT blackman

Hanning

SIGLENT XE slow FFT hanning window

Hamming

SIGLENT XE slow FFT hamming window

Flat Top

SIGLENT XE slow FFT flat top window

Products Mentioned In This Article:

  • SDS1000X-E Series please see HERE
  • SDS2000X-E Series please see HERE

Programming Example: SDS Oscilloscope screen image capture using Python over LAN

Posted on: June 18th, 2021 by Doug Lovell

Here is a brief code example written in Python 3.4 that uses a socket to pull a display image (screenshot) from a SIGLENT SDS1000X-E scope via LAN
and save it to the local drive of the controlling computer.

NOTE: This program saves the picture/display image file in the same directory that the .py file is being run from. It will overwrite any existing file that has the same name.

Download Python 3.4, connect a scope to the LAN using an Ethernet cable, get the scope IP address, and run the attached .PY program to save a bitmap (BMP) image of the oscilloscope display.

Tested with:

Python 3.4
SDS1202X-E
SDS1104/1204X-E
SDS2000X-E Models
SDS5000X Models

Measuring Power Supply Control Loop Response with Bode Plot II

Posted on: June 18th, 2021 by Doug Lovell

Introduction

Stability is one of the most important characteristics in power supply design. Traditionally, stability measurements require expensive frequency response analysers (FRA) which are not always available in a laboratory. SIGLENT has released Bode Plot Ⅱ features to the SIGLENT SDS1104X-E, SDS1204X-E, SDS2000X-E, SDS2000X Plus, and SDS5000X series of oscilloscopes. When combined with a Siglent arbitrary waveform generator (SDG or SAG) and an injection transformer, quick frequency response curves can be created.

In this application note, we will show you the basic principles for making this stability measurement and how to use these instruments to make the measurement.

SIGLENT Bode physical setup exampleFigure 1: Bode II setup

 

1. Basic Principle of Stability Measurement

 

1.1 Stability of The Feedback System

A regulated power supply is actually a feedback amplifier with a large amount of current sourcing capability. Any theory that applies to a basic feedback amplifier also applies to a regulated power supply.

In feedback theory, the stability of a feedback system can be determined by evaluating the loop transfer function. A more practical way is to measure the bode plot of the loop gain. Figure 2 shows a typical feedback system.

The closed-loop transfer A is the mathematical relationship between input x and output y. The loop gain T, by its name, is defined as the gain of a signal traveling around the loop.

Typical Bode Feedback loopFigure 2: Typical Feedback Loop

Since α and β are complex variables, they have not only magnitude but also phase angle, as also does the loop gain T. If the phase angle of T reaches -180° while the magnitude is 1, the closed-loop transfer function A becomes infinity. In this situation, the system will maintain an output signal while there is no input. Thus, the system acts as an oscillator rather than as an amplifier, which means that the system is not stable.

If we plot the loop gain in a bode plot, we can evaluate the stability by finding the phase margin and gain margin. A phase margin is defined as how many degrees the phase can be decreased before reaching -180°while the magnitude is 1 (or 0 dB). The gain margin is defined as how many dB in magnitude can be added before reaching 1 (or 0 dB) while the phase is -180°.

Figure 3: Bode Plot, phase, and gain margin

 

1.2 Break the Loop

To get the desired loop gain, we simply break the loop. Figure 4 shows how to break the loop in a typical feedback system. Technically you can break the loop any place you like. We commonly choose to break the loop at the point between the amplifier output and the feedback network. Then we insert a test signal to travel around the loop. The loop gain is the mathematical relationship between the output y and the test signal i.

Figure 4: Breaking the loop in a typical feedback system

1.3 Loop Injection

 In reality, we can never really break the loop because the feedback loop serves to maintain the DC quiescent operation point of the circuits. Without the feedback loop, the device under test will become saturated because of the small input offset voltage, and then no useful result can be measured.

To overcome this, we should measure the open-loop response inside a closed loop. Therefore, we just inject a signal into the loop rather than breaking the loop. Figure 5 shows a typical method of loop injection. The injection point is chosen so that the impedance looking in the direction of the loop is much higher than that looking backward. One possible point is between the output and the resistor divider feedback network. Other points that meet this requirement may be chosen.

Figure 5: Loop injection

To maintain the closed loop, a small injection resistor Ri is inserted at the injection point. The resistor should be small enough so that it will have little effect on the circuit and also the lower the resistor value the lower the frequency the transformer will operate. Picotest recommends a resistor value of 4.99 Ω for the J2100A, and a larger value may be chosen depending on the circuits. The injection signal is then applied across the injection resistor.

The signal injected should have no effect on the DC operating point of the circuit. A method to solve the common ground connection problem is to use an injection transformer as shown in Figure 6.

Figure 6: Injection Transformer

The injection signal starts at one end of the injection resistor, travels through the resistor divider feedback network, the error amplifier and the pass element transistor, and finally to the output, which is the other end of the injection resistor. The relationship between the injection signal i  and the output signal y is the loop gain that we wish to measure.

Be aware that we are measuring an open-loop parameter inside a closed loop, the phase starts at 180°and decreases to 0°, rather than starting at 0°and decreasing to -180°. So the phase margin should be measured relative to 0°.

 

2. Measurement Setup and Result

 

2.1 Equipment

Oscilloscope: Siglent SDS1204X-E with firmware version higher than 6.1.27R1 (Bode Plot Ⅱ release)

Signal Source: Siglent SDG2042X

Power Supply: Siglent SPD3303X

Probe: Siglent PP215 passive probe switched to 1X

Injection Transformer: Picotest J2100A

Device-Under-Test: Picotest VRTS v1.51

 

2.2 Circuit Connection

 The Picotest VRTS v1.51 is a demonstration board for voltage regulator testing. Technically it is a linear regulator built from the famous TL431 and a discrete transistor. The schematic is shown in Figure 7. Different output capacitors can be selected to see the impact on the control loop stability.

Figure 7: VRTS v1.51 schematic

For the propose of our power supply control loop response measurement, the injection point is TP3 and TP4. The circuit connection is shown in Figure 8.

The generator is connected to the oscilloscope through USB (connection through Ethernet is also supported).

The injection transformer is connected in parallel with the injection resistor so that the signal is injected into the loop while preventing the circuit DC operation point from being affected by the generator.

The TP3 and TP4 points are also connected to the oscilloscope, and the TP4 is defined as the DUT Input while the TP3 is the DUT Output in the Bode Plot Ⅱ.

Figure 8: Circuit connection

 

Figure 9: Probe and Transformer connections to the DUT

 

2.3 Instrument Configuration

In this section, we will show how the key configuration should be made in order to make the measurement correctly. For complete instructions to the Bode Plot Ⅱ, please refer to the user manual and the quick start guide.

Before entering the Bode Plot Ⅱ, it is recommended that you enable the oscilloscope’s 20 MHz bandwidth limit setting.

At this time, we want to measure the bode plot from 10 Hz all the way to 100 kHz. This frequency range should be enough for a circuit with an expected crossover frequency at about 10 kHz.

Enter the Config menu and set the Sweep Type to Simple, then enter Set Sweep to set the sweeping frequency. Set the Mode to Decade and Start to 10 Hz, Stop to 100 kHz. Set Points/dec to 20, enough for a typical sweep. Enter the Set Stimulus menu to set Amplitude to 50 mV. Enter the Set Channel menu to set DUT Input to CH1 and DUT Output to CH2.

Figure 10: Bode II scope configuration

2.4 Results and Data analysis

After the configuration is done, return to the main menu and press Run to start the sweep.

Wait to see the results as shown in Figure 11.

The result is somewhat confusing and suspect because of the trace at low frequency, especially the phase trace, alternating up and down. We will introduce a method called Vari-level to resolve this problem in the next section.

Figure 11: Measurement results

After the sweep has completed, press Run again to stop the sweep. Enter the Display menu and then enter the Cursors menu to turn on the cursors. Use the Adjust knob to move the cursors and set the phase margin as shown in Figure 12.

Figure 12: Cursor measurement on the Bode plot

You can also turn on the List feature in the Data menu to examine the measured data, or you can export the data to an external USB FLASH driver for further analysis on a computer.

Figure 13: Exporting data

2.5 Vari-level

In the previous section, we can see that the results are not ideal, for the bouncing trace at low frequency. This is because at low frequency the amplitude difference between the input and output channel is relatively large, and since we are using a relatively small stimulus signal (this time 50 mVpp), the signal presented at the DUT Input channel is extremely small so that a commercial general propose oscilloscope cannot measure it accurately.

But we cannot simply increase the stimulus’s signal amplitude. The result will be similar to what is shown in Figure 14. The large signal near the crossover frequency region causes serious distortion to the loop. The distorted signal in the time domain is shown in Figure 15.

Remember that a bode plot only makes sense in a linear system, and has no meaning in a heavily non-linear system. The result is useless.

Figure 14: Increased stimulus signal amplitude and distortion

Figure 15: Distortion in the time domain

One possible solution to the problem is Vari-level (other manufactures may call it “Shaped Level” or “Level Profile”). The Vari-level concept is simple: The stimulus signal amplitude is variable over the frequency. If we use a large signal at low frequencies and decrease the amplitude to a fairly small level near the crossover region so that it causes little distortion to the loop, in theory, we can get an ideal result.

Under the Configure menu, set Sweep Type from Simple to Vari-level, and push Set Vari-level to enter the Vari-level profile editor.

Figure 16: Set Sweep Type to Vari-level

Figure 17 shows the Vari-level profile editor. The Profile option allows the user to select and save up to 4 profiles. The Nodes sets the number of nodes in the profile trace, the minimum allowed number of nodes is 2 because at least 2 points can determine a line, and always the first and the last node set the start and stop of the trace. Press Edit Table will enter the profile editor mode. The parameter under editing is highlighted by cursors, and next push Edit Table again to cycle the cursors between “Freq”, “Ampl” and the entire row, which allows the user to navigate through the entire table. Users can use the Adjust knob to set the highlighted parameter, and pushing the knob will call out a visual keypad that allows direct input to the parameter. The Set Sweep and Set Stimulus option is somewhat similar to that in the Simple type of sweep, but they are not correlated. This time we set the sweep Mode to Decade and a 40-point-per-decade is sufficient. The profile shown in Figure 17 is used in this measurement. It is not the optimum profile for this circuit but should be a good place to start.

Figure 17: Vari-level profile editor

In practice, one should always experiment with those parameters to find an optimum solution for a particular circuit.

One practical way to do this is to monitor the signal in the time domain, decrease the amplitude of the stimulus signal until no visible distortion can be observed, then decrease the amplitude by another 6 dB. Next, record the amplitude and frequency, jump to another frequency and repeat the process.

There is a better way to find the optimum profile if you already have a known good profile. Reduce the signal amplitude by 6 dB and run a sweep to see if the plot changes. If it does change, reduce the amplitude by another 6 dB and sweep again. Until the result doesn’t change, then you can increase the amplitude by 6 dB and that’s an optimum profile. This is time-consuming but necessary to get a meaningful result.

Once profile editing is completed, return to the main menu and push Run to start the sweep. Figure 18 shows the final result of the measurement with Vari-level. Changing the capacitor selection switch S1 on the VRTS v1.51 demo board will alter the loop response due to the impact of different capacitors.

Figure 18: Results with Vari-level

3. Summary

 The Siglent oscilloscope with newly released Bode Plot Ⅱ together with a Siglent signal generator and a Picotest injection transformer offer a very flexible and easy-to-use power supply control loop measurement system.

Products Mentioned In This Article:

  • SDS1204X-E please see HERE
  • SDG2042X please see HERE
  • SPD3303X please see HERE

Measuring the Modulation Index of an AM Signal using an FFT

Posted on: June 18th, 2021 by Doug Lovell

Introduction

In AM schemes, the modulation index refers to the amplitude ratio of the modulating signal to the carrier signal. With the help of Fast-Fourier-Transforms (FFT), the modulation index can be obtained by measuring the sideband amplitude and the carrier amplitude. In this application note, we are going to show a convenient method of using the new Peaks/Markers function (Available on the 4 channel SIGLENT X-E scopes with firmware revisions > 6.1.31).

1. Basic Principle

Amplitude modulation uses a signal (typically a sine wave in the audio frequency range from 10 Hz to 20 kHz) to control the amplitude of a higher frequency signal called the carrier.

A carrier with amplitude modulation can be represented as

Where:

V(t)              The Amplitude Modulated Signal

Uc                Amplitude of the Carrier Signal

m                 Modulation Index

a(t)               Normalized Modulation Signal

fc                  Carrier Frequency

Sinusoidal (commonly referred to as a “sine” wave) modulation is the most commonly used modulation waveform type. If we are using a sine wave, the modulating signal can be expressed as

According to the formulas (1) and (2), we can get

Mathematically represents the carrier waveform.

and 

represent the positive, or upper, and negative, or lower, sidebands of the modulated signal.

The amplitude of both sidebands are 

If we set the amplitude of sideband is Us, 

In logarithmic case, if the difference between the sideband amplitude and the carrier amplitude is X, 

Then the amplitude modulation index can be represented as 

Figure 1

Here, we can see that it is easy to measure the difference between the sideband amplitude and the carrier amplitude, or X. We can then calculate the modulation index very easily.

2. Measurement Setup and Result

2.1 Equipment

Oscilloscope: Siglent SDS1204X-E with firmware version higher than 6.1.31.

Signal Source: Siglent SDG2122X

Cable: 50 ohm BNC

2.2 Instrument Configuration

In this section, we will show how to configure the instruments in order to make the measurement. For complete instructions on the FFT mode, please refer to the oscilloscope user manual and the quick start guide.

 

The oscilloscope is connected to the output of the signal source as shown in Figure 2.

Figure 2    Set Up for the Measurement

 

The signal source settings are as follows:

  • Mod On
  • Mod Type: AM modulation
  • Carrier frequency: 1 MHz
  • Carrier amplitude: 500 mVpp
  • Modulation frequency: 10 kHz, and the modulation index is 80%.

 

According to the output of the signal source, set the center frequency of the FFT plot to 1 MHz and set the horizontal scale to 5 kHz to provide a clear view of the output.

To reduce random errors, the FFT is set to average mode and the average number of times is 100. On the choice of window function, we choose flat-roofed window to obtain the optimized amplitude accuracy.

Starting with firmware revision 6.1.31, the FFT function of Siglent X-E oscilloscopes include a Peaks/Markers function and users can set the number of FFT points separately. The more points the FFT has, the better the frequency resolution of the plot will have. Note that increasing the number of points will increase the time of computation of the FFT, which will reduce the refresh speed accordingly. FFTs up to 1 Mpts at most are available on the X-E series, so we can set the storage depth to 1.4 Mpts. In this application, there is no need for a high sampling rate, since that will lead to a large delta frequency. Set the timebase to 2ms.

According to the input signal, we can deduce that a frame waveform has 28 k-cycles and we will use the first 20 k-cycles to do the FFT operations. For decent resolution, there should be at least five sample points in a cycle, so the minimum number of FFT points should be at least 100 kpts. 128 kpts is suitable, since under the premise of satisfying the measurement conditions, we can get the results faster.

The new version also supports Peaks/Marker, it can quickly identify and label peaks. We choose Peaks to make the measurement.

Figure 3        Configuration Screens

 

The configuration process is as follows:

First, set timebase to 2ms and enter the ACQUIRE menu, set Mem Depth to 1.4M. Second enter the MATH menu, set Operator to FFT, enter the CONFIG menu, set Maximum points to 128k, set Window to Flattop, set Display to Exclusive then go to the next page, set Mode to Average, set Times to 100. Third enter the VERTICAL menu, set Unit to dBVrms, then enter HORIZONTAL menu, set Center to 1MHz, set Hz/div to 5 kHz. Last, enter the FFT TOOLS menu and set Type to Peaks, turn on the Show Table switch to show the peaks list and turn on the Show Frequency switch to show the frequency of peaks, set Sort By to Frequency.

2.3 Result

After configuration is done, enter SEARCH menu, adjust Threshold to show several peaks for easy reading from the table then press Reset. After the average number increasing to 100, the FFT result as shown in Figure 4.

Figure 4     FFT Peaks Result

The carrier amplitude is -14.9dBV, the sideband amplitude is -22.8dBV. So the difference between the sideband amplitude and the carrier amplitude is -7.9dB.

According to the previous introduction, the results of the modulation index are shown in the table 1

 

3. Summary

The Siglent oscilloscope with newly released Peaks/Markers software, supports peak and harmonic searching which provides a convenient method of spectrum analysis.

 

Products Mentioned In This Article:

SDS1000X-E Series please see HERE

SDG2000X Series please see HERE

 

Programming Example: SDS Oscilloscope save a copy of a screen image via Python/PyVISA

Posted on: June 18th, 2021 by Doug Lovell

Here is a brief code example written in Python 3.4 that uses PyVISA to pull a display image (screenshot) from a SIGLENT SDS oscilloscope via USB and save it to a drive on the controlling computer.

NOTE: This program saves the picture/display image file to the E: drive, which may or may not exist on the specific computer being used to run the application.

Download Python 3.4, connect a SIGLENT SDS Oscilloscope using a USB cable, get the scope USB VISA address, and run the attached .PY program to save an image of the oscilloscope display. The type of file saved is determined by the instruments setting when the program is run.

Tested with:
Python 3.4

SDS1102CML+

Products Mentioned In This Article:

Siglent Oscilloscopes please see HERE

Power Supply Design: Load Step Response with a SIGLENT DC Electronic Load

Posted on: June 18th, 2021 by Doug Lovell

Building a power supply that can handle various loads without oscillating can be a challenge. Computational models and computer simulations can help get your design headed in the right direction, but physical testing is essential to proving the performance of your design.

One method of quickly determining stability is to use a load step response.

In this test, a DC electronic load is used to provide a current load that steps from a low current draw to a higher value in a short period of time. By directly measuring the voltage and current output of the supply with the stepped load, we can visually observe the recovery of the power supply feedback loop and make changes to the design to optimize the response.

For this note, we are going to perform identical tests on two supplies and compare the output voltage and current waveforms: One has been tuned so that the output quickly recovers with minimal overshoot and ringing. The other supply is not tuned and subsequently oscillates. We will also discuss some measurement techniques to help get the right data as quickly as possible.

The Equipment:
A DC Electronic Load: The SIGLENT SDL1020X-E is a 200 W load with dynamic testing capabilities to perform the load step. It also features remote sense capabilities to compensate for the voltage drop across the load leads. High currents can provide a substantial voltage drop across the leads and will add unwanted error.
An oscilloscope: The SIGLENT SDS2354X Plus scope has a large display, easy-to-use interface, and features that make capturing these waveforms very easy.
A power supply: The SIGLENT SPD1168X single output supply delivers power to our power supply board
A current probe: The SIGLENT CP4070 features a 150 kHz bandwidth that will minimise most switching noise from the measurement
Power supplies to test: The Analogue Devices LTM4646 series of uModule Regulators. This module features two 10A DC-DC converters. One has been “detuned” to show some common problems associated with power supply design. The other supply has been left in it’s tuned state as a comparison to the detuned supply.

The Setup:

  • Connect the SPD bench power supply to the power supply to test and configure the output values to match your supply needs. Here, we set the SPD for 12 V @ 3 A.

  • Connect the SDL electronic DC load to the output of the power supply to test. Configure the load for Constant Current (CC), set the voltage and current ranges to the lowest ranges that still accommodate the requirements of the test, set the current load to a value near the maximum for your design. You may also wish to wire up and enable the SDL remote sense which enables remote voltage measurement to minimize the voltage drop caused by the high current flow through the electronic load leads. Here, we set the current to 5 A.

  • Connect a passive probe to the oscilloscope CH1. This probe should be connected to the power supply feedback loop to monitor the voltage as the supply adjusts to the load.
  • On the oscilloscope, configure CH1 for AC coupling to provide the most resolution to view the feedback voltage which can have high DC offsets. Enabling the Bandwidth Limit (BW limit) can also decrease noise. Here, the SDS2X Plus also has on-screen labels for traces, which can be a convenient way of keeping information organized. Here, I labeled CH1 Vout.

  • Connect the current probe to the oscilloscope CH2.
  • On the oscilloscope, set the trigger for Rising Edge, CH2 and AUTO. This will allow you to adjust the current probe zero position without dealing with the trigger setting.
  • Configure CH2 as a current probe (Units = A), set the Probe attenuation to the proper value (50 mV/A in this case). DC coupling here because we want to see the total signal amplitude. I also applied a label to the output current (Iout).

  • Zero the current probe. The CPs have a knob that you can use to move the DC offset. Set the scope to a low current range and adjust the probe to get 0 A on the display.

  • Clip the current probe around the positive current lead going from the power supply under test to the DC load. Make sure to have the clamp connected such that positive current flow (into the load) produces a positive signal on the scope.

Now, everything is connected and ready to test:

DC Load Verification
Now, you can power on the SPD power supply and SDL load.

Make sure that the scope is set to AUTO trigger for now. You can also add an RMS measurement on CH2 so that you can verify the current draw matches the setting on the DC Load.

Here, we have a setting of 5 A on the DC load.. and we show 5 A RMS on the scope:

Things are looking good. The current output matches our load setting.

DC Load Step Response

Now, set the DC load to Dynamic Current mode by pressing Utility > CC.. and configure the appropriate ranges, low and high current values and duration, and slew rate for your application.

Here are the settings used for this test:

This will continuously cycle from 1 A for 5 ms to 5 A for 5 ms with 500 mA/us slew rate.

Now, switch the scope trigger mode to Normal and adjust the vertical, horizontal scales and positions.. as well as the trigger level to get a stable trigger and a few periods of transition on the display:

Verify that the supply high and low current values match the setpoints. For this example, we have 1 A for 5 ms and 5 A for 5 ms.. which is what we observe.

Observe and Optimise

Now, let’s compare a tuned setup to one that is not tuned for our load as well as some techniques to gather more information about the response.

First, you likely see quite a bit of noise on your signal. The majority of this is due to switching noise in the supply being tested. Here is a zoomed image of the feedback voltage where you can see the switching noise quite clearly.

Enabling waveform averaging can help:

Now, we see the output voltage from CH1 (yellow), output current from CH2 (pink/purple), and the average voltage math function (orange):

This is the tuned setup.

 

Now, let’s look at a detuned supply:

The scaling on these two images is exactly the same. You can see a large amount of ringing associated with the detuned supply. This design is very close to becoming an oscillator with this load. If our step duration was any shorter, the supply voltage wouldn’t be settled and our output would be very poorly regulated.

Here are some closer images of the rising and falling edges on shorter time scales:

Tuned, Rising:

Tuned, Falling:

Detuned, Rising:

Detuned, Falling:

Conclusions
A DC load step test can quickly show you the performance and stability of a power supply design. Using a few common pieces of test gear, you can ensure that your design is ready to undertake the most challenging application requirements.

Creating an arbitrary IQ Waveform using MatLAB and UltraIQ

Posted on: June 17th, 2021 by Doug Lovell

Introduction

The DSG3000 (DSG3000B) Series RF signal source (Figure 1) is designed for RF engineering and signal development and test up to 6 GHz. The instrument is also capable of a number of modulation formats. One of the more advanced capabilities is IQ modulation that is enabled with the DSG3000-IQ option. This option adds both a baseband generator and the ability to externally generate IQ modulation for the carrier. The baseband generator’s I & Q data can also be directly output for additional verification and testing. Rigol’s Ultra IQ Station Software (Figure 2) makes it easy to generate standard IQ signals and load them into the instrument, but many engineers are now working with advanced, custom data or are experimenting with new modulation schemes for IQ data altogether. For these applications, Rigol has developed the following code examples for taking I & Q data in Matlab and delivering it directly to the instrument natively from within Matlab.
This guide will demonstrate how to install and configure the Rigol Matlab code as well as run several examples that load data into the instrument. We will then show the results using our DSA875 Spectrum Analyser (Figure 3) on the modulated carrier and our DS2000A Series oscilloscope on the baseband outputs.

Figure 1: Rigol DSG3060

Figure 2: Ultra IQ Station Software

Figure 3: Rigol DSA875

 

 

 

 

 

 

 

Installation and Configuration
Required components
There are several requirements for running the example code. We have tested the example code on the current version of Matlab as of this writing which is R2014b. First, download the Rigol custom IQ example here. The example code combines C++ to create the binary data streams with LabVIEW and VISA that handle the instrument communication. That code needs to be accessed from the Matlab command window. To achieve that several items may need to be installed in your system:
1) Microsoft Visual Studio C++ 10.0 and the Windows SDK 7.1
2) LabVIEW runtime engine for 2013 for your OS
3) VISA which installs with Rigol’s UltraSigma
Details:
1) The Microsoft tools are required to access the compiled C++ code that encodes the Rigol IQ data streams. Go here for the Matlab answer for installing these components to work with Matlab. Read the entire answer as there are different installation plans depending on what you currently have installed. Once you have installed the Microsoft tools you can verify the compiler settings from within Matlab by following these steps:
• Open Matlab
• Browse to the Rigol Custom IQ Example folder (Figure 4)
• In the Command Window at the prompt type ‘mex –setup’
• Matlab will respond with its current compiler settings. These responses are acceptable:
• Microsoft Windows SDK 7.1 (Figure 5)
• Microsoft Visual C++ 2010 (Figure 6)

Figure 4: Matlab window with Browse button highlighted and a mex –setup response in the command window

Figure 5: Text from a Matlab mex –setup response related to the C++ compiler settings using SDK 7.1

Figure 6: Text from a Matlab mex –setup response related to the C++ compiler settings using Visual C++ 2010

 

 

 

 

 

 

 

 

If Matlab is using some other compiler or has yet to select a compiler follow the links and information in the mex –setup response to configure one of these compilers. The example code may or may not work correctly with other compiler settings.
2) Download and install the NI LabVIEW runtime 2013 applicable for your operating system.
This download may require you to register at ni.com and the PC should be rebooted after installation. The example code has been tested on 64 bit and 32 bit systems. All of the required components are available for other OS options as well, but this example was not developed or tested for those environments.
3) Install Rigol UltraSigma. Download it here. It is a 522 MB file that includes the required VISA drivers. It is also helpful for identifying your DSG3000’s VISA address quickly and easily. That download include installation and usage guides for UltraSigma.
Connecting your DSG3000
Plug in and power on the DSG3000 signal source. Push the green PRESET button on the left to reset it to the default conditions. Now connect the USB Device port on the rear panel to the PC running Matlab. The DSG3000 can also connect over Ethernet or GPIB, but we will focus on USB communication.

Then, Run UltraSigma and you will see the DSG3000 appear in the Resource list (Figure 7). The string in parentheses after the model number is the VISA resource string. This is the string we need to edit in our Example.m file. To copy the address right click on the instrument model number and select Operation  Copy Address (Figure 8). Now we will edit the Example.m file in Matlab to have the correct resource address for our connected instrument. In Matlab, right click on Example.m in the Current Folder window and select Open. The file will now open in the editor. In the first line of code InstrVisaAddress is set equal to a string in single quotes. Highlight the string leaving the single quotes and paste the string we copied from UltraSigma. This Matlab view is shown in Figure 9. Once this is complete save the Example.m file. Repeat the paste and save process on Example2.m for later. We are now ready to run the examples. Remember, the DSG3000 must have the DSG3000-IQ option enabled to accept these commands.

Figure 7: UltraSigma showing DSG3000 connected

Figure 8: UltraSigma address copy function

Figure 9: Example.m editing in Matlab

 

 

 

 

 

 

 

Creating Custom IQ data
This example creates the simplest IQ data stream by encoding the I data as sine and Q data as cosine:
InstrVisaAddress =
‘USB0::0x1AB1::0x0992::DSG3A161250003::INSTR’; x = linspace(0,2*pi,1000);
Idata = sin(x); Qdata = cos(x);
status =
RIGOL_PACK_ARB(‘test.arb’,Idata,Qdata,100000); status = RIGOL_DOWN_ARB(InstrVisaAddress,
‘test.arb’,’test.arb’,1,1);
First, we set the VISA resource address. Then, we create arrays of data for I and Q. Next, we pack that information into a binary file and then we finish by sending that data to the instrument.
There are 2 custom commands that call Rigol compiled code:

RIGOL_PACK_ARB
This command converts I & Q data arrays into a local arb file that can be loaded directly to the instrument. The file describes both the data and the desired playback speed. [ status ] =
RIGOL_PACK_ARB(LocalFileName,Idata,Qdata,SampleRate) Definition:
• LocalFileName is the local file to create on the computer. MUST end in .arb

• Idata is the vector of real numbers representing the I data over time. Values should be -1 to 1.
• Qdata is the vector of real numbers representing the Q data over time. Values should be -1 to 1.
• SampleRate is the real number representing the number of samples to put out per second. Default is 100 kSa/sec or a 100 kHz sample rate, so the units is kHz. Value can be set from 1 to 50000. 100000 can also be discreetly set.
Status returns 0 for success and 1 for a failure to pack the file.
RIGOL_DOWN_ARB
This command downloads a local arb file created by RIGOL_PACK_ARB to a connected DSG3000 instrument and optionally enables the output.
[ status ] = RIGOL_DOWN_ARB(InstrVisaAddress, FileNameOnInstr, LocalFileName, OutputEn, KeepLocalFile)
Definition:
• InstrVisaAddress is a string representing the VISA resource name for the DSG3000 you want to load the file to. Typical string would look like
‘USB0::0x1AB1::0x0992::DSG3A1301080006::INSTR’ for a USB resource.
• FileNameOnInstr is the file name to give the wave on the instrument. It MUST end in .arb. This filename is changed to all capital letters in the instrument.
• LocalFileName is the file name created during the PACK procedure. It MUST end in .arb
• OutputEn is the output enable option. Send 1 to automatically load and output the file. 0 does not enable the output. 1 is the default.
• KeepLocalFile determines what to do with the local file on the computer after loading is complete. Send 1 to automatically save the file. 0 deletes the file. 1 is the default.
Status returns 0 for success and 1 for a failure to pack the file.
Tips:
File names do not support paths. Use files directly. Getting active output may require setting of RF, MOD, and or IQ SWITCH to ON. Verify these are active when trying to view output signals.

Custom IQ Test and Verification
Now that we have explained the functions we can run the examples provided. The first example, which we have already discussed, creates a simple sine wave and cosine wave in the I & Q data respectively. We test and verify this with our DS2000A Series oscilloscope. First, connect the Baseband I & Q outputs on the rear panel of the DSG3000 to the channel 1 and channel 2 inputs of the oscilloscope. I out should be connected to channel 1. Q out is connected to channel 2.
Then, run Example.m by right clicking on the name in the current folder window in Matlab. Select Run from the popup. The code will execute and after a few seconds the outputs will appear on the oscilloscope. You can reset the DS2000A oscilloscope to the factory defaults:
• Push Storage
• Select Default
Then, from the factory settings Push AUTO. For our purposes we want to see the relationship in phase between I & Q. While it is a simple comparison because the sine and cosine are 90° out of phase, it is still instructive to view in XY mode. Push the HORIZONTAL MENU button and under TIME BASE select XY. By adjusting the channel scales and offsets you can center that image to get to Figure 10. This view is relevant because it is similar to a basic constellation decoding view used for signals encoded with phase information.
Lastly, we can run Example2.m the same way. This file generates IQ data that traverses a basic 4 x 4 constellation diagram and repeats as shown in Figure 11.
If we connect the DSA875 to the RF output and mix this data onto a 6 GHz carrier by setting the DSG3000 Level to -10 dBm, turning on the RF and MOD lights, and turning the IQ Switch to ON we can view the occupied bandwidth of the signal. The IQ data from Example2 has the spectrum shown in yellow on Figure 12. If we change the SampleRate in the RIGOL_PACK_ARB command from 10 kHz to 1 MHz and run it again the spectrum is now the purple signal in Figure 12.
Therefore, with our DSG3000 RF signal source,
D2072A oscilloscope, our DSA875 spectrum analyser, and our Matlab examples we can create our own custom IQ data, test, and verify the basic IQ constellation patterns as well as compare spectrum usage making a good start on our exploration or advanced RF modulation schemes.

Figure 10: Scope XY mode view of I and Q baseband signals showing phase relationship

Figure 11: Scope XY mode view of Example2.m

Figure 12: DSA875 showing the Example2 modulated signal at 10 kHz and 1 MHz IQ symbol rates

 

 

 

 

 

 

 

Products Mentioned In This Article

  • DSG3000 Series has been discontinued, please see DSG3000B HERE.
  • DS2000A Series Oscilloscopes please see HERE.
  • DSA875 Spectrum Analyser please see HERE

Precompliance: Susceptibility testing

Posted on: June 17th, 2021 by Doug Lovell

EMC Precompliance Testing: Immunity/Susceptibility

Solution: Products that contain electronics can be sensitive to radio frequency (RF) interference. Devices that experience RF interference can be prone to improper or failed operations. Products that suffer problems when exposed to RF interference are said to be susceptible to interference while products that do not exhibit issues when exposed to RF interference are said to be immune to interference.
RF interference can cause:

  • Scrambled display information
  • Slow, Frozen, or locked operations (no response from keys, knobs)
  • False or noisy data
  • System reset or reboot

Design analysis, including part selection, shielding, and cable selection is the first step in creating a product that is capable of operating “as expected” under a certain degree of RF interference, but testing early under real world conditions is one sure way to determine if your design is susceptible to any issues with RF.
In this application note, we are going to show you how an RF generator and some simple tools can help you identify weaknesses in your product design.
A Word about Precompliance
Most governments have regulations in place that specify the amount of electromagnetic interference (EMI) a product can emit into the environment (radiated emissions) and conduct down the power cord (conducted emissions).There is also an increasing number of regulations that cover how much EMI a product can endure from outside sources (susceptibility).
Products being sold within the areas covered by these regulations must comply with the defined test limits. Compliance tests use these regulations to define the proper instrumentation, physical setup, and experimental techniques and experience to correctly record and report properly. This testing is very important and required for legal sale of the product within the covered area. Unfortunately, compliance testing can be expensive and difficult to execute due to the specialised equipment and knowledge required to properly conduct the tests.
Precompliance testing simulates the major details of a compliant test setup at a lower investment in time and money. Before you go to a compliance lab for testing, you can use precompliance tests to gather information about the performance of a design, make changes (if needed), and retest.. all in an effort to minimise the return trips to the compliance lab.
A word of caution, however. Precompliance data can be useful in hunting down many, if not all, of the non-compliant areas of a design but it is not a substitute for testing at a fully accredited compliance lab. Ultimately, the company (you) is responsible for proof of compliance to the full regulations for your product.
Radiated Susceptibility
Radiated susceptibility tests involve observing the operation of a device-under-test (DUT) while it is being subjected to a known RF source. The signal is delivered to the DUT using antennas for far-field testing or near field probes for board level tests.
Most radiated susceptibility regulations are based on IEC 61000-4-3 which defines the test signals range from 80-1,000MHz. This signal can be modulated by a 1kHz AM sine wave with 80% modulation depth. The modulated signal helps to quickly identify any rectification issues within sensitive circuit elements.

In far-field tests, an RF signal source, like the Rigol DSG3000 or DSG800 series is connected to an antenna that is set up a meter or two from the DUT. The RF source is then configured to source an output with 80% AM modulation at 1kHz. The amplitude should be set as high as possible, and the carrier frequency can be set at 9kHz.
NOTE: The DUT should be configured in its most commonly used state. All cabling (power, I/O, etc..) should be connected and in place. Cables can act like antennas and can directly influence performance.
Observe the DUT for any functional changes or issues such as a glitching or noisy display. Now, increase the carrier frequency and check the DUT. Step the center frequency of the generator and continue to observe the DUT, making note of the carrier frequencies that cause issues and the type of problems observed. After you have completed stepping up to 1GHz, you can rotate the DUT with respect to the antenna and re-test if you desire a more thorough test.
NOTE: Antennas and should only be used in shielded anechoic or semi- anechoic chambers to prevent interference with communications and emergency broadcast bands. It is illegal to broadcast over many frequency bands without proper licensing.
The use of an RF source like the Rigol DSG3000 (DSG3000B) or DSG800 series allows you to the flexibility to adjust the wavelength, power, and modulation of the output to help identify problem areas quickly.

Figure 1: The Rigol DSG800 and DSG3000 RF Source.

 

 

Figure 1: The Rigol DSG800 and DSG3000 RF Source.

 

 

 

 

 

Near Field testing is helpful because it does not require specialised chambers for testing. The E and H field probes only produce strong fields at distances less than 1” from the tip of the probe and do no radiate efficiently enough to cause problems with broadcast and emergency systems. Their small size also allows you to pinpoint the RF at specific circuit elements.

 

Figure 2: RIGOL’s NFP-3 set of Near Field Probes. These are all H field probes.

 

 

 

 

 

 

The RF source is configured exactly as in the far-field test, but this time, the probe tip is placed very close to the circuit or elements of the board at each carrier frequency. As you scan across the circuit, observe the DUT and be sure to check for any issues. Especially near sensitive analogue circuitry.
In the figure below, we removed the shielding from an oscilloscope board and used a probe and DSG3000 to deliver RF signals into the sensitive analogue front end. As you can see, with the shielding removed, the RF causes data corruption and changes the waveform significantly.

Figure 3: Using a near field probe on an unshielded Oscilloscope analogue input circuit.

Figure 4: Oscilloscope data with shielding in place.

Figure 5: Oscilloscope data without shielding.

 

 

 

 

 

 

 

 

Additional testing
Another useful test technique is to use a current probe and RF source to deliver RF signals to cables connected to the DUT. Cables can act like antennas and couple undesired signals to the DUT. You can use this setup to step through different frequencies and check the susceptibility of your design. Commercial current probes can be used.. but an acceptable current probe can be built using a snap-on ferrite choke, a few winds of insulated wire, some epoxy, and a BNC connector as shown below:

Figure 6: Homemade current probe.

Simply setup your DUT and connect all of the cables that are common to its usage. Configure the source to output maximum power with the same 80% 1kHz AM modulation that was suggested for far and near field tests earlier and observe the DUT for problems. Step the carrier frequency and observe. Perform this test to the maximum desired frequency and repeat the process on each cable used with the DUT.
NOTE: Clamp probes should only be used in shielded anechoic or semi- anechoic chambers to prevent interference with communications and emergency broadcast bands. It is illegal to broadcast over many frequency bands without proper licensing.
To demonstrate the use of a current probe, we performed an experiment on a USB powered demonstration board. We used a DSG3000 and a homemade probe clamped to a non-filtered USB cable connected to the board and we monitored the output signal.

Figure 7: Injection of RF to an unfiltered USB cable.

With no RF applied, the data was smooth.

Figure 8: Sine wave from board without RF interference.

But, when an RF signal was applied, the output began to show signs of interference. The worst interference occurred at a carrier of 110MHz, as shown below.

Figure 9: Noisy data showing RF interference at 111.1MHz due to injected noise.

In conclusion, an RF source like the Rigol DSG3000 or DSG800 and some simple tools can enable you to test your designs for immunity issues early in the development process. Saving your company time and money.

Figure 10: Zoomed data to show details.

Products Mentioned In This Article:

  • DSG800 Series please see HERE
  • DSG3000 Series has been discontinued, please see DSG3000B Series HERE
  • NFP-3 Please see HERE