PM_K-1 hardware: verify THAT1240 against datasheet; fix pinout + part numbers

Verified the receiver from THAT doc 600035 rev05 instead of guessing:
- THAT1240 = 0 dB (unity) -- correct as specced; 1243=-3dB, 1246=-6dB would be wrong.
- SO-8 pinout 1=Ref 2=In- 3=In+ 4=Vee 5=Sense 6=Vout 7=Vcc 8=NC. My initial
  SKiDL pins were mostly wrong; corrected. Netlist now matches the datasheet.
- KiCad Device:D is pin1=K/pin2=A; my clamp diodes were reversed -- fixed so they
  actually clamp (D high->cathode to +15, D low->anode to -15).
- BOM part numbers had a bogus "W16" suffix; corrected to S08-U (SO-8). Noted
  INA134/SSM2141 as pin-compatible 2nd sources for long-term availability.

ERC 0 errors, netlist 0 errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Me Here 2026-05-30 19:48:41 -05:00
parent 3f7f4b94d9
commit 075c1786af
4 changed files with 53 additions and 51 deletions

View file

@ -12,10 +12,10 @@ U7,Power/USB,USB ESD protection array,STMicroelectronics,USBLC6-2SC6,1,0.30,D+/D
FL1,Power/USB,USB common-mode choke,Wurth,744232090,1,0.35,data-pair EMI
U8,Click,I2S audio DAC,Texas Instruments,PCM5102APWR,1,2.20,Burr-Brown; reliability-first
X1,Click,Low-jitter audio oscillator,Abracon,ASEM1-24.576MHZ-LR-T,1,1.40,dedicated MCLK; not PIO-jittered
U9,Audio-in,Balanced line receiver,THAT Corp,THAT1240W16-U,1,3.20,laser-trimmed; high CMRR
U9,Audio-in,Balanced line receiver,THAT Corp,THAT1240S08-U,1,3.20,0dB unity; pinout verified doc600035 rev05; 2nd-src INA134/SSM2141
U10,Audio-in,JFET Hi-Z instrument buffer,Texas Instruments,OPA1641AID,1,1.60,>=1Mohm DI buffer + gain
U11,Audio-mix,Dual audio op-amp (sum/filter),Texas Instruments,OPA1612AIDR,1,2.40,signal-path low noise
U12,Audio-out,Balanced line driver,THAT Corp,THAT1646W16-U,1,3.30,near-zero source; 47ohm build-out per leg
U12,Audio-out,Balanced line driver,THAT Corp,THAT1646S08-U,1,3.30,near-zero source; 47ohm build-out per leg; pinout TBV at output stage
RV1,Audio-out,Output level cal trimmer 25-turn,Bourns,3296W-1-103LF,1,0.70,factory-set DAC FS -> +4dBu
U13,Indicator,Dual comparator (sig/clip),Texas Instruments,LM393DR,1,0.15,peak-detect -> RP2350 GPIO + LED lines
K1,Audio-in,Signal relay line/inst (DPDT gold),Panasonic,TQ2SA-5V,1,1.30,sealed gold bifurcated contacts

1 Ref Block Part Manufacturer MPN Qty Approx_USD_ea Notes
12 FL1 Power/USB USB common-mode choke Wurth 744232090 1 0.35 data-pair EMI
13 U8 Click I2S audio DAC Texas Instruments PCM5102APWR 1 2.20 Burr-Brown; reliability-first
14 X1 Click Low-jitter audio oscillator Abracon ASEM1-24.576MHZ-LR-T 1 1.40 dedicated MCLK; not PIO-jittered
15 U9 Audio-in Balanced line receiver THAT Corp THAT1240W16-U THAT1240S08-U 1 3.20 laser-trimmed; high CMRR 0dB unity; pinout verified doc600035 rev05; 2nd-src INA134/SSM2141
16 U10 Audio-in JFET Hi-Z instrument buffer Texas Instruments OPA1641AID 1 1.60 >=1Mohm DI buffer + gain
17 U11 Audio-mix Dual audio op-amp (sum/filter) Texas Instruments OPA1612AIDR 1 2.40 signal-path low noise
18 U12 Audio-out Balanced line driver THAT Corp THAT1646W16-U THAT1646S08-U 1 3.30 near-zero source; 47ohm build-out per leg near-zero source; 47ohm build-out per leg; pinout TBV at output stage
19 RV1 Audio-out Output level cal trimmer 25-turn Bourns 3296W-1-103LF 1 0.70 factory-set DAC FS -> +4dBu
20 U13 Indicator Dual comparator (sig/clip) Texas Instruments LM393DR 1 0.15 peak-detect -> RP2350 GPIO + LED lines
21 K1 Audio-in Signal relay line/inst (DPDT gold) Panasonic TQ2SA-5V 1 1.30 sealed gold bifurcated contacts

View file

@ -6,12 +6,13 @@ Code-defined schematic. Run INSIDE the EDA container:
Outputs ERC results + a KiCad netlist at hardware/kicad/stage1_input.net,
which imports into Pcbnew for layout.
VERIFY-BEFORE-LAYOUT (datasheet items -- flagged, not guessed):
* exact THAT line-receiver suffix for the gain we want (1240/1243/1246 differ)
* the receiver's SO-8 pin NUMBERS (function->pin map below is placeholder)
* clamp-diode part choice + pin orientation
The TOPOLOGY/connectivity below is correct; only these pin-level details need
confirming against the datasheet.
VERIFIED against datasheets:
* THAT1240 = 0 dB (unity-gain) line receiver; SO-8 pinout per THAT doc 600035
rev 05: 1=Ref 2=In- 3=In+ 4=Vee 5=Sense 6=Vout 7=Vcc 8=NC. Supply 6-36V
(our +/-15V is in range). Pin-compatible 2nd sources: INA134 / SSM2141.
* clamp-diode orientation per KiCad Device:D (pin1=K cathode, pin2=A anode).
Open at BOM time only: exact clamp-diode part (fast low-leakage small-signal;
1N4148WS is a placeholder).
"""
import os
from skidl import *
@ -30,17 +31,17 @@ p15, n15, gnd = Net("+15V"), Net("-15V"), Net("GND")
for n in (p15, n15, gnd):
n.drive = POWER
# ---------- balanced line receiver (THAT124x) : PINOUT TODO-VERIFY ----------
RX = Part(name="THAT124x_RX", tool=SKIDL, dest=TEMPLATE, ref_prefix="U",
# ---------- THAT1240 balanced line receiver (0 dB) : pinout VERIFIED ----------
RX = Part(name="THAT1240", tool=SKIDL, dest=TEMPLATE, ref_prefix="U",
footprint="Package_SO:SOIC-8_3.9x4.9mm_P1.27mm",
pins=[
Pin(num=1, name="IN-", func=Pin.types.INPUT),
Pin(num=2, name="REF", func=Pin.types.INPUT),
Pin(num=3, name="OUT", func=Pin.types.OUTPUT),
Pin(num=1, name="REF", func=Pin.types.INPUT),
Pin(num=2, name="IN-", func=Pin.types.INPUT),
Pin(num=3, name="IN+", func=Pin.types.INPUT),
Pin(num=4, name="V-", func=Pin.types.PWRIN),
Pin(num=5, name="V+", func=Pin.types.PWRIN),
Pin(num=6, name="SENSE", func=Pin.types.INPUT),
Pin(num=7, name="IN+", func=Pin.types.INPUT),
Pin(num=5, name="SENSE", func=Pin.types.PASSIVE),
Pin(num=6, name="OUT", func=Pin.types.OUTPUT),
Pin(num=7, name="V+", func=Pin.types.PWRIN),
Pin(num=8, name="NC", func=Pin.types.NOCONNECT),
])
rx = RX(ref="U1")
@ -57,8 +58,9 @@ def protected_input(src, node_name):
node = Net(node_name)
src += cblk[1]; cblk[2] += rs[1]; rs[2] += node
rb[1] += node; rb[2] += gnd
dp[2] += p15; node += dp[1] # clamp high to +15
dn[1] += n15; dn[2] += node # clamp low to -15 (avoid rebinding globals)
# clamp diodes: KiCad Device:D is pin1=K (cathode), pin2=A (anode).
dp[1] += p15; dp[2] += node # high clamp: conducts when node > +15
dn[1] += node; dn[2] += n15 # low clamp: conducts when node < -15
return node
rx["IN+"] += protected_input(ain_hot, "RXIN_P")

View file

@ -5,32 +5,32 @@ WARNING: fp-lib-table file was not found. Component footprints are not available
WARNING: fp-lib-table file was not found. Component footprints are not available.
WARNING: fp-lib-table file was not found. Component footprints are not available.
WARNING: fp-lib-table file was not found. Component footprints are not available.
WARNING: Missing tag on THAT124x_RX instantiated at /work/hardware/eda/circuits/stage1_input.py:46.
WARNING: Random tag NiUcdSBKvZ generated for THAT124x_RX.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:54.
WARNING: Random tag UDuxvr_uTL generated for C.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
WARNING: Random tag _Np5DvK_aE generated for R.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
WARNING: Random tag 7TLEUp_48E generated for R.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag e2BBosboqS generated for D.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag ngnho2nWKf generated for D.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:54.
WARNING: Random tag WXfeI7Gfj2 generated for C.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
WARNING: Random tag jKB97sf61u generated for R.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
WARNING: Random tag mXEcsSvVUJ generated for R.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag aEBPrkC6b9 generated for D.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag vSi9f4M7Zg generated for D.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:74.
WARNING: Random tag I5Ulz7qVtA generated for C.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:74.
WARNING: Random tag clPAosAbcJ generated for C.
WARNING: Missing tag on THAT1240 instantiated at /work/hardware/eda/circuits/stage1_input.py:47.
WARNING: Random tag QgKieWmNoe generated for THAT1240.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
WARNING: Random tag iOc5_iqozn generated for C.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag pZqcRwtR8R generated for R.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag YRKF1YkzBd generated for R.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
WARNING: Random tag 9_z9ZD6kzY generated for D.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
WARNING: Random tag BmXsrS9O5J generated for D.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:55.
WARNING: Random tag AA57mtziiu generated for C.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag OlgSnmTOjl generated for R.
WARNING: Missing tag on R instantiated at /work/hardware/eda/circuits/stage1_input.py:56.
WARNING: Random tag cs8OUXPRRM generated for R.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
WARNING: Random tag i9mJhNwc3K generated for D.
WARNING: Missing tag on D instantiated at /work/hardware/eda/circuits/stage1_input.py:57.
WARNING: Random tag UUQtRJt6zT generated for D.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:76.
WARNING: Random tag MU_6d6hLHv generated for C.
WARNING: Missing tag on C instantiated at /work/hardware/eda/circuits/stage1_input.py:76.
WARNING: Random tag jSRPH3NSVb generated for C.
WARNING: Missing tag on instantiated at /work/hardware/kicad/<frozen importlib._bootstrap>:488.
INFO: 31 warnings found while generating netlist.
INFO: 0 errors found while generating netlist.

View file

@ -6,14 +6,14 @@ from skidl.pin import pin_types
SKIDL_lib_version = '0.0.1'
stage1_input = SchLib(tool=SKIDL).add_parts(*[
Part(**{ 'name':'THAT124x_RX', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'THAT124x_RX'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
Pin(num='1',name='IN-',func=pin_types.INPUT),
Pin(num='2',name='REF',func=pin_types.INPUT),
Pin(num='3',name='OUT',func=pin_types.OUTPUT),
Part(**{ 'name':'THAT1240', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'THAT1240'}), 'ref_prefix':'U', 'fplist':None, 'footprint':'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm', 'keywords':None, 'description':'', 'datasheet':None, 'pins':[
Pin(num='1',name='REF',func=pin_types.INPUT),
Pin(num='2',name='IN-',func=pin_types.INPUT),
Pin(num='3',name='IN+',func=pin_types.INPUT),
Pin(num='4',name='V-',func=pin_types.PWRIN),
Pin(num='5',name='V+',func=pin_types.PWRIN),
Pin(num='6',name='SENSE',func=pin_types.INPUT),
Pin(num='7',name='IN+',func=pin_types.INPUT),
Pin(num='5',name='SENSE',func=pin_types.PASSIVE),
Pin(num='6',name='OUT',func=pin_types.OUTPUT),
Pin(num='7',name='V+',func=pin_types.PWRIN),
Pin(num='8',name='NC',func=pin_types.NOCONNECT)] }),
Part(**{ 'name':'C', 'dest':TEMPLATE, 'tool':SKIDL, 'aliases':Alias({'C'}), 'ref_prefix':'C', 'fplist':[''], 'footprint':'Capacitor_SMD:C_1206_3216Metric', 'keywords':'cap capacitor', 'description':'Unpolarized capacitor', 'datasheet':'~', 'pins':[
Pin(num='1',name='~',func=pin_types.PASSIVE,unit=1),