16-Channel USB3.2 Logic Analyzer

I recently became interested in developing a logic analyzer expansion card for Framework laptops. I just think it’s a really cool idea to have a logic analyzer almost seamlessly integrated into a laptop.

I originally started with the idea of using low-cost/low-performance hardware like a RP2040 - there’s some precedent for using them as logic analyzers. However, the performance is severely handicapped by the slow USB 1.1 interface.

Then I came across CNLohr’s fantastic video demonstrating how a Cypress FX3, a USB 3 microcontroller, can be used as a logic analyzer. (Side note: This is actually what the original Saleae logic analyzer and its many clones are based on as far as I can tell). Since then the software support has gotten very good - the FX3 is (unofficially) supported by the free/open source signal analysis software suite sigrok, and official support looks like it may soon be merged. There’s even an official guide to setting up an FX3 devboard as a logic analyzer.

Now one major question remains: Is it possible to fit an entire high-performance 16 channel USB 3.2 logic analyzer into an expansion card?

Yes- just barely.

(Note that this is not a final design yet - I need to replace the headers with some that will fit better, and I will likely remove the debug header since the FX3 has a rock-solid USB bootloader.)

This design allows for 16 channels at 100+MHz. It has software selectable input voltages from 1.1V-5V. There’s even a possibility of adding analog input functionality to some of the channels with a few extra passive components.

I’m currently tinkering with a FX3 dev kit to work out the final design before I build the first prototype. In the meantime, you can take a look at my design files here. If anyone has advice or features they’d like to see, please let me know!


Go with a dual-sided assembly process as some of those passives are so close to the screw holes I wouldn’t even recommend it.
Didn’t see the other side, take that back.

It’s a pretty tight layout. I think there’s just enough room around the screw holes, but I’ll definitely verify that before I build any hardware.

This is amazingly cool. Great work!


Now that’s neat, if you can keep the price somewhat reasonable I definitely want one.

The older usb2 version of this one is already extremely useful.

1 Like

Considering the chip alone is 45USD, probably would be around 70USD as a BOM cost, plus whatever profit Jack wants, so probably 140-200USD (Based on a 2-3x cost which is fairly standard for small volume production)


The chip is actually only $14 ($10 in volume)! It’s just severely marked up by digikey/mouser/etc for some reason.

I’m not sure what the total BOM cost will be, but it will likely be closer to $40. I’ll have a better idea once I finalize the design and start building prototypes.


The reason is usually that digikey and mouser for example are qualified distributors so you have traceability on your parts and get guaranteed genuine ones. If you don’t care about that you’re fine to buy parts from LCSC (if you care even less you can also use eBay). LCSC is most likely good enough in most cases but for mission critical stuff I’d rather go to digikey/mouser or other qualified distributors.

Having the part at lcsc massively helps if you want to use jlcpcb to habe the boards asembled.

I’ve found some more suitable headers for the inputs.

I’m using the layout that most logic analyzers use, with a inputs on the top row and ground son the row below. That means I need 32 pins in total, which I’m splitting between two 16-pin connectors.

Many logic analyzers use two rows of 2.54mm headers for their I/O. This is really nice because it’s a standard and everyone has them sitting around. However, it’s far too big to fit in an expansion card slot. Instead, I’ve opted for a 1.27mm pitch header, which fits with a standard 1.27mm pitch IDC connector for the probe leads.


I also confirmed that all of the components fit with clearance around the screws.


I’m fine getting passives/small components from LCSC, but definitely not the main IC, only time I would purchase a chip from LCSC is if it’s the only distributor of that specific chip.

1 Like

Watching with interest! Although I don’t really have concrete use for a logic analyser built right into the laptop, I’d probably get one just for the fun of it :slight_smile: And who knows, it might come handy one day.

And when you’re done with this, can you please design a 4-channel 100 MHz scope to fit in the other expansion bay next to the LA? Thanks! :stuck_out_tongue_winking_eye:

1 Like

I believe this is not possible with currently available technology (I would love to be proven wrong though!). I could maybe manage a 2-channel 10MHz scope, but I don’t think that would be incredibly useful.

I personally wouldn’t turn my nose up at a 2 channel 10Mhz scope. I’d kill for it in a pinch. But the LA would be fantastic right now

It was a joke, but thanks for the serious answer anyway - one never knows how much the technology has advanced. I guess there aren’t FPGAs powerful and small enough, and the analogue front-end takes up quite a bit of space too…

But still, I agree with @Taylor_Young that for hobby/DIY use, even a 2 channel 10 MHz scope would be pretty useful!

And by the way, I read you have several expansion card projects in the works - is there a simple way to keep track of them? :slight_smile: Thanks!

Currently I’m only working on this one. I’ll make additional posts if/when I make more.

It’s actually the analog front ends that are the issue - there’s some incredibly tiny and very capable FPGAs out there, but fast enough ADCs along with attenuation/pre-amplification circuitry that performs well at 100MHz takes up a good amount of space.

In comparison, the logic analyzer only needs some level shifters between the input signal and the MCU.

I just received an FX3 dev kit to do some prototyping before I order finalize the PCB design.

If everything works as expected, I should be able to build the first version of the expansion card in the coming months!


I have the same dev kit :slight_smile:

Would it be possible to chain up to four of your modules to get more available channels than 16? Some clock sync between the modules? I have a project where I need to monitor 40 digital signals.