Git Product home page Git Product logo

digitalcomm.jl's Introduction

Makie.jl

DigitalComm.jl

Run tests

Purpose

This package aims to provide some usefull tools to manipulate digital communication blocks in Julia. Currently, the package support the following elements

  • Bit manipulation
    • Generation of random binary sequence
    • Conversion between binary sequences and octal sequences
    • Non Return to Zero Inverted (NRZI) encoding and decoding
  • Modulation // demodulation
    • Quadrature Amplitude Modulation (QAM) with 4-QAM (QPSK), 16-QAM, 64-QAM and 256-QAM.
    • Hard demapper for the x-QAM formats
    • Max log Soft demapper for the x-QAM formats
  • Single carrier pulses shapes
    • Raised Cosine pulse shape
    • Square root raised Cosine pulse shape
  • Multicarrier Waveform generation and decoding
    • Support of multicarrier Waveforms: OFDM, UF-OFDM, WOLA, BF-OFDM

Installation

The package can be installed with the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run:

pkg> add DigitalComm

Or, equivalently, via the Pkg API:

julia> import Pkg; Pkg.add("DigitalComm")

Documentation

  • STABLEdocumentation of the most recently tagged version.

Changelog

  • v1.2 : Adding NRZ encoding and decoding scheme

digitalcomm.jl's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

digitalcomm.jl's Issues

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Random number generator

May be a good idea to keep random number generation predictable and independent. An example:

using Random

#=
Generate a stream of random bits.
Provide functions that convert a bit stream into a randomQAM symbol stream 
=#

struct BitGenerator 
    rng::MersenneTwister

    function BitGenerator(seed::UInt32)
        rng = MersenneTwister(seed);
        new(rng);
    end
end

function genBits(bgen::BitGenerator, nbits::Int64)
    buffer = rand(bgen.rng, [0,1], nbits);
end


function genBits!(bgen::BitGenerator, buffer::Vector{Int64})
    buffer = rand!(bgen.rng, buffer, [0,1]);
end

bgen = BitGenerator(UInt32(12))
buffer = zeros(Int64, 12)
genBits!(bgen, buffer)
#=
12-element Vector{Int64}:
 0
 1
 1
 1
 0
 ⋮
 1
 1
 1
 0
 0
=#

SCCDMA functionality

Hello there,

Thanks for your wonderful work. This is not an issue, just a question, Is there SCCDMA functionality with this package ? I did lookup the multi-carrier modulation and scfdma examples, is there a example for multiple access technique such as dsss or cdma ?

Missing license

It probably would be a good idea to add a license to this package.

I myself have chosen "MIT" for PhysicalCommunications.jl, but you don't have to go that route.

I understand the potential advantages of going to GPL, but I am not necessarily convinced it will be better in mobilizing people to build good, open-source tools.

Whatever you choose, I think many potential users might like to see a license associated with this code.
(Same thing for UHDBindings.jl)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.