Hey everybody
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:
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 ) and I am currently working on the enclosure and the I/O board that will feature:
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
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
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 ) 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?
- 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.
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
-
671.1 KB Views: 66
-
700 KB Views: 77
-
209.2 KB Views: 48