From adeb7112677abbccedb7a3baf2a11a6b3fdf89e7 Mon Sep 17 00:00:00 2001 From: Denis Chevalier Date: Tue, 11 Aug 2026 11:29:02 +0200 Subject: add missing file --- charts/ratio-stability-principle.typ | 78 ++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 charts/ratio-stability-principle.typ (limited to 'charts/ratio-stability-principle.typ') diff --git a/charts/ratio-stability-principle.typ b/charts/ratio-stability-principle.typ new file mode 100644 index 0000000..28e334c --- /dev/null +++ b/charts/ratio-stability-principle.typ @@ -0,0 +1,78 @@ +// SAME Analog Modular Ecosystem +// +// / SPDX-FileCopyrightText: 2026 Denis Chevalier +// / SPDX-License-Identifier: CC-BY-SA-4.0 +// / SPDX-License-Identifier: CERN-OHL-S-2.0+ +// / SPDX-License-Identifier: GPL-3.0-or-later +// +// The prose, explanatory text, rendered figures, tables, and mathematical +// content of this specification are licensed under CC BY-SA 4.0. If a later +// version of CC BY-SA is published, the author grants permission to distribute +// this work under that later version as well. +// +// Hardware designs contained herein (schematics, PCB layouts, mechanical +// drawings, and CAD models) are licensed under CERN-OHL-S-2.0+. +// +// All executable code, helper libraries (`lib/*`), metrology assertions, and +// embedded verification scripts throughout the source documents are licensed +// under the GNU General Public License v3.0 or later (GPL-3.0-or-later). + +#import "../lib/unify.typ": qty, unit +#import "@preview/cetz:0.5.2" +#import "@preview/cetz-plot:0.1.4": plot + +#figure( + cetz.canvas({ + import cetz.draw: * + + plot.plot( + size: (12, 6), + x-label: [Temperature variation $Delta T$ ($unit("celsius")$)], + y-label: [Ratio / gain drift $Delta G / G_0$ ($unit("ppm")$)], + x-min: 0, + x-max: 10, + y-min: 0, + y-max: 100, + x-grid: "minor", + y-grid: "minor", + { + // 10 ppm Metrologic Error Budget Limit + plot.add( + ((0, 10), (10, 10)), + style: ( + stroke: (paint: luma(120), thickness: 0.8pt, dash: "dash-dotted"), + ), + label: [Metrologic budget limit], + ) + + // Unmatched Discrete Resistors (Delta alpha = 50 ppm/°C) + plot.add( + domain: (0, 10), + samples: 1000, + style: (stroke: (paint: black, thickness: 1.5pt, dash: "solid")), + label: [Unmatched discrete], + t => 50 * t, + ) + + // Matched Discrete Pair (Delta alpha = 1 ppm/°C) + plot.add( + domain: (0, 10), + samples: 1000, + style: (stroke: (paint: black, thickness: 1.5pt, dash: "dashed")), + label: [Matched discrete pair], + t => 1 * t, + ) + + // Monolithic Thin-Film Network (Delta alpha = 0.1 ppm/°C) + plot.add( + domain: (0, 10), + samples: 1000, + style: (stroke: (paint: black, thickness: 1.5pt, dash: "dotted")), + label: [Monolithic thin-film], + t => 0.1 * t, + ) + }, + ) + }), + caption: [Gain drift $Delta G / G_0$ as a function of ambient temperature variation $Delta T$, comparing unmatched discrete resistors, matched discrete pairs, and monolithic thin-film networks against the $qty(10, "ppm")$ Metrologic systematic error budget], +) -- cgit