chaotic_pfc.comms.dcsk

dcsk.py

Differential Chaos Shift Keying (DCSK) over a FIR-filtered Henon map.

References

[Kolumban96]

G. Kolumbán, B. Vizvári, W. Schwarz, A. Abel. “Differential chaos shift keying: A robust coding for chaotic communication.” Proc. NDES, 1996.

[Kaddoum13]

G. Kaddoum, E. Soujeri, Y. Nijsure. “Design of a Short Reference Noncoherent Chaos-Based Communication System.” IEEE Trans. Commun., vol. 61, no. 12, pp. 4854–4863, 2013.

Functions

ber(tx, rx)

Bit error rate between transmitted and received bit arrays.

channel_interferers(sig, snr_db[, ...])

AWGN + DCSK interferer + narrow-band WiFi-like interferer.

channel_urban(sig, snr_db[, prob_impulso, ...])

Combined urban channel: impulsive noise + multipath + interferers.

dcsk_receive(rx[, beta])

Demodulate a DCSK signal by correlating reference and data slots.

dcsk_transmit(bits[, beta, n_taps, wc, ...])

Modulate a bit sequence using DCSK over FIR-filtered Henon.

efdcsk_receive(rx[, beta])

Demodulate EF-DCSK by correlating with the time-reversed signal.

efdcsk_transmit(bits[, beta, n_taps, wc, ...])

Modulate bits using Efficient DCSK (EF-DCSK).

chaotic_pfc.comms.dcsk.dcsk_transmit(bits, beta=64, n_taps=5, wc=0.9091, window='hamming', transient=500)[source]

Modulate a bit sequence using DCSK over FIR-filtered Henon.

Each bit is encoded as two consecutive beta-sample slots: a reference slot followed by a data slot. For bit 0 the data slot is a copy of the reference; for bit 1 it is inverted.

Parameters:
  • bits (ndarray[tuple[Any, ...], dtype[_ScalarT]]) – Binary array (0/1) of message bits.

  • beta (int) – Spreading factor — samples per slot.

  • n_taps (int) – Passed to henon_fir_sequence().

  • wc (float) – Passed to henon_fir_sequence().

  • window (str) – Passed to henon_fir_sequence().

  • transient (int) – Burn-in samples discarded before modulation.

Returns:

DCSK-modulated signal samples.

Return type:

ndarray, shape (2 * beta * len(bits),)

chaotic_pfc.comms.dcsk.dcsk_receive(rx, beta=64)[source]

Demodulate a DCSK signal by correlating reference and data slots.

Parameters:
  • rx (ndarray[tuple[Any, ...], dtype[_ScalarT]]) – Received signal (must be aligned to symbol boundaries).

  • beta (int) – Spreading factor used by the transmitter.

Returns:

Decoded bits (0 or 1).

Return type:

ndarray, dtype int

chaotic_pfc.comms.dcsk.efdcsk_transmit(bits, beta=64, n_taps=5, wc=0.9091, window='hamming', transient=500)[source]

Modulate bits using Efficient DCSK (EF-DCSK).

Each bit occupies a single beta-sample slot: s = ref + b * ref_reversed, where b = +1 for 0, -1 for 1.

Parameters:
Returns:

EF-DCSK signal, half the length of classical DCSK.

Return type:

ndarray, shape (beta * len(bits),)

chaotic_pfc.comms.dcsk.efdcsk_receive(rx, beta=64)[source]

Demodulate EF-DCSK by correlating with the time-reversed signal.

The decision variable is dot(received, received_reversed).

Parameters:
Return type:

ndarray[tuple[Any, …], dtype[_ScalarT]]

chaotic_pfc.comms.dcsk.ber(tx, rx)[source]

Bit error rate between transmitted and received bit arrays.

Parameters:
Return type:

float

chaotic_pfc.comms.dcsk.channel_interferers(sig, snr_db, sir_dcsk_db=10.0, sir_wifi_db=15.0, n_taps_int=9, wc_int=0.5556, beta=64, n_bits=600, rng=None)[source]

AWGN + DCSK interferer + narrow-band WiFi-like interferer.

Parameters:
  • sir_dcsk_db (float) – Signal-to-interference ratio for the DCSK interferer.

  • sir_wifi_db (float) – Signal-to-interference ratio for the WiFi-like interferer.

  • n_taps_int (int) – Filter parameters for the interfering DCSK transmitter.

  • wc_int (float) – Filter parameters for the interfering DCSK transmitter.

  • sig (ndarray[tuple[Any, ...], dtype[_ScalarT]])

  • snr_db (float)

  • beta (int)

  • n_bits (int)

  • rng (Generator | None)

Return type:

ndarray[tuple[Any, …], dtype[_ScalarT]]

chaotic_pfc.comms.dcsk.channel_urban(sig, snr_db, prob_impulso=0.01, amp_fator=10.0, delays=None, gains=None, sir_dcsk_db=15.0, sir_wifi_db=20.0, rng=None)[source]

Combined urban channel: impulsive noise + multipath + interferers.

Applies all three impairments simultaneously for realistic testing.

Parameters:
Return type:

ndarray[tuple[Any, …], dtype[_ScalarT]]