Electronic – Cross-CPU Communications

communicationram

So – I have a little situation. I have a MC68000 as my system's main CPU, and a 68008 as my sound CPU to interface with a YM2612 and my RGB video generator. Right now, I'm just going to stop the sub CPU whenever I need to tell it something, but that seems horridly inefficient.

I've programmed the Sega Mega Drive before, and they implement a concept of "Comms RAM" which is basically a part of memory one CPU can write to and the other reads. How would I implement something like this without bus collisions?

Best Answer

What you are referring to can be accomplished with a "dual-port RAM", which allows simultaneous access of the same memory location using on-chip arbitration logic.

They are available from 1KB to several MB, and are not cheap -- a 16KB device costs $30 in quantities of 1, and $22 in hundreds at Digi-Key. Here is a datasheet for the device. I assumed you wanted an 8-bit interface since you are interfacing one side of it to a 68008. You can find more devices at Digi-Key searching for "dual port".