Fill HDMI CEC electrical from HDMI Specification 1.3 (2.79.0).
27 kΩ pull-up, VOL/VOH, 200 pF device / 700 pF cable, 5 Ω interconnect. TMDS/FRL Zdiff stays UNKNOWN.
This commit is contained in:
@@ -616,8 +616,12 @@ DOC_IEEE_OTHER = {
|
||||
"10gbase-r": "IEEE 802.3 10GBASE-R clauses (not in 2012 Section Two)",
|
||||
}
|
||||
DOC_HDMI_ADOPTER = (
|
||||
"HDMI Adopter specification (not on file; 1.4 vs 2.x vs FRL must not be mixed)"
|
||||
"HDMI Adopter specification (not on file; 1.4 vs 2.x vs FRL must not be mixed). "
|
||||
"HDMI Specification Version 1.3 on file is used only for CEC electrical, not TMDS/FRL Zdiff"
|
||||
)
|
||||
DOC_HDMI_13 = "High-Definition Multimedia Interface Specification"
|
||||
REV_HDMI_13 = "Version 1.3, June 22, 2006"
|
||||
ORG_HDMI = "HDMI Licensing, LLC"
|
||||
DDR_CHECKS = [
|
||||
"byte_lane_mapping",
|
||||
"dq_to_dqs_skew",
|
||||
@@ -1481,10 +1485,73 @@ def build_m0_catalog() -> dict[str, Any]:
|
||||
return out
|
||||
|
||||
def _hdmi_cons(pid: str) -> list[dict[str, Any]]:
|
||||
return [
|
||||
_c(pid, p, "UNKNOWN", needed_document=DOC_HDMI_ADOPTER)
|
||||
for p in HDMI_CHECKS
|
||||
]
|
||||
out = []
|
||||
for p in HDMI_CHECKS:
|
||||
if p == "cec":
|
||||
out.append(_num(
|
||||
pid, p, 27000.0, "ohm",
|
||||
document=DOC_HDMI_13, organization=ORG_HDMI,
|
||||
revision=REV_HDMI_13, section="Supplement 1 CEC 4",
|
||||
table="CEC Table 2", page="CEC-6",
|
||||
source_type="PCB",
|
||||
conditions=[
|
||||
"internal device pull-up when CEC protocol is implemented",
|
||||
"27 kΩ ± 5% or equivalent (e.g. current source)",
|
||||
"not TMDS / FRL differential impedance",
|
||||
],
|
||||
))
|
||||
continue
|
||||
out.append(_c(pid, p, "UNKNOWN", needed_document=DOC_HDMI_ADOPTER))
|
||||
out.append(_num(
|
||||
pid, "cec_device_capacitance", 200.0, "pF",
|
||||
document=DOC_HDMI_13, organization=ORG_HDMI,
|
||||
revision=REV_HDMI_13, section="4.2.10",
|
||||
table="Table 4-27", page="54",
|
||||
source_type="PCB",
|
||||
conditions=[
|
||||
"maximum capacitance load of a device excluding cable",
|
||||
"all HDMI products including those that do not implement CEC protocol",
|
||||
],
|
||||
))
|
||||
out.append(_num(
|
||||
pid, "cec_cable_capacitance", 700.0, "pF",
|
||||
document=DOC_HDMI_13, organization=ORG_HDMI,
|
||||
revision=REV_HDMI_13, section="4.2.10",
|
||||
table="Table 4-27", page="54",
|
||||
source_type="CABLE",
|
||||
conditions=["maximum capacitance load of a cable assembly"],
|
||||
))
|
||||
out.append(_num(
|
||||
pid, "cec_vol_max", 0.6, "V",
|
||||
document=DOC_HDMI_13, organization=ORG_HDMI,
|
||||
revision=REV_HDMI_13, section="Supplement 1 CEC 4",
|
||||
table="CEC Table 2", page="CEC-6",
|
||||
source_type="PCB",
|
||||
conditions=["maximum output voltage logic 0 when CEC is implemented"],
|
||||
))
|
||||
out.append(_num(
|
||||
pid, "cec_voh_min", 2.5, "V",
|
||||
document=DOC_HDMI_13, organization=ORG_HDMI,
|
||||
revision=REV_HDMI_13, section="Supplement 1 CEC 4",
|
||||
table="CEC Table 2", page="CEC-6",
|
||||
source_type="PCB",
|
||||
conditions=[
|
||||
"minimum output voltage logic 1 (maximum 3.63 V)",
|
||||
"when CEC protocol is implemented",
|
||||
],
|
||||
))
|
||||
out.append(_num(
|
||||
pid, "cec_interconnect_resistance", 5.0, "ohm",
|
||||
document=DOC_HDMI_13, organization=ORG_HDMI,
|
||||
revision=REV_HDMI_13, section="4.2.10",
|
||||
table="Table 4-27", page="54",
|
||||
source_type="PCB",
|
||||
conditions=[
|
||||
"maximum resistance of interconnected CEC line between any two HDMI connectors",
|
||||
"inputs shall be interconnected to a single output except listed Table 4-27 exceptions",
|
||||
],
|
||||
))
|
||||
return out
|
||||
|
||||
def _dvi_cons(pid: str) -> list[dict[str, Any]]:
|
||||
out = []
|
||||
@@ -1698,7 +1765,7 @@ def build_m0_catalog() -> dict[str, Any]:
|
||||
))
|
||||
for hid, lid, conn, note in (
|
||||
("hdmi-1.4-tmds-type-a", "hdmi-1.4", "HDMI-A",
|
||||
"HDMI 1.4 TMDS on Type A. Mini is a connector, not a protocol. UNKNOWN until Adopter spec."),
|
||||
"HDMI 1.4 TMDS on Type A. Mini is a connector, not a protocol. TMDS UNKNOWN until Adopter spec. CEC electrical from HDMI 1.3."),
|
||||
("hdmi-1.4-tmds-type-c-mini", "hdmi-1.4", "HDMI-C-mini",
|
||||
"Mini HDMI is CONNECTOR only. Electrical protocol remains HDMI 1.4 TMDS, not MINI-HDMI."),
|
||||
("hdmi-2.0-tmds-type-a", "hdmi-2.0", "HDMI-A",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,13 @@
|
||||
|
||||
What's new in Periscope.
|
||||
|
||||
## 2.79.0 — 2026-09-22 — HDMI CEC electrical from HDMI Specification 1.3
|
||||
|
||||
`CEC_HDMI_Specification.pdf` is High-Definition Multimedia Interface Specification Version 1.3 (22 June 2006), not a CEC-only pamphlet. CEC pull-up 27 kΩ, VOL 0.6 V, VOH 2.5 V, device 200 pF / cable 700 pF, interconnect 5 Ω are packed. TMDS/FRL Zdiff/skew stay UNKNOWN (Adopter spec still required). DDC/HPD not packed.
|
||||
|
||||
- [Changed] `protocol_catalog.py` + `catalog.json`.
|
||||
- [Changed] pytest `tests/pcb/test_protocol_pdf_pack.py`, `test_protocol_m6_m7.py`.
|
||||
|
||||
## 2.78.0 — 2026-09-22 — 1000BASE-T from IEEE 802.3-2012 Section Three
|
||||
|
||||
IEEE Std 802.3-2012 Section Three Clause 40 fills 1000BASE-T: 1000 Mb/s, 100 m Class D link, cable 100 Ω, MDI return loss 16 dB (1–40 MHz), pair skew 50 ns, isolation 2 MΩ / 1500 V rms, MDI peak 0.67 V, link delay 570 ns. Cable 100 Ω is **CABLE**; L2 PCB Zdiff stays UNKNOWN. Clause 36 fills 1000BASE-X 1000 Mb/s (optical Zdiff N/A). Insertion-loss formula not packed as a single dB.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "periscope-web",
|
||||
"version": "2.78.0",
|
||||
"version": "2.79.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"sync-version": "node scripts/sync-version.mjs",
|
||||
|
||||
@@ -218,6 +218,10 @@ def test_ethernet_hdmi_skeletons_unknown_needed_document():
|
||||
assert all(p.incomplete for p in ifaces)
|
||||
for p in ifaces:
|
||||
for c in p.constraints:
|
||||
if lid.startswith("hdmi") and (
|
||||
c.parameter == "cec" or c.parameter.startswith("cec_")
|
||||
):
|
||||
continue
|
||||
assert c.value is None
|
||||
assert c.value_kind != "NUMERIC"
|
||||
if c.value_kind in {"UNKNOWN", "MISSING_SOURCE"}:
|
||||
|
||||
@@ -152,6 +152,29 @@ def test_dvi_not_hdmi_numeric_from_dvi_10():
|
||||
hdmi = next(p for p in cat.physical_interfaces if p.id == "hdmi-1.4-tmds-type-a")
|
||||
hz = next(c for c in hdmi.constraints if c.parameter == "differential_impedance")
|
||||
assert hz.value_kind == "UNKNOWN"
|
||||
assert hz.value is None
|
||||
hby = {c.parameter: c for c in hdmi.constraints}
|
||||
_cite_ok(hby["cec"])
|
||||
assert hby["cec"].value == 27000.0
|
||||
assert hby["cec"].source.table == "CEC Table 2"
|
||||
assert "1.3" in hby["cec"].source.revision
|
||||
assert hby["cec"].source_type == "PCB"
|
||||
_cite_ok(hby["cec_device_capacitance"])
|
||||
assert hby["cec_device_capacitance"].value == 200.0
|
||||
assert hby["cec_device_capacitance"].source.table == "Table 4-27"
|
||||
_cite_ok(hby["cec_cable_capacitance"])
|
||||
assert hby["cec_cable_capacitance"].value == 700.0
|
||||
assert hby["cec_cable_capacitance"].source_type == "CABLE"
|
||||
_cite_ok(hby["cec_vol_max"])
|
||||
assert hby["cec_vol_max"].value == 0.6
|
||||
_cite_ok(hby["cec_voh_min"])
|
||||
assert hby["cec_voh_min"].value == 2.5
|
||||
_cite_ok(hby["cec_interconnect_resistance"])
|
||||
assert hby["cec_interconnect_resistance"].value == 5.0
|
||||
frl = next(p for p in cat.physical_interfaces if p.id == "hdmi-frl-pcb")
|
||||
fz = next(c for c in frl.constraints if c.parameter == "differential_impedance")
|
||||
assert fz.value_kind == "UNKNOWN"
|
||||
assert fz.value is None
|
||||
g = DesignGraph(
|
||||
components={
|
||||
"J3": Component(
|
||||
|
||||
Reference in New Issue
Block a user