Giter VIP home page Giter VIP logo

rpi_rxadc's Introduction

rpi_rxadc

An SDR for Raspberry Pi

Hardware Picture

What is it?

This is a project to explore the feasibility of using an off-the shelf Raspberry Pi single-board computer (SBC) as the basis for an FPGA-based Software Defined Radio (SDR) system. The goal is to eventually build a single add-on "Hat" for the Raspberry Pi that would provide wide-band receive capability with a reasonable feature set and good sensitivity.

System Architecture

The system architecture is shown in the diagram below

System Architecture

If VHF operation is desired, 50-ohm VHF RF input from an antenna arrives at the R820T2 breakout board where it is downconverted to a 5MHz IF, otherwise for HF operation a 0-20MHz signal is driven into the RXADC_14 board where it is digitized and passes to the icehat FPGA board. In the FPGA, the HF or VHF IF signal is tuned to baseband and then filtered and decimated with CIC and FIR filters. The final sampling rate is selectable - either 88.2kHz, 48kHz or 44.1kHz.

By default the tuned, filtered and decimated I & Q signals are output through a pulse-density modulator (PDM) to yield a 1-bit digital signal that can be converted to analog by means of a simple 1-pole low-pass filter. Alternatively, the PCM I & Q signals can be transmitted to the Raspberry Pi host computer via the I2S port, processed through user-determined demodulation algorithms and if desired sent back to the FPGA over the I2S bus and the final demodulated audio output to analog by the PDM conversion.

At power-up the FPGA is unconfigured and in a quiescent state. The Raspberry Pi loads the gateware bitstream into the FPGA over the SPI bus, using several GPIO pins to manage the process (reset, configuration selection and status). Once the gateware is running, the host may use the same SPI port to communicate with it, checking ID and status, as well as managing the internal settings such as tuning frequency, output muxing, etc.

The I2S and I2C interfaces between the FPGA and Raspberry Pi emulate a commonly use WM8731 audio codec, including many of the internal write-only registers that control such things as sample rate, sub-function power control and audio output volume. This "masquerade" is required to allow the use of standard Linux audio drivers that are already set up for the WM8731 codec. Faking a standard codec protocol greatly simplifies the host-side software development effort.

Hardware

Read more about the hardware here: https://github.com/emeb/rpi_rxadc/tree/master/hardware

Gateware

Read more about the FPGA design (gateware) here: https://github.com/emeb/rpi_rxadc/tree/master/gateware

Software

Read more about the software design here: https://github.com/emeb/rpi_rxadc/tree/master/software

rpi_rxadc's People

Contributors

emeb avatar

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  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

5l1v3r1 mfkiwl

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.