GithubHelp home page GithubHelp logo

jimtwotiger / alldigitalradio Goto Github PK

View Code? Open in Web Editor NEW

This project forked from newhouseb/alldigitalradio

0.0 0.0 0.0 562 KB

All Digital Radio Platform written in nmigen targeting FPGAs (for now)

License: Apache License 2.0

Python 14.57% Jupyter Notebook 85.43%

alldigitalradio's Introduction

A toolbox for creating entirely digital radios using nmigen.

This is a collection of functional components used to build digital radios that use direct RF sampling at one bit of precision using SERDES transceivers on FPGAs. It was initially broken out of the onebitbt repository so that components could be reused in other kinds of radios (i.e. low-speed WiFi). it is far from perfect and is expected to evolve fairly quickly. If you want to use it, I'd suggest forking it so that you aren't caught off guard when an interface changes.

Getting started.

First, install dependencies (ideally in a python3 virtual environment)

pip install numpy scipy jupyterlab matplotlib
pip install git+https://github.com/nmigen/nmigen

Pro-tip: if you want to hack on this repository, I'd recomment cloning it and then doing:

pip install -e [path to checkout]

This will allow you to depend on this package from another project and edit this package live without needing to reinstall.

Next (if you have the same TE0714 hardware as I) you can run simple examples like:

python -m alldigitalradio.examples.cw_out te0714 # Transmits a 2.5Ghz constant wave on the SERDES TX
python -m alldigitalradio.examples.loopback te0714 # Transmits whatever is received back out.

Documentation / How To

For the various building blocks, you can refer to the notebooks in the research directory.

  • Downconversion - Conversion from a carrier-modulated signal to baseband (with 1-bit signals)
  • Filtering - Comically simple filtering.
  • Synchronization - Symbol synchronization.
  • Trigonometry - Computing the magnitude of a complext signal.
  • Shift Registers - Shift registers underpinning whitening and CRC checking.
  • Parsing - Not nmigen, but just generic Python utilities to parse and generate arbitrary packets.

FAQ

Something is incorrect!

Please let me know! Twitter (@newhouseb) or GitHub is fine. I've been engineering in a cave and have no professional experience in this space, so I'm sure there are errors in addition to random bugs.

Credits

The Xilinx SERDES implemenation is derived from the migen implementation in liteiclink.

alldigitalradio's People

Contributors

newhouseb avatar

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.