ThunderScope

A new type of oscilloscope that’s fast, flexible, and completely open

Available for pre-order

View Purchasing Options
Feb 19, 2025

Project update 10 of 10

All the Latest Progress on Our Software and Hardware

by Aleksa B

Hi all,

It’s been three months since the end of the campaign, oh how time flies! I’ve had to dig back a bit to try to cover everything, but I think this post covers everything up to now.

From XDMA to LiteX, a Few Months Early!

Thanks to @NateMeyer’s diligent work on the LitePCIe Windows/Linux drivers and library, the project is switching over to the LiteX gateware a lot earlier than anticipated! This came just in time for the Rev 5 design to drop DDR3 completely, instead of designing in DDR3 memory for the dev edition and then later depopulating it for production.

Now you may be asking “but isn’t DDR3 supposed to be the benefit of a dev edition unit?”. That was the idea, but there really isn’t much you can do with DDR3 other than store the samples before transfer. Since this is never necessary with the LitePCIe stack (and a fast enough host), we decided to add something to make these units live up to the “dev edition” name:

We’ve exposed 12 LVDS lanes on a 36-pin flat flex connector, all capable of being used standalone or clocked in/out synchronously with the ADC samples!

If you are interested in using ThunderScope as a DAQ system, this provides a path to move to a custom ADC and front-end while still using our streaming architecture and software stack. It doesn’t even need to be an ADC per se, many high speed image sensors have parallel LVDS out and generate a LOT of data to stream to a host.

There’s been some interest in MSO functionality for ThunderScope as well. This was out of scope for the main design, but with synchronous sampling to the ADC it should be possible to design a logic analyzer pod to use this expansion connector.

Another interesting possibility would be to hook up this connector to the LVDS connector on a Glasgow revC and have sample-by-sample control over its inputs and outputs, which could be used for anything requiring precision timing and a lot of IO at voltage levels other than the 2.5 V the expansion connector uses.

These are just a few ideas we’ve had for applications using this connector, we’re looking forward to seeing how you all use it! And yes, we mean “you all,” since something this cool shouldn’t be limited to just the dev units, we’re adding it to all ThunderScopes we ship!

“I’ll make the switch to KiCad after I deliver all the campaign units, I promise.”

Oops, I guess I broke that promise! Due to some delays in production and shipping, I had a few weeks of “hurry up and wait” ahead of me, so I decided to give the KiCad Altium import a go and see how hard it would be to port the design over. And it was… a lot of work. But, I’m really happy that the project is fully switched over to KiCad now! I have some more thoughts on making the switch over on Mastodon, but you can just check out the schematic if you want to skip the rant.

ThunderScope’s New Look: a Thrilling Conclusion to the Anti-slip Saga

The compression moulded parts came back and they look great, fit great, and stop the thing from slipping, a shockingly good result for my first custom moulded part!

I also redesigned the end caps, which now have much sturdier probe compensation terminals, an expansion connector slot, and a grounding lug and maximum input voltage warnings.

A Non-Intel Option for PCIe Tunneling via USB4?

It exists and it’s called the ASM2464PD! I got nerd sniped and started reverse engineering a board based on it, only to realize that it doesn’t work with any of my TBT3 hosts. Seems to be a known issue with these parts unfortunately, so I’ve ruled out using it to avoid some very confused support calls. “No, it works with TBT3 hosts, but only newer TBT3 hosts” - statements made by the utterly deranged.

Multi-Sourcing Adaptors

With no viable alternative to the Intel-based adaptors, I decided to take another look at sourcing them in bulk for production and found a better vendor than the one I initially bought 100 from. I ordered some samples from them and quickly found a problem. These adaptors have a different spacing from the USB connector to the M.2 mounting hole than the existing ones, so our existing method of mounting it to the mainboard will not work with both at once.

To address this, I moved all the adaptor dependent mounting dimensions to the interposer board, so that every adaptor would need a new interposer but the mainboard would stay the same.

It worked, but I wasn’t happy with the amount of flex the solution would have in the vertical direction (it looks like a diving board and acts much like one too). It would also impart some of the force of inserting and removing a USB C cable to the M.2 connector, which it isn’t really made for.

So for the next rev, I made the interposer board the same size as the main board, so that it can sit on the board guides of the extrusion and rest against the endcaps. The assembly process here is to connect the Thunderbolt adapter to one of the interposer’s M.2 edge connectors, screw it into place, then connect the other edge connector to the main board’s M.2 connector and screw the interposer into the mainboard standoffs. This secures the whole PCB sandwich together.

And oh boy, does it end up looking very sandwich-ey! It’s super sturdy though, and I’m sure the front end won’t mind the extra shielding from the Thunderbolt adaptor.

More Front-End Testing

I spun up another test board with the attenuator fix from the last update and ground plane cutouts to reduce the capacitance on each path (I had them before, but removed them thinking they were part of how noise was getting into the signal). Everything looked good except the attenuator path, which didn’t seem to appreciate the ground plane cutouts:

I’ll remove the cutouts under the attenuator for Rev 5 and that should get us back to what we saw last update. The decrease in capacitance on the 1x path (below) is more important anyway, as the attenuator presents less capacitance than the buffer (when its response is not wiggling about like above).

PCI-SIG Membership: Step One for Signed Drivers

We’re a PCI-SIG member company now! As a member, we get our own unique VID, which we need to have in order to get our drivers signed. The next step is to get our own EV cert, and to join some Microsoft and Apple programs for Windows and macOS drivers.

Progress on Mac Support

Speaking of macOS, @NateMeyer has been working on getting the Mac driver up and running as well, while @macaba has been playing around with TS.NET on the Apple M4 processor, with blazing fast results.

Sourcing

Support for Software Development

Woof, I’ll be doing these updates on a monthly schedule from now on to avoid a huge pile-up of topics like this one. Thanks for keeping up with the project and I hope to have some more good news next time!

-Aleksa


Sign up to receive future updates for ThunderScope.

ThunderScope is part of AMD FPGA Playground

Key Components

Artix™ 7 XC7A35T-2CSG325C · FPGA
maximum throughput data transfer

Subscribe to the Crowd Supply newsletter, highlighting the latest creators and projects