I/O Remapping Chip... Does it exist?

Does anyone know if this exists?

For example...

A chip with 8 I/O's on one side and 8 on the other... Any of the 8 I/O's on one side could be mapped to any of the 8 on the other side. Preferably it would be controlled with some sort of serial protocol and have the ability to be remapped on the fly.

I tried some google searches, but could not find anything. I heard a FPGA could accomplish this, but I don't know a lot about FPGA's and it seems that would be overkill.

A chip with 8 I/O's on one side and 8 on the other... Any of the 8 I/O's on one side could be mapped to any of the 8 on the other side. Preferably it would be controlled with some sort of serial protocol and have the ability to be remapped on the fly.

With the proper programming I would think any modern microcontroller could perform that task. A little tricky 'mapping pins' on the run via serial commands received, but still possible.

Perhaps if you could explain the application a little it might bring out other suggestions or recommendations.

I think 8 wires would do, not? ::)

(software-wise, a lot more painful)

@Richard Thanks... that definitely got me in the right direction. "Matrix" was the word I was looking for.

@retrofly I haven't really thought of a specific application. I was just curious as if something was readily available for cheap. I guess one idea would be a HV parallel programmer that would work on several chips with different pin outs. Having the ability to map power, ground and I/O to any pin.... but the more I think about that example, the more I think you could do it with well thought out software.

Although... say you have an Arduino and need to map the PWM or UART pins to a different location because some shield has hardwired itself to those pins. In this situation, software on the processor could not move those pins and something like a built in matrix switch might solve that problem.

In this situation, software on the processor could not move those pins and something like a built in matrix switch might solve that

What you are talking about is a simple processor that is surrounded by an FPGA. The first of which was the PSoc from Cypress:- http://www.cypress.com/?id=2308

But these are signals, there is not enough current capacity to route power and ground.

You can do this quite easily with a static RAM chip if you want to change the mapping at run time, or an EPROM/EEPROM if the mapping doesn't change.

The RAM is more complex because you have to MUX the pins to reprogram. I've done this with EPROMs in the past and it works well.

In either case the chip has more than 8 address lines so you can use the extra ones to swap mapping sets, so for example a 32kx8 has 15 address lines, you need 8 for your function which leaves 7 for function "sets". If 128 options is enough that would to the trick in which case you don't need to program on the fly and an EPROM would work.

Of course if you need inputs as well then forget all this. :)

If you want real time on the fly changes with digital you'd use a digital crosspoint switch. If you need analog then an analog crosspoint switch.

http://www.analog.com/en/switchesmultiplexers/digital-crosspoint-switches/products/index.html

If you want a preprogrammed chip a GAL or PLD would be a good starting point, then you can work up to CPLD's or FPGAs.

A pure code solution would be to have an array to hold your pins, with the array keys serving as 'virtual pins'... this way you can remap them at will just by changing the associated value of each virtual pin...

kinda like this:

int vPin[] = {3, 5, 6, 7, 8, 9} //these values are actual pins

so each output, or vPin, is just a reference to a real pin, but this pin could be changed whenever, via serial or any other way you want...

you'd write to a pin like this:

digitalWrite(vPin[1], HIGH); //sets the second output to HIGH

and read them in the same way.

Cheers

Damn, heh

You can do that with an Arduino chip. ;)

Use the I2C or one of the simple serial libraries to communicate with it. ;D