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.
@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.
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.
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