Code Monkey home page Code Monkey logo

amaranth_twstft's Introduction

Using Amaranth to implement TWSTFT Signal generation

Two Way Satellite Time and Frequency Transfer (TWSTFT) is a procedure that uses satellite communication to share a time and a frequency information in the form of a microwave phase-modulated carrier. As described in this seminar, spectrum spreading using a pseudo random sequence phase-modulating the carrier is used for spreading the spectrum and allows for recovering both time (and possibly frequency) on the receiver side. The input reference signals are assumed to be 10MHz and the rising edge of a 1-Pulse Per Second (1-PPS), the chip rate to be 2.5Mb/s and the output intermediate frequency 70 MHz.

The goal here is to implement the whole radiofrequency synthesis chain on an FPGA board.

To implement such communication, we will here make use a Python library Amaranth. This python package allows to describe an FPGA architecture with python idioms that make the task much easier than with other languages like Verilog or VHDL. This library gives us the possibility to manage signals and registers in a quite intuitive way. It also abstracts a lot of FPGA programming concepts that are not that interesting for us in the context of TWSTFT.

While the practical implementation focuses on the Zeboard fitted with a Zynq7020 System on Chip, using Amaranth should make the system portable and aims at avoiding proprietary synthesis tools (Vivado for the Xilinx parts).

You may find additonal tutorials about the use of Amaranth in this playlist and their associated slides here In this documentation, explanations behind the amaranth implementation of TWSTFT and the Amaranth source code associated are given :

  1. Installation guide for amaranth and cie: if you never programmed on FPGA boards before, this may be useful for becoming familiar with the opensource toolchain used in this project.

  2. Amaranth TWSTFT usage: How to synthese code for an FPGA with parameters configurations.

  3. PRN generation: Pseudo Random Noise (PRN) generation for spreading the spectrum as needed for accurate timing and differentiating the emitters (CDMA)

  4. Synchronizing PRN with a 1-PPS signal: making the noise repeat exactly every second to create our 1 Pulse Per Second (1-PPS) signal

  5. Carrier signal generation: creating the electromagnetic signal that will carry the information (intermediate frequency to be upconverted for a satellite link)

  6. Mixing Signals: mixing the carrier with our 1-PPS to share the frequency information. This is the point where an actual physical signal is generated: this documentation includes the pinout for connecting the input 20 MHz reference clock, input 1-PPS and getting the modulated output 70 MHz.

  7. Next level, QPSK modulation: stepping up the PSK modulation to transmit twice as much information

  8. Demodulating the N-PSK modulated signal using GNU Radio: steps needed to demodulate the phase-modulated signal using GNU Radio or GNU/Octave

  9. Merging the Amaranth generated Verilog code with the Ettus Research B210 software

  10. Merging the Amaranth generated Verilog code with the Ettus Research X310 software

  11. Acquistion and signal processing with GNUradio

  12. Quick description of the current version

A similar proprietary development unrelated to this work is under way as described at http://www.eltvor.cz/elttt21.html as part of the ESA contract https://navisp.esa.int/project/details/108/show

amaranth_twstft's People

Contributors

jmfriedt avatar trabucayre avatar nwaitdev 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.