Power supplies & logic interface

A long time ago most digital logic was TTL and ran off 4.75-5.25v power supplies, with logic threshold typically 1.2V (so that logic '1' and logic '0' were assymetrical).

Outputs Inputs
logic '1': 2.4 - 5v 2.0-5v
  1.2v typical threshold
logic '0': 0 - 0.4v 0-0.8v

Now the dominant logic families are CMOS with no such restriction. CMOS outputs always attain supply voltages at low load currents.  Assymetrical threshold on inputs is needed for compatibility with TTL, some families have this:

Some 5v microcontrollers

74HCT series CMOS

etc

Other families have symmetrical threshold (2.5v at 5v supplies):

4000 series CMOS

74HC series CMOS

Some CMOS logic - e.g. 4000 series can - work 3V-15V (see datasheets). Modern microcontrollers can work 3V-5v or even 1.8V to 5V. Modern FPGAs will work 3.3V, 2.5V or 1.8V.

This means there are logic level translation issues when interfacing a low voltage microcontroller to higher voltage peripheral logic. The simplest design solution is to run all logic at the higher supply voltage. This will use more power than necessary, and may not be possible.

Solutions for voltage translation are shown in the table below.

Common source nmos FET with pullup resistor to the output supply Simple, will work with most supplies with lower limit determined by max Vt of FET. May be slow if pullup resistor value is high. High component count but good for single or dual outputs. Also good for translating up to high voltages at low load currents. For high currents (e.g. driving power MOSFETS) see special purpose MOSFET driver ICs.

Similar circuit with BJT requires base resistor and will be slower.

NB this translation INVERTS logic level

CD40109 (quad translator) Requires both supplies to be 3V-10V range, can convert up or down, 4 signals in 16 pin package.
GTL2002 (dual translator) Tiny 8 pin SMT package. Note there is an 8 bit version but this is in a SMT package with lead spacing so small it will not be possible to solder!

This translator requires pullup resistors on outputs, and will work from any voltage 1.2-10v to any other.

Uniquely this translator allows bidirectional outputs to be connected without a direction pin. this is very useful when interfacing bidirectional microprocessor pins. When used in bidrectional mode two pullup resistors are required.