Compute The Mandelbrot Set With A Custom RISC-V CPU

When faced with an FPGA, some people might use it to visualize the Mandelbrot set. Others might use it to make CPUs. But what happens if you combine the two? [Michael Kohn] shows us what happens with his RISC-V CPU with an instruction specially made for computing the Mandelbrot set.

[Michael] takes us through the unusual process of turning his 8008 into a RISC-V CPU. Re-using bits of logic here and replacing other logic there leaves him with a functional RISC-V core. Not finished, [Michael] takes it upon himself to also create a custom instruction just for computing a point for the Mandelbrot set, accelerating the demo from twenty-three seconds to merely one!

Still not finished, [Michael] also creates an implementation of the long gone F100-L CPU, once again with added Mandelbrot set flair, simultaneously with the RISC-V project. Finally, he ports his “Java Grinder” Java bytecode compiler to both RISC-V and the F100-L, because Java runs on 1 Billion devicesTM.

Continue reading “Compute The Mandelbrot Set With A Custom RISC-V CPU”

Several Raspberry Pi Picos connected to each other

Raspberry Pi Pico Parallel Mandelbrot Computation

The Mandelbrot set is — when visualized with some colors — an interesting shape with infinite detail. While the patterns are immediately obvious to the human eye, anyone who’s run one can tell you that they’re pretty computationally expensive to produce. Fortunately, as with many things in graphics, rendering the Mandelbrot set can be easily parallelized.

That’s what [rak277] and [ir93] demonstrate in their RP2040-based finals project. Computron, as they call it, is a network of Raspberry Pi Picos that work together to compute a visualization of the Mandelbrot set and show it on a VGA display. The Computron is made of two or more “math units” and one “projection unit”. The math units communicate over a shared I²C bus with the projection unit to first divide the workload and then compute their share of the work.

This project shows both the strengths and limitations of parallel computation. It makes use of multiple math units on a highly parallelizable workload, but as more math units are added there are diminishing performance gains due to the increased communications load on the network, which [rak277] and [ir93] suspect to be the current bottleneck in the Computron.

If you’re fresh out of Pi Picos, and don’t mind waiting awhile, you could always crank out a Mandelbrot set on your trusty Atari 800 in BASIC.

Game Graphics: Rasterization

Last time, I talked about racing the beam, a type of graphics used when memory was scarce. Now it’s time to step into the future with more memory and talk about what modern 2D games still do to this day: rasterization.

Just in time Memory

Continuing the trend set by racing the beam, rasterized graphics are also on a grid, just a much tinier one. Though not unique to rasterized, the “frame buffer” is the logical conclusion of bitmap mode fidelity: enough memory is allocated so that every pixel can have its own color. What’s different about a frame buffer is that everything is drawn before it is shown and, crucially, this doesn’t have to happen in the same order as the pixels are displayed. Rasterization draws entire shapes — triangles, lines and rectangles — into the frame buffer and the screen is typically updated all at once. Continue reading “Game Graphics: Rasterization”

Spice Up Your Earrings With Microelectronics

We’ve covered [mitxela] in the past and if you know him, you’ll likely know him for putting the micro in microelectronics. This year, he’s at it again with his LED Industrial Piercing.

A T-shaped flexible PCB that is smaller than an index finger
This tiny PCB is really pushing the limits of fabrication

Inspired by the absolutely tiny 0402 LEDs and industrial piercings, [mitxela] started thinking of a way to construct the 5cm long device. He found some normal LED earrings to steal the battery compartment from. Then, with a tick needle and some more steel, he created a new industrial earring with some holes.

Of course, no [mitxela] project is complete without comically tiny microsoldering and this project makes the VQFN ATTiny he used look large. He puts his PCB suppliers to the test with a merely 1mm wide flex PCB for the LEDs to be mounted on. Finally, he combines the flex PCB, the earring and some epoxy to create yet another piece of LED jewelry.

Video after the break.
Continue reading “Spice Up Your Earrings With Microelectronics”

Turbocharge Your Transient Sensors With Math

If you’ve made a robot or played around with electronics before, you might have used a time-of-flight laser distance sensor before. More modern ones detect not just the first reflection, but analyze subsequent reflections, or reflections that come in from different angles, to infer even more about what they’re looking at. These transient sensors usually aren’t the most accurate thing in the world, but four people from the University of Wisconsin managed to get far more out of one using some clever math. (Video, embedded below.)

The transient sensors under investigation here sends out a pulse of light and records what it receives from nine angles in individual histograms. It then analyzes these histograms to make a rough estimate of the distance for each direction. But the sensor won’t tell us how it does so and it also isn’t very accurate. The team shows us how you can easily get a distance measurement that is more accurate and continues by showing how the nine distance estimates can even distinguish the geometry it’s looking, although to a limited extent. But they didn’t stop there: It can even detect the albedo of the material it’s looking at, which can be used to tell materials apart!

Overall, a great hack and we think this technology has potential – despite requiring more processing power. Continue reading “Turbocharge Your Transient Sensors With Math”

Freshening Up Google’s USB-C PD Sniffer

USB-C Power Delivery has definitely made the big mess of wires a bit smaller but not all cables are created equal — some of them can handle upwards of 100 W while the cheapest can handle only 10. To accommodate this, USB-C cables need to actively tell both ends what their capabilities are, which turns an otherwise passive device into a hidden chip in a passive looking cable.

[Greg Davill] has decided to unravel the mystery of why your laptop isn’t charging by creating a USB-PD sniffer. Based on Google’s Twinkie sniffer, the FreshTwinkie makes the design more accessible by reducing the number of layers in the PCB and replacing the BGA variant of the STM32 for a more DIY-friendly QFN version. Interestingly, this isn’t the first time we’ve seen somebody try and simplify the Twinkie; back in 2021, the Twonkie from from [dojoe] hit a number of similar notes.

USB-C Power Delivery is just one of many protocols spoken over the CC pins, and the FreshTwinkie might be able to detect when some of those are enabled and why or why not. With future development, it could potentially provide useful information as to why a Thunderbolt 4 or tunneled PCIe device isn’t working correctly.

PicoGUS: For All Your ISA Sound Card Needs

Sound cards used to be a big part of gaming machines in the 90s and 2000s but have largely gone extinct in the wake of powerful CPUs doing the sound themselves. Sound cards were expensive back then and, because the good ones weren’t very common, are expensive still for the retro gamer. But if you don’t need the real thing, [polpo] has you covered with his RP2040-based ISA sound card.

The PicoGUS, as he calls it, primarily serves to replace the Gravis UltraSound with modern components at a low cost. It uses the RP2040’s PIO to attach to an ISA bus and the RP2040’s dual-core power to synthesize the audio for its primary target, but also the AdLib (OPL2), CMS/Game Blaster and Tandy 3-Voice. [polpo] sells the PicoGUS on his Tindie store, but since it’s open source, you can of course just make your own.

Although “work-in-progress”, the PicoGUS is very useful to the right person and a perfect demonstration of how the RP2040’s PIO can be used to interface with almost any type of protocol.

Of couse, that’s not the only way to use the PIO, you can also create a CAN bus or even add another USB port.