Project: Homebrew computer with led display

Thread Starter

SenseiTG

Joined May 28, 2008
4
Hey everybody :D

Presenting the latest addition to my "just for fun" contraptions collection:



Description

It is a computer with a graphics core and Amiga 500 compatible audio core in VHDL intended to be mounted on top of my mobile sound system for festival use amongst other things. It uses a 64x48 pixel let matrix with 18 bit colour as it's display. I have no idea what applications I will develop for it, currently I'm just building for the fun of it. There are many ideas though:
  • Games (obviously), mostly classics
  • Audio visualization
  • Streaming video display using Ethernet
  • Madrix control via Ethernet
  • Visualizing MIDI synthesizer
  • Real time music sequencer
List of component

The complete list of components is too big to sum up in a post, so I'll go with a list of the major parts, leaving the rest up to the attached schematics, or reading on the wiki. If this is not acceptable I hope one of the moderators could explain what needs to be added to allow posting. I've tried my best to conform to the rules this time (last time - shame on me :()

Panels: Unknown chinese brand available from www.swechtrading.se
Drivers: STP24DP05BTR
Group switching (~13A): IRF3706 via 74AC138
Power supply: PMJ 8118L from Ericsson
CPU board: eZ80F916050MODG from Zilog
FPGA board: EP2C8 from FPGA4U

Development tools

Software and cores developed using Zilog ZDS II and Quartus development environments respectively.

Theory of operation

The general theory of the system is simple. The CPU communicates with the FPGA using a regular bus. The address space is divided into regions of video memory, audio memory, input device registers and audio control register.

The video core performs PWM on the display by rapidly refreshing all of the shift registers in the drivers. This amounts to roughly 112Mbit of data each second using eight separate data lines, a clock- and a latch-line. There are eight groups of LEDs that the core switches quickly between to refresh the entire display in just the same way as you would refresh a single 8x8 panel.

The audio core consists of eight DMA channels that can be controlled individually by a group of registers. They are all clocked at a frequency close to that of the original Amiga 500. Each channel has a start and end point in the audio memory, a period (determines speed/pitch), volume and automation mode - disable(+interrupt), loop, ping-pong. Parameters are changed by writing to the control registers. Four of the channels are currently used to modulate the volume of the other four. Of the remaining four channels two are mixed into the left channel, the other into the right - imitating the behaviour of the Amiga. This will be replaced by a proper mixing matrix in the future.

What the furure holds

It is not yet fully completed (I suppose it never will be :p) and I am currently working on the enclosure and the I/O board that will feature:
  • Audio in for visualization purposes
  • Audio out for... ehm... obvious purposes? :rolleyes:
  • MIDI in because I'm working on a collaboration to let the system be used as a visualizing midi synthesizer.
  • Ethernet port for video streaming and madrix control, or perhaps network gaming with a future sister project (wink wink).
  • SD/MMC card reader for software
  • Two controller ports that will initially be game controllers, but may be expanded to any type of input device using a serial protocol and some extensions to the vhdl code.
External links for more information

The latest code will always be available from github at:
http://github.com/stg/PET-GCM

The project history - latest schematics, information, pictures, etc. is, for those who like details, available at: http://www.forskningsavd.se/wiki/index.php/Rbox_game

There is also a video (more to come) of the attached demo code at:
http://www.youtube.com/watch?v=IFl_s6qExC0

I hope you like it and I am looking forward to hearing what you think!


Best regards,
Dave
 

Attachments

Top