hamster

I should be using this for more than video games...

Recommended Posts

I've done a wee bit of playing with the Spartan 6 board, and have got a couple of FPGA Arcade games up and running (converting the 'clocks' is usually the only issue).

Although I'm buzzed with this, and I'm thinking of building the game myself... maybe Defender, maybe Crystal Castles.

But somehow it still feels a little bit "odd", to have this marvel of engineering, and using it to emulate archaic videogames...

Does anybody have any inspiration for a project they want to share?

Share this post


Link to post
Share on other sites

Ha! I hear you, the arcade games are a lot of fun but the board is capable of much more. :)

One really cool project idea I've had kicking around for a while is inspired by this commercial project. It is a really cool idea, the guy uses a tiny picoblaze processor to emulate an 8051 chip. The Picoblaze is incredibly small and fast. It is optimized for Xilinx hardware and it will blow your mind how small it is. But the downside is that there is no C compiler.

This guy took a picoblaze and used the 1K of memory available to it to write assembly code that emulated the instructions of the 8051 processor. The end result is a virtual 8051 processor that is TINY, fast, and can use 8051 C compilers.

I've been thinking that it would be way cool to use this approach as a base for a standardized set of virtual microcontrollers. We could emulate the 8051, AVR, PIC, etc. Since they would all be based on the same underlying picoblaze processor they could share the same peripherals very easily.

The other main benefit is that I believe this should fit into a Spartan 3E 100K device, so I could realistically start manufacturing a very low cost version of the Papilio that might be more attractive to use for low cost applications.

Well, thats my two cents. :)

Jack.

Share this post


Link to post
Share on other sites

Humm, I like your thinking, the small size of CPU core seems good, but as it is emulated it is going to be slower than a native core.

In a similar line, could  I could write a real-mode x86 emulator running on the AVR soft core, and then use that to run Intel binaries... I guess I could, great hack value but would it be a worthy project?

Maybe it would be better to just make a generic microcoded (n) bit CPU, and then replace the microcode to give it the personality you want with custom microcode.

Humm.

PS. Sorry for the slow replies - the wife and son are away and I'm spending my time relining the spare bedroom...

Share this post


Link to post
Share on other sites

As far as speed goes, the Picoblaze is very small and very fast. It can easily reach speeds over 100Mhz if I'm not mistaken. I was thinking it should be plenty fast enough to emulate slower chips like the 16Mhz of the AVR.

Jack.

Share this post


Link to post
Share on other sites
Guest sjdavies

Hi Hamster,

I've been using a Digilent Spartan 3 board to teach myself digital electronics and FPGA programming. I've got a Papilio one board which I've been intending to use to make some of the arcade game projects a little more permanent.

I've always wanted to understand how a CPU works and have now got a rudimentary MIPS implementation running. The design was taken from "Computer Organization and Design", ISBN 0123744938.If you head over to opencores.org you'll find source code to all sorts of interesting projects. There is an AVR core. Why simulate when you could be running the real thing  ;) ?

Cheers,

Steve

Share this post


Link to post
Share on other sites

Hey Steve,

We do actually have an AVR soft processor from OpenCores working on the Papilio One.

https://github.com/GadgetFactory/Arduino-Soft-Core

It is the (http://opencores.com/project,avr_core) project from OpenCores and it forms the basis of what makes the Arduino IDE work with the Papilio. There are even several tutorials about doing cool stuff like adding peripheral cores.

http://papilio.cc/index.php?n=Papilio.Learning

Jack.

Share this post


Link to post
Share on other sites

Hi Jack and all,

I'd be quite interested in getting hold of a Papilio Plus.

I have a Papilio One 250K which I started my project on but outgrew (in a LUT & BRAM sense) a few months back!

I've just completed my own design as I needed to move to the bigger better faster Spartan 6.

The project is a FPGA based MP3/WAV player which does the MP3 decoding in software on a 32-bit RISC (mostly MIPS-I ISA with modified GCC) CPU running at near 60MHz on a Spartan 6 LX9.

It runs well and I'm able to decode 320Kbps MP3s in real-time which are read from a FAT16/FAT32 formatted microSD card.

I've just started the write-up on http://ultra-embedded.com/fpga_audio 

I reckon I could port this to the Papilio Plus with micro SD wing & audio wing without too much bother if anyone is interested.

Share this post


Link to post
Share on other sites

Hey,

This looks really promising, I played around with the MP3 decoder that is on Open Cores but I never got very far with it.

The good news is that I have been getting so many requests for the Papilio Plus that I decided to run a small batch on my pick and place machine while we wait for Seeed to work on the manufacturing.

I built 15 boards up, but I only have 5 LX9 chips. So as soon as I finish verifying all aspects of these boards I will be putting 5 boards up for sale in the online store. If all 5 sell then I will order 10 more LX9 chips and populate the remaining boards. I'll make an announcement in the forum when the boards are ready, should be in the next couple days.

Thanks!

Jack.

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