Hello everyone,
It is my pleasure to announce DigitalComm.jl a simple package that proposes some tools and functions associated to digital communications simulations.
The package will be extended later on and currently proposes tools to
- Create binary//byte sequences
- Propose symbol modulation (Quadrature amplitude Modulation)
- … and demodulation (also a max-log symbol demapper)
- and many state of the art multicarrier waveforms (OFDM, FBMC, GFDM, BF-OFDM …)
Some simple examples (Bit Error Rate (BER) computation, power spectral density calculation) are also proposed.
Objectives
The purpose is to propose a common framework (similar to what numpy can propose) written in Julia. There are in my opinion some advantages to propose a Julia ecosystem
- Speed for monte carlo simulation (typically BER calculation)
- Open source code (compared to alternative like Matlab)
- Possibility to use the tools on ARM devices. In my research I work quite a lot on Zynq architecture (i.e ARM cortex A9) which support Julia.
- Easy C integration (for low level call).
Some very minimal results
Minimal Transmitter receiver link with additive white Gaussian noise
# ----------------------------------------------------
# --- Transmitter
# ----------------------------------------------------
# --- Parameters
snr = 20;
mcs = 16;
nbBits = 1024* Int(log2(mcs));
# --- Binary sequence generation
bitSeq = genBitSequence(nbBits);
# --- QPSK mapping
qamSeq = bitMappingQAM(mcs,bitSeq);
# ----------------------------------------------------
# --- Channel
# ----------------------------------------------------
# --- AWGN
# Theoretical power is 1 (normalized constellation)
qamNoise, = addNoise(qamSeq,snr,1);
# ----------------------------------------------------
# --- Rx Stage: SRRC
# ----------------------------------------------------
# --- Binary demapper
bitDec = bitDemappingQAM(mcs,qamNoise);
# --- BER measure
ber = sum(xor.(bitDec,bitSeq)) /length(bitSeq);
which leads to a classic noisy constellation
Other examples are provided in the documentation.
Perspectives
Any comment feedback or demand is welcome. Please note that I am (absolutely) not a Julia expert (mostly done some C and Matlab) so feel free to propose enhancement/ modifications and advices.
Any PR, support, suggestion is really welcome !
In the near future, it is expected to have some tools associated to
- MIMO support (Alamouti and so fort)
- Multipath channel models (correlated Rayleigh channel)
- Other modulation support (FSK …)
And any other point suggested.