Saturday, January 28, 2012

The SIDboard

I've been working on a new hardware project. I had been successfully intefacing the SID soundchip last year. Now I'm building my own SID synthesizer. I know, there's the HardSID, Catweasel and many such projects on YouTube. However, this is for fun and for learning. This particular board will have the following features:
  • Support for up to 4 SID chips
  • Support for both, the old (6581) and new (8580) SID in all slots.
  • Jumper-selectable filter configuration
  • Serial Interface (including RTS/CTS flow control)
  • Full MIDI interface (IN, THRU and OUT)
  • 3 x 16 character LCD
  • Real Time Clock
  • Extension Port

I've already designed a PCB. I couldn't fit it all on a single PCB so I split it into two boards that will be put on top of each other like a sandwich. This helps to separate digital and analog circuitry and keeps the bus lines short.


  1. Cool! I started working on something like this, but didn't get anywhere near as far as you did. Awesome work.

    Now I think I need to go and make use of all those 8580s (and 6582s) and 6581s I have in my drawer.

    Are you planning to open source the software and/or hardware?

    I'm curious, was the ATmega enough to power the 4 SIDs? I was concerned that it wouldn't be able to feed data to the SIDs fast enough.

    Are you using something for patch storage?

    My thinking was to bundle 2 to 8 (depending on what the MCU could support) SIDs on a board with a single MCU, and then allow for more than one such board. I'd keep the MIDI circuitry separate so you could add as many SIDs as you'd like. Similar to the midibox approach, but from the ground up and purpose-built.


  2. Hi,

    Yes, I'm planning to open-source everything.

    The ATmega should be enough. The original C64's 6510 CPU was clocked at ca. 1 MHz and needed multiple cycles to execute a single operation. The ATmega will be clocked at 14.7456* MHz and can execute most instructions in one cycle. Also id doesn't need to do any calculations because it gets feeded with SID register write commands from the PC. Furthermore most playroutines are designed to run at the vertical blanking interrupt of the C64 which happens only 50 times per second. There should be plenty of time :)

    *: Why such an odd frequency? Answer: This frequency (there are crystals available at this frequency) fiits well within this project, see:

    14745600 : 128 = 115200 = Serial Port Baud Rate
    14745600 : 14 = 1053257 = C64 CPU frequency (NTSC) + 3%
    14745600 : 15 = 983040 = C64 CPU frequency (PAL) - 0.2%

  3. Really interested to hear more about this project. Did you build a prototype of the 4-chip board?