Compare commits

..

2 commits

Author SHA1 Message Date
Stephan I. Böttcher
a8c60193c6 NMAHEPM: new bitfile 2025-06-02 22:39:48 +02:00
Stephan I. Böttcher
f399dcd2ad nmahemap: hk
HDORN data line parser
option --ahbgo
2025-06-02 22:38:20 +02:00
3 changed files with 68 additions and 55 deletions

114
dorn.py
View file

@ -20,7 +20,7 @@ def HK_fmt(s, i, n, d):
def HK3_fmt(s, i, n, d):
return f"""{i}. {n}
T = {d[5]:6.2f} °C" Ibias = {d[0]:6.3f} V,
T = {d[5]:6.2f} °C" GND = {d[0]:6.3f} V,
Vff = {d[1]:6.3f} V, Vnn = {d[2]:6.3f} V, Vpp = {d[3]:6.3f} V, Vdig = {d[4]:6.3f} V,
Vcc = {d[6]:6.3f} V, Vss = {d[7]:6.3f} V.
"""
@ -69,7 +69,7 @@ class DORN_CONFIG:
)
HK3 = [[
("Ibias", 10470/470 * 51/1051 * 100),
("GND",),
("Vff", 2.0),
("Vnn", 2.5, ("Vpp", -1.5)),
("Vpp", 2.0),
@ -79,16 +79,36 @@ class DORN_CONFIG:
("Vss", 2.5, ("Vcc", -1.5)),
]]
HK4_AHBGO = [[
("Tbgo₁", (degC, {})),
("Tbgo₂", (degC, {})),
("Vbias", -1/0.047),
("Tbgo₃", (degC, {})),
("Ibias₁", 10470/470 * 51/1051 * 100),
("Ibias₂", 10470/470 * 51/1051 * 100),
("Vss", 2.5, ("Vcc", -1.5)),
("Vcc", 2.0),
]]
HK = [
("INP₀", None, HK_fmt),
("INP₁", None, HK_fmt),
("INP₂", None, HK_fmt),
("HK ADC", HK3, HK3_fmt),
("HK PA", None, HK_fmt),
("VrefL", None, HK_fmt),
("VrefH", None, HK_fmt),
("HK_PWR", None, HK_fmt),
]
def n_adc(self):
return self.n_channels//3
def Vref(self, slice=None):
try:
return self.VREF[slice]
except:
pass
return 3.3
def n_trigs(self):
if self.n_channels > 16:
return self.n_adc()
return self.n_channels
def m_trigs(self):
return (1 << self.n_trigs()) - 1
NTC = [dict(R1=10e3, R25=10e3, B25=3940, res=0x1000)]
HK4_SETH = [
[
@ -115,20 +135,14 @@ class DORN_CONFIG:
HK7_SETH = [
[
("na₁",),
("na₂",),
("na₃",),
("na₄",),
("na₁",), ("na₂",), ("na₃",), ("na₄",),
("Iprim", 2000.0),
("Vprim", 16.3),
("Tpwr", (degC, {})),
("Ibias⁺", 100.0),
],
[
("na₁",),
("na₂",),
("na₃",),
("na₄",),
("na₁",), ("na₂",), ("na₃",), ("na₄",),
("Ibias", 100.0),
("Vbias⁺", 100.0),
("Text", (degC, {})),
@ -136,42 +150,26 @@ class DORN_CONFIG:
],
]
HK = [
("INP₀", None, HK_fmt),
("INP₁", None, HK_fmt),
("INP₂", None, HK_fmt),
("HK ADC", HK3, HK3_fmt),
("HK PA", HK4_AHBGO, HK4_AHBGO_fmt),
("VrefL", None, HK_fmt),
("VrefH", None, HK_fmt),
("HK_PWR", None, HK_fmt),
]
def n_adc(self):
return self.n_channels//3
def Vref(self, slice=None):
try:
return self.VREF[slice]
except:
pass
return 3.3
def n_trigs(self):
if self.n_channels > 16:
return self.n_adc()
return self.n_channels
def m_trigs(self):
return (1 << self.n_trigs()) - 1
NTC = [dict(R1=10e3, R25=10e3, B25=3940, res=0x1000)]
def seth(self):
# ! change the class attribute
# ! change the class attribute .HK
self.HK[4] = ("HK PA", self.HK4_SETH, HK4_SETH_fmt)
self.HK[7] = ("HK_PWR", self.HK7_SETH, HK7_SETH_fmt)
HK4_AHBGO = [[
("Tbgo₁", (degC, {})),
("Tbgo₂", (degC, {})),
("Vbias", -1/0.047),
("Tbgo₃", (degC, {})),
("Ibias₁", 10470/470 * 51/1051 * 100),
("Ibias₂", 10470/470 * 51/1051 * 100),
("Vss", 2.5, ("Vcc", -1.5)),
("Vcc", 2.0),
]]
def ahbgo(self):
# ! change the class attribute .HK
self.HK[4] = ("HK PA", self.HK4_AHBGO, HK4_AHBGO_fmt)
CONFIG = DORN_CONFIG()
def hk(sl, what="print", data=None):
@ -186,6 +184,18 @@ def hk(sl, what="print", data=None):
data=_ifc.read_fifo()
if data[0] != 0x5710 + sl:
raise ValueError("Read HK packet error", data)
if isinstance(data, str):
# HDORN … data line
if "x" in data:
return
data = data.split()
if data[0] != "HDORN":
return
data = list(map(int, data[1:]))
if sl is None:
sl = data[0] & 3;
if data[0] & 3 != sl:
return None
if what=="data":
return data
ND = CONFIG.n_adc()

Binary file not shown.

View file

@ -49,11 +49,14 @@ def aenable(sl=None, hk=True, ev=True, **aa):
if __name__=="__main__":
ifc,_oo = armlib.init_irena(scope = globals(), name = "AHEPAM", prod = (0xee0c,),
long_options=["seth"])
long_options=["seth", "ahbgo"])
for o,v in _oo[0]:
if o=="--seth":
dorn.CONFIG.seth()
armlib.set_prompt("SETH")
if o=="--ahbgo":
dorn.CONFIG.ahbgo()
armlib.set_prompt("AHBGO")
ifc._stream_fifos = 'hk1/f1/f2/f3'
if ifc.is_a("USB"):
findnmahepam()