#import "@preview/unify:0.8.1": numrange, qty, qtyrange, unit #import "@preview/diverential:0.3.0": * = Module design The preceding sections established what SAME is: its signal standards, precision tiers, power distribution, and mechanical format. This section addresses how SAME modules are designed to meet these specifications — particularly the demanding requirements of the Metrologic tier. The challenge is substantial. The Metrologic tier demands $qty(10, "ppm")$ precision, $qty(90, "dB")$ signal-to-noise ratio, and $qty(0.014, "ppm per hour")$ drift over a DC to $qty(20, "kHz")$ bandwidth. These specifications, taken together, require that a $qty(20, "V")$ signal range be resolved to $qty(200, "uV")$, that noise remain below $qty(632, "uV") upright("RMS")$, and that accumulated drift not exceed $qty(10, "ppm")$ over thirty days of continuous operation. Achieving this with commodity through-hole components — resistors, capacitors, and op-amps available from any electronics distributor — would appear to be impossible. The tolerances of standard components are measured in percent, not parts per million. The temperature coefficients of common resistors would exhaust the entire drift budget in minutes, not months. Yet it is possible. The gap between component specifications and system requirements is bridged not by exotic parts but by topology: the deliberate arrangement of ordinary components into configurations where their errors cancel, track, or become irrelevant to the computation. A resistor's absolute value may be uncertain to 1%, but its ratio to an adjacent resistor from the same batch, at the same temperature, can be stable to $qty(10, "ppm")$. An amplifier's offset voltage may drift by microvolts per degree, but a servo loop can continuously measure and nullify that drift faster than it accumulates. A multiplier's nonlinearity may be limited by transistor physics to $qty(0.1, "percent")$, but encoding the multiplication in the time domain rather than the amplitude domain sidesteps those physics entirely. These techniques are not novel. They are the accumulated wisdom of precision analog design, developed by metrologists and instrumentation engineers over seven decades. What SAME contributes is their systematic application within constraints that matter for sustainability and sovereignty: through-hole construction that can be assembled and repaired with basic equipment, open documentation that enables understanding rather than mere replication, and component choices that will remain available as specific part numbers inevitably become obsolete. This section proceeds in six parts. + #ref() establishes terminology. Precision analog design has a specialized vocabulary; ambiguous terms lead to ambiguous analysis. We define our terms once, carefully, and use them consistently throughout. + #ref() categorizes the three types of SAME modules — Interface, Compute, and Control — and specifies the requirements particular to each category. Not all modules face identical constraints; a control module generating voltages from a front-panel knob operates under different rules than a compute module performing four-quadrant multiplication. + #ref() develops the error budget framework. We enumerate every source of error in a precision analog signal path, quantify each source using commodity component specifications, and construct the naive error budget that results from conventional design. This budget exceeds our specifications by factors ranging from $11$ to $4000$. The purpose of this exercise is not despair but clarity: we must know precisely where the errors arise before we can systematically eliminate them. + #ref() presents the five fundamental compensation strategies that close the gap between naive and Metrologic performance. Each strategy is developed from physical principles, analyzed mathematically, and specified with design rules sufficient to implement it correctly. + #ref() extends these techniques for applications demanding performance beyond the base Metrologic specification. They can push precision into the 1-5ppm range for specialized applications. These techniques are optional — the base compensation strategies suffice for Metrologic tier — but they demonstrate that the approach has headroom. + #ref() introduces implicit computation, a design philosophy where mathematical operations emerge from feedback equilibrium rather than explicit signal processing. Division, for example, can be implemented explicitly using logarithms (with their associated nonlinearity) or implicitly using a multiplier in a feedback loop (where the loop forces the quotient to whatever value satisfies the multiplication). Implicit designs often achieve superior precision because the feedback loop continuously corrects errors that would accumulate in an explicit signal chain. The reader seeking to understand how the reference implementation in #ref() achieves its specifications, or to design new modules, will find the theoretical foundation here. We make no apology for the depth of what follows. Precision is not achieved by accident or by following recipes without understanding. It is achieved by understanding the physics deeply enough to make the physics work for you rather than against you. == Terminology This section defines the specialized terminology used throughout #ref(). These definitions establish a consistent vocabulary for discussing precision analog circuit design within the SAME ecosystem. Terms are organized into logical categories for ease of reference. Terms defined here may have already appeared in earlier sections but are formally defined here for the Module Design context. === Mathematical symbols This section defines the mathematical symbols and notational conventions used throughout #ref(). Symbols are organized by category: fundamental constants, electrical quantities, circuit parameters, error quantities, and operators. ==== Fundamental constants #figure( table( columns: 4, table.header([Symbol], [Definition], [Value], [Unit]), [$k_B$], [Boltzmann constant], [$1.381 times 10^(-23)$], [$unit("joule per kelvin")$], [$upright(T)$], [Absolute temperature], [N/A], [$unit(K)$], [$upright(e)$], [Elementary charge], [$1.603 times 10^(-19)$], [$unit(C)$], ), caption: [Fundamental constants], ) ==== Electrical quantities #figure( table( columns: 3, table.header([Symbol], [Definition], [Typical unit]), [$upright(V)$], [Voltage (general)], [$unit(V)$], [$upright(I)$], [Current (general)], [$unit(A)$], [$upright(R)$], [Resistance], [$unit("ohm")$], [$upright(C)$], [Capacitance], [$unit(F)$], [$upright(L)$], [Inductance], [$unit(H)$], [$upright(P)$], [Power], [$unit(W)$], [$upright(f)$], [Frequency], [$unit("Hz")$], [$omega$], [Angular frequency ($omega = 2 pi upright(f)$)], [$unit("radian per second")$], [$tau$], [Time constant ($tau = upright("RC") "or" upright("L/R")$)], [$unit(s)$], [$upright("BW")$], [Bandwidth], [$unit("Hz")$], ), ) ==== Voltage and current subscript conventions #figure( table( columns: 3, table.header([Subscript], [Meaning], [Example]), [in], [Input], [$V_"in", I_"in"$], [out], [Output], [$V_"out", I_"out"$], [ref], [Reference], [$V_"ref"$], [pp], [Peak-to-peak], [$V_"pp"$], [rms], [Root-mean-square], [$V_"rms"$], [n, noise], [Noise], [$V_n, upright(e)_n, i_n$], [OS], [Offset], [$V_"OS"$], [leak], [Leakage], [$I_"leak"$], [supply], [Power supply], [$V_"supply"$], [$plus$, $minus$], [Positive / negative input or rail], [$V_plus, V_minus$], [CM], [Common-mode], [$V_"CM"$], [diff], [Differential], [$V_"diff"$], [CR], [Coefficient of resistance], [$V_"CR"$], [CC], [Coefficient of capacitance], [$V_"CC"$], ), caption: [Voltage and current subscript conventions], ) ==== Circuit and component parameters #figure( table( columns: 3, table.header([Symbol], [Definition], [Typical unit]), [$upright(G)$], [Gain (closed-loop)], [dimensionless or $unit("dB")$], [$upright(A)$], [Gain (open-loop)], [dimensionless or $unit("dB")$], [$upright(A)_"OL"$], [Open-loop gain (explicit)], [dimensionless], [$beta$], [Feedback factor], [dimensionless], [$upright(A) beta$], [Loop gain], [dimensionless], [$upright(H)$], [Transfer function], [dimensionless], [$R_f$], [Feedback resistor], [$unit("ohm")$], [$R_"in"$], [Input resistor], [$unit("ohm")$], [$Z_"in"$], [Input impedance], [$unit("ohm")$], [$Z_"out"$], [Output impedance], [$unit("ohm")$], [$upright("GBW")$], [Gain-bandwidth product], [$unit("Hz")$], [$upright("SR")$], [Slew rate], [$unit("volt per micro second")$], [$upright("CMRR")$], [Common-mode rejection ration], [$unit("dB")$], [$upright("PSRR")$], [Power supply rejection ratio], [$unit("dB")$], [$upright("TC")$], [Temperature coefficient], [$unit("ppm per celsius")$], [$V_"CR"$], [Voltage coefficient of resistance], [$unit("ppm per volt")$], [$V_"CC"$], [Voltage coefficient of capacitance], [$unit("ppm per volt")$], [$upright("DA")$], [Dielectric absorption], [$unit("percent")$], [$S$], [Seebeck coefficient], [$unit("micro volt per celsius")$], [$theta$], [Thermal resistance], [$unit("celsius per watt")$], ), caption: [Circuit and component parameters], ) ==== Error and precision quantities #figure( table( columns: 3, table.header([Symbol], [Definition], [Typical unit]), [$epsilon$], [Error (general)], [$unit("ppm")$ or $unit("uV")$], [$epsilon_"max"$], [Maximum allowable error], [$unit("ppm")$ or $unit("uV")$], [$epsilon_"total"$], [Total combined error], [$unit("ppm")$ or $unit("uV")$], [$epsilon_"systematic"$], [Systematic error component], [$unit("ppm")$], [$epsilon_"random"$], [Random error component], [$unit("uV") upright("RMS")$], [$epsilon_"offset"$], [Offset error], [$unit("uV")$], [$epsilon_"gain"$], [Gain error], [$unit("ppm")$], [$epsilon_"ratio"$], [Ratio error for matched components], [$unit("ppm")$], [$epsilon_"thermal"$], [Thermally-induced error], [$unit("ppm")$], [$dv(epsilon, t)$], [Drift rate], [$unit("ppm per hour")$], [$S_y^p$], [Sensitivity of $y$ to parameter $p$], [dimensionless], [$upright("SNR")$], [Signal-to-noise ratio], [$unit("dB")$], [$upright("RTI")$], [Referred-to-input], [$unit("uV")$], [$upright("RTO")$], [Referred-to-output], [$unit("uV")$], [$upright("FS")$], [Full scale], [$unit("V")$], ), caption: [Error and precision quantities], ) ==== Noise quantities #figure( table( columns: 3, table.header([Symbol], [Definition], [Typical unit]), [$upright(e)_n$], [Voltage noise spectral density], [$unit("nV")/sqrt(unit("Hz"))$], [$upright(i)_n$], [Current noise spectral density], [$unit("pA")/sqrt(unit("Hz"))$ or $unit("fA")/sqrt(unit("Hz"))$], [$upright(e)_(n,"white")$], [White noise component], [$unit("nV")/sqrt(unit("Hz"))$], [$upright(e)_(n,1/upright(f))$], [$1/upright(f)$ noise component], [$unit("nV")/sqrt(unit("Hz"))$ at $qty(1, "Hz")$], [$upright(f)_c$], [Noise corner frequency ($1/upright(f)$ to white)], [$unit("Hz")$], [$upright(V)_n$], [Total noise voltage], [$unit("V") upright("RMS")$], [$upright("CNI")$], [Current noise index (potentiometers)], [$unit("dB")$], ), caption: [Noise quantities], ) ==== Time domain and modulation quantities #figure( table( columns: 3, table.header([Symbol], [Definition], [Typical unit]), [$upright(D)$], [Duty cycle], [$unit("percent")$ or dimensionless], [$upright(f)_"carrier"$], [Carrier frequency], [$unit("Hz")$], [$upright(f)_0$], [Resonant or center frequency], [$unit("Hz")$], [$phi$], [Phase], [$unit("radian")$ or $unit("degree")$], [$Delta phi$], [Phase error or shift], [$unit("radian")$ or $unit("degree")$], [$upright(t)_"settle"$], [Settling time], [$unit("s")$], [$upright(t)_h$], [Timing jitter], [$unit("ps")$ or $unit("ns")$], ), caption: [Time domain and modulation quantities], ) ==== Thermal quantities #figure( table( columns: 3, table.header([Symbol], [Definition], [Typical unit]), [$upright(T)$], [Temperature (absolute)], [$unit("K")$], [$delta upright(T)$], [Temperature difference], [$unit("celsius")$ or $unit("K")$], [$(Delta upright(T))/(upright(d) y)$], [Vertical temperature gradient], [$unit("celsius per centimeter")$], [$theta_"conv"$], [Convective thermal resistance], [$unit("celsius per watt")$], [$theta_"cond"$], [Conductive thermal resistance], [$unit("celsius per watt")$], [$accent(Q, dot)$], [Heat flux], [$unit("W")$], [$accent(upright(m), dot)$], [Mass flow rate], [$unit("kilo gram per second")$], [$upright(c)_p$], [Specific heat capacity], [$unit("J")/(unit("kg") unit("K"))$], ), caption: [Thermal quantities], ) ==== Mathematical operators and functions #figure( table( columns: 2, table.header([Notation], [Meaning]), [$sum$], [Summation], [$product$], [Product], [$sqrt("")$], [Square root], [$dvp(y, x)$], [Partial derivative of $y$ with respect to $x$], [$dv(y, x)$], [Total derivative of $y$ with respect to $x$], [$integral$], [Integral], [$log_10$], [Common logarithm (base $10$)], [$ln$], [Natural logarithm (base $e$)], [$exp$], [Exponential function], [$abs(x)$], [Absolute value of $x$], [$x mod y$], [Modulo operation (remainder of $x$ divided by $y$)], [$in$], [Element of a set], [$upright("RSS")$], [Root-sum-square: $sqrt(x_1^2 + x_2^2 + ... + x_n^2)$], ), caption: [Mathematical operators and functions], ) ==== Unit prefixes Standard SI prefixes are used throughout: #figure( table( columns: 3, table.header([Prefix], [Symbol], [Factor]), [tera], [$upright(T)$], [$10^12$], [giga], [$upright(G)$], [$10^9$], [mega], [$upright(M)$], [$10^6$], [kilo], [$upright(k)$], [$10^3$], [], [], [$10^0$], [milli], [$upright(m)$], [$10^(-3)$], [micro], [$upright(mu)$], [$10^(-6)$], [nano], [$upright(n)$], [$10^(-9)$], [pico], [$upright(p)$], [$10^(-12)$], [femto], [$upright(f)$], [$10^(-15)$], ), caption: [Unit prefixes], ) ==== Special notation conventions / Parts per million ($unit("ppm")$): Dimensionless ratio equal to $10^(-6)$. Used for expressing small fractional errors. / Example: $qty(10, "ppm") "of" qty(20, "V") = qty(200, "uV")$. / Parts per billion ($unit("ppb")$): Dimensionless ratio equal to $10^(-9)$. Used for expressing frequency stability of precision oscillators. / Decibels ($unit("dB")$): Logarithmic ratio. / For voltage or amplitude ratios: $unit("dB") = 20 log_10(upright(V)_1/upright(V)_2)$. / For power ratios: $unit("dB") = 10 log_10(upright(P)_1/upright(P)_2)$. / $unit("dBc")/unit("Hz")$: Phase noise specification. Power spectral density of phase fluctuations relative to carrier power, per hertz of bandwidth. / Subscript conventions for matched pairs: When two components are matched, subscripts 1 and 2 (or A and B) denote individual components, while the ratio $upright(R)_1/upright(R)_2$ denotes the matched ratio whose tolerance is tighter than either individual tolerance. / Temperature in calculations: Noise calculations use absolute temperature (Kelvin). Temperature coefficients use Celsius ($unit("celsius")$), since only temperature differences matter and $Delta upright(T)$ in Kelvin equals $Delta upright(T)$ in Celsius. / Frequency-domain notation: Transfer functions are expressed in the Laplace domain with the complex frequency variable $s = sigma + j omega$, where $j = sqrt(−1)$. For sinusoidal steady-state analysis, $s = j omega$. === Error and precision terminology / Error: Any deviation of an actual output from its ideal mathematical value. Errors are classified by their time dependence (static vs. drift), signal dependence (offset, gain, nonlinearity), and statistical character (systematic vs. random). / Systematic Error: A deterministic deviation that could, in principle, be predicted and corrected if all influence quantities were known. Systematic errors contribute to the precision budget. Examples include resistor temperature coefficients and op-amp offset voltage. / Random Error: A fundamentally unpredictable deviation arising from thermal agitation, quantum fluctuations, or chaotic dynamics. Random errors contribute to the noise budget. Examples include thermal noise and shot noise. / Offset Error: A constant additive error independent of signal amplitude. An offset error adds a fixed voltage to the output regardless of input level. / Gain Error: An error proportional to signal amplitude. A gain error multiplies the output by a factor deviating from the ideal unity or specified gain. / Nonlinearity Error: An error that depends on signal amplitude in a complex, non-proportional way. Nonlinearity errors introduce harmonic distortion and intermodulation products. / Static Error: An error that is constant over the timescale of a measurement or computation. Static errors can be calibrated out at a single point in time. / Drift: A time-varying systematic error that changes either deterministically (as with temperature-driven parameter changes) or stochastically (as with flicker noise). Drift errors require continuous compensation or periodic recalibration. / Drift Rate: The rate at which a parameter changes over time, typically specified in $unit("ppm per hour")$. The SAME Metrologic tier specifies a maximum drift rate of $qty(0.014, "ppm per hour")$. / Precision: A measure of how closely repeated measurements or computations agree with each other, expressed as the maximum acceptable deviation from the ideal value. The SAME Metrologic tier specifies $qty(10, "ppm")$ ($qty(0.001, "percent")$) precision. / Accuracy: A measure of how closely a measurement or computation agrees with the true value. In SAME, accuracy is defined relative to the $plus.minus qty(10.0000, "V")$ system reference. / Signal-to-Noise Ratio ($upright("SNR")$): The ratio of signal power to noise power, typically expressed in decibels. The SAME Metrologic tier specifies $qty(90, "dB") upright("SNR")$, corresponding to approximately $qty(632, "uV") upright("RMS")$ noise referred to the $qty(20, "Vpp")$ signal range. / Referred-to-Input ($upright("RTI")$): An error specification expressed as an equivalent error at the circuit input. $upright("RTI")$ allows comparison of errors across stages with different gains. / Referred-to-Output ($upright("RTO")$): An error specification expressed at the circuit output. $upright("RTO")$ is the natural choice for specifications that must be met at the output. / Noise Gain: The gain seen by error sources at the amplifier input, which differs from signal gain in inverting configurations. For an inverting amplifier with feedback resistor $upright(R)_upright(f)$ and input resistor $upright(R)_"in"$, noise gain equals $1 + upright(R)_upright(f)/upright(R)_"in"$. / Error Budget: A systematic accounting of all error sources and their contributions to total system error. Errors are typically combined by root-sum-square ($upright("RSS")$) for independent sources or algebraic sum for correlated sources. === Component terminology / Temperature Coefficient (Tempco): The rate at which a component parameter changes with temperature, typically specified in $unit("ppm per celsius")$. Lower tempco indicates greater temperature stability. / Voltage Coefficient of Resistance ($upright(V)_"CR"$): The rate at which resistance changes with applied voltage, specified in $unit("ppm")/unit("V")$ or $unit("ppm")/unit("V")_2$. $upright(V)_"CR"$ creates nonlinearity in circuits with signal-dependent voltage across resistors. / Voltage Coefficient of Capacitance ($upright(V)_"CC"$): The rate at which capacitance changes with applied voltage. Class 2 ceramic capacitors (X7R, X5R) can exhibit $upright(V)_"CC"$ of $qtyrange(-30, -80, "percent", delimiter: "\"to\"")$ at rated voltage, making them unsuitable for signal paths. / Dielectric Absorption ($upright("DA")$): A memory effect in capacitors where rapid charge/discharge cycles leave residual polarization that manifests as unpredictable voltage contributions. Film capacitors (polypropylene, polystyrene) have $upright("DA")$ below $qty(0.05, "percent")$. / Seebeck Effect: The thermoelectric effect where a temperature difference across a junction of dissimilar metals produces a voltage. Seebeck voltages at solder joints can contribute significant offset errors if thermal gradients exist. / Seebeck Coefficient: The voltage generated per degree of temperature difference at a thermocouple junction, specified in $unit("micro volt per celsius")$. Copper-to-Kovar junctions have coefficients around $qty(40, "micro volt per celsius")$. / Matched Components: Components fabricated together on a common substrate or selected to have closely tracking parameter values. Matching reduces ratio errors even when absolute tolerances are significant. / Ratio Tolerance: The tolerance on the ratio of two matched component values, which is typically much tighter than individual absolute tolerances. Thin-film resistor networks achieve ratio tolerances of $qty(0.01, "percent")$ ($qty(100, "ppm")$) or better. / Tracking Temperature Coefficient: The difference in temperature coefficients between matched components. Well-matched components have tracking tempcos below $qty(2, "ppm per celsius")$ even when individual tempcos are $qty(25, "ppm per celsius")$. === Amplifier and circuit terminology / Input Offset Voltage ($upright(V)_"OS"$): The DC voltage that must be applied between an op-amp's inputs to force the output to zero. $upright(V)_"OS"$ appears as an error at the input that is multiplied by the noise gain. / Input Bias Current ($upright(I)_upright(B)$): The DC current flowing into or out of an op-amp's input terminals required to bias the input stage. Bias current through source impedances creates voltage errors. / Input Offset Current ($upright(I)_"OS"$): The difference between the bias currents at an op-amp's two input terminals. Balancing source impedances can reduce bias current error to offset current error. / Common-Mode Rejection Ratio ($upright("CMRR")$): The ratio of differential gain to common-mode gain, expressing an amplifier's ability to reject signals that appear equally on both inputs. High $upright("CMRR")$ ($gt qty(120, "dB")$) is essential for precision differential measurements. / Power Supply Rejection Ratio ($upright("PSRR")$): The ratio of differential gain to power supply gain, expressing an amplifier's immunity to supply voltage variations. $upright("PSRR")$ degrades with frequency, making high-frequency supply noise more problematic. / Open-Loop Gain ($upright(A)_"OL"$): The gain of an amplifier without feedback, typically $106$ to $108$ ($qtyrange(120, 160, "dB")$) for precision op-amps. Finite open-loop gain creates closed-loop gain error proportional to $upright(G)_"ideal"/upright(A)_"OL"$. / Gain-Bandwidth Product ($upright("GBW")$): The product of an op-amp's DC open-loop gain and the frequency at which open-loop gain falls to unity. For a single-pole op-amp, $upright("GBW")$ is constant and determines gain error at frequency. / Slew Rate: The maximum rate of change of an op-amp's output voltage, typically specified in $unit("volt per micro second")$. Insufficient slew rate causes distortion for large, fast signals. / Settling Time: The time required for an amplifier output to settle within a specified error band after a step input. Settling to $qty(10, "ppm")$ typically requires $10$-$20$ time constants. / Chopper Stabilization: A technique that eliminates low-frequency errors by periodically reversing signal polarity and correcting for the resulting offset. Chopper-stabilized amplifiers achieve offset drifts below $qty(0.05, "micro volt per celsius")$. / Loop Gain: The product of forward gain $upright(A)$ and feedback factor $beta$ in a feedback system. Loop gain determines error suppression: errors in the forward path are divided by $(1 + upright(A) beta)$. === Computation terminology / Ratiometric Design: A design methodology where computations depend on component ratios rather than absolute values. Ratiometric designs achieve precision far exceeding individual component tolerances. / Implicit Computation: A design methodology where results emerge from the equilibrium condition of a feedback system rather than from explicit calculation. Implicit computation exploits high loop gain to achieve precision exceeding that of explicit approaches. / Explicit Computation: A design methodology where results are calculated by applying known operations sequentially. Errors accumulate through the computation chain. / Summing Divider: An implicit computation topology that computes the ratio of two current sums, implementing division through feedback equilibrium rather than explicit divider circuitry. / Virtual Ground: A circuit node maintained at ground potential by op-amp feedback, despite signal currents flowing through it. The accuracy of a virtual ground depends on the op-amp's open-loop gain. / Summing Junction: The node at an op-amp's inverting input in a summing amplifier configuration, where input currents sum to zero (Kirchhoff's current law). Also called a summing node. === Time-domain and modulation terminology / Pulse-Width Amplitude Modulation (PWAM): A modulation technique where one multiplicand is encoded as the duty cycle of a pulse train, enabling multiplication through time-domain encoding rather than amplitude-domain multiplication. / Duty Cycle: The fraction of a period during which a pulse signal is high. In PWAM, the duty cycle encodes signal amplitude: $qty(50, "percent")$ corresponds to zero, $qty(0, "percent")$ to $minus upright(V)_"ref"$, and $qty(100, "percent")$ to $plus upright(V)_"ref"$. / Carrier Frequency: The frequency of the triangle wave or pulse train used in PWAM modulation. The SAME specification uses a $qty(500, "kHz")$ carrier derived from the $qty(10, "MHz")$ Master Oscillator. / Master Oscillator: The system-wide $qty(10, "MHz")$ sine wave reference distributed to all modules for time-domain computations. The Master Oscillator provides frequency stability of $plus.minus qty(10, "ppb")$ using an oven-controlled crystal oscillator (OCXO). / Stagger: The phase offset applied to PWAM carriers in adjacent modules to prevent intermodulation between neighboring switching frequencies. The Stagger rail indicates whether a module should operate at $qty(0, "degree")$ or $qty(90, "degree")$ phase relative to the Master Oscillator. / Phase Noise: Random fluctuations in the phase of an oscillator signal, which manifest as timing jitter. Low phase noise ($lt.eq qty(-140, "dBc per hertz")$ at $qty(1, "kHz")$ offset) is essential for high-precision PWAM. / Jitter: Random variations in the timing of signal transitions. Clock jitter converts directly to amplitude noise in PWAM systems. === Thermal terminology / Isothermal: Having uniform temperature throughout. Isothermal layout places matched components along lines of constant temperature to ensure identical thermal environments. / Thermal Gradient: The spatial rate of change of temperature across a surface or volume, typically expressed in $unit("celsius per centimeter")$. Thermal gradients cause matched components to experience different temperatures, degrading their matching. / Ovenization: The practice of enclosing a critical component (typically a voltage reference) in a temperature-controlled enclosure maintained above maximum ambient temperature. / Thermal Time Constant: The time required for a thermal system to reach approximately $qty(63, "percent")$ of its final temperature after a step change in power or ambient temperature. / Thermal Tail: The slow settling of circuit parameters after a thermal transient, caused by the multiple thermal time constants in a system (die, package, PCB, enclosure). / Self-Heating: The temperature rise in a component caused by power dissipation within the component itself. Self-heating creates signal-dependent temperature changes that manifest as nonlinearity. / Thermal Coupling: The degree to which temperature changes in one component affect another. Strong thermal coupling between matched components improves their tracking. === Servo and feedback terminology / DC Servo Loop: A slow feedback system that continuously measures and corrects DC errors (offset, drift) without affecting signal-band performance. Servo loops achieve DC precision far exceeding component capabilities. / Servo Crossover Frequency: The frequency at which a servo loop's correction magnitude equals the uncompensated error magnitude. Below crossover, the servo provides increasing error suppression. / Integrator Servo: A servo loop topology that uses an integrator to provide theoretically infinite DC gain, completely eliminating DC errors at equilibrium. / Phase Margin: The additional phase shift at the unity-gain frequency that would cause instability. Adequate phase margin ($gt qty(45, "degree")$) ensures stable operation without excessive ringing. / Gain Margin: The factor by which loop gain could increase before causing instability. Adequate gain margin ($gt qty(10, "dB")$) ensures robust operation across component variations. === Noise and interference terminology / Thermal Noise (Johnson-Nyquist Noise): Voltage fluctuations arising from the thermal agitation of charge carriers in any resistive element. Thermal noise power is proportional to temperature, resistance, and bandwidth. / Flicker Noise ($1/upright(f)$ Noise): Noise whose power spectral density is inversely proportional to frequency. Flicker noise dominates at low frequencies and is particularly significant in DC-coupled precision circuits. / Shot Noise: Noise arising from the discrete nature of electric charge, significant in circuits with DC current flow through semiconductor junctions. / Crosstalk: Unintended coupling of signals between channels or circuits through capacitive, inductive, or conductive mechanisms. / Ground Loop: A condition where multiple ground connections create a current path that can couple interference into the signal path. / Guard Ring: A conductive trace surrounding a high-impedance node, driven at the same potential as the node to eliminate leakage currents and reduce capacitive coupling. / RF Filtering: Attenuation of radio-frequency interference before it reaches sensitive circuit nodes. RF filtering prevents rectification of RF signals at semiconductor junctions. / Shielding Effectiveness: The attenuation of electromagnetic fields provided by a conductive enclosure, typically specified in $unit("dB")$. The SAME cassette provides $gt qty(20, "dB")$ shielding from $qtyrange(80, 1000, "MHz", delimiter: "\"to\"")$. === Module category terminology / Compute Module: A SAME module that performs mathematical operations on input signals. Compute modules include summers, multipliers, integrators, differentiators, and function generators. / Interface Module: A SAME module that converts signals between the SAME format and external formats (BNC, AES59, RF, etc.). Interface modules handle level shifting, impedance matching, and isolation. / Control Module: A SAME module that generates or manipulates control voltages without performing computation. Control modules include precision constant generators, potentiometers, and joysticks. === Precision tier terminology / Educational Tier: The entry-level SAME precision tier, targeting $qty(1000, "ppm")$ ($qty(0.1, "percent")$) precision and $qty(70, "dB") upright("SNR")$. Suitable for teaching circuit topologies and general analog computing concepts. / Industrial Tier: The intermediate SAME precision tier, targeting $qty(100, "ppm")$ ($qty(0.01, "percent")$) precision and $qty(80, "dB") upright("SNR")$. Suitable for research, experimentation, and applications requiring repeatable results. / Metrologic Tier: The highest SAME precision tier, targeting $qty(10, "ppm")$ ($qty(0.001, "percent")$) precision and $qty(90, "dB") upright("SNR")$. Suitable for precision measurement, long-duration computation, and traceable accuracy. / Bill of Materials (BOM): The list of components required to build a module. SAME modules provide three BOMs (Educational, Industrial, Metrologic) that share a common PCB design but use components of different precision grades. / Drift-Free Computation Period: The maximum duration over which computation remains within precision specification without recalibration. The Metrologic tier specifies 30 days of drift-free operation. === Manufacturing and assembly terminology / Burn-In: A period of powered operation (typically $qtyrange(168, 1000, "hour")$) that accelerates initial component stabilization before final calibration. / Surface Insulation Resistance ($upright("SIR")$): The resistance between adjacent conductors on a PCB surface, affected by flux residue, contamination, and humidity. $upright("SIR")$ above $qty(10, "giga ohm")$ is required for Metrologic tier. / Conformal Coating: A thin protective polymer layer applied to PCBs after assembly to protect against moisture, contamination, and surface leakage. / ESD (Electrostatic Discharge): The sudden flow of electricity between objects at different potentials. ESD can cause immediate failure or latent damage to sensitive semiconductor devices. / Kelvin Connection (Four-Wire Sensing): A measurement technique that uses separate force and sense conductors to eliminate voltage errors from lead and contact resistance. The SAME $plus.minus qty(10.0000, "V")$ reference uses Kelvin connections. == Module categories SAME modules are classified into three categories based on their primary function within the system: Interface Modules, Compute Modules, and Control Modules. Each category has distinct requirements and constraints that reflect its role in maintaining system precision and usability. All SAME modules share a common mechanical format: the single-width cassette of $qty(38.0, "mm")$ ($qty(1.5, "inch")$) as specified in #ref() Dual-width or multi-width modules are not permitted. This constraint ensures uniform thermal behavior across the system, predictable rack utilization, and simplified inventory management. If a function cannot be implemented within the single-width format, the design must either be decomposed into multiple cooperating modules or employ external enclosures connected via interface modules. === Interface modules Interface modules provide bidirectional signal conversion between the SAME ecosystem and external formats. Their purpose is to bridge SAME's precision analog domain with the outside world — whether that world uses different connector standards, different voltage ranges, or fundamentally different signal representations. ==== Precision constraints The precision of an interface module is bounded by the least precise format involved in the conversion. An interface module converting between SAME and a format with inherently lower precision cannot claim to preserve SAME's Metrologic tier specifications for signals crossing that boundary. For example, a module converting SAME signals to consumer line-level audio (nominally $plus.minus qty(1, "V")$, with typical THD+N specifications of $qtyrange(0.001, 0.01, "percent", delimiter: "\"to\"")$) cannot deliver $qty(10, "ppm")$ precision on the audio side regardless of the quality of the conversion circuitry. The interface module documentation must clearly state the precision limitations imposed by the external format. Conversely, when an interface module receives signals from a lower-precision external source, it must condition those signals to meet SAME's impedance and protection requirements, but the precision of the incoming data remains limited by its source. ==== Digital logic constraints Interface modules may incorporate digital logic if, and only if, the external format requires it. Examples include: - MADI interfaces that would require clock recovery and digital-to-analog conversion. - RF demodulators that would require digital signal processing for carrier extraction. - Protocol converters for digital communication standards. When digital logic is present, it must be completely isolated from the analog signal path. The module must ensure: + No measurable ripple from digital switching reaches the analog outputs. Digital supply noise must be attenuated to below the system noise floor ($qty(632, "uV") upright("RMS")$ for $qty(90, "dB") upright("SNR")$). + No RF emissions escape the cassette. The module must meet the EMI shielding requirements specified in #ref(), with particular attention to the higher-frequency harmonics generated by digital clocks. + Digital ground (DGND) and analog ground (AGND) remain strictly separated per #ref(), with any necessary coupling occurring only at a single, well-defined point within the module. An interface module containing digital logic that fails to meet these isolation requirements is non-compliant, regardless of the precision achieved in bench testing. The shielding and isolation must be robust against component aging and thermal variation over the module's service life. ==== Input/output requirements Interface modules necessarily deviate from the standard SAME I/O format on their external-facing side. The external connector type is determined by the format being interfaced (BNC, XLR, DB-25, optical, etc.). However, the SAME-facing side of an interface module must use standard 4mm banana jacks conforming to #ref(). Interface modules must provide clear panel markings indicating which jacks connect to the SAME domain and which connect to the external format. Color coding should follow SAME conventions on the internal side and the conventions of the external format (if any) on the external side. === Compute modules Compute modules form the mathematical core of the SAME system. They perform precisely defined operations on input signals and produce output signals representing the results. The requirements for compute modules are the most stringent of the three categories, as they must maintain the precision specifications that enable meaningful analog computation. ==== Interface requirements Compute modules must use exclusively 4mm banana jacks for all signal input and output. No physical controls (potentiometers, switches, or other manual adjustment mechanisms) are permitted on compute modules. This constraint exists for two reasons: / Precision: Physical controls introduce mechanical variability, contact resistance drift, and temperature-dependent behavior that compromise repeatability. A computation that depends on a front-panel potentiometer position cannot be precisely documented or reproduced. / Documentation: The complete mathematical behavior of a compute module must be determinable from its panel labeling and the patch connections. External control voltages provide the same functionality as physical controls while remaining within the documented signal flow. If adjustable parameters are required for a computation, they must be provided via control voltage inputs, which can be sourced from Control Modules or from other points in the patch. This makes all parameters explicit in the patch documentation. ==== Functional specification Each compute module must implement exactly one mathematical function. This function may be piecewise-defined (as with absolute value, min/max, or the Chua function), but it must be expressible as a single mathematical relationship between inputs and outputs. The implemented function must be written on the front panel using standard mathematical notation. The notation must be sufficiently complete that a user unfamiliar with the specific module can determine the input-output relationship. For example: - A summer might display: $z = sum_i x_i$ - A multiplier might display: $z = (x y)/qty(10, "V")$ - A bounded integrator might display: $z = integral x upright(d) t; z_e in [qty(-10, "V"), plus qty(10, "V")]$ Complex functions requiring extensive notation may use a symbolic abbreviation on the panel with full documentation in the module manual, but the abbreviation must be unambiguous and the manual must be readily accessible. ==== Error handling Compute modules must expose error conditions via dedicated error gate outputs. Two categories of errors must be distinguished: + Out-of-domain errors occur when an input signal falls outside the mathematical domain of the implemented function. Examples include negative inputs to a square root function, zero divisors, or inputs exceeding the valid range for a logarithm. The module must implement one of the handling strategies defined in #ref() and document which strategy is used. + Internal errors occur when the module's circuitry cannot maintain its precision specification despite valid inputs. Examples include servo unlock conditions, soft saturation in PWAM modulators, or clipping due to internal headroom limitations. Out-of-domain errors and internal errors must never be aggregated onto a single error gate. A user must be able to distinguish between "my input is mathematically invalid" and "the module is operating outside its designed regime." For multichannel modules, each channel should have independent error gates where panel space permits. If space constraints require aggregation, errors from different channels may be combined (with documentation), but the out-of-domain/internal distinction must be preserved per channel. ==== Channel independence Compute modules with multiple channels (e.g., "Quad Logarithm" or "Dual Integrator") must ensure that all channels are functionally identical and operationally independent. Specifically: / Identical transfer function: Every channel must implement the same mathematical function with the same precision specifications. Component tolerances may cause small channel-to-channel variations, but these must fall within the module's stated precision tier. / No crosstalk: Signals on one channel must not measurably affect signals on other channels. Crosstalk isolation must exceed the module's $upright("SNR")$ specification by at least $qty(10, "dB")$. / Independent error states: An out-of-domain error condition on one channel must not affect the operation or error state of other channels. An internal error should not. Channel independence allows users to treat multichannel modules as equivalent to multiple single-channel modules for purposes of patch design and error analysis. The only shared resources are power supply and mechanical housing. === Control modules Control modules provide human interface to the SAME system. They generate control voltages through physical manipulation (knobs, faders, joysticks) or through preset configurations (precision constant generators, switch banks). Unlike compute modules, they are explicitly permitted to include mechanical controls. ==== Precision requirements Control modules may operate at reduced precision compared to compute modules. The nature of human control inherently limits repeatability — a performer cannot reliably position a knob to $qty(10, "ppm")$ accuracy. However, the precision that is achieved must be predictable and documented. A control module must specify: + The resolution of its output (e.g., "10-bit effective resolution" or "$qty(0.1, "percent")$ setting accuracy"). + The repeatability of its output (e.g., "returns to within $qty(0.5, "percent")$ of a marked position"). + The drift characteristics of its output under stable input conditions. Predictability matters more than absolute precision for control modules. A fader that consistently outputs $qty(4.973, "V")$ at its marked "$qty(5, "V")$" position is more useful than one that outputs values uniformly distributed between $qty(4.95, "V")$ and $qty(5.05, "V")$. Users can compensate for consistent offsets; they cannot compensate for randomness. ==== External control enclosures Some control interfaces cannot be implemented within the $qty(38.0, "mm")$ single-width cassette format. Examples include: - Large mixing-console-style faders requiring panel heights exceeding $qty(4, "U")$. - Multi-axis joysticks that would require depth beyond the cassette dimensions. - Touch surfaces or other extended interface devices. In such cases, the control function may be implemented in an external enclosure. The SAME module then serves as an interface between the external controller and the SAME system. The connection between the external enclosure and the module must use appropriate cabling and connectors for the signal type (typically shielded cable with robust connectors). The external enclosure is not required to conform to SAME mechanical specifications, but the interface module connecting it to the system must conform to all applicable SAME requirements. The external enclosure should be designed for durability and serviceability consistent with SAME's sustainability goals. Documentation for control modules with external enclosures must clearly specify which components are housed in the cassette and which are external, along with the interconnection requirements. ==== Input/output requirements Control modules use $qty(4, "mm")$ banana jacks for their outputs, conforming to #ref(). Since control modules generate rather than process signals, they typically have few or no signal inputs. Control modules may incorporate indicator elements (LEDs, meters, numeric displays) to provide feedback on their output state. Such indicators must not compromise the EMI shielding of the cassette or introduce noise into the analog outputs. Controllers may be motorized, in which case the motor action must not compromise the EMI shielding of the cassette, introduce vibrations in the chassis or introduce noise into the analog outputs. === On visualization SAME does not define a visualization module category, nor will it. Oscilloscopes, spectrum analyzers, X-Y displays, meters, and other measurement or visualization equipment are explicitly outside the scope of this specification. This is a deliberate architectural decision, not an omission. Visualization is the domain of interface modules. A SAME system requiring signal visualization should use an appropriate interface module (such as Banana to BNC) to route signals to external test equipment. This approach offers several advantages: / Measurement quality: A dedicated oscilloscope or digitizer represents decades of engineering focused solely on signal acquisition. No module constrained to a $qty(38.0, "mm")$ width and limited power budget can match the bandwidth, resolution, or triggering capabilities of purpose-built instrumentation. / Flexibility: Users can select visualization equipment appropriate to their needs and budget — from a basic multimeter to a high-resolution digitizing oscilloscope to a spectrum analyzer. The SAME system does not impose a particular visualization paradigm. / Sustainability: Test equipment has its own maintenance and calibration lifecycle. Separating visualization from computation means that neither depends on the other for continued operation. A failed display does not render a compute module unusable; an upgraded oscilloscope does not require replacing SAME modules. / Avoiding false precision: An integrated display might suggest a level of measurement authority the module cannot support. By requiring external instrumentation, users must consciously consider the accuracy of their measurement chain. Any SAME module — regardless of category — may include LEDs as visual indicators, typically to reflect gate states or signal presence. These are not visualizations; they are eye candy. An LED illuminating when an error gate fires provides immediate feedback useful during patching and debugging, but it communicates only a binary state. It is not a substitute for connecting that gate signal to a proper measurement instrument when quantitative analysis is required. Other examples of acceptable eye candy include quadrant indicators on a four-quadrant multiplier, showing which quadrant the computation currently occupies. Interface modules are the exception: they may require LEDs for channel activity or protocol state indication that is not tied to a gate signal. Such indicators are part of the interface function itself — for example, showing link status on a digital audio interface or carrier lock on an RF demodulator. This remains distinct from visualization; the LEDs indicate operational state, not signal content. == Error budgeting and system-level compensation == Error compensation strategies == Advanced compensation topologies == Implicit computation