Tuesday, December 13, 2011

Looking for "alpha" testers

I'm currently looking for "alpha" testers for the upcoming 1.0 version, which uses the new Arduino IDE and a new, improved core.

In case you are interested in testing it, please drop me a note. !

Tuesday, December 6, 2011

The new Extreme core

I just uploaded a new extreme bitfile, one which does only implement one emulated instruction (loadb, using an extra cycle). Implementation of other instructions is coming next.

Again, a Papilio One, S3E250, at 96MHz, AES benchmark:
Press ENTER to start benchmark                                                   
Doing 10000 runs...
Time: 1536 milisseconds, 104166 bytes/s

Comparison with older core, with *many* more instructions implemented:
Press ENTER to start benchmark
Doing 10000 runs...
Time: 2101 milisseconds, 76154 bytes/s

Definitely, getting somewhere :)


Thursday, October 6, 2011

Upcoming VGA interface with SRAM

Just a photo for a start ;)

full image version here

This was done with new Spartan6 boards from Gadget Factory, which include a 512KB SRAM.


Wednesday, August 31, 2011

ZPUino demo video with VGA

Jack made a wonderful demo video of ZPUino with VGA, running on Papilio One:

Watch it here.

Thanks Jack!

Monday, July 25, 2011

Sort of a demo

Sort of a VGA + ADC demo. This one is in simulator, I'll post pics later on it on real hardware.

Wednesday, June 29, 2011

Working with simulator

I've been working on a real ZPUino simulator, one that can run all your sketches directly.

Although it's not a perfect one (proper timing is not implemented) it's fully functional, and I'm even putting out a GUI for it.

And it's a lot of fun! And it's rather easy to add simulation for your own devices.


Tuesday, June 21, 2011

Beta1 released


I'm proud to announce that ZPUino Beta1 release is now available:

Release Notes

Good hacking!


Monday, June 20, 2011

A Sponsor Appreciation


Beta 1 will be available later today, but I would not release it before a short sponsor appreciation, which is entirely justified.

So, I'd like to give a very special thank you to Gadget Factory, and to Jack Gassett himself. They have kindly provided to me all of their hardware boards for no cost, thus helping a lot ZPUino development (I need boards to test, to develop on, and new additional hardware too). That included Papilio One 250, Papilio One 500, and some early prototypes, like Papilio Overshield and C/RAM Wing and other in-production wings, like VGA, Audio and Joystick. Development goes way more smoother when we have real hardware to test stuff on.

Jack has also been a Beta tester for ZPUino, and he even put some demonstrations online, which I also thank him very much for the time spent (and pacience).

For all this, a huge Thank You to Gadget Factory and Jack.


Thursday, June 16, 2011

ZPUino BETA to be released

Yes, that's true!

ZPUino 1st BETA will be release hopefully during this weekend. I won't disclose all details until then, but here's a quick overview:

  • Wishbone compatible. You can connect any wishbone-compliant core to the IO module

  • Improved bootloader and programmer, with a lot of sanity checks.

  • A new Papilio One core for S3E500, with HQVGA(160x120, 8-bit color) support

  • A new S3ESK core, with a HQVGA 8-bit color (but reduced to 3-bit due to no board support)

  • SmallFS - a simple-to-use, small filesystem on flash

  • A new library: VGA, to work with the new cores

  • Full (yes, full) Microsoft Windows Support (subject to testing, of course!)

  • An optional preliminary IDE based on upcoming Arduino 1.0 release

  • Lots of bugfixes all around

Stay tuned!.


Tuesday, June 14, 2011

Win32 port

I'm happy to announce that all important ZPUino parts are now working in win32 (Windows XP).

The important parts are: IDE, compiler toolchain and programmer.

I'll release a beta version soon.


Friday, June 3, 2011

Updated bitfile for Papilio One 500

Due to a miscalculation, the Alpha 4 image for Papilio One 500 would overwrite the FPGA bitfile when you uploaded a sketch, which in turn would cause it to require a new bitfile upload when power cycled. This is now fixed, and I published a new bitfile for it:


Thanks a lot to the reporter and tester, "dack", who I spoke with on IRC on #gadgetfactory channel (FreeNode).


Tuesday, May 24, 2011


ZPUino extreme (the smallest version of it) successfully implemented and tested on FPGA. This core can do 1-cycle operations on many instructions, hence a lot faster than traditional cores. It also features a separate stack/memory, so memory is now mostly free and available for a DMA engine.

It might need a small redesign however, due to slowness of internal Block RAM. Despite timing things went very good. It still needs interrupt support, but should not be very intrusive.


Thursday, May 5, 2011

ZPUino going wishbone

ZPUino is going wishbone, from the CPU core to the IO devices.

This will ease addition of new peripherals, like the ones in opencores.


Tuesday, April 26, 2011

Examples section

I just added a new "Examples" section to the website (http://www.alvie.com/zpuino/examples.html).

There's a single demo there for now, which is meant for S3ESK board only.

I'll notify you all when I add some more examples (like the so awaited WAV player).


Monday, April 25, 2011

Alpha 4 is out

ZPUino Alpha 4 is out.

Release Notes

* Changed the reset method to BREAK + low speed transfer. This hopefully will allow reset even when RS232 signals are noisy.
* Fix bootloader for simulation, was using deprecated methods.
* Small update for new interrupt controller
* Remove unused syscall file for bootloader


* Refactor interrupt controller. New controller uses edge interrupts, and has two external interrupt lines. Also interrupts are now masked by default.
* GPIO: allow disabling PPS on some GPIO pins, such as those who map directly on board devices.


* Clock speed was being defined as unsigned long long. This might break inline computations, so changed to unsigned long.
* Place memreg[] in lower memory, so it can be used by bootloader/sketch. Interrupts should work perfectly now (and sketches should be slightly smaller)

Papilio One

* Reorganize papilio one directory to hold different FPGA
* New bitfile for Papilio One based on S3E500

Spartan 3E Evaluation Board

* Add some more IO pins to design, to support accessing LCD and rotary encoder.

Full release notes: Release Notes
Download: Download

Thursday, April 21, 2011

ZPU core comparison

I believe I forgot to share this one: It's a comparison between the older core (zpu_core_small), the current core (ZPUino Premium) and the on-the-forge ZPUino Extreme:

Nice, no ?

ZPUino Extreme also features a completely different architecture, but it's not very suitable for multitasking. But falls perfecly in ZPUino niche.


Thursday, April 14, 2011

Request for examples

Can you provide me what you believe would be good examples to include in ZPUino core ?

I've a few I might publish soon:

* Simple AES256 benchmark
* WAV player from SD card

I'll be expecting your comments (or alternatively, send them to zpuino@alvie.com)


Wednesday, April 13, 2011

Preparing for Alpha 4

Alpha 4 is on the forge now. I decided to release it as soon as possible, due to eventual problems with programmer (which was not updated on last images, might require you to build your own).

Also a bug related to how compiler handles 64-bit values was fixed: again, it might break some computations, like baud rates, delays, and others.

I don't think win32 port will be ready by then, but other features will make it. The most prominent one is a new interrupt controller, and two external interrupt lines you can use (edge-triggered, high or low level, using PPS). Auto-cleanup of interrupt is also working for the latter, you still need to clear interrupt bits for internal devices for now.


Friday, April 8, 2011

Alpha 3 is out

I'm proud to announce Alpha 3 release of ZPUino.

As usual, you can find it in http://www.alvie.com/zpuino/

Here are the release notes:


* Programmer now uses a dual-speed transfer. It starts at 115200 baud for identification, then ramps up speed if required.
* Some bugfixes and refactoring.
* Preliminary direct memory upload. Still untested.


* New main ZPU core: ZPU Premium. You should expect almost a 3x performance increase, when compared with old core.
* New PPS implementation. Things should have become clearer now. See more information on PPS page
* IO selection is now clearer, so to ease adding new devices. See Implementing or porting IO devices document for more information
* Fixed RAM indexing, which caused synthesis warnings


* Added per-board SPI clock dividers for bootloader

Spartan 3E Evaluation Board

* First prebuilt image for this board
* Design was not being properly built, fixed that.
* Changed clock speed to 96MHz, instead of 100MHz. This helps meeting timing and give accurate baud rate dividers
* Fixed GPIO mappings
* Added proper IO pads


* Added IO device tutorial: Implementing or porting IO devices
* Added Advanced IO: Advanced IO
* Added PPS documentation for users: Peripheral Pin Select

Known Issues

* There is still no Win32 port. Some dificculties arose so I'm delaying to next release. But good news is that compiler is now built, but other parts of the toolchain still need some tweaking, as well as the IDE set up.
* Resetting the serial port sometimes fails when using a real RS232 cable. This is probably due to ringing - I'll address this on next release (this only affects S3E evaluation board, but since there's a manual reset button you can get it to work)
* S3E P&R is having difficulties due to both DCM used, but it does meet timing. However I'll address that on next release, to speed up the implementation process.

Wednesday, March 30, 2011

New bootloader, Win32 support

Although there was a preliminary programmer for win32, I only recently realised that win32 does not actually support natively serial speeds above 256Kbaud. This stroke me as very odd, we're on the 21th century now, with advent of serial links not rs232-based (like USB serial controllers) having speeds of 1Mbaud, 3Mbaud or even higher is very common, it's weird why Microsoft did not expand its baudrate selection to higher speeds.


So to support win32, we've to get that speed down, so I decided on a two-steps approach. We can initially talk to ZPUino at a reasonably lower speed (115200), and then depending on OS and eventually board features rise this speed to something more acceptable (which would be 1/3Mbaud on Unices, 256Kbaud on Windows). This requires changes to bootloader and to programmer which I am ultimating as I write.

Also for win32 support we need the compilers. Those are building now, if everything goes well I hope full win32 support will be on next Alpha version (which, by the way, will be due this weekend). The programmer already has a fix for the insane command line processing in mingw32 (or is it msvc?), so everything seems to be on rails.


Wednesday, March 2, 2011

Tuesday, February 15, 2011


As you all noticed, Alpha 2 is a bit delayed. This is due to several reasons:

1) I'm integrating a new UART, because current one performs not very well at high bit rates.
2) ADC direct interface took some time, it's stabilizing now.
3) Some more unplanned changes are coming in, like CRC queuing.
4) A faster ZPUino is also on the forge. Some operations are important, and I'd like to merge them in for alpha 2.
5) Documentation is laggin behind because I don't have much spare time lately.

So, stay tuned.

Wednesday, January 19, 2011

Website down

Website http://www.alvie.com/zpuino is currently down due to hardware problems in my hosting company, Awardspace.

I hope they'll fix problems quickly.


Tuesday, January 4, 2011

Internet Explorer fixes

Seems Internet Explorer users were not even able to access the website.

Fixed now, but I lost ability to inline mathematical functions, so now I have to render them by "hand".