The trick is to properly use and abuse the clamp diodes on the iob's. The spartan-3e can easily take a 5 volt
input as long as you make sure the current stays within acceptable limits. Hell, I've got a goodie right here that abuses it at 12 volt, BUT with a sensible resistor in front of it. The resistor burns most of it and the clamp diode clamps it down to Vcc + "a tiny bit".
If you don't want to believe me, read **broken link removed** closely. Also check the IBIS model of the spartan-3e, it has some useful clues on how to abuse the IOs.
Or let me put it another way by use of an example. The circuit I use has the spartan-3e configured as 2.5 Volt iob's. Which means the absolute maximum that is tolerated at the IO pad is 3.0 Volt. Suppose I try to put a higher voltage on the pin? Well, the internal clamp down will try to clamp it down to the 2.5 Vcc to the best of it's ability. The clamp diode will try to take care of the excess voltage. And will succeed as long as the
current into the pad is not too high.
Just take the voltage you want to apply (5 volt), take your rated maximum (3.3 volt + 0.5 volt = 3.8 volt) and calculate how much a resistor would have to dissipate. This gives you a current, which you can use in the IBIS model to check how the clamp diode would do...
So in my case it takes 12 volt at fairly low switching speeds (25 kHz). A mere 5 volts should be too easy with I dunno, a 1 k resistor. Probably less, but too lazy right now.