2
\$\begingroup\$

Before writing this question I read several similar threads, but didn't found the answer I am looking for. When we need a voltage level shifter the first thing that come to the mind is a voltage divider. But in certain cases in the industry, a MOSFET inverter is freferred when it comes to digital voltages involving input to a FPGA or Microcontroller.

For example, if I have 5V output from a device to represent Logical 1 where the PMODs of FPGA can read a maximum 3.3V for logical 1, I need a level shifter for sure. Whenver I tried to use a voltage divider circuit as in B of the below image, I was recomended to use A in the image. Even though A ouputs inverted logics and needs manupulation in the software to invert values read, it is always preferred. I never got an answer for that but it could be related to pull up resistor behaviour of the LVCMOS.

enter image description here

So my question is why A is preferred over B when it comes to digital inputs to FPGA and Microcontrollers?

\$\endgroup\$

2 Answers 2

3
\$\begingroup\$

What justinrjy says, plus circuit A draws no current when Vin is low / Vout is high. In many cases (example : UART, i2c...), that's most of the time: significant savings for battery-operated circuits.

You can of course use circuit B with high resistor values, so that the permanent current draw is negligible; but then load impedance and electronic noise does proportionnal damage and switching speed is reduced for capacitive loads (as mosfets are).

\$\endgroup\$
6
\$\begingroup\$

In circuit B, if your output voltage draws any current, it can significantly load the voltage divider and cause your output voltage to change far away from the intended value, in this case, 3.3V. Even when your output is connected to a high impedance pin, if your R1 and R2 values are very high, very small amounts of quiescent current can still change the output voltages significantly.

Also, with circuit A, you really only have one thing to change, and that's the pull up resistor. For example, some communication lines need maybe a higher or lower pull-up resistor value (I2C often specifies 4.7k, but 10k is also used for a lot of things), and circuit A makes that a lot easier. You'd only have to change one resistor and you'd consume less power.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.