2
\$\begingroup\$

I'm looking to create something to multiplex N 64 bit signals together. The goal of the project is to provide digital switching between a library of old cartridge based video games.

Essentially I want to have a number of cartridges always 'hooked up', but only one set of lines connected to the console. I could do it with 64 single output multiplexers but its seems like I'm going about it the wrong way. Any suggestions on ways to simplify the design?

P.S. - I've been thinking about this a little more, and I have an idea for an alternative approach but I'm not quite sure how to execute it. I don't really need to quickly switch between the 64 bit inputs with any sort of speed, which is what a multiplexer would support. All I really need to do is to tie a given cartridge to the console, while electrically isolating all of the other cartridges. For that, I would essentially need 64 relays for each cartridge. I'd like to avoid that, so I wonder if there are any sort of on/off pass-through chips or circuits I could construct. All I would need is something with 64 ins/outs, +1 to open or close the 64 switches. Ever heard of anything like that?

\$\endgroup\$
  • \$\begingroup\$ so you want to select 1 of 64 1-bit inputs with a 6-bit control input? or do you want to select 1 of N, 64-bit bus inputs to a 64-bit bus output? I think you're asking for the latter but I want to make sure... if so can you quantify (or at least bound) N? \$\endgroup\$ – vicatcu Feb 19 '13 at 4:08
  • \$\begingroup\$ 1 of N 64 bit inputs to a 64 bit output. For now the bound can be low, like 4 or 8, but eventually I would like to be able to do upwards of 1000. \$\endgroup\$ – Kallin Nagelberg Feb 19 '13 at 4:41
  • \$\begingroup\$ ... right so you want to have the scalability to multiplex 64000 lines to 64 lines ... I think you had better put a lot of thought into a solution that has some kind of modular routing \$\endgroup\$ – vicatcu Feb 19 '13 at 5:18
  • 2
    \$\begingroup\$ If this just for your personal use I suspect the easiest solution would be to copy all the cartridges to a large memory device and build a form of ROM copier / emulator. I'm pretty sure in the past I've seen similar projects to do that on several consoles. \$\endgroup\$ – PeterJ Feb 19 '13 at 5:25
  • 2
    \$\begingroup\$ Since you say it's partly driven by nostalgia, could your solution include a mechanical aspect? I'm thinking that a CD changer/jukebox sort of mechanism might actually be simpler/cheaper at the scale you're talking about. \$\endgroup\$ – HikeOnPast Feb 19 '13 at 6:09
3
\$\begingroup\$

Do these cartridges have any kind of "cartridge select" pin? If so, you could conceivably connect all the lines except for the select in parallel and just drive the appropriate select line.

If they don't have a select line, do the cartridges have any address(es) which cause the data lines to be released/"driven" to high impedance? If so, do the cartridges have a common address for all of the cartridges which do this? If they do, there's your cartridge select -- connect the data lines in parallel and connect as many address lines in parallel as you can; that gives you fewer lines you have to multiplex.

Failing all of that, you're stuck with a high pin count FPGA to do it, which is probably your best solution. I think that no matter what you'll want to go through the above exercises to minimize the number of uniquely driven lines. It sounds like an interesting project. Good luck!

\$\endgroup\$
  • \$\begingroup\$ Even with an FPGA, the biggest pincount at the moment is ~2k pins or 30 cartriges. \$\endgroup\$ – stanri Feb 19 '13 at 5:07
  • \$\begingroup\$ That is why I said you want to go through and find out what you can get away with; even if there is no way to isolate them you need to only isolate the data signals; there's no need to isolate the address/control lines, barring some kind of goofy (not just ROM) cartridge. In fact, if it is just ROM, there'll very likely be an OE# signal which is the only one you really need to have unique for every cartridge. There have been some really goofy game systems though, so without more detail it's just guessing. \$\endgroup\$ – akohlsmith Feb 19 '13 at 5:10
  • \$\begingroup\$ yeah. good point on the OE lines - that would be ideal. \$\endgroup\$ – stanri Feb 19 '13 at 5:15
  • \$\begingroup\$ Thanks, I'll definitely see if I can simplify by taking advantage of the cartridge architecture. I wonder what would happen if I just kept everything except 5v and gnd all connected in parallel.. Probably burn something :P gamesx.com/cartouts/gennycart.htm \$\endgroup\$ – Kallin Nagelberg Feb 19 '13 at 5:19
  • \$\begingroup\$ FYI someone suggesting something similar here, atariage.com/forums/topic/… . "It seems like just masking the chip selects should be enough for most purposes (C_OE, C_CS)" \$\endgroup\$ – Kallin Nagelberg Feb 19 '13 at 5:34
2
\$\begingroup\$

What you could use is a SP64T switch (single pole, 64 throw), which would basically open or close 64 connections with one switch. Naturally, you'd need one per cartridge.

Or, you could use a bidirectional buffer IC and use the OE to enable and disable.

\$\endgroup\$
  • \$\begingroup\$ Yes that sounds exactly like what I need. One per cartridge would be fine. I've tried searching a little bit and will continue to do so, but would you be able to point me to any suggested ICs? \$\endgroup\$ – Kallin Nagelberg Feb 19 '13 at 5:13
  • \$\begingroup\$ That would be a 64pole n throw switch. In the good old days you could build them using Yaxley wafers antiqueradios.com/forums/viewtopic.php?f=15&t=174009 but a 64-pole one would make a heroic "clunk" when you turned it! \$\endgroup\$ – Brian Drummond Feb 19 '13 at 9:24
  • \$\begingroup\$ I once opened up an analogue monitor switch box and found the smaller version of that, it's what gave me the idea :) \$\endgroup\$ – stanri Feb 19 '13 at 9:46
  • \$\begingroup\$ Open up an old oscilloscope to see the highest form of that art! \$\endgroup\$ – Brian Drummond Feb 19 '13 at 9:51
0
\$\begingroup\$

It sounds like you're going to design a big back-plane. Even for a few cartridges, the number of lines is going to grow too rapidly to do this job with discrete components. The solution, I think, is to put an FPGA on your backplane, and implement the multiplexing function in Verilog. That should be a super easy FPGA to code up too.

\$\endgroup\$
  • \$\begingroup\$ Thanks, but I'm hoping to find a solution more cost effective and scalable than an FPGA, both in terms of number of cartridges, and overall cost of the design. \$\endgroup\$ – Kallin Nagelberg Feb 19 '13 at 4:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.