I am very confused about how to analyze diode circuits.

I have read sources that claim the voltage drop across the diode to be 0.5-0.7 V but this seems to be inconsistent with what happens when biasing a diode (can have a large potential difference across it). Can someone explain this discrepancy?

Also, is there a procedure to determine the voltage (relative to ground) in a node separated from a diode? For instance, I am trying to interpret the blue output waveform (voltage in Vout node) when the green sine wave voltage input is applied in a half rectifier configuration. However, I am confused about how the output waveform is derived from the input waveform.

Finally, suppose you connected one terminal of a diode to ground and the other to a +12 V supply. Then the voltage drop across the diode is 12 V instead of 0.5-0.7 V. There is conflicting logic it seems.

Please help.


Half-Rectifier circuit Input & Output voltage waveforms

  • \$\begingroup\$ Please re-upload a better image of the waveforms -- I can barely see them. \$\endgroup\$
    – Null
    Commented Oct 29, 2021 at 19:31
  • 1
    \$\begingroup\$ "suppose you connected one terminal of a diode to ground and the other to a +12 V supply. Then the voltage drop across the diode is 12 V instead of 0.5-0.7 V. There is conflicting logic it seems." It depends on which way the diode is connected. If reverse biased then the voltage will be 12 V, if forward biased it will probably destroy the diode (due to too much current) unless the power supply is current limited and/or there is a current limiting resistor in series with the diode. \$\endgroup\$
    – Null
    Commented Oct 29, 2021 at 19:33
  • \$\begingroup\$ Cole, the closed solution involves the LambertW function. (Aka: product-log function.) Are you sure you want that? Most people just accept the approximations. But if you are a mathematics type then you may want to see the closed equation. LTspice doesn't solve it that way, though. It does a lot of piece-wise numerical approximations, instead. I'm sure you don't want to duplicate that kind of work! \$\endgroup\$
    – jonk
    Commented Oct 29, 2021 at 19:54
  • \$\begingroup\$ blue output waveform??? \$\endgroup\$
    – Andy aka
    Commented Oct 30, 2021 at 13:12

2 Answers 2


The ideal case, where a diode is treated like a closed switch when it is forward-biased and like an open switch when it is reverse-biased, is a mostly-useless viewpoint as it is immediately challenged by the fact that using it means that diodes cannot dissipate. Perhaps only a repair technician can use this idea with any utility at all.

Another common idealized case is taken where the forward-biased drop is some fixed constant. That also isn't true, but it is better than the above.

A far better (and not overly complex) view is that when it is forward-biased, it develops a voltage across it that is roughly proportional to the logarithm of the current through it -- acting per the Shockley diode equation:

\begin{equation} I_{_\text{D}}=I_{_{\text{SAT}_T}}\cdot \left(e^{^\frac{V_{_\text{D}}}{\eta\:V_T}}-1\right) \end{equation}

Where \$V_T=\frac{k\,T}{q}\$. \$k\$ is the Boltzmann's constant (not to be confused with Boltzmann's factor that is also very important to the semiconductor diode model, as we'll soon see.) \$q\$ is the electron's charge. \$\eta\$ is the emission co-efficient (worth addressing, shortly.) And \$T\$ is the junction temperature and is usually taken in units of Kelvin. (\$V_T\approx 26 \:\textrm{mV}\$ at room temperature.)

As shown above, there are two temperature-dependent terms: \$V_T\$ and \$I_{_{\text{SAT}_T}}\$. Both impact the voltage that results from a given current through the diode, but in opposing directions. It turns out that the impact of \$I_{_{\text{SAT}_T}}\$ is greater than the impact of \$V_T\$ (see discussion below on the equation for \$I_{_{\text{SAT}_T}}\$), so that the sign of that dependence follows the sign of \$\frac{\text{d}\:I_{_{\text{SAT}_T}}}{\text{d}\,T}\$ and does not follow the sign of \$\frac{\text{d}\:V_T}{\text{d}\,T}\$. Typically, when the current remains the same through the diode, the voltage across it will vary due to temperature changes by roughly the factor: \$\frac{-2\,\text{mV}}{^\circ \textrm{C}}\$. (Some use that fact to make a diode into a temperature sensor, though calibration is usually required for that purpose.)

There's a serious problem with the above Shockley diode equation, though. All diodes exhibit bulk resistance (multiple sources for this.) Sometimes, that resistance is substantial. For example, in the Nichia NSCW100 LED, the bulk resistance works out to about \$\approx 8\:\Omega\$. This is non-trivial.

The above Shockley diode equation can be simply modified so that the voltage drop across this bulk resistance is first subtracted:

\begin{equation} I_{_\text{D}}=I_{_{\text{SAT}_T}}\cdot \left(e^{^\frac{V_{_\text{D}}-I_{_\text{D}}\cdot R_{_\text{S}}}{\eta\:V_T}}-1\right) \end{equation}

There's still a problem with this equation, though, as the diode current appears in two places. It needs to be solved so that \$I_{_\text{D}}\$ appears only on the left side and not both sides of the equation.

If there is also (as in your circuit) an external resistance, \$R_1\$, then that can be combined with \$R_{_\text{S}}\$ as they are both in series with each other. Let's just call that \$R=R_1+R_{_\text{S}}\$, for simplicity.

If we now create another symbolic value, \$I_{R_T}=\frac{\eta\,V_T}{R}\$, as a kind of a weird "thermal current" through \$R\$, then it simplifies the following development:

$$\begin{align*} I_{_\text{D}} &= I_{_{\text{SAT}_T}}\cdot \left(e^{^{\left[\frac{V_{_\text{D}}}{\eta\:V_T}-\frac{I_{_\text{D}}}{I_{R_T}}\right]}}-1\right) \\\\ I_{_\text{D}}+I_{_{\text{SAT}_T}} &= I_{_{\text{SAT}_T}}\cdot e^{^{\left[\frac{V_{_\text{D}}}{\eta\:V_T}-\frac{I_{_\text{D}}}{I_{R_T}}\right]}} \\\\ \left(I_{_\text{D}}+I_{_{\text{SAT}_T}}\right)\cdot e^{^\frac{I_{_\text{D}}}{I_{R_T}}} &= I_{_{\text{SAT}_T}}\cdot e^{^\frac{V_{_\text{D}}}{\eta\:V_T}} \\\\ \frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^\frac{I_{_\text{D}}}{I_{R_T}}} &= \frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^\frac{V_{_\text{D}}}{\eta\:V_T}} \\\\ \frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^\frac{I_{_\text{D}}}{I_{R_T}}}\cdot e^{^\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}} &= \frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^\frac{V_{_\text{D}}}{\eta\:V_T}}\cdot e^{^\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}} \\\\ \frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^\frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}}} &= \frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^{\left[\frac{V_{_\text{D}}}{\eta\:V_T}+\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\right]}} \\\\ \text{setting } u&=\frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}},\text{ and applying} \\\\ \text{Lambert-W}_0\text{, where }u&=W_0\left(u\cdot e^u\right)\forall u |u\in\mathbb{R} \wedge u\ge -\frac1{e}\\\\ \operatorname{LambertW}\left(\frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^\frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}}}\right) &= \operatorname{LambertW}\left(\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^{\left[\frac{V_{_\text{D}}}{\eta\:V_T}+\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\right]}}\right) \\\\ \frac{I_{_\text{D}}+I_{_{\text{SAT}_T}}}{I_{R_T}} &= \operatorname{LambertW}\left(\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^{\left[\frac{V_{_\text{D}}}{\eta\:V_T}+\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\right]}}\right) \\\\ &\text{and finally,} \end{align*}$$

$$\begin{align*} I_{_\text{D}} &= I_{R_T}\cdot \operatorname{LambertW}\left(\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\cdot e^{^{\left[\frac{V_{_\text{D}}}{\eta\:V_T}+\frac{I_{_{\text{SAT}_T}}}{I_{R_T}}\right]}}\right)-I_{_{\text{SAT}_T}} \\\\&\text{now substituting back in for }I_{R_T}=\frac{\eta\,V_T}{R_1+R_{_\text{S}}}, \text{find}\\\\ &=\frac{\eta\,V_T}{R_1+R_{_\text{S}}}\cdot \operatorname{LambertW}\left(\frac{I_{_{\text{SAT}_T}}\cdot\left(R_1+R_{_\text{S}}\right)}{\eta\:V_T}\cdot e^{^{\left[\frac{V_{_\text{D}}+I_{_{\text{SAT}_T}}\left(R_1+R_{_\text{S}}\right)}{\eta\:V_T}\right]}}\right)-I_{_{\text{SAT}_T}} \end{align*}$$

(For those with further interest in the use of the Lambert W function in electronics, see for example, "Exact Analytical Solution of the Diode Ideality Factor of a pn Junction Device Using Lambert W-function Model", by Habibe Bayhan & A. Sertap Kavasoglu, 2006.)

That's the final diode current after taking into account the Shockley diode equation and the series resistances. With that current, you can then work out the voltage drop across the external resistance, \$R_1\$. And from that, the resulting diode voltage that takes into account the Shockley diode equation and also its internal bulk resistance is:

$$V_{_\text{D}}=\eta\:V_T\cdot\ln\left(1+\frac{I_{_\text{D}}}{I_{_{\text{SAT}_T}}}\right)+I_{_\text{D}}\cdot R_{_\text{S}}$$

The whole approach of Spice is to avoid closed solutions like this. The early developers knew that attempting to find closed solutions for a rats' nest of non-linear functions wasn't going to happen in their lifetime and likely not for centuries yet to follow. They knew they would have to find another way.

Luckily, it can be approached by instead using the vast ocean of mathematical work done on solving sets of linear equations by first linearizing these non-linear models. They can then divide and conquer the larger problem by dicing it up into tiny piece-wise bits, stepping towards a solution in small, incremental bits.

So Spice doesn't perform any of the above development. That's just one resistor and one diode. Can you imagine the complexity of a real circuit built from dozens or hundreds of non-linear components? We don't even know how to do that with the current state of mathematics. It's still far from our grasp, as yet, too. So Spice uses a simplified approach that works pretty well most of the time. And it allows some "twiddle factors" to help it find solutions when the general approach needs a little help.

Don't fret the fact that you cannot sit down on a piece of paper and work out exactly what you see in Spice. It's doing a lot of tiny steps so that it comes pretty close to the LambertW closed solution. It doesn't know that it is doing that. It's just approaches it using tiny steps to get there.

You can't waste your time on this using a piece of paper. So, instead, designers use various approximations.

If you want to use some "pretty good rules" then:

  1. Start by assuming a typical diode has some given voltage, \$V_{\text{D}_0}\$, across it when there is some given current, \$I_{\text{D}_0}\$, through it. I often use \$V_{\text{D}_0}=650\:\text{mV}\$ and \$I_{\text{D}_0}=4\:\text{mA}\$ in my head for this because that is typical for a 1N4148 diode. If you already know that the current is somewhere near this, then stop and go no further. Just use \$V_{\text{D}_0}=650\:\text{mV}\$.
  2. If the current through the diode will be significantly more or less than \$I_{\text{D}_0}=4\:\text{mA}\$ then adjust \$V_{\text{D}_0}\$ by about \$100\:\text{mV}\$ for each factor of 10 change in the current. You can compute this using the following equation: \$\Delta V_{\text{D}}\approx 100\:\text{mV}\cdot\log_{10}\left(\frac{I_{\text{D}}}{I_{\text{D}_0}=4\:\text{mA}}\right)\$. For example, if \$I_{\text{D}}=20\:\text{mA}\$ then I'd find \$\Delta V_{\text{D}}= 100\:\text{mV}\cdot\log_{10}\left(\frac{20\:\text{mA}}{4\:\text{mA}}\right)\approx +40\:\text{mV}\$ and so I'd find that \$V_{\text{D}}=V_{\text{D}_0}+\Delta V_{\text{D}}\approx 690\:\text{mV}\$. I'd round that up to \$V_{\text{D}}=700\:\text{mV}\$.
  3. Only for cases where \$I_{\text{D}}\$ is larger than about \$10\:\text{mA}\$, I may add a correction factor for the bulk resistance. With the 1N4148 that resistance is about half an Ohm. So for \$I_{\text{D}}=20\:\text{mA}\$, I'd add \$10\:\text{mV}\$. So here, \$V_{\text{D}}=700\:\text{mV}\$ which I already rounded up towards.

As noted, the first two steps ignore the internal bulk resistance. But that only becomes important at high currents. (In the above example, that was barely enough to justify my earlier rounding attempt.) So step #3 is only ocassionally needed.

That's it. You pretty much never need to worry about anything more than this for small signal diodes like the 1N4148. And almost always a lot less than all three of those steps. I usually stop at step 1, or if I'm just feeling pedantic, perhaps step 2.

(However, that's neglected temperature-caused variation and part variation. So it's still idealized in that sense. What matters will depend upon the application. You may have to keep a few things in mind about a diode, or mentally refresh when needed, and grab after just those that matter to you at the time.)

A final note, though. All diodes will follow the "heavy mathematics" approach I mentioned, when provided with appropriate model parameters. And all diodes can be approached using the above simplified rules. But the nominal \$V_{\text{D}_0}\$ (at some \$I_{\text{D}_0}\$) will vary from one class of diode to another class. And so will the assumed \$100\:\text{mV}\$ for each factor of 10 change in the current, which may instead be some other number of millivolts per factor of 10. So while the three rules still work, the values used in each step may vary from one class of diode to another. What I provided was for a small signal 1N4148. LEDs, for example, will use radically different values. But they will still follow the rules, once you have the right values in mind.

  • \$\begingroup\$ It should be noted that Lambert's W function is essentially just a name for the "principal branch of the inverse of z * exp(z)=w" much like many other special functions. You'll still have to compute it numerically. \$\endgroup\$
    – nimish
    Commented Oct 28, 2023 at 4:24
  • \$\begingroup\$ I think there's a sign error in the exponent addition just before you introduce "u", as well. \$\endgroup\$
    – nimish
    Commented Oct 28, 2023 at 4:32
  • 1
    \$\begingroup\$ @nimish I think you are right about the sign problem. I'm pretty sure that jonk already knows about the principle branch, though. There are a number of numerical methods for computing this branch. But it still can be considered, technically, a closed equation. (Other functions also require numerical methods to compute and are no different in that sense.) I'll edit jonk's answer. (He says he's left the system, permanently.) But it likely may require someone's approval in order to stick. \$\endgroup\$ Commented Oct 29, 2023 at 7:24
  • \$\begingroup\$ @periblepsis Thanks! The point of the "naming thing" was to highlight that it's only notationally closed; we've hid the open form behind a paper thin wall. It's not an issue in practice. \$\endgroup\$
    – nimish
    Commented Oct 31, 2023 at 0:02

Google "diode equation". For an ideal diode, the current is exponential with voltage, minus just enough of an offset so that there is no current when there is no driving voltage. Real diodes are different and more complicated, but the exponential model should work here.

This means that when the diode is reverse-biased, only a trickle of current flows (micro amps or less for a typical small-signal silicon diode). When the diode is forward biased more than a few tens of millivolts, the current roughly doubles every \$20 \mathrm{mV}\$ -- give or take, depending on the diode.

The model of a diode where no current flows in reverse-bias and where the forward drop is 0.6V (or whatever) in forward bias is a pretty good first approximation for most small signal silicon diodes in typical use cases at room temperature. If you count up all the weasel-words you'll see that the model comes with some pretty restrictive conditions -- but it's a handy guide if you're trying to figure out a circuit's operation on paper or in your head.

is there a procedure to determine the voltage (relative to ground) in a node separated from a diode?

Yes. You model the circuit, then find the current (and, hence, diode voltage) that makes the combined voltage drop through the parts (in your case the resistor and the diode) match the voltage source. This takes a lot of cut and try fiddling with equations -- which is why simulation programs are nice.

Or, you use the approximation: you determine the diode voltage if it were open-circuit, and if it's less than 0.6V then you stop right there. If it's greater than 0.6V, you replace the diode with an 0.6V voltage source, and figure out what the currents and voltages are in the rest of the circuit.

For instance, I am trying to interpret the blue output waveform

If you look at your simulation output vs. a hand-calculated waveform from my suggestion above, you'll see that it comes pretty close, capturing everything except for where the voltage source is between 0V and 0.6V or so.

I suggest that you also plot V(vout)-V(v001) -- this will be just the diode voltage, and you'll see how it's varying with the input voltage.

suppose you connected one terminal of a diode to ground and the other to a +12 V supply. Then the voltage drop across the diode is 12 V instead of 0.5-0.7 V

Then the diode model you want to use becomes more complicated, and time-varying.

First, just a diode following the diode equation would flow a huge current (remember that doubling every 20mV). What really happens is that all diodes have some parasitic resistance, so that would come into play, limiting the current merely tens or hundreds of amperes.

Second, that huge current at 12V drop, in such a small space, would make the diode burn up -- your diode model would (briefly) become a very low resistance (probably less than 1/10th of an ohm) as the silicon is turned to slag, then your diode model would become an open circuit when the package burnt through.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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