diff options
| -rw-r--r-- | lib/apply_prefix.typ | 12 | ||||
| -rw-r--r-- | lib/assert_aeq.typ | 3 | ||||
| -rw-r--r-- | module-design.typ | 131 |
3 files changed, 113 insertions, 33 deletions
diff --git a/lib/apply_prefix.typ b/lib/apply_prefix.typ new file mode 100644 index 0000000..f6bbfb7 --- /dev/null +++ b/lib/apply_prefix.typ @@ -0,0 +1,12 @@ +#let apply-prefix(value, prefix) = { + if prefix == "tera" { return value * calc.pow(10, 12) } + if prefix == "giga" { return value * calc.pow(10, 9) } + if prefix == "mega" { return value * calc.pow(10, 6) } + if prefix == "kilo" { return value * calc.pow(10, 3) } + if prefix == "milli" { return value * calc.pow(10, -3) } + if prefix == "micro" { return value * calc.pow(10, -6) } + if prefix == "nano" { return value * calc.pow(10, -9) } + if prefix == "pico" { return value * calc.pow(10, -12) } + if prefix == "femto" { return value * calc.pow(10, -15) } + return value +} diff --git a/lib/assert_aeq.typ b/lib/assert_aeq.typ new file mode 100644 index 0000000..70b9e64 --- /dev/null +++ b/lib/assert_aeq.typ @@ -0,0 +1,3 @@ +#let assert-aeq(left, right, precision: calc.pow(10, -6)) = { + assert(calc.abs(left - right) < precision) +} diff --git a/module-design.typ b/module-design.typ index bebb2ce..5288949 100644 --- a/module-design.typ +++ b/module-design.typ @@ -1,4 +1,6 @@ #import "lib/unify.typ": num, qty, qtyrange, unit +#import "lib/apply_prefix.typ": apply-prefix +#import "lib/assert_aeq.typ": assert-aeq #import "@preview/diverential:0.3.0": * = Module design <module-design> @@ -1007,6 +1009,9 @@ each other. The SAME signal range is $plus.minus qty(10, "V")$, a span of $qty(20, "V")$. Precision of $qty(10, "ppm")$ means the maximum acceptable error is: +#let epsilon_max = 20 * apply-prefix(10, "micro") +#assert.eq(epsilon_max, apply-prefix(200, "micro")) + $ epsilon_"max" = qty(20, "V") times num("10e-6") = qty(200, "uV") $ This is our total error budget. Every error source - noise, drift, offset, @@ -1020,15 +1025,19 @@ nonlinearity - must sum to less than $qty(200, "uV")$ referred to output A $qty(90, "dB") upright("SNR")$ with a $qty(20, "Vpp")$ signal range implies an $upright("RMS")$ noise floor of: +#let v_noise_rms = 20 / (calc.pow(10, 90 / 20)) +#assert-aeq(v_noise_rms, apply-prefix(632.455, "micro")) $ - V_("noise","rms") = qty(20, "V")/10^(90/20) = qty(20, "V")/31623 = qty(632.455, "uVrms") + V_("noise","rms") = qty(20, "V")/10^(90/20) = qty(20, "V")/31623 approx qty(632.455, "uVrms") $ For Gaussian noise, the peak-to-peak value is approximately $6 times$ the $upright("RMS")$ value ($2 Phi (3) - 1 approx qty(99.7, "percent")$ containment): +#let v_noise_pp = 6 * apply-prefix(632.455, "micro") +#assert-aeq(v_noise_pp, apply-prefix(3.7947, "milli")) $ - V_("noise","pp") approx 6 times qty(632.455, "uV") = qty(3.79473, "mVpp") + V_("noise","pp") approx 6 times qty(632.455, "uV") approx qty(3.7947, "mVpp") $ This appears to conflict with our $qty(200, "uV")$ precision requirement. The @@ -1053,12 +1062,16 @@ $tau = qty(25, "us")$: it represents one Nyquist interval ($f_"sample" = 2 upright("BW") = qty(40, "kHz")$, giving $T_"sample" = qty(25, "us")$). +#let epsilon_noise = ( + apply-prefix(632.455, "micro") / calc.sqrt(2 * 20000 * apply-prefix(25, "micro")) +) +#assert-aeq(epsilon_noise, apply-prefix(632.455, "micro")) $ epsilon_"noise" = qty(632.455, "uV") / sqrt(2 times 20000 times num("25e-6")) = qty(632.455, "uV") / 1 = qty(632.455, "uV") $ This means noise alone consumes more than our entire precision budget for -simgle-sample measurements. +single-sample measurements. ===== Resolution <snr-and-noise-floor-resolution> @@ -1082,8 +1095,8 @@ noise, while the $qty(10, "ppm")$ precision requires $lt qty(200, "uV")$ systematic error. These are independent budgets. In real-world analog computing (such as differential equation solving), feedback -loops and integrators inherently ast as low-pass filters -($tau gt.double qty(25, "uV")$). As a result, long-term or dynamic patch +loops and integrators inherently act as low-pass filters +($tau gt.double qty(25, "us")$). As a result, long-term or dynamic patch execution naturally attenuates the random noise variance toward zero, leaving the $qty(10, "ppm")$ systematic precision as the true controlling factor for continuous computation. @@ -1092,12 +1105,16 @@ continuous computation. The drift rate specification of $qty(0.014, "ppm per hour")$ means: +#let dv_epsilon_t = apply-prefix(0.014, "micro") * 20 +#assert-aeq(dv_epsilon_t, apply-prefix(280, "nano")) $ dv(epsilon, t) lt.eq num("0.014e-6") times qty(20, "volt per hour") = qty(280, "nano volt per hour") $ Over 30 days (720 hours), the accumulated drift is: +#let epsilon_drift_day = 0.014 * 720 +#assert.eq(epsilon_drift_day, 10.08) $ epsilon_("drift",qty(30, "day")) = 0.014 times 720 = qty(10.08, "ppm") $ This is precisely calibrated so that 30 days of drift consumes the entire @@ -1126,6 +1143,8 @@ For a sinusoidal signal at frequency $f$ to be reproduced within $qty(10, "ppm")$ amplitude error, the amplifier gain at the frequency must satisfy: +#let af_a0 = 1 - apply-prefix(10, "micro") +#assert.eq(af_a0, 0.99999) $ A(f)/A(0) & gt.eq 1 - num("10e-6") \ A(f)/A(0) & gt.eq 0.99999 @@ -1139,6 +1158,8 @@ $ A(f)/A(0) gt.eq 1/sqrt(1 + (f G/upright("GBW"))^2) $ Solving for $qty(10, "ppm")$ gain error at $qty(20, "kHz")$ with $G = 1$ (unity gain buffer): +#let gbw = 20000 / calc.sqrt(calc.pow(1 / 0.99999, 2) - 1) +#assert-aeq(gbw, apply-prefix(4.5, "mega"), precision: 30000) $ upright("GBW") gt.eq 20000 / sqrt((1/0.99999)^2 - 1) approx 20000/sqrt(0.00002) approx qty(4.5, "MHz") $ @@ -1206,6 +1227,8 @@ $ V_(n,"rms") = sqrt(4 k_B T R upright("BW")) $ At $T = qty(300, "K")$ ($qty(27, "dC")$), for a $qty(10, "kilo ohm")$ resistor over $qty(20, "kHz")$ bandwidth: +#let n_rms = calc.sqrt(4 * 1.381 * calc.pow(10, -23) * 300 * 10000 * 20000) +#assert-aeq(n_rms, apply-prefix(1.8205, "micro")) $ V_(n,"rms") & = sqrt(4 times num("1.381e-23") times 300 times 10000 times 20000) \ V_(n,"rms") & approx qty(1.82, "uVrms") @@ -1213,6 +1236,8 @@ $ For a $qty(1, "mega ohm")$ resistor (input impedance): +#let n_rms = calc.sqrt(4 * 1.381 * calc.pow(10, -23) * 300 * 1000000 * 20000) +#assert-aeq(n_rms, apply-prefix(18.205, "micro")) $ V_(n,"rms") & = sqrt(4 times num("1.381e-23") times 300 times 1000000 times 20000) \ V_(n,"rms") & approx qty(18.2, "uVrms") @@ -1221,9 +1246,9 @@ $ ====== Where it enters <resistor-thermal-noise-where-it-enters> / Front-panel input nodes: The mandated $Z_"in" gt.eq qty(1, "mega ohm")$ - impedance om white input jacks creates an unavoidable + impedance on white input jacks creates an unavoidable $approx qty(18.2, "uVrms")$ noise floor right at the module boundary. This - necessitates dropping internal suming nodes down to $qty(1, "kilo ohm")$ + necessitates dropping internal summing nodes down to $qty(1, "kilo ohm")$ post-buffering to prevent additive thermal noise accumulation, / Feedback resistors: Thermal noise generated in feedback elements is scaled to the output by the stage's noise gain ($G_N = 1 + R_f / R_"in"$). @@ -1231,7 +1256,7 @@ $ $G_N gt.eq 1$, meaning thermal noise is never attenuated along with the signal, / Input resistors: In summing junction amplifiers, -/ High-impedance nodes: Within integrators, sample-an-holds, and +/ High-impedance nodes: Within integrators, sample-and-holds, and current-to-voltage converters. ====== Scaling law <resistor-thermal-noise-scaling-law> @@ -1268,7 +1293,7 @@ $ e_n (f) = sqrt(e_(n,"white")^2 + (e_(n,1/f)^2)/f) = e_(n,"white") sqrt(1 + f_c/f) $ -The corner frequency $f_c$ is where $1/f$ noise noise power equals white noise +The corner frequency $f_c$ is where $1/f$ noise power equals white noise power: $ f_c = (e_(n,1/f) / e_(n,"white"))^2 $ @@ -1304,6 +1329,10 @@ servo loop. For a precision op-amp ($1 unit("nano volt per shertz"), f_c = qty(10, "Hz")$) over $qty(0.001, "Hz")$ to $qty(20, "kHz")$: +#let v_n_rms = calc.sqrt( + calc.pow(calc.pow(10, -9), 2) * 20000 + (calc.pow(calc.pow(10, -9), 2) * 10 * calc.ln(20000 / 0.001)), +) +#assert-aeq(v_n_rms, apply-prefix(0.43, "micro")) $ V_(n,"rms") & = sqrt((num("1e-9"))^2 times 20000 + (num("1e-9"))^2 times 10 ln(20000/0.001)) \ V_(n,"rms") & = sqrt(num("2e-14") + num("1.68e-13")) = sqrt(num("1.88e-13")) approx qty(0.43, "uVrms") @@ -1368,12 +1397,16 @@ $ V_(n,i,"rms") = i_n times Z_"source" times sqrt(upright("BW")) $ For a bipolar op-amp ($1 unit("pico ampere per shertz")$) with $qty(10, "kilo ohm")$ source impedance over $qty(20, "kHz")$: +#let v_n_i_rms = apply-prefix(1, "pico") * 10000 * calc.sqrt(20000) +#assert-aeq(v_n_i_rms, apply-prefix(1.41, "micro")) $ V_(n,i,"rms") = num("1e-12") times 10000 times sqrt(20000) approx qty(1.41, "uVrms") $ For a $qty(1, "mega ohm")$ source impedance (as mandated for SAME input jacks): +#let v_n_i_rms = apply-prefix(1, "pico") * calc.pow(10, 6) * calc.sqrt(20000) +#assert-aeq(v_n_i_rms, apply-prefix(141, "micro")) $ V_(n,i,"rms") = num("1e-12") times 10^6 times sqrt(20000) approx qty(141, "uVrms") $ @@ -1393,9 +1426,9 @@ Current noise cannot be cancelled by differential substraction because $i_(n+)$ and $i_(n-)$ are uncorrelated shot-noise sources. Mitigation requires: - Mandating JFET or CMOS input buffers for all $Z_"in" gt.eq qty(1, "mega ohm")$ front-panel input interfaces, -- Restring low-noise bipolar op-amps exclusively to low-impedance nodes +- Restricting low-noise bipolar op-amps exclusively to low-impedance nodes ($Z_"source" lt qty(1, "kilo ohm")$), -- Minimizing non-inverting terminal impedance by grouding it directly to AGND +- Minimizing non-inverting terminal impedance by grounding it directly to AGND where DC offset allows, avoiding extra thermal and current noise contributions. @@ -1416,11 +1449,11 @@ The output error voltage $V_(n,"supply")$ resulting from supply ripple $ V_(n,"supply") = V_("ripple") / (upright("PSRR")(f)) $ -Where $upright("PSRR")$ expressed in $unit("dB")$ represents the ration of AC +Where $upright("PSRR")$ expressed in $unit("dB")$ represents the ratio of AC supply variation to output error variation: $ - upright("PSRR")_(unit("dB")) = 20 log_10(V_("supply")/V_("out")) + upright("PSRR")_(unit("dB")) = 20 log_10((Delta V_("supply"))/(Delta V_("out"))) $ ====== Typical magnitude <power-supply-noise-coupling-typical-magnitude> @@ -1440,8 +1473,10 @@ For SAME analog supply cleanliness specification ($qty(500, "uVpp")$ ripple on $plus.minus qty(15, "V")$ rails) with $qty(80, "dB") upright("PSRR")$ at $qty(10, "kHz")$: +#let v_n_supply = apply-prefix(500, "micro") / calc.pow(10, 80 / 20) +#assert-aeq(v_n_supply, apply-prefix(50, "nano")) $ - V_(n,"supply") = qty(500, "uV") / 10^(80/20) = qty(500, "uV") / 10000 = qty(50, "nVpp") + V_(n,"supply") = qty(500, "uV") / 10^(80/20) = qty(500, "uV") / 10000 approx qty(50, "nVpp") $ At audio-band frequencies, power supply noise coupling is negligible when rails @@ -1449,8 +1484,10 @@ meet specification. However, at the $qty(500, "kHz")$ switching frequency of PWAM time-domain cores, reduced $upright("PSRR")$ ($qty(30, "dB")$) for general-purpose parts) increases coupling: +#let v_n_supply_500khz = apply-prefix(500, "micro") / calc.pow(10, 30 / 20) +#assert-aeq(v_n_supply_500khz, apply-prefix(15.8, "micro")) $ - V_(n,"supply",qty(500, "kHz")) = qty(500, "nV") / 10^(30/20) = qty(500, "uV") / 31.6 approx qty(15.8, "uVpp") + V_(n,"supply",qty(500, "kHz")) = qty(500, "uVpp") / 10^(30/20) = qty(500, "uV") / 31.6 approx qty(15.8, "uVpp") $ ====== Where it enters <power-supply-noise-coupling-where-it-enters> @@ -1466,7 +1503,7 @@ $ $qty(5, "mm")$ of every IC supply pin to maintain high-frequency PSRR, - Use RC or LC power rail filtering for sensitive reference and low-noise input stages, -- Select precision op-amps with flat $upright("PSRR")$ characteristics aross the +- Select precision op-amps with flat $upright("PSRR")$ characteristics across the signal bandwidth. ===== Radiated and conducted RF interference @@ -1490,7 +1527,7 @@ an electric field of strength $E$ is: $ V_("induced") approx E dot l dot eta $ -Where $eta$ is the antenna coupling efficiency ($0.01$ to $0.5$, dependin on +Where $eta$ is the antenna coupling efficiency ($0.01$ to $0.5$, depending on frequency and geometry). The resulting demodulated DC offset error $V_(upright("DC"),"error")$ created by @@ -1502,24 +1539,30 @@ $ V_(upright("DC"),"error") = alpha dot V_("induced") $ <radiated-and-conducted-rf-interference-typical-magnitude> For a $l = qty(1, "m")$ unshielded banana patch cable in an -$E = qty(3, "volt per meter")$ ambient RF field (per EN-6100-4-3 +$E = qty(3, "volt per meter")$ ambient RF field (per EN-61000-4-3 specification limit) with coupling efficiency $eta = 0.1$: +#let v_induced = 3 * 1 * 0.1 +#assert-aeq(v_induced, apply-prefix(300, "milli")) $ V_("induced") = 3 times 1 times 0.1 = qty(300, "mVpp") $ Without input filtering, RFI demodulation with $alpha = 0.03$ produces a DC offset error of: +#let v_dc_error = 0.03 * apply-prefix(300, "milli") +#assert-aeq(v_dc_error, apply-prefix(9, "milli")) $ V_(upright("DC"),"error") = 0.03 times qty(300, "mV") = qty(9, "mV") (qty(450, "ppm")) $ -This exceeds out total systematic error budget by a factor of $45$. +This exceeds our total systematic error budget by a factor of $45$. However, enforcing the mandated $qty(40, "dB")$ RF attenuation above $qty(1, "MHz")$ at the input jack (a factor of $100$ voltage reduction) -reduces induced RF to $qty(3, "mVpp")$, yeilding a demodulated DC offset of: +reduces induced RF to $qty(3, "mVpp")$, yielding a demodulated DC offset of: +#let v_dc_error_filtered = 0.03 * apply-prefix(3, "milli") +#assert-aeq(v_dc_error_filtered, apply-prefix(90, "micro")) $ V_(upright("DC"),"error","filtered") = 0.03 times qty(3, "mV") = qty(90, "uV") (qty(4.5, "ppm")) $ @@ -1590,6 +1633,8 @@ For intra-chassis module operation, $R_("AGND") lt.eq qty(0.5, "milli ohm")$ per @pcb-ground-planes and @backplane-connector). A $I_("return") = qty(100, "mA")$ analog return current produces: +#let v_error_internal = apply-prefix(100, "milli") * apply-prefix(0.5, "milli") +#assert-aeq(v_error_internal, apply-prefix(50, "micro")) $ V_("error","internal") = qty(100, "mA") times qty(0.5, "milli ohm") = qty(50, "uV") (qty(2.5, "ppm")) $ @@ -1604,6 +1649,8 @@ However, utilizing an Interface Module with mandated $upright("CMRR") gt.eq qty(120, "dB")$ per @module-category-interface-modules attenuates a $qty(10, "mV")$ external ground offset to: +#let v_error_external = apply-prefix(10, "milli") / calc.pow(10, 120 / 20) +#assert-aeq(v_error_external, apply-prefix(10, "nano")) $ V_("error","external") = qty(10, "mV") / 10^(120/20) = qty(10, "mV") / 10^6 = qty(10, "nV") (qty(0.5, "ppb")) $ @@ -1679,14 +1726,16 @@ represents the dielectric material relaxation time constants. ) <table-capacitor-dielectric-absorption-noise-typical-magnitude> For a standard polypropylene capacitor ($qty(0.05, "percent") upright("DA")$) -step-charged charged at $qty(10, "V")$: +step-charged at $qty(10, "V")$: +#let v_da = 10 * 0.0005 +#assert.eq(v_da, apply-prefix(5, "milli")) $ V_(upright("DA")) = qty(10, "V") times 0.0005 = qty(5, "mV") (qty(250, "ppm")) $ This single residual term exceeds our $qty(200, "uV")$ systematic error budget -y a factor of $25$. +by a factor of $25$. ====== Where it enters <capacitor-dielectric-absorption-noise-where-it-enters> @@ -1708,7 +1757,7 @@ vulnerable. Dielectric absorption cannot be cancelled electronically after charge has soaked into the dielectric. Mitigation relies strictly on component selection and circuit topology: -- Mandating Class 1 C0G/NP0 ceramic or PTFE/polysyrene capacitors for all +- Mandating Class 1 C0G/NP0 ceramic or PTFE/polystyrene capacitors for all integrator feedback and sample-hold storage paths, - Prohibiting Class 2 ceramic (X7R, X5R, Y5V) capacitors anywhere in the precision analog signal path, @@ -1756,6 +1805,8 @@ For a standard PVC-insulated patch cable, $k_("tribo") approx qty(50, "milli volt per meter per second")$ experiencing mild flexing ($dv(L, t) = qty(1, "milli meter per second")$): +#let v_tribo = apply-prefix(50, "milli") * apply-prefix(1, "milli") +#assert-aeq(v_tribo, apply-prefix(50, "micro")) $ V_("tribo") = num("50e-3") times num ("1e-3") = qty(50, "uV") (qty(2.5, "ppm")) $ @@ -1763,6 +1814,8 @@ $ Using a low-noise graphite-coated cable ($k_("tribo") approx qty(1, "milli volt per meter per second")$): +#let v_tribo = apply-prefix(1, "milli") * apply-prefix(1, "milli") +#assert-aeq(v_tribo, apply-prefix(1, "micro")) $ V_("tribo") = num("1e-3") times num("1e-3") = qty(1, "uV") (qty(0.05, "ppm")) $ @@ -1772,6 +1825,8 @@ For an X7R ceramic capacitor $qty(1, "g")$ ($qty(0.1, "N")$) acoustic/mechanical vibration spike on a $qty(100, "nF")$ node: +#let v_piezo = (apply-prefix(200, "pico") * 0.1) / apply-prefix(100, "nano") +#assert-aeq(v_piezo, apply-prefix(200, "micro")) $ V_("piezo") = (num("200e-12") times 0.1) / num("100e-9") = qty(200, "uV") (qty(10, "ppm")) $ @@ -1796,7 +1851,7 @@ coefficient $d_33$, and inversely with total node capacitance $C$. <triboelectric-and-piezoelectric-effects-compensation-strategy> Triboelectric and piezoelectric noise transients are mechanical in origin and -cannot be filtered by active DC feedback loop. Mitigation requires physical +cannot be filtered by active DC feedback loops. Mitigation requires physical prevention: - Mandating low-noise silicone or graphite-shielded banana patch cables per @banana-format, @@ -1811,7 +1866,7 @@ prevention: ====== Physical mechanism <pcb-leakage-currents-physical-mechanism> -Surface contamination (no-clean flux residue, ionic salts, airbone dust and +Surface contamination (no-clean flux residue, ionic salts, airborne dust and condensed moisture) creates parasitic resistive conduction paths across FR-4 dielectric substrate surfaces. At high-impedance signal nodes, these parasitic paths bleed microamperes to picoamperes of stray current from adjacent power or @@ -1835,21 +1890,29 @@ $ For a clean, dry FR-4 PCB at $qty(50, "percent") upright("RH")$, surface resistance between adjacent traces is typically -$R_("leak") approx qty("1e12", "ohm")$. Under high ambient humidity +$R_("leak") approx qty(1, "tera ohm")$. Under high ambient humidity ($qty(70, "percent") upright("RH")$) or with uncleaned flux residue, surface -resistance drops sharply to $R_("leak") approx qty("1e9", "ohm")$. +resistance drops sharply to $R_("leak") approx qty(1, "giga ohm")$. For a $V_("trace") = qty(10, "V")$ potential adjacent to a $Z_("source") = qty(1, "mega ohm")$ input node (white banana jack boundary): -- On a clean PCB ($R_("leak") = qty("1e12", "ohm")$): +- On a clean PCB ($R_("leak") = qty(1, "tera ohm")$): +#let i_leak = 10 / apply-prefix(1, "tera") +#assert-aeq(i_leak, apply-prefix(10, "pico")) +#let v_error = i_leak * apply-prefix(1, "mega") +#assert-aeq(v_error, apply-prefix(10, "micro")) $ - I_("leak") & = qty(10, "V") / qty("1e12", "ohm") = qty(10, "pA") \ + I_("leak") & = qty(10, "V") / qty(1, "tera ohm") = qty(10, "pA") \ V_("error") & = qty(10, "pA") times qty(1, "mega ohm") = qty(10, "uV") (qty(0.5, "ppm")) $ -- On a contaminated PCB ($R_("leak") = qty("1e9", "ohm")$): +- On a contaminated PCB ($R_("leak") = qty(1, "giga ohm")$): +#let i_leak = 10 / apply-prefix(1, "giga") +#assert-aeq(i_leak, apply-prefix(10, "nano")) +#let v_error = i_leak * apply-prefix(1, "mega") +#assert-aeq(v_error, apply-prefix(10, "milli")) $ - I_("leak") & = qty(10, "V") / qty("1e9", "ohm") = qty(10, "nA") \ + I_("leak") & = qty(10, "V") / qty(1, "giga ohm") = qty(10, "nA") \ V_("error") & = qty(10, "nA") times qty(1, "mega ohm") = qty(10, "mV") (qty(500, "ppm")) $ @@ -1896,7 +1959,7 @@ Mitigation requires strict physical layout controls: Inductors, when used in analog circuits (filters, RF chokes, DC-DC converters, etc.), introduce several non-ideal error mechanisms: -/ DC resistance ($upright("DCR")$): Finite copper wire resistance cause IR +/ DC resistance ($upright("DCR")$): Finite copper wire resistance causes IR voltage drops and thermal power dissipation, / Core losses: Ferromagnetic cores exhibit hysteresis and eddy current losses, acting as a frequency-dependent parallel resistance, @@ -1963,6 +2026,8 @@ materials. For a $qty(10, "mH")$ ferrite signal-path inductor with $qty(5, "ohm") upright("DCR")$ carrying a $qty(1, "mA")$ signal current: +#let v_drop = 5 * apply-prefix(1, "milli") +#assert-aeq(v_drop, apply-prefix(5, "milli")) $ V_"drop" = qty(5, "ohm") times qty(1, "mA") = qty(5, "mV") (qty(250, "ppm")) $ This single $upright("DCR")$ term exceeds out $qty(200, "uV")$ systematic @@ -1979,7 +2044,7 @@ error budget by a factor of $25$. ====== Scaling law <inductor-losses-and-parasitic-effects-scaling-law> DC resistance voltage drop scales linearly with signal current $I$ and -$upright("DCR")$. Core losses scale non-linearly with frequency($f^alpha$) and +$upright("DCR")$. Core losses scale non-linearly with frequency ($f^alpha$) and flux density ($B^beta$). Parasitic impedance peak scales inversely with winding capacitance $C_"parasitic"$. |
