[HN Gopher] Raspberry Pico-based 100-Msps logic analyzer ___________________________________________________________________ Raspberry Pico-based 100-Msps logic analyzer Author : unwind Score : 90 points Date : 2022-07-04 19:44 UTC (3 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | ChuckMcM wrote: | This kind of project is really nice, there is a great design | document which talks about issues building logic analyzers out of | Cortex-M boards here: https://sysprogs.com/w/how-we- | turned-8-popular-stm32-boards-... which you may find helpful as | well. | | Of note, the Teensy-4.1 uses the Cortex-M7 which is even more | impressive than the Pico in terms of raw computer. | | A long time ago there was a company called "boulder creek | engineering" which made a very clever logic analyzer where the | trigger pattern was downloaded into an FPGA which made for a | easier code (the FPGA would set a 'trigger' bit and software | could use it as the store/don't store flag). | | The HP Logic Dart had a feature which I've yet to see reproduced | on any logic analzer (even the multi thousand $$ ones) which is | you could set the Vhigh and Vlow thresholds over a wide range | which would let you work with everything from TTL to LVDS | signaling all in the same instrument. Sadly I don't think anyone | makes the 100MHz comparator pairs that would be needed for this. | Dries007 wrote: | Looks great, only question is why invent your own software when | sigrok exists? | slig wrote: | Why build your own logic analyzer when you can buy one | Banggood? | iasay wrote: | This. I own a shitty one from Aliexpress. That and sigrok are | better than my old full 4U HP crate I had. | | But if you want to build one, why not? | the_biot wrote: | For one thing, the author could have avoided all the work | of creating a GUI and lots of protocol analyzers, and thus | got his project working faster. | | This could have been as simple as writing a sigrok driver, | a process which is very easy thanks to some helper scripts | and lots of examples. | [deleted] | analog31 wrote: | I found the sigrok website hard to navigate, and never | found these examples. I'd love to learn more, as I just | threw a decent fast ADC together for fun. | the_biot wrote: | https://sigrok.org/wiki/Developers#Development_guidelines | | It's all there, and linked from the wiki's main page, | it's just that there's so much of it. | | Examples: http://sigrok.org/gitweb/?p=libsigrok.git;a=tre | e;f=src/hardw... | [deleted] | slig wrote: | >But if you want to build one, why not? | | That was my point: it's fun to create stuff. | mianos wrote: | I recently tried to run Sigrok on a Windows 11 PC with the | Salea clone and I could not find a version that did not crash | on the second capture. It seems to run fine on my Mac. So I was | flashing the board Windows (due to the new serial to USB chips | not being supported under Monterey). | | If you run Win11 it might be worth writing a small fast native | dedicated capture and display application like this. | phendrenad2 wrote: | Maybe author doesn't like sigrok? | iwalton3 wrote: | There is a driver and firmware for sigrok for using the PI Pico | that was posted to Hackaday a while back. It hasn't been merged | upstream yet but I got it up and running today just fine | building it from source. https://github.com/pico-coder/sigrok- | pico | geerlingguy wrote: | People sometimes dismiss the Pico in comparison to an ESP32 or | other ESP-based devices (even the newer Pico W, which has | wireless capabilities, with Bluetooth LE potentially added via | software update in the future), but I've seen Picos running as | N64 flash carts, logic analyzers, signal generators, etc. in | places where formerly only more expensive FPGAs or low power ARM | SoCs (not on the microcontroller level) were used before. It's | not punching too much above it's weight, but the PIO does seem to | be a very useful feature. | | I know there are still other advantages of the ESP32 (especially | in some of the newer revisions, like upcoming Matter/Zigbee | support built in), but I think some people are too quick to | dismiss the Pico's RP2040 as overpriced compared to the | alternatives. | _Microft wrote: | The mentioned N64 cartridge is most likely this project: | | https://github.com/kbeckmann/PicoCart64/ | | The creator tweets about it frequently [0], in particular this | thread [1]. | | [0] https://twitter.com/kbeckmann/ | | [1] https://twitter.com/kbeckmann/status/1538634588020424708 | fpgaminer wrote: | > but the PIO does seem to be a very useful feature. | | Back in the early days of RasPi there was a competitor, the | BeagleBone Black. It was similar to the Pi in many ways, but | included embedded MCUs that were meant in much the same ways as | the Pico's PIO. You could use them to bitbang protocols that | would be difficult/impossible/unreliable to run on the SoC | itself. | | I thought it was a brilliant idea, but the BeagleBones never | got the same level of support that the Pi did. The few times I | tried using my Black, I ran into numerous deal breaking bugs. | | It's great to see the spirit of this idea is still alive and | well. I've got my fingers crossed that they somehow convince | Broadcom to build PIO into their SoCs. | geerlingguy wrote: | I remember a lot of fanfare around the BeagleBone models, | that was in the time in my career I was focused mainly on | software / webdev. I remember there was even a $10 model, but | IIRC there were some fulfillment issues? | bragr wrote: | I've previously used an Arduino mega as an ad hoc logic analyzer. | Can anyone chime in with how the IO performance of the RP2040 | differs from the ATMega range? | | I'm an amateur so can't really justify a real logic analyzer, but | my hacked up sketches and python scripts for the Arduino have | nothing on this level of polish so definitely going to give it a | try next time! | danhor wrote: | I'd really recommend an fx2 logic analyzer. Basically anything | called logic analyzer on Amazon or Aliexpress with 24 MHz | sample rate, 8 channels and for less than 15 bucks. | | They work with the open source sigrok software and basically | just DMA the io to the host, thus the sampling rate and the | cost, but can record for dozens of minutes. | bpye wrote: | You can do better with an FX3 dev kit - | https://community.infineon.com/t5/Knowledge-Base- | Articles/EZ... | duskwuff wrote: | At $50-$100, the FX3 development kit is roughly 10x the | price of an FX2 board. | the_biot wrote: | Except there is currently no fx3 driver in sigrok mainline. | It's not a compatible chip to the FX2. | balefrost wrote: | The RP2040 has a programmable IO subsystem. This lets you | define a simple state machine that manages the IO pins and can | transfer data to/from memory. | | Here's what the project's README says: | | _So, how the heck the pico is able to achieve this? Well, the | key are the PIO units, these units are a wonder, they are | coprocessors explicitly dessigned to handle IO, it uses a very | restricted and deterministic assembler (only nine instructions | that each take a single cycle to execuet) but extremely | efficient, so efficient that with only two instructions is | possible to create a loop that captures GPIO data up to 30 bits | and redirects the program flow based in the status of one of | these GPIOs._ | the_biot wrote: | You can hardly compare the atmega series CPUs with 32-bit ARM | SoCs running at 10+ times the clock speed, much more memory, | and many more advanced features. The RP2040 (the SoC on the | pico) is very much a generation beyond the atmegas, if not | more. | | Notably the PIO feature on the RP2040 is used to avoid having | to sample input pins using the ARM CPU (which would make it | slow and undeterministic). The sampling is effectively | hardware-assisted using the PIO feature. The github page in the | link goes into some detail about it. | bragr wrote: | I'm asking for them to be compared in terms of IO features, | not absolute performance. The ATMega has it's own range of | hardware driven input features and that's specifically what | I'm asking for a comparison to. | sbf501 wrote: | That's impressive. I was suspicious until I saw the quad-byte DMA | ringbuffer with the super small PIO program. He's overclocking to | 200 MHz (!!!) and the framing protocol does have bugs (see | comments), but impressive all the same. Also the message buffer | is pretty small but now I'm just being picky: streaming to UART | while sampling wouldn't be possible without giving up some | channels and slowing down the sample rate. | skybrian wrote: | Nice! Looks like the protocol between the Pico and the Windows | software is quite simple. Porting it to another OS shouldn't too | hard. | | Here's an unusual approach to portability for this kind of | software: since Chrome supports Web Serial, a web app could do | the UI and then it would be portable across operating systems | (though still Chromium specific) with no software to install | (assuming you already have Chrome or Edge). | | Along those lines, I wrote a little web app that plots CSV data | from a microcontroller board (which happens to be a Pico). | There's not a lot to it, but I like it better than the Arduino | plotter and it might be useful as an example: | | https://github.com/skybrian/serialviz | [deleted] | girvo wrote: | Very cool stuff! | | I recently bought a cheap-ish "Zaleae [sic] Logic 16" knock-off | from eBay, but it's still a lot more expensive than most of the | other cheap ones out there. | | I was stoked to see it works perfectly with Saleae's latest Logic | software, and it ended up with my boss buying us all a set of | real Logic Pro 8's for work. | | Their software is by far the gold standard for logic probe | capture and analysis, I wonder if it would be possible to hack on | this project to get it to output to Logic? | | Being able to whip up quick protocol decoders in Python (which | then get baked into our actual firmware as a driver by porting it | to Nim in about 10 minutes of work) for some of the obscure | protocols and peripherals we have to connect to has been | fantastic, and Saleae's software makes it super easy. | | Would be great to get the benefits of both cheap hardware and | great software but aside from the knock off in front of me | showing it can be done, I've no idea how you'd even begin to do | it! | Sanzig wrote: | The Pico's PIO peripheral is actually a really innovative feature | in a microcontroller. It plugs the gap where you need some sort | of fast custom I/O but you don't want to go to the complexity and | cost of an FPGA. I'd love to see more mainstream vendors offer | something similar. | tpmx wrote: | I would love a version of Pico PIO with analog out (along with | a limited integer ALU, or perhaps just shifts and some logical | ops). A fast DAC should be cheap in silicon, right? | regularfry wrote: | The pimoroni servo2040 uses the PIOs to PWM 18 servo | channels: https://shop.pimoroni.com/products/servo-2040?varia | nt=398005... | | I'm annoyed at the power arrangement on the board but they're | fun to play with. | tpmx wrote: | That's a nice usecase. Servos are slow mechanical things. | | I wanted to make a CGA/EGA-to-VGA converter, possibly | combined with a scandoubler. Maybe it's still possible | using resistor arrays on the output side. | JustFinishedBSG wrote: | It has been a feature of many TI microcontrollers ( and CPUs ) | for quite a while under the name "PRU" | grawp wrote: | Exactly. And people have been also using them for this exact | purpose. https://hackaday.com/2015/02/19/turn-your- | beagleboneblack-in... | | But hey, put 'Raspberry' or 'Arduino' label on it and | suddenly it's so new and innovative it makes me sick. | tpmx wrote: | _Programmable Real-Time Unit Subsystem and Industrial | Communication Subsystem (PRUICSS)._ | | Documentation: Pages 198-521 out of this 5118 page PDF: | | https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf | sbf501 wrote: | > But hey, put 'Raspberry' or 'Arduino' label on it and | suddenly it's so new and innovative it makes me sick. | | I get why you feel that way. I think that's the nature of | the huge internet and younger folk learning every day. I | totally get pissy every time I see someone repost a | "discovery" that is 20~30 years old and I've seen many | times, just to farm clicks, karma, or whatever internet | points their platform rewards. But I think that's just life | now: everything is "look at me!" tiktok-ified, even | engineering. | | But the dude really is pushing the limits of the PICO here, | always nice to see someone doing something other than | blinking LEDs and jizzing about it on reddit, right? | grawp wrote: | My reaction was only meant as a response to @Sanzig | calling PIOs innovative. | | The logic analyzer itself, even the usage of cheap Pico | in it is very cool. | colejohnson66 wrote: | For one thing, the PRUs require TI's bloated mess called | CCS and knowing C whereas the PIO assembly can be written | in Python. What's really innovative is the ability to get | PRU-like functionality on a _literal_ $1 IC. Sure, you only | get 32 instructions per state machine, but not everyone | needs full blown ARM cores for real-time. | rcxdude wrote: | They don't require it. When I used it, everything was | just written in assembly (you get a few more instructions | but you're still basically doing bitbanging with cycle | counting, so using C is a bit awkward anyway). The PIOs | are a pretty neat trimmed down version of the idea | though, clearly someone put a fair amount of effort into | making them as flexible as they are for how minimalist | they are. | jrockway wrote: | I think C is a trap, honestly. I have used the PRUs | before and wrote my code in C. 99% of the time, I was | just reading the assembly outputs trying to figure out | how many cycles "X" compiles to in C (since it was very | timing dependent). | funstuff007 wrote: | Maybe because the primary markets for TI and Raspberry are | different. | gchadwick wrote: | Bit of a difference between a cheap microcontroller board | and a BeagleBone Black. | | Superficially the PRU and the PIO do indeed look similar. | Look more closely and you'll see the PRU is both more | complex and more capable than the PIO. It's a small CPU | core in its own right with predictable timing. PIO is | significantly simpler, almost more of a programmable state | machine than a proper CPU. So yes less capable but also | integrated into a cheap micro-controller rather than a | Linux booting SoC with all the complexity and cost that | brings. | | That really is why the PIO is interesting, it's the | significant capabilities they bring combined with the low | price point and simple chip. | IshKebab wrote: | And let's not forget poor XMOS. ___________________________________________________________________ (page generated 2022-07-04 23:00 UTC)