A digital communications package for the Julia language.
Radio is not yet registered with the Julia package manager, so it needs to cloned:
julia> Pkg.clone("https://github.com/JayKickliter/Radio.jl.git")
Radio is in its infancy. Right now (April 2014) I'm mostly working on support functions (filtering, resampling, noise), and have only implemeted PSK modulation. That said, if you have requests or suggestions, please submit them.
Jul 2014 Updtae: This package has definitely not been abaadonded. I've just been creating core Julia DSP code outside of it, which is why there haven't been any commits lately. I also didn't want to burdened down the line with poor design choices, so I've been getting a little more versed in Julia the last couple months.
This is a growing list of proposed functionality and package strcture.
- Modulation
- PSK: Phase Shift Keying modulation/demodulation
- APSK: Amplitude Phase Shift Keying modulation/demodulation
- QAM: Quadrature Amplitude Modulation/demodulation
- Random
- WGN: White Gaussian Noise
- Math
- CZT: Chirp-z Transform
- FFT: ?. Need a non-GPL FFT. Possibly a native Julia implemantation or an interface to FFTS
- Filtering
- FIR: Fir filter design and execution
- Polyphase: Polyphase filter and execution
- Resampling: Decimation, interpolation, and rational resampling. Maybe cubic interpolation.
- Support
- Types: IQ
- Graphics: Filter response, constellation plotting, eye diagram
See Examples/QPSK.jl
using Radio, Winston
# generate 10,000 random QPSK symbols
symbols = pskmod( 10000, 4 )
# create some gaussian noise and add it to the symbols
noise = wgn( length( symbols ), 10, "dBm", 1.0, true )
signal = symbols .+ noise
constellation = plot_constellation( signal )
setattr( constellation, title = "QPSK Modulation" )
display( constellation )
See Examples/8-PSK.jl
using Radio, Winston
# generate random 3 bit data modulate
data = rand( 0:7, 10000 )
# generate 10,000 random QPSK symbols
symbols = pskmod( data, 8 )
# create some gaussian noise and add it to the symbols
noise = wgn( length( symbols ), 10, "dBm", 1.0, true )
signal = symbols .+ noise
constellation = plot_constellation( signal )
setattr( constellation, title = "8-PSK Modulation" )
display( constellation )
See Examples/Kaiser.jl
using Radio, Winston
( M, Beta ) = kaiserord( 0.001, 0.2*π )
window = kaiser( M, Beta )
impulse = firdes( 0.5, window )
p = plot_response( impulseResponse )
display( p )