Thursday, April 12, 2012

New ZPUino cores available

A few new ZPUino cores are now available. These are variants of the main design, and can be found on the "variants" folder of the relevant board. Additionaly you can find there the prebuild bitfiles and some documentation, inside the "release/latest" subfolders.

New cores are:

P1 500 "Apollo" variant:
- Includes an YM2149 audio synthesizer

P1 500 "sid" variant:
- Includes an SID audio synthesizer

P1 250 "Apollo" variant:
- Includes an YM2149 audio synthesizer, and an extra serial port.

Other cores to follow in the next few days.

Alvie

HDL Repository has moved

Due to some recent issues with repo.or.gz, I moved the HDL repository into github.

https://github.com/alvieboy/ZPUino-HDL.

To change your current checkout, do:

git remote add github git://github.com/alvieboy/ZPUino-HDL.git
git fetch github
git branch --set-upstream master remotes/github/master


All should work, I hope.

Alvie

Tuesday, April 10, 2012

ZPUino 1.0 Released

Yes, that is true.

ZPUino 1.0 is now available for you to use and enjoy.

Expect some updates on next few days - release cycles are about to change, we're switching to release early, release often.

As always, direct any questions to zpuino@alvie.com.

All information in the usual place
Enjoy!.

Friday, March 16, 2012

Preparing release 1.0

I think it's time now to wrap up all bits and release a 1.0 version, which hopefully will be before the end of March.

What to expect from this release ? well, basically:
  • The new improved extreme core (things will go faster)
  • Smaller generated code for sketches
  • Upload-to-RAM feature
  • New timer infrastructure (means, PWM on steroids)
  • Easier to tailor to your own needs
  • New VGA interfaces
  • Optional I2C (integration from OpenCores)
  • Faster SmallFS implementation
  • Arduino 1.0 IDE
  • Eventually more memory... this depends on the board itself.
  • Per-board variants (like I2C, VGA)
  • Audio chips!! YM2149, Pokey and SID. Note that due to these "chip" sizes, it might not fit your FPGA.
  • Papilio Plus support (S6LX4 for now)
For the hardcore details:
  • New DMA interface (not controller). It's used for VGA, so it can use regular memory as framebuffer.
  • Better external memory integration. This one is still under test, but might make it.
  • PWM have now 2 comparators (low and high). Also you can add as much PWM as you wish per timer.
  • Decreased serial FIFO: means, more block ram memory available.
  • Other goodies. See official repo branch for more details.
Other stuff is in the forge, but might not make it for this release. I think I've delayed it for too long now. Release early, release often.

As always, feel free to send in your comments to zpuino@alvie.com.

PS: Did I told you I will also publish a ZX-Spectrum VGA compatible output, and that it will be accompanied by a "arduino sketch" Jet Set Willy game engine implementation (not a 100% implementation, but close) ? Yes, it's true. And you can have fun making your own maps, sprites and variants!. I'm just finishing some documentation, so you can go and make it a 100% implementation if you wish.

Alvie

Thursday, January 12, 2012

How complex ?

How complex can a voltmeter be, with ZPUino, my yet-to-be-released SerPro3 software and a Gadget Factory ADC wing ?

Well, judge for yourselves:

This is ZPUino code (29 lines):

#include <SerPro3.h>
#include <SPI.h>
#include <Papilio.h>

SERPRO_ARDUINO_BEGIN();

Papilio::ADC8_Wing myadc;

void setup()
{
Serial.begin(115200);
myadc.begin( Papilio::Wing_A_Low );
}

uint16_t sample(int channel)
{
return myadc.sample(channel);
}

void loop()
{
if (Serial.available())
SerPro::processData(Serial.read());
}

EXPORT_FUNCTION(1,sample);

SERPRO_ARDUINO_END();


And this is PC code (23 lines, Linux):

#include <SerPro/SerPro-glib.h>

SERPRO_GLIB_BEGIN();
IMPORT_FUNCTION(1,sample,uint16_t(int));

void go()
{
while(1) {
printf("Voltage: %.02f\n", ((double)sample(0)*3.3)/255.0 );
usleep(500000);
}
}

int main(int argc,char **argv)
{
SerProGLIB::init(argv[1],B115200);
SerProGLIB::start();
SerProGLIB::waitConnection();

go();
}

SERPRO_GLIB_END();


And this is how it runs, with ADC connected (channel 0) to 1.2V power rail:

$ ~/sketchbook/remote/pc/remote /dev/ttyUSB1
Channel set up OK
Voltage: 1.20
Voltage: 1.20
Voltage: 1.20
Voltage: 1.20
Voltage: 1.20


Not much of a hassle, is it ?

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. !
Alvie

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 :)

Alvie