This is the circuit of the Mandelbrot Machine that Jesús presented to us a few months ago.
Here’s a small homemade video—despite the terrible quality, I hope it helps you get an idea of what you’ll find if you try it out:
https://www.youtube.com/watch?v=UyXZYZVmXzI
And here the code https://github.com/cavearr/icestudio-mandelbrot-machine
I worked on this over the summer, but it wasn’t quite ready for release until now.
The interesting part of the adaptation is that I didn’t modify a single line of Jesús’ original design. In fact, part of the motivation was to test a methodology I’ve been developing: creating emulator peripherals that abstract complex designs from the hardware they run on. This concept is not new—virtualization has used this approach for a long time—but applied to FPGAs and minimal hardware, I find it a very promising idea.
In this case, it served its purpose: it allowed me to adapt the functionality of a complex system like Jesús’ Mandelbrot Machine to hardware with fewer resources (the SIMRETRO has external SRAM), without needing to alter anything in the original core.
The result is not exactly the same, but it is interesting in its own way, and along the process I developed several modules that might inspire or motivate you in your own projects.
Among them:
Graphic upscaler
Graphic downscaler
Graphic smoother
Color conversion
SRAM emulator for graphics frameworks
NES controller emulator (we use a simple Arduino-style joystick with two potentiometers—cheap and easy to find)
Overlays with transformations (the “magnifier”)
The FPGA is literally full; only about 100 LCs or so remain free.
In this case I used Icestudio as the “glue” to build the TOP, but all modules are written in Verilog, so you can use them directly in any other design, with or without Icestudio.
Each module includes detailed documentation in its own file.
You’ll also find more extensive documentation in the docs directory—sorry, for now it’s only available in Spanish.
Initially I used a rotary encoder and a potentiometer for the user interface. The base code for the encoder was kindly shared by Demócrito (many thanks!), but I eventually replaced everything with a basic joystick and the Alhambra’s buttons because the handling was too cumbersome. I mention this because I encourage Demócrito to “revive” his block—it’s very interesting and I’ll definitely use it for other things I’ll share soon.
And of course, thanks to Jesús for sharing such beautiful creations.
That’s it—hope you enjoy it. A big hug!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/eea438b6-ab82-47d4-9096-f2012c7a2bf3n%40googlegroups.com.
