I need a quick heads up on a problem I am trying to solve at work. I'm trying to connect to a parallel data port on an interface module we use to access smart cards. The port has an 8bit input and an 8 bit output with associated strobe/ready pins. I have a microcontroller board with an ARM cortex (mbed.org) which would be perfect to interface to these ports to my PC for test purposes. The ARM board has loads of i/o but its a 3.3v part. I have used it with your typical 2 line LCD display (5v part) with no problem (I know the ARM i/o is 5v tolerant) and I can control the LCD no problem. What I'm wondering is, is it ok to assume that I can drive any 5v TTL level input from a 3.3v output pin ? I'm happy that I can read the 5v ttl levels as I said the ARM Cortex chip's documentation says it 5v tolerent. The connection will be very short (<10cm).
The datasheets should tell you the minimum voltage required to register as a digital high for your receiver, and the minimum voltage guaranteed at the output for a high from your sender. Just make sure they're within each other's limits.
A TTL input signal is defined as "low" when between 0 V and 0.8 V with respect to the ground terminal, and "high" when between 2.2 V and 5 V (precise logic levels vary slightly between sub-types). TTL outputs are typically restricted to narrower limits of between 0 V and 0.4 V for a "low" and between 2.6 V and 5 V for a "high", providing 0.4V of noise immunity.
"is it ok to assume"
your number of assumptions should be inversely proportional to the amount of money invested in your work. I am not sure how much is in this project but I always try to keep that in mind.
As for the device: are you reading, writing or both? If reading, should be ok since you said your device is 5V tolerant. If you are writing then I would still stick with some sort of level shifter like this. You really can't know what will happen if you use a device out of spec (could get lucky but you could also get really really unlucky).
I have used one of the level converters and they work great!
Pericom AN66 is a useful application note on logic family interfacing. It covers driving TTL from 3.3V CMOS.
The problem with the term "TTL" is it's often used rather loosely. People often say "TTL" when they really mean 5V CMOS.
Real 5V TTL (74LS and similar) has 3.3V compatible input thresholds but has much higher input current requirements than any CMOS device does. So you need to make sure your 3.3V device can deliver enough current for the TTL inputs. This is probablly not a problem for driving a single gate but could become troublesome at high fanouts.
5V "TTL compatible CMOS" (74HCT and similar) inputs are fine to drive from 3.3V signals.
5V "traditional CMOS" (HEF4000 74HC and similar) inputs will usually be out of spec with 3.3V signals but in practice will often work despite this.
5V "CMOS schmitt trigger" inputs are very likely to fail to respond to 3.3V signals.
Be aware that different pins on the same device may have different specs. I've got caught out with this on PICs where many of the pins have TTL compatible input buffers but some have schmitt trigger input buffers.