Astro~/0.4
** Conformance
** Astro * Conformance
** /conformance/pxsc

Proximity-1 Coding and Sync

PICS proforma: what this package implements, clause by clause.

Conformance Statement for pkg/pxsc, CCSDS 211.2-B-3


A1.1 GENERAL INFORMATION

A1.1.1 Identification of PICS

FieldValue
Date of Statement (DD/MM/YYYY)23/08/2026
PICS Serial NumberASTRO-PXSC-PICS-001
System Conformance Statement Cross-ReferenceThis document

A1.1.2 Identification of Implementation Under Test (IUT)

FieldValue
Implementation Nameastro/pkg/pxsc
Implementation VersionSee go.mod / latest commit on main
Special ConfigurationSynchronizer frame-length bounds default to the Version-3 range
Other InformationGo library implementing the Proximity Link Transmission Unit, the annex C CRC-32, idle data generation, a stream synchronizer, and the convolutional encoder with a Viterbi decoder. LDPC is out of scope.

A1.1.3 Identification of Supplier

FieldValue
SupplierRavi Suhag
Contact Point for QueriesGitHub, github.com/ravisuhag/astro
Implementation Name(s) and Version(s)astro/pkg/pxsc (Go package)
System Name(s)Astro

A1.1.4 Identification of Specification

FieldValue
SpecificationCCSDS 211.2-B-3 (Proximity-1 Space Link Protocol, Coding and Synchronization Sublayer, Blue Book, Issue 3, October 2019)
Have any exceptions been required?Yes [X] No [ ], see A1.5

FeatureReferenceStatusSupport
PLTU structure: ASM, frame, CRC-32clause 3.2.2MY
ASM occupies the first 24 bitsclause 3.2.3.1MY
ASM pattern FAF320clause 3.2.3.2MY
Transfer frame immediately follows the ASMclause 3.2.4.2MY
Version-3 Transfer Frameclause 3.2.4.1MY: via pkg/pxdl
Version-4 (USLP) Transfer Frameclause 3.2.4.1OY: carried; pkg/usdl decodes it
32-bit CRC as the final fieldclause 3.2.2 c)MY

A1.3 CRC-32 CODING

FeatureReferenceStatusSupport
Generator G(X) = X^32+X^23+X^21+X^11+X^2+1annex C, C1.3MY: 0x00A00805, implemented locally, not from pkg/crc
Shift register preset to all zerosannex C, C1 encoder noteMY
ASM excluded from the CRC computationannex C, C1.2 note 2MY
Systematic (n, n-32) block codeannex C, C1.2MY
Syndrome of a valid codeword is zeroannex C, C2MY
Error detected if and only if the syndrome is non-zeroannex C, C2.1MY

A1.4 IDLE DATA AND SYNCHRONIZATION

FeatureReferenceStatusSupport
Idle data PN sequence 352EF853clause 3.3.2.2MY
Sequence repeats from the first bitclause 3.3.2.4MY
Acquisition sequenceclause 3.3.3MY: content; duration is a MIB parameter
Idle sequence when no PLTU is availableclause 3.3.4MY
Tail sequence before terminating transmissionclause 3.3.5MY
PLTU delimiting in a received bitstreamclause 3.6MY: Synchronizer; the frame's Length field is tried first, brute-force length scan as fallback; octet-aligned input only
PLTU validation before deliveryclause 3.6MY: a failing CRC is skipped, not delivered

A1.5 CHANNEL CODING

FeatureReferenceStatusSupport
No codingclause 3.4.2.2 a)OY
Convolutional code, rate 1/2, constraint length 7clause 3.4.3.1OY: encoder and Viterbi decoder, pinned to the CCSDS 171/133 convention by independent known-answer vectors
G2 output path invertedclause 3.4.3.1 note 1MY
All transmitted data encoded, PLTUs and idle alikeclause 3.4.3.2MY: encoder state carries across calls
Soft bit decisions, three-bit quantizationclause 3.4.3.3OY: DecodeSoft takes them; the demodulator must supply them
LDPC codeclause 3.4.4ON: see A1.6
Codeword Sync Markerclause 3.4.4ON: LDPC only
Pseudo-randomizerclause 3.4.5ON: LDPC only

A1.6 EXCEPTIONS AND UNSUPPORTED FEATURES

FeatureReferenceSupportRationale
LDPC code, CSM, and pseudo-randomizerclause 3.4.4, clause 3.4.5NA substantial addition; the randomizer applies only when LDPC is used. A follow-up.
Reed-Solomon codesclause 3.4.1 noteNNot specified in the CCSDS Proximity-1 standards, and clause 3.4.1 states their use is not intended for cross support.
Concatenated convolutional and Reed-Solomonclause 3.4.2.2 note 2NExplicitly not specified by the standard.
Physical layer, modulation, rate controlCCSDS 211.1-BNA separate specification.

A1.7 IMPLEMENTATION LIMITS

LimitValueSource
ASM3 octets, FAF320clause 3.2.3
CRC4 octetsclause 3.2.2 c)
PLTU overhead7 octetsThe two above
Transfer frame lengthMaxFrameLength, default 2048The Version-3 maximum; clause 3.2.2 note 1 leaves the real limit to the mission's Maximum_Frame_Length
Convolutional code rate1/2clause 3.4.3.1
Convolutional constraint length7clause 3.4.3.1

Wire test vectors

The octets backing this statement live in the vector corpus — 6 vectors. Each vector names the clause it comes from and carries the derivation that produced it.

File
pxsc/convolutional.json4 vectors
pxsc/interop.json2 vectors, captured from Yamcs 5.13.5

These are data files, so any implementation can check itself against the same octets. See CONTRACT.md for how, and how this is verified for what rests on a published vector versus a reading of the clause.