[Happy Little Diodes] built a Pi Pico logic analyzer designed by [El Dr. Gusman] using the original design. But he recently had a chance to test the newest version of the design, which is a big upgrade. You can see his take on the new design in the video below.
The original design could sample 24 channels at 100 MHz and required two different PCBs. The new version uses a single board and can operate up to 400 MHz. There’s also a provision for chaining multiple boards together to get more channels. You can set the level shifters to use 5 V, 3.3 V, or an external voltage. Since [Happy] is working on a ZX Spectrum, the 5 V conversion is a necessity.
The code is on GitHub, although it warns you that version six — the one seen in the video — isn’t stable, so you might have to wait to make one on your own. The software looks impressive and there may be some effort to integrate with Sigrok.
If you missed our coverage of the earlier version, you can still catch up. Dead set on Sigrok support? [Pico-Coder] can help you out.
I am travelling so I cannot watch the video, but how does is the sampling rate reach 400MS/s? Is the creators overclocking the 133MHz ARM cores? I know RP2040 is dual core, so I wonder if they can/are “staggering” the running of the code on the two cores to get better sampling rate?
Very cool project, always loved the concept of using cheap dev boards as logic analyser. Back when i was in univ I wrote my own logic analyzer for an AVR to record the IR signals to an air conditioner. Fun times.
I’m more curious how he’s getting the data off the rp2040. When I messed with using one as a logic analyzer the number one limit was the USB 1.0 being too slow to offload the data in real time. So you’d rapidly fill the RAM and could only sample for short periods.
If you are looking for a real-time continuous stream, I recently released hsdaoh-rp2350, which streams out the data via HDMI to a $5 MS2130-based USB 3.0 capture dongle.
I also added a 16 bit @ 32 MHz logic analyzer example: https://github.com/steve-m/hsdaoh-rp2350
This of course can be adapted for up to 8 bit @ 75 MHz, 4 bit @ 150 MHz and so on.
For testing I adapted libsigrok to use libhsdaoh as a data source (https://github.com/steve-m/hsdaoh), but I haven’t cleaned up the driver code yet. Works quite well for me.
So rp2030 out on hstx via hdmi to capture card into pc at usb3?
That’s brilliantly hacky! 👏👏👏
Better do 16bit 40 MHz ADC with 9226. But I’m not sure you can obtain 80 Mbyte/sec sustainable transfer through Rpi Pico 2350. And there a lot of unclear things in your project (i.e. how you ovetclock 2350 but not only)
As you might have seen, my external_adc example does exactly that, sample at 40 MHz with an AD9226. The AD9226 is a 12 bit ADC however, so 60 MB/s is enough.
There even is a PCB already that also adds an audio ADC so it can be used for vhsdecode: https://github.com/Sev5000/Pico2_12bitADC_PCMAudio
What is unclear to you? For the ADC example the sys_clk is overclocked to 320 MHz, this worked fine with the five Pico2 I have here.
And the “how”, by a simple function call: https://github.com/steve-m/hsdaoh-rp2350/blob/master/apps/external_adc/external_adc.c#L131
need to give a tip on HAD – maybe they willake an entry about that;)
Great hack!
You are forgetting about the programmable units
IIRC those still run at the same clockrate as the CPU
It uses a raspberry pi pico 2, with the rp2350.
That’s still not the explanation. He overvolts and overclocks the RP2350 from 150 MHz to 400 MHz @ 1.30V.
Wait, what did the article say again? – “The code […] isn’t stable […]”
Oh, it is the code for sure.
You are correct that is overclocked. He says 400 mhz in the video. Not sure if the pico 2 has a different base frequency but you may be right about staggering the cores.
curious that he corrected for wirelengths, but ignored the lengths on the rp board itself. or am i missing something?
From the thumbnail image it looks like the traces on that board are length matched (squiggly)…
yeah, but only among themselves. but if you look at the rp2040 board, some signals move to the outermost edge of the pcb board, running for 2cm while others are basically next to the pins, not more than 5mm. i do not see that difference corrected on the main board.
I don’t get it. How can they sample at 400 MHz when the micro controller runs at 150 MHz?
Overclocking is part of the answer, and should get you up to 250 MHz, but I don’t know the rest either.
Great Job! Capability versus Cost looks great.
Sigrok is great, but in last 3 years they seem to be rather reluctant to merge contributions lately… That made me rather salty… I wish i had enough will to fork it.
Not reluctance, just Real Life interfering with the ability of the core developers to find time to work on it.
https://www.sigrok.org/blog/current-project-status
Data sheet for TXU0104 indicates max data rate 200Mbps.
How is does this thing do 400MHz?
Interleaved sampling? Quite common trick.
400 MHz is the sample frequency of the synchronous clocked inputs, not the bandwith. The TXU0104 is asynchronous. He overclocks the RP2350 to 400 MHz which is out of specs (nominal 150 MHz) and overvolts it to 1.30 V
In my eyes a logic analyzer without continous streaming capability is useless nowadays. I have been using Saleae 16 Pro for 7 years and do not want to switch to anything else.
A lot of comments here about the overclocking and pushing the pico beyond its spec. I just want to note how impressive it is that we can do this in the first place. I think as engineers (more specifically as hobbyist engineers) we learn about the limits of a device and how we’re supposed to use it. Those are written down on paper in a lot of ways they become sacrosanct.
But then we learn that electronics – just like everything else in our flexible, material world – is malleable, to a degree. And we push. And we get wild stuff like this. It’s awesome. And I’m glad that there’s a way to share it.
I cant seem to find the precompiled logicanalyzer.exe so couldnt try it out.