code wiki / (root) / nx_chirp_ss.nx

nx_chirp_ss.nx

buildroot/runtime/nx_chirp_ss.nx

7104 B181 linesdepth 3pulls 3 transitivereach 0 importersview sourcekind orphan library
docsdependenciesstructsconstsfunctions

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

nx_syscalls_x86_64.nx nx_chirp_ss.nx

imports: nx_syscalls_x86_64.nx

imported by: nobody (leaf or entry point)

structs

none

consts

55const NX_CSS_VERDICT_UNKNOWN: i64 = 0
56const NX_CSS_VERDICT_OK: i64 = 1
57const NX_CSS_VERDICT_BUF_TOO_SMALL: i64 = 2
58const NX_CSS_VERDICT_BAD_PARAMS: i64 = 3
59const NX_CSS_VERDICT_SNR_LOW: i64 = 4
60const NX_CSS_VERDICT_N: i64 = 5
62const NX_CSS_PHASE_PERIOD: i64 = 1024
63const NX_CSS_PHASE_HALF: i64 = 512
64const NX_CSS_AMPLITUDE: i64 = 32767

functions

69func _chip_inc(i: i64, s: i64, N: i64, M: i64,
79func nx_chirp_ss_modulate(
calls 1: _chip_inc
116func nx_chirp_ss_demodulate(
calls 1: _chip_inc
177func nx_css_verdict_is_valid(v: i64) -> i64