xc6lx45

1920x1080x60 real-time fractals demo (CMOD A7/35)

Recommended Posts

Hi,

I finally got around to clean up my fractals pet project. It includes 30 parallel fractal engines and makes good use of the chip's 90 hardware multipliers, with up to 30 * 3 * 200 MHz =18 billion multiplications per second under full load.

The demo still works on USB power - the chip does get a little warm, though.

Other than clocking and ASYNC_REG for CDC, the code is 100 % inferred logic (portable).

Here you can see it in action. Blurring and glitches are phone camera artifacts.

There is some documentation (partly under construction), including an architecture diagram:

https://github.com/mnentwig/forthytwo/tree/master/fractalsProject

The control code runs on the 32-bit variant of James Bowman's J1B CPU. I use my own small "forthytwo.exe" compiler in C#, which is included in the repo (starting from the link, navigate up). I've tried to deliver it in a way that it does not require Visual Studio to build (.exe for windows is included, and you can build it from a .NET runtime. This may need some editing of the makefile, though).

There is a bootloader variant included so feel free to use it as testbed for the J1B, using UART, LEDs, and switches. Note, anything image related is done in RTL - the J1B only calculates vectors that define the image location in "fractal space". If anybody wants to go ahead minus the fractals part, I've done that work for you already (refImpl project).

There are also Verilator simulations included - similar to the original J1B repo - that allow interactive (UART => keyboard) experiments with the microcontroller code.

The bravest can try their hands on my hand-crafted assembler floating point implementation, which is a little bit rough in some places but generally works nicely if I am aware of the limitations (e.g. no internal rounding, just truncation).

Bonus: 2D matrix math feat. Bhaskara's 7th century sine approximation for the rotation matrix.

Happy hacking!

-Markus

Edited by xc6lx45

Share this post


Link to post
Share on other sites

Markus,

Another outstanding tutorial with plenty of goodies for those who want to learn stuff. Tip of the bowler....

There just aren't that many commercial quality fractal generators available :) .

Actually, this was a delight on so many levels. Almost brought tears to my eyes ( not of joy ) remembering past tousles with Forth...

Your projects are like watching a magician's act. While the direct effect might not be totally mesmerizing watching the manipulations behind the scene certainly are. It's rare to find a published project where the source code is a star and so enjoyable; same with getting a glimpse of the technical obsessions of smart people like those represented in this release.

Now, if only there was a testbench.v to match the provided simulation and verilator code and make it complete... 😆

Edited by zygot

Share this post


Link to post
Share on other sites

I added some colormap animations. The buttons cycle between them.

No mushrooms were harmed in the making of this movie.

Edited by xc6lx45

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now