#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-mode: "log", y-mode: "linear", x-label: [Frequency $f$ ($unit("Hz")$)], y-label: [$upright("PSRR")(f)$ ($unit("dB")$)], x-min: 1, x-max: 1000000, y-min: 0, y-max: 140, x-grid: "minor", y-grid: "minor", { // 500 kHz PWAM Carrier vertical reference line plot.add( ((500000, 0), (500000, 140)), style: (stroke: (paint: luma(120), thickness: 0.8pt, dash: "dashed")), label: none, ) // General purpose (TL07x): PSRR_DC = 100 dB, fp1 = 1 kHz, fp2 = 100 kHz plot.add( style: (stroke: (dash: "solid")), label: [TL07x], domain: (1, 1000000), samples: 8000, f => ( 100 - 10 * calc.log(1 + calc.pow(f / 1000, 2), base: 10) - 10 * calc.log(1 + calc.pow(f / 100000, 2), base: 10) ), ) // Low noise (OPA211): PSRR_DC = 130 dB, fp1 = 300 Hz, fp2 = 50 kHz plot.add( style: (stroke: (dash: "dotted")), label: [OPA211], domain: (1, 1000000), samples: 8000, f => ( 130 - 10 * calc.log(1 + calc.pow(f / 300, 2), base: 10) - 10 * calc.log(1 + calc.pow(f / 50000, 2), base: 10) ), ) // Precision low noise (LT1028): PSRR_DC = 120 dB, fp1 = 300 Hz, fp2 = 100 kHz plot.add( style: (stroke: (dash: "dashed")), label: [LT1028], domain: (1, 1000000), samples: 8000, f => ( 120 - 10 * calc.log(1 + calc.pow(f / 300, 2), base: 10) - 10 * calc.log(1 + calc.pow(f / 100000, 2), base: 10) ), ) }, ) }), caption: [Power supply rejection ratio ($upright("PSRR")$) degradation across frequency, highlighting the reduced rejection at the $qty(500, "kHz")$ PWAM carrier frequency], )