Ah, the old well known problem: In the circuit some parts are on other voltage levels than other parts. Somehow you must connect them.
Best example is with low-voltage microcontrollers and FPGAs (mostly 3.3V) and good old 5V TTL or CMOS levels. But it doesn’t stop there. Some circuits go as low as 1.2V. How can you interface between the levels without burning up the lower voltage parts? Well, there are some ICs sold which are doing exactly and only level conversion, but then you have to look for those.
Way easier is this little circuit:
With only 3 parts the problem is solved perfectly if you don’t go faster than >2-5 MHz. And this one is bidirectional, too. Propagation time: <10ns.
- If signal IO_LV is low, Q32 turns on pulls IO_HV on low
- If signal IO_LV is high, Q32 shuts off and IO_HV is pulled high
- If signal IO_HV is low, the bypass-diode turns on and pulls IO_LV low
- If signal IO_HV is high, Q32 shuts off and IO_LV is pulled high
The junction capacitance is negligible since the time constant of the resulting RC-filter is way less than the propagation time (max 10ns).
Even though 10ns are a frequency of 10MHz but since the transistor needs this time to fully switch in some cases,it is recommended not going higher than 2-3 MHz, otherwise timing problems will be a great issue.