chaotic_pfc.comms.dcsk¶
dcsk.py¶
Differential Chaos Shift Keying (DCSK) over a FIR-filtered Henon map.
References
G. Kolumbán, B. Vizvári, W. Schwarz, A. Abel. “Differential chaos shift keying: A robust coding for chaotic communication.” Proc. NDES, 1996.
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
|
Bit error rate between transmitted and received bit arrays. |
|
AWGN + DCSK interferer + narrow-band WiFi-like interferer. |
|
Combined urban channel: impulsive noise + multipath + interferers. |
|
Demodulate a DCSK signal by correlating reference and data slots. |
|
Modulate a bit sequence using DCSK over FIR-filtered Henon. |
|
Demodulate EF-DCSK by correlating with the time-reversed signal. |
|
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.
- 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, whereb = +1for 0,-1for 1.- Parameters:
bits (ndarray[tuple[Any, ...], dtype[_ScalarT]]) – Same semantics as
dcsk_transmit().beta (int) – Same semantics as
dcsk_transmit().n_taps (int) – Same semantics as
dcsk_transmit().wc (float) – Same semantics as
dcsk_transmit().window (str) – Same semantics as
dcsk_transmit().transient (int) – Same semantics as
dcsk_transmit().
- 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).
- chaotic_pfc.comms.dcsk.ber(tx, rx)[source]¶
Bit error rate between transmitted and received bit arrays.
- 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.
snr_db (float)
beta (int)
n_bits (int)
rng (Generator | None)
- Return type: