Diffusion Resistor
Resistor model with velocity saturation and optional tolerance, operational limits, fault behavior, and noise
Libraries:
Simscape /
Electrical /
Passive
Description
The Diffusion Resistor block represents a resistor with velocity saturation, while letting you model the following effects:
You can turn these modeling options on and off independently of each other.
In its simplest form, the resistance of the Diffusion Resistor block is:
$$R={R}_{0}\left(1-{p}_{2}-{p}_{3}+{p}_{2}\sqrt{1+{\left({\theta}_{2}{v}_{pn}\right)}^{2}}+{p}_{3}\sqrt[3]{1+{\left|{\theta}_{3}{v}_{pn}\right|}^{3}}\right)$$
where:
R_{0} is zero-bias resistance.
p_{2} and p_{3} are the quadratic and linear voltage coefficients, respectively.
θ_{2} and θ_{3} are inverse voltages for quadratic and linear voltage activation, respectively.
v_{pn} is applied voltage across the resistor.
At low bias,
$$R\approx {R}_{0}\left(1+\frac{{p}_{2}{\theta}_{2}^{2}{v}_{pn}^{2}}{2}\right)$$
and therefore p_{2} and θ_{2} determine the low-bias quadratic behavior of the resistor.
At high bias,
$$R\approx {R}_{0}\left(1-{p}_{2}-{p}_{3}+\left|{v}_{pn}\right|\left({p}_{2}{\theta}_{2}+{p}_{3}{\theta}_{3}\right)\right)$$
and therefore p_{3} and θ_{3} impact only the high-bias linear behavior of the resistor.
You can use the voltage-dependence of the resistance to model velocity saturation in a diffused resistor. For sufficiently high voltage,
$${i}_{sat}=\frac{1}{{R}_{0}\left({p}_{2}{\theta}_{2}+{p}_{3}{\theta}_{3}\right)}$$
where i_{sat} is saturation current.
Simplified Parameterization
The simplified parameterization model assumes that the quadratic and linear coefficients are the same. This is one of the recommended assumptions for the r2_cmc model provided by the Compact Model Coalition, as a reasonable initial guess when performing parameter extraction. With this assumption, it is possible to define two new parameters, Critical voltage and Corner voltage, which provide a simpler means for parameterizing models:
$$\begin{array}{l}{p}_{2}={p}_{3}=\frac{{v}_{co}}{2{v}_{crit}}\\ {\theta}_{2}={\theta}_{3}=\frac{1}{2{v}_{co}}\end{array}$$
where:
v_{crit} is critical voltage.
v_{co} is corner voltage.
At high voltage,
$$\frac{dR}{d{v}_{pn}}\approx \frac{{R}_{0}}{{v}_{crit}}$$
and therefore, critical voltage is the reciprocal of the slope of the increase of R/R_{0} with voltage.
With this parameterization, the saturation current is
$${i}_{sat}=\frac{{v}_{crit}}{{R}_{0}}$$
Tolerances
You can apply tolerances to the nominal value you provide for the Resistance parameter. Datasheets typically provide a tolerance percentage for a given resistor type. The table shows how the block applies tolerances and calculates resistance based on the selected Tolerance application option.
Option | Resistance Value |
---|---|
| R_{0} |
| Uniform distribution: R_{0} · (1 –
tol + 2·
tol·
Gaussian distribution:
R_{0} · (1 +
tol · |
| R_{0} · (1 + tol ) |
| R_{0} · (1 – tol ) |
In the table,
R_{0} is the Resistance parameter value, nominal zero-bias resistance.
tol is fractional tolerance, Tolerance (%) /100.
nSigma is the value you provide for the Number of standard deviations for quoted tolerance parameter.
rand
andrandn
are standard MATLAB^{®} functions for generating uniform and normal distribution random numbers.
Note
If you choose the Random tolerance
option and you
are in "Fast Restart" mode, the random tolerance value is updated on every
simulation if at least one between the fractional tolerance,
tol, or the Number of standard deviations for
quoted tolerance, nSigma, is set to Run-time
and is defined with a variable (even if you do not modify that variable).
Operating Limits
You can specify operating limits in terms of power and maximum working voltage. If you set the
Modeling option parameter to Show thermal
port
(see Model Thermal Effects), you can also specify operating
limits in terms of temperature.
When an operating limit is exceeded, the block can either generate a warning or stop the simulation with an error. For more information, see the Operating Limits parameters section.
Faults
To model a fault in the Diffusion Resistor block, in the Faults section, click the Add fault hyperlink next to the fault that you want to model. In the Add Fault window, specify the fault properties. For more information about fault modeling, see Fault Behavior Modeling and Fault Triggering.
The Diffusion Resistor block allows you to model an electrical fault as an instantaneous change in resistance. The block can trigger fault events:
At a specific time.
When the current exceeds the maximum permissible value for longer than a specific time interval.
If you want to trigger a fault at a specific time, in the
Fault Inspector window, set Trigger type to
Timed
. If you want to determine whether a system fails and, if
so, when it fails, in the Fault Inspector window, set Trigger
type to Behavioral
.
When the resistor fails, its resistance is changed to the value you specify for the Faulted zero-voltage resistance parameter.
Thermal Noise
The Diffusion Resistor block can generate thermal noise
current. If you set the Noise mode parameter to
Enabled
, then the block includes a noise current
source connected in parallel to the diffusion resistor.
If the sampling time is h, then the thermal noise is given by:
$${i}_{N}=\sqrt{2kT/R}\frac{N\left(0,1\right)}{\sqrt{h}}$$
where:
k is the Boltzmann constant, 1.3806504e-23 J/K.
T is temperature.
R is resistance.
N is a Gaussian random number with zero mean and standard deviation of one.
2kT/R is the double-sided thermal noise power distribution (the single-sided equivalent is 4kT/R).
The block generates Gaussian noise by using the PS Random Number source in the Simscape™ Foundation library. You can control the random number seed by setting the Repeatability parameter:
Not repeatable
— Every time you simulate your model, the block resets the random seed using the MATLAB random number generator:seed = randi(2^32-1);
Repeatable
— The block automatically generates a seed value and stores it inside the block, to always start the simulation with the same random number. This auto-generated seed value is set when you add a Diffusion Resistor block from the block library to the model. When you make a new copy of the Diffusion Resistor block from an existing one in a model, a new seed value is generated. The block sets the value using the MATLAB random number generator command shown above.Specify seed
— If you select this option, the additional Seed parameter lets you directly specify the random number seed value.
Model Thermal Effects
You can expose thermal ports to specify how the resistance value changes with temperature and to set the thermal mass. To expose the thermal ports, set the Modeling option parameter to either:
No thermal port
— The block does not contain thermal ports.Show thermal port
— The block contains one thermal conserving port.
Use the Variables settings to set the initial temperature target.
If you set the Modeling option parameter to Show thermal
port
, the defining equation for the resistance is augmented with
additional temperature scaling:
$$R={R}_{0}\left(1+{T}_{C1}^{eff}\Delta T+{T}_{C2}^{eff}{\left(\Delta T\right)}^{2}\right)\left(1-{p}_{2}-{p}_{3}+{p}_{2}\sqrt{1+{\left({\theta}_{2}{v}_{pn}\right)}^{2}}+{p}_{3}\sqrt[3]{1+{\left|{\theta}_{3}{v}_{pn}\right|}^{3}}\right)$$
where $${T}_{C1}^{eff}$$ and $${T}_{C2}^{eff}$$ are the linear and quadratic temperature scaling coefficients, respectively.
$$\Delta T={T}_{sim}-{T}_{meas}$$
where:
T_{sim} is simulation temperature.
T_{meas} is measurement temperature.
With the thermal port exposed, the generated noise uses the temperature at the thermal port when determining the instantaneous noise value. Exposing the thermal port also extends the options on the Operating Limits tab as follows:
The Power rating parameter becomes temperature dependent. You define a temperature up to which the full power rating is available, plus a higher temperature for which the power rating is reduced to zero. It is assumed that the power rating decreases linearly with temperature between these two values.
An additional parameter, Operating temperature range, [Tmin Tmax], lets you define the valid temperature range for block operation.
Variables
To set the priority and initial target values for the block variables before simulation, use the Initial Targets section in the block dialog box or Property Inspector. For more information, see Set Priority and Initial Target for Block Variables.
Use nominal values to specify the expected magnitude of a variable in a model. Using system scaling based on nominal values increases the simulation robustness. Nominal values can come from different sources. One of these sources is the Nominal Values section in the block dialog box or Property Inspector. For more information, see System Scaling by Nominal Values.
This section appears only for the blocks with exposed thermal port. The Temperature variable lets you specify a high-priority target for the temperature at the start of simulation.
Basic Assumptions and Limitations
Simulating with noise enabled slows down simulation. Choose the sample time (h) so that noise is generated only at frequencies of interest, and not higher.