element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
RoadTests & Reviews
  • Products
  • More
RoadTests & Reviews
Blog Rohde and Schwarz MXO4 Scope - Logic Analyser debugging FPGA
  • Blog
  • RoadTest Forum
  • Documents
  • RoadTests
  • Reviews
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join RoadTests & Reviews to participate - click to join for free!
  • Share
  • More
  • Cancel
  • Author Author: michaelkellett
  • Date Created: 19 Feb 2023 4:46 PM Date Created
  • Views 1303 views
  • Likes 13 likes
  • Comments 4 comments
Related
Recommended

Rohde and Schwarz MXO4 Scope - Logic Analyser debugging FPGA

michaelkellett
michaelkellett
19 Feb 2023

MXO4 Logic Analyser

The  MXO4 offers a logic analyser option. All the hardware is built in, but you need to pay for the Mixed Signal upgrade to get the probes and the software key to unlock it. That’ll add £2622 to the base price, so it’s not exactly cheap (although a good deal cheaper than Keysight’s equivalent add on the their Inifinvision 4 series scopes which is an extra £3500 or so.)

The first scope LA that I’ve owned was in an Agilent 54622D, which I bought some 22 years ago. It had a 16-channel analyser built in and no protocol decoders. But it was still pretty useful at the time because I had nothing better. It could sample digitally at 400Ms/s and it had 4M samples of memory.

The MXO4 has 16 channels, 400M samples of memory and a maximum sampling rate of 5Gs/s (although the pod bandwidth is only 400MHz) .

For testing the MXO4 I’m going to use my Efinix Dev Board (previously blogged about) and we’ll be looking at the interface between the FPGA and the two AP Memory APS6404memory chips. I wanted to connect the MXO4 directly to the memory chip pins but it proved to be too difficult to solder so many tiny wires to vias on the pcb, and I never got all of them working at once ! Because of this the MXO is connected to debug pins on the FPGA which does introduce some timing errors, but they won’t have any effect on these experiments.

PIC Efinx board with probes

image

The MXO4 logic probes are the same as those supplied with the RTA4004. They come with hook probes and a lot of little leads. I haven’t used the hook probes.

Logic Analysers and scopes often have a lot of fancy trigger modes that can be difficult to set up. So the easy way is to trigger off pretty much anything and use the big memory to capture an all embracing dollop of data. This will reduce your setup time and gives confidence that you have captured all you intended. The downside is finding you way around the captured data.

Looking at a big blob of data

 image

The capture was triggered on D4 which is the start signal for a memory transfer operation. It’s triggered by the internal test generator coded into the FPGA. I can start the test generator with a serial command to the processor on the Efinix FPGA board.

The test sequence writes 16 blocks of data to the memory chips and then reads them back, generating a total of 32 start pulses.

I set up the logic channels like this:

image

image

What I really want to do is look at the first block of data after a matching pair of write and then read bursts. All the data is there but it’s a problem getting at it.

On the Agilent 54622D (and on some other scopes) it was easy to use the horizontal position and scale controls to zoom into any place you liked. This just doesn’t work very well with the MXO4 (and with big data captures) because its very easy to get lost.

On the other hand you can use the Zoom function which allows you to select a window to zoom on the main display. It then splits the screen like this:

image

The high, low and edge levels of the digital signals are colour coded green, purple and white. It takes a little getting used to but on other scopes I've had trouble working out if I'm looking at high on the trace I mean or low on the next one up.

You can use the mouse scroll wheel to expand and contract the zoom (and you can move the zoom rectangle about or change zoom boundaries numerically). The zoom rectangle height as well as width changes.

image

The zoomed window doesn’t show timing.

But we can set cursors in the Zoom window:

image

Here I’ve selected the width of a bad sample (where the sample time happened to coincide with a change of data on the bus).

I was puzzled by the displayed width – 2.220ns – the scope is sampling at 500Ms/s so the resolution is 2ns – how can a pulse be 2.220 ns long ?

image

image

Two attempts at glitch width measurement exactly 1 cursor control knob click apart. 2.368ns and 2.516ns – so rather than the control moving 1 sample time per click it’s moving by 130ps per click which is 0.065 sample times. There really ought to be a way of locking the cursors to the sampling.

There aren’t any other tools for finding stuff in a blob of data. I’d rather hoped for a “goto next edge on channel x” at the very least.

 

Triggering in just the right place

As I said before, capturing a big chunk of data is easy to set up but difficult to sort out afterwards.

The MXO4 has fancy triggering options, so what we would like is to trigger on the nth "33 88" sequence on the bus, or maybe the first start, followed by n busy low to high transitions. Or even the 35th start.

Let’s have a look:

Choose sequence in the Trigger menu:

image

Then select some channels:

image

Woops ! No option to select digital channels in Trigger sequences.

What’s the point of a built in LA if its signals are second class ?

We could try hooking  an analogue channel up but that's the sort of hard work we want avoid.

Maybe we could trigger off a pattern in the bus:

image

Well it looks possible, but doing it bit by bit is rather 1970s style (you know – those computers with switches and lights to set up the address and data bus.)

There doesn't seem to be a way to reference the bus in pattern or state setting.

 

Segmented memory

People talk about this a lot and the MXO4 claims special whizzy things for its segmented memory. Maybe that can save the day.

I copied this from the glossy leaflet:

And it says this:

Use segmented memory to capture signals separated by inactivity. Examples include laser pulses, serial bus activity and RF pulses. The segmented memory of the R&S®MXO 4 series oscilloscope enables signal capture over a long observation period up to 1 000 000 segments.

 

This trace is very nearly what we want:

image

It took a while to work out how to get there – but it looks almost right.

We have 32 captures in segments and we are able to select any one – so we can pick out any of the transfers for detailed looking.

I’ve altered the horizontal scale to show all the segment:

image

And the segment ends before the transfer did.

The settings will explain why:

image

I’ve set the sample rate to control the time that the minimum number of samples I can set is shorter than the memory transfer packet time.

image

And here I’ve set fast segmentation to on.

But the problem is that I can only set the time duration of the segment to 1u or 2us, but the interval between start pulses (on D4) is about 1.2us.

OK – so let’s set the record length to automatic.

image

And then run and we get:

image

Scaled out to show complete capture.

image

We only get 16 captures and some data is lost.

So that bit in the glossy where it says “Use segmented memory to capture signals separated by inactivity” really means signals that are separated by a load of stuff you don’t care about, because you can’t precisely set the end time of the segment.

If only the automatic setting on the record length had an option to stop the current segment and start the new one every time it saw the trigger condition ………..

 

Summary

I set out to do something that should be quite easy and is far from an unusual requirement. (Capture or examine single packets of data sent back to back at a modest rate (75MHz clock)).

The basic hardware has the ability to capture the data in big chunks, but lacks the tools to navigate it easily.

I think the segmented hardware could capture 1 packet per segment, but it doesn’t have the control options to make it possible.

If anyone has any ideas as to how else this problem might be approached I would be happy to try them.

The basic hardware core of the Logic Analyser is fine, its got a huge memory depth and can sample very fast. I didn't have any issues with glitches or crashes.

The big screen makes the feature a good bit more useable than some of my older scopes.

  • Sign in to reply
  • michaelkellett
    michaelkellett over 2 years ago in reply to shabaz

    Thanks for the suggestion. I agree plus,

    I'd like to see the segmentation enhanced if possible so that you can set triggers to start a segment and to stop it. And then , just to make it really neat, the ability to specify some overlap, so that the end of the segment trigger isn't actually at the end (just as normal triggers are not at the begining).

    Also I'd like to see triggers working the same (as far as possible) on both analogue and digital channels. I want to be able to press the START button and have the scope wait for xxxx instances of condition a, then yyy instances of condition b. The LeCroys can do it, so why not R&S.

    You can use that feature for simple things like wait for 2million clocks (while the DUT starts up) and then trigger on the 93rd message. On some scopes you can set quite complex conditions, with more than 2 levels of  seqeuence.

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz over 2 years ago in reply to shabaz

    (Can't edit, apologies for the poor grammar in the comment!).

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz over 2 years ago

    Hi Michael,

    Regarding the segmented operation, I too think there's currently isn't a solution to that scenario (1 packet per segment), and the scenario is not an unusual one as you say, I hit this as well.

    It got me wondering, what was the use-case that they developed it for, if the scenarios we both tried would not work here.

    This is my current hypothesis: the segmentation on logic channels may be more useful for data separated by (relative to the transactions) _long_ periods. So, what we were trying to do (one packet e.g. frame or message per segment) likely would not be ideal for the implementation. Instead, _all_ packets in a larger high-level transaction (i.e. burst of messages), would all be fitted into a _single_ segment, provided there were _much_ longer delays between the transactions. (I hope this is not the case, and that it can be improved to allow segmentation to stop-and-start at the trigger event).

    Basically (speculating of course!!) I think that some sort of search feature (to search within segments) is yet to be implemented, and it may have had lower priority (although it's still needed), and since it is absent currently, we are perhaps trying to use the segmented feature in a use-case it wasn't intended for.

    I really like the way the segments are traversed, and I hope any search function allows operation in a similar way. However, since we have both found it natural to want to use the segmented feature in this way, I reckon we should both suggest it as a desired feature, regardless of any search function that they implement, since they may have never thought to do it this way.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • DAB
    DAB over 2 years ago

    Nice update.

    It is disappointing that they did not include a better interface for decoding digital events.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube