EELive! (ESC) Conference Slides + Programs

See my presentation at EELive? If so you can download the slides from:
http://www.newae.com/files/ThinkFastFPGADesignUsing_OFlynn.pdf

And the ISE + Vivado HLS Project from:
http://www.newae.com/files/ThinkFast_FPGA_Files.zip.

You can also check out additional details at the Programmable Logic in Practice post, which includes videos + examples of other uses of HLS.

Splitting of NewAE & ColinOflynn.com

Since 2001 I’ve used NewAE.com as my personal domain. I’ve decided to instead move my personal content (blog, various wiki articles, etc) to ColinOFlynn.com. Any old links to NewAE.com will work by simply replacing ‘newae.com’ with ‘colinoflynn.com’, as I’ve mirrored all (I think) the content.

In the mean-time there will be a redirection page to inform you that NewAE.com will contain mostly some products I’m involved with, and instead you should head to ColinOFlynn.com for the old content.

PicoScope 5000 (5444) Review

If you check out my older blog post, you’ll see a very detailed review of the PicoScope 6000 series device. I also had a chance to use a 5000 series device, specifically the 5444.

The 5444 is a 4-channel scope with a built-in AWG. The sample rate is up to 1 GS/s in ‘normal’ mode, but you can use something called Equivalent Time Sampling (ETS) to boost that up to 10 GS/s in specific cases.

Continue reading PicoScope 5000 (5444) Review

Making a USB-HID Keyboard Encoder Board for PicoScope

Ever wanted to control something from a knobby-looking USB peripheral? In this example I wanted to control the PicoScope software from a bunch of encoders mounted on a USB peripheral:
Image

Continue reading Making a USB-HID Keyboard Encoder Board for PicoScope

Making a Simple Scope Probe Holder

Interested in a low-cost method of holding a scope probe securely against your PCB board? For this to work you’ll need a scope probe with a spring-loaded tip. I came up with this idea since the PS6000 series scope I was using from PicoScope comes with such probes. The end result looks like this:
Image

Continue reading Making a Simple Scope Probe Holder

PicoScope 6000 (6403D) Review & Comparison

This is an *EXTREMELY* long post, but there is a ton of ground I want to cover. I hope you find it useful if you are seriously considering purchasing an oscilloscope.

Looking for a medium-cost scope? There’s lots of options out there, and I’m going to concentrate on the Picoscope 6000 series for this review, specifically the 6403D. This device has 350 MHz analog BW and 5 GS/s max sample rate on a single channel, which can be boosted with Equvilant Time Sampling (ETS) to 50 GS/s on *all* channels. Anyway I wanted to give you something more than the normal ‘press reviews’. I’ve spent a ton of time doing this review & hope you find it useful.

Hardware, Box, First Impressions

The scope comes in a nice plastic carrying case, and includes a power adapter with plugs for everything (even Australia!). It’s always nice having somewhere to store your equipment when it’s not out on the desk.

The scope itself feels very solid – like you could hit someone with it & do some substantial damage. It’s connected via USB 3.0 (or 2.0 if your computer isn’t fully equipped) & has it’s own power brick. The high-end FPGA, ADC, etc in these devices are well beyond what you can do over USB power! What IS very nice is the device powers down when disconnected from USB, so you don’t need a power switch or anything.

Here’s a marketing shot of the scope stolen from PicoTech.com (sorry PicoTech I’ll remove this if you want!). You should definitely check out all the details of the scope at http://www.picotech.com/highest-performance-oscilloscopes.html & click through to the various pages, as I won’t be covering all the features the scope has.
Image

One of the biggest hardware improvements in this scope is the probes. Scope probes have long bothered me for how useless they are on real boards. Well the probes with the PS6000 series are beautiful. They are much smaller, AND have a spring-loaded replaceable tip. I’ve been using similar tips on my DMM & love them. In particular you can get good solid connections on SMD parts, and even break through the soldermask on vias, letting you probe BGAs with ease:
Image

There’s a pretty good article on EDN’s Website covering these probes actually… or almost these probes, that article is by Agilent but the probes look identical. I even made a little review video to show you probing directly into vias:

The replaceable tips are 5/$10 for the solid tips, or 5/$30 for the spring-loaded ones. So you won’t even feel bad about possibly damaging your fancy probe tip. They do give you a few spares to get going. There is also special adapters to fit from 0.5mm, 0.65mm, 0.8mm, 1.0mm, and 1.27mm SMD leads without slipping, although unfortunately these are not included. You’ve got to order the accessory kit TA065 for $65 to get that (along with some other tools, such as improved grounding).

Software Information

First off – a complaint I see is people don’t like there is no physical knobs, since it’s a PC-based scope. I’ve always like PC-based scopes more, as I spend longer trying to enter complex things via the front panel, or get specific offset voltages entered in. Anyway as a proof of concept to appease those knob-lovers, I made this cool multi-knob USB board, it uses a Teensy++ 2.0 or AT90USBKEY + some encoders. The USB part is about $25, and encoders about $2/each. I’ll put up full details on another page (note to self: todo), but here’s a video of it:
.

One thing you’ll quickly appreciate in the software is the ability of having multiple ‘viewports’. So you can configure one window with 2 channels, 1 window with a FFT, 1 window with math channels, etc. You’re really only limited by screen space. Compared to dealing with a small scope display where you’ve got to use some offset feature to stop things from overlapping, this is 100x better. I’ve always liked PC scopes for this reason particularly, and never understood why people wanted a physical scope with a small screen.

Talking about FFTs, one cool feature is you can have WAY longer FFT lengths than anybody else is offering. The Rigol as mentioned is very limited, even Agilent is somewhat more limited. Do you care? Here’s a little video showing the difference:

You can download a ‘demo’ version of the software too, so play around with that. Some of the features are a little ‘hidden’ the first time you use it I feel like… look for small arrows which means you can click on things and get a bunch more options. But once you’ve figure it out you are basically good to go! Here’s some tips/examples:

Testing some Specific Features

Equivalent Time Sampling (ETS)

In ETS mode you are combining many passes of the waveform with a slight phase offset. PicoScope claims to get 50GS/s on 2+ channels, and when I’m on 1 channel I see up to 200GS/s(!) but I don’t see that actually specified anywhere, so it might be beta.

Even though the analog BW is only 350MHz, the amazing thing you can do is super-high resolution phase measurements. Check your clock is properly in phase with the data line for example, but all sorts of things are possible. At 50 GS/s you’ve got 20pS resolution…. that’s enough you can see several mm difference in propagation time on a PCB trace. Check out this demo:

Very cool! If you’re doing high-speed PCB ‘stuff’ you’ll undoubtedly find a use for ETS. The fact you’re able to do it on multiple channels is critical, as you really care about the phase difference with all these tests. So you can setup the system to measure the ‘baseline’ phase difference, then do things like vary temperature/voltage etc to see how the phase difference changes.

Frequency Response

Alright… so the analog BW is 350MHz on my device, but how high can you push it? Well I decided to find out… here’s me going from 10MHz-1000MHz (limit of my signal generator):

If you see the review for the 5000 series on you can also see how I’m using ETS to view a higher-frequency waveform than you’d expect.

Triggering

The PicoScope has some pretty nice triggering features. It’s unfortunately missing the digital pattern matching, such as triggering on a specific I2C or serial byte pattern. Alas if you really need it you can always program a FPGA to do this (I’ve got some generic code to do so). But the ability of using window triggering is fairly handy, as the following video shows, which also uses the ETS mode:

Serial Decoding

I’ve got a LogicPort for most of my logic analysis needs, which includes all sorts of nice protocol-level decoding. It doesn’t help a lot when I’m running into analog issues, so I know from experience having this in the scope will be great. This way you can see where issues are if you’re having flakey connections, without having to do a lot of guessing when the data is just 1 or 0 as in the logic analyzer.

Anyway the PicoScope includes all the decoding modules by default, which is wonderful. The hardware scopes all charge you for each module it seems. Here’s a little video showing the decoder in action:

The overlay onto the waveform is very handy for seeing where issues are cropping up, and definitely plays into the entire reason you want decoding of digital protocols on an analog scope (to see where things went wrong!).

Arbitrary Waveform Generator

The AWG feature gives you access to a bunch of the expected waveforms, along with some more exotic ones such as a white noise, very handy for communications testing. But the Arbitrary in AWG means you can do *ANY* waveform. One cool feature you’ll immediately find a use for as an embedded engineer is the ability to take a waveform on one channel then play it back, but with small tweaks to the time or voltage. Makes it much easier to check what sort of limits your serial (or other) protocols will work under… here’s a little video example:

API Programming Mode

Probably one of the biggest features of this device is the ability to use it as a high-speed analog front-end. The inputs are switchable to 50 ohms, making it play nicely with the rest of your hardware / test equipment.

Then you can do all sorts of high-speed data transfer, and it even supports streaming mode via USB (including USB 3.0)! Don’t forget you’ve got the ability to input an external clock reference so you can synchronize it to some other timebase. You might need an external PLL device to ‘fix’ the frequency to be within the allowed range of the PicoScope, but that’s not a serious problem, something like the CDCE906 PLL chip would work even.

Anyway I’ve started a Python interface too, since I love Python :-) Here’s a little demo:

The code is at https://github.com/colinoflynn/pico-python .

Comparison to Other Tools

Comparison to Agilent/Tektronix Low-Cost Scopes

Both Agilent & Tektronix have a new line of low-cost scopes, and you can read my comparison to the Rigol below which covers a lot of the same ground. The problems with always needing to pay for additional features is basically the same.

The Agilent X-2000/X-3000/X-4000 stiff you on memory depth – the most expensive models have only 4MPts. The Textronik are slightly better, but you’re still looking at 20MPts tops. The Rigol is better, and the PicoScope has insanely larger buffers. You also get some nice segmenting support on the PicoScope to catch different events back-to-back, so you don’t just have to capture one big hunk of data. Some of the hardware scopes do support segmenting, some make you pay for it, so be sure to look at the specific one you are interested in.

One feature which is currently missing from the PicoScope software is a nice running-average of a certain number of waveforms. For example average the last 100 traces together… you can average all traces, which just requires a ‘stop/go’ command to clear the buffer, but I always find a running average easier. All other low-cost scopes (Agilent, Textronik, Rigol) I’ve looked into have this feature.

The Agilent X-3000 series has 64Kpts on the FFT if you need to do frequency domain analysis. It’s probably enough for most users – the PicoScope can have way more (up to 1/2 the memory), see my earlier video for details. The Rigol one is tiny though… 2Kpts isn’t so good if you want to look at a lot of spectrum.

Comparison to a Real Spectrum Analyzer

The idea of taking the FFT of the input & how a spectrum analyzer works is very different. A spectrum analyzer effectively sweeps a filter across the bandwidth of interest, and measures power. The FFT takes a time-domain representation, and uses a FFT to convert to the frequency domain. There’s a few caveats with this method, primarily that you’ll get some errors due to the digitizing of the waveform. You also have to have a proper ‘window’ around the waveform. The window solves a simple problem: a ‘perfect’ sine wave (e.g. only the single frequency component) would require a infinite-length time-domain representation. Obviously we can’t do this, so we need to ‘window’ are finite-length time domain representation.

As the spectrum analyzer is directly measuring the spectrum, it doesn’t have these issues. Anyway on with the example. I’m using a 10 MHz signal from a good signal generator, and connected this to a real Agilent spectrum analyzer. Here’s what the results look like:

Image

One of the nice features is the 50-ohm inputs help properly terminate the output of the signal generator. The same signal measuring using the PicoScope with a FFT looks like this:

Image

It’s fairly close, but not exactly the same. You’ll probably still need a SA for some tasks, but you can get a pretty good idea about harmonics with just your scope. The large bandwidth (350MHz) is a huge plus for practical tasks, combined with the ability to zoom in on a small portion of the bandwidth thanks to a large number of points in the FFT.

Comparison to Another Agilent Scope

I also had a 4GS/s, 600MHz analog BW Agilent MSO54831D to compare with. The first test I did was use a splitter that should have good phase matching (e.g. for high-speed RF) & fed a 15MHz sine wave into all 4 channels. Then in software I did 3 math measurements: Channel A-B, C-D, and A-B. The results are shown below, with the idea being to see how closely matched all the channels are when the input is the same:

Image

Compare to the same thing being done with a PicoScope device:

Image

Note in the picoscope waveform I’ve also shown the input waveform, which I turned off as it cluttered the Agilent one too much. The results seem pretty good – I don’t know how accurate my splitter was, so can’t know with certainty how much noise one ‘should’ see. But the Agilent & PicoScope were tested with the exact same physical setup, so we can compare between them. It appears the 6403C is at least as good & perhaps better than the Agilent (vertical scales on math channel the same). Both have similar specs from the sheets, so it’s a good test of the fidelity in the analog front-end.

The other test I did was with a 30MHz square wave (the fastest signal generator I had that could generate a square wave – everything higher was sine only). Here’s what it looks like on the Agilent, terminated into 50 ohms. I had left averaging of 16 traces on so this waveform is a little cleaner than a raw capture:

Image

On the PicoScope, without averaging, and again a 50-ohm termination:

Image

You can see everything looks pretty similar.

Comparison to Rigol

Now a quick word to other options: probably the Rigol DS4034 is the closest, which has 350 MHz analog BW and 4 GS/s. The price is similar ($4300 for Rigol, $4942 for PicoScope 6403C). If you want the protocol decoders on the Rigol which the PicoScope already has for free, that will cost you an extra $2700. This section will be comparing the DS4034 & 6403C by the spec sheets. Right away the 6403C gives you the faster sampling of 5 GS/s on 1 channel. Both the Rigol & PicoScope linearly scale down with more channels (e.g. 1GS/s @ 4 channels on the Rigol, 1.25GS/s @ 4 channels on the PicoScope).

The Rigol has a smaller memory, of 140Mpts, compared to 512Mpoints. At high sample rates this can be fairly important… at the max sample rate this corresponds to 35mS vs. 102mS of signal recorded. This makes the assumption the scopes can use the total memory at the fastest possible sample rate – something which may have limitations! Be wary of other low-cost scopes with even smaller sample buffers (like below 500kPts)…. you do run into them, so always check the specs.

The Rigol spec sheet is a little misleading IMHO on ADC type, which is never a good first sign. For example they list the resolution as 12 bits, with the condition the timebase is sufficiently large. They only mention what I assume is the true 8-bit ADC resolution later down in the ‘vertical resolution’ section. The PicoScope spec sheet does seem to more explicitly make clear that you’ve got an 8-bit ADC, which can have software enhancement to 12 bits via filtering.

The vertical scale is better on Rigol than the PicoScope, as the Rigol goes down to +/-5mV full-scale compared to +/-50mV full-scale. BUT the Rigol spec sheet doesn’t mention front-end noise. Without an idea on noise this is pretty meaningless – even on very good scopes (e.g. Agilent) that have lower ranges, it’s easy to introduce noise via your measurement setup. You’re better off buying/building an amplifier to put right at the measurement point, and use a larger scale input.

Both 6403C & Rigol let you synchronize the internal sampling clock to an external clock, although the 6403C has a larger range of allowed frequencies it will synchronize to. The 6403C only seems to let you do this via the API – e.g. not using the provided PC software. However I think 95% of people using this feature would be using the API anyway… for example if you’re doing Software Defined Radio (SDR) and using the 6403C as the front-end, you’ll definitely want this feature.

The triggering the Rigol has some additional options, such as pattern triggering, I2C, serial, etc. This could be very handy in real life, and the 6403C doesn’t have this. They both feature a bunch of other fairly advanced modes (window, pulse width, etc). NOTE: I’m not clear from the Rigol manual if you need to have the I2C, serial module etc which adds considerable cost for getting the triggering ability.

The 6403C has an Equivalent Time Sampling (ETS) mode, which lets you boost up to 50 GS/s. This means you’ve got 20pS resolution on the time samples, something which the Rigol device is missing. There’s a bunch of caveats about the waveform you are measuring must be stable, but it does have some pretty useful applications. If you want to check phase alignment of two clocks, especially over say varying voltage and frequency of the DUT, this is a quick way to do so.

The channel isolation is listed in different units. For the PicoScope this is claimed as 1:1000, which would be 60dB. For the Rigol it’s 40dB, which would be a 1:100 ratio (assuming measuring it using voltage). So theoretically, if you’ve got a 5V signal on the Rigol, up to 50mV of it would leak into the next channel, compared to 5mV on the PicoScope. I haven’t verified either of these claims though. The 1:100 ratio is the same as the X-3000 series from Agilent.

A few other points: both the PicoScope & the Rigol device have an FFT mode. The Rigol’s FFT is limited to using 2048 points, which will be very low horizontal resolution. Part of the problem with an FFT is you have no ‘center frequency’ like with a spectrum analyzer. You are ALWAYS starting at 0Hz… so if you want to look up something at 100MHz, you’ve got to have almost the full spectrum visible, then zoom in on 100MHz. So 2048 points is fine for low-frequency stuff… but if you want to get detail about higher-frequency? Not so good.

Whilst the Rigol does (claim to) come with nice I2C, SPI, etc triggering, it doesn’t actually decode those protocols for you. You’ve got to buy add-ons for protocols you want… even the simple UART one is $500. The I2C/SPI combo is another $500. CAN is $500. If you want FLEXRAY it breaks the pattern at $1200. As mentioned all those protocol decoders come in the PicoScope software, and they seem to be always updating it, so your device is future-proof. You can check the release notes at http://www.picotech.com/release-notes.html to see what sort of things get added… I notice they recently added a LIN decoder for example. I’m sure if Rigol comes up with one it will be…. $500.

Closing Remarks

Hopefully you’ve found this review helpful – I hope to continually update it with new example measurements & comparisons. I’ve tried to include details I hadn’t seen anywhere, and that reflected the type of questions I had when looking at a scope.

Pros

  1. Very fast sample rate, combined with insanely fast ETS mode gives you ability to do all sorts of useful measurements, including e.g. phase tests.
  2. Huge FFT length – handy for real-world scenarios where you want high frequency resolution. Again remember your FFT always starts at 0 (unlike a spectrum analyzer) & spans at least until your frequency of interest.
  3. Huge buffer size
  4. API Provided, Python library in-progress for super-simple scripting
  5. Decodes most serial protocols without needing to purchase add-ons.
  6. Provided scope probes are excellent – spring loaded tips & narrower tips let you probe vias directly.
  7. USB 3.0 for very fast transfer speed
  8. Carrying case provided.

Notes

  1. USB Ground connected to scope probe ground – should be careful not to have voltage difference between them, or I doubt your scope will be happy. The ‘real’ scopes I’ve tested seem to have all their probe grounds connected to Earth (based on two Agilent ones). So I don’t list this as a ‘con’ for the PicoScope, as it’s basically the same issue.

Cons

  1. Cannot trigger on serial protocols
  2. Software seems to be missing ‘standard’ feature of average last N traces together in real-time. (NB: This is supposed to be added shortly)

>

Programmable Logic in Practice

I wrote for Circuit Cellar in a column titled “Programmable Logic in Practice” from 2013-2015. This column detailed various work around FPGAs. The column later became my “Embedded System Essentials” column, which primarily dealt with security issues in embedded systems.

The previous domain (programmablelogicinpractice.com) now redirects here. Unfortunately not all posts were transitioned. You can find copies of some of my articles if you check the Circuit Cellar tag.

Quit wasting time debugging USB: Using TotalPhase Triggers

Image

This blog post might seem commercial… but I have no connection to TotalPhase. I’ve used their Beagle 480 USB analyser for some time, and before that have used a variety of other solutions (mostly SW-based), so have some idea what other options are out there.

It’s worth noting that they seem to give free updates forever. When I first used the Beagle 480 it could dissect mass storage & HID I think. Since then they’ve added almost every class possible… hell you can even do stuff like sniff a USB-Ethernet device, and pass the frames to Wireshark for IP-layer decoding. Total Phase has added tons of features in the last 4-5 years I’ve used this device, and they’ve all been freely available and usable with my device.

So why do I think other debuggers are a waste of time? Simply: the ability to trigger in/out of the device. Check out this video for more:

Continue reading Quit wasting time debugging USB: Using TotalPhase Triggers