Skip to content

A native Julia digital communications package

License

Notifications You must be signed in to change notification settings

umireon/Radio.jl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Radio.jl

A digital communications package for the Julia language.

Installation

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")

Status

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.

Proposed Structure

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

Examples

QPSK Modulation

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 )

QPSK

8-PSK Modulation

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 )

8-PSK

FIR Filter Design With a Kaiser Window

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 )

Kaiser

About

A native Julia digital communications package

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%