nx_chirp_ss.nx
buildroot/runtime/nx_chirp_ss.nx
about
nx_chirp_ss.nx -- Chirp Spread Spectrum modulation, re-derived
from the public chirp-z transform (Cooley 1969, IEEE T-AU). This
is the modulation layer that gives the Nishi physical layer the
long-link low-SNR tolerance of LoRa-class radio WITHOUT touching
LoRa's patented demodulator tricks.
Substrate v1 parameters:
- M = 4 symbols per chirp (2 bits/symbol, "SF=2")
- N = 64 samples per chirp
- inc_min .. inc_max in phase-units per sample define the swept
band; the chirp ramps linearly across [inc_min, inc_max).
For symbol s, the chirp's instantaneous chip index is
(i + s * N/M) mod N. This is the cyclic-shift property that gives
CSS its orthogonality across the M-ary alphabet. Decoding is by
correlation against the M reference chirps; arg-max picks the
symbol. Substrate-friendly: integer-only, square-wave reference,
no FFT required at SF=2.
Patent stance: linear-FM chirp modulation predates LoRa by decades
(Klauder 1960 radar; Cooley 1969 chirp-z math; Costas 1984 chirp
sequences). We re-derive from those public sources, not from LoRa.
Per cardinal feedback-nishilang-mission-displace-cuda-directx-via-
patent-clean-absorption: never copy reference code; absorb the math.
genealogy_id: cooley_1969_chirp_z + klauder_1960_radar_chirp +
costas_1984_frequency_hopping + nx_bfsk_q10
lineage_id: nishi_chirp_ss_q10
nx_safety_envelope:
intended_use: "Chirp spread-spectrum comms primitive (Costas
1984 + LoRa-class linear FM chirp) -- low-
power telemetry, mesh networking, recovery
beacons"
sil_target: SIL2 (comms reliability; chirp recovery
in noisy channels gates safety
telemetry transport)
asil_target: QM
dal_target: DAL C
evidence: [Q10_fixed_point_deterministic,
dependencies 1 imports · 0 importers
imports: nx_syscalls_x86_64.nx
imported by: nobody (leaf or entry point)
structs
| none |
consts
| 55 | const NX_CSS_VERDICT_UNKNOWN: i64 = 0 |
| 56 | const NX_CSS_VERDICT_OK: i64 = 1 |
| 57 | const NX_CSS_VERDICT_BUF_TOO_SMALL: i64 = 2 |
| 58 | const NX_CSS_VERDICT_BAD_PARAMS: i64 = 3 |
| 59 | const NX_CSS_VERDICT_SNR_LOW: i64 = 4 |
| 60 | const NX_CSS_VERDICT_N: i64 = 5 |
| 62 | const NX_CSS_PHASE_PERIOD: i64 = 1024 |
| 63 | const NX_CSS_PHASE_HALF: i64 = 512 |
| 64 | const NX_CSS_AMPLITUDE: i64 = 32767 |
functions
| 69 | func _chip_inc(i: i64, s: i64, N: i64, M: i64, |
| 79 | func nx_chirp_ss_modulate( calls 1: _chip_inc |
| 116 | func nx_chirp_ss_demodulate( calls 1: _chip_inc |
| 177 | func nx_css_verdict_is_valid(v: i64) -> i64 |