Hello World in 684 logic elements!

You may have noticed the new “ZPU” section on the header of this site. The ZPU is a very useful little processor, and I think it’s under-appreciated because of a lack of documentation and design examples – so I’m trying to redress the balance a bit with my ZPUDemos repository.

So far I have a very simple Hello World project, which on an Altera DE1 board takes up a tiny 684 logic elements, including RS232 transmission. The ROM is also pretty tiny, bearing in mind it’s written in C, at under 2kb.

The repo also now contains Dhrystone benchmark projects, which use the ZPUFlex variant both with and without the optional hardware instructions, turning in about 1.7 DMIPS for the barebones configuration, and 5.1 DMIPS for the version with optional hardware instructions enabled.

More demos will follow in due course.

The next generation of Retro fans?

My nieces visited today – and spent a very happy hour playing two of my old favourite games – Pang and Lotus II. Both games went down extremely well with the girls despite being released about 10 years before they were born! While I still find a lot of fun in classic games, it’s encouraging to see that they’re enjoyable even to the iPad generation.

I was rather amused, however, that they were playing such ancient games on brand new, 2013 hardware: For Pang we used Majsta’s prototype Vampire 500 board, while we ran Lotus II on one of Till Harbaum’s prototype MIST boards!

Learn something new every day…

So while I’m experimenting with FPGA boards I generally upload a design into them at runtime via a USB-Blaster JTAG cable, and only rarely do I store a design permanently in a board’s configuration device.

Some of the boards I use have two separate connectors for the USB Blaster – one for direct programming of the FPGA and the other for Active Serial programming of an EPCS series flash device.  Others have an onboard microcontroller which handle configuration – and then there’s the Vampire 500 board.  This has a single JTAG connector and an EPCS4 configuration device, but no immediately obvious means of programming the EPCS4. Continue reading