Git Product home page Git Product logo

fibreopticfpga's Introduction

Fibre Optic FPGA

We built (in a small team) a 10Mbps fibre optic link for a CUED 3rd year project. The other two members worked mostly on the analogue electronics side; on the digital side, we had an FPGA at each end doing

  • Line coding (IBM 8b/10b) to aid clock recovery and remove data DC bias
  • Link idling/symbol reframing with 8b/10b comma sequences
  • Digital clock and data recovery
  • Simple parallel bus + FIFO interface connected to TX and RX modules, exposed on IO pins

The chosen link application was CCTV. A Raspberry Pi encodes the output of a camera as 1080p h.264 video, in real time. A simple userspace program bitbashes this into the FPGA's TX FIFO. The process is reversed at the other end of the link, and live 1080p video is displayed via HDMI.

Directories

  • numato
    • Documentation and programming utilities for the FPGA dev boards, so I can get started quickly after git cloneing from a new machine.
  • raspberry_pi
    • Source for userspace program which connects a stdin/stdout to the RX/TX FIFO via GPIO. Busy wait is used to implement the flow control, so this requires a multicore Pi to work well.
    • Can use a single bash command e.g. dd if=/dev/urandom | tee test_vector.bin | ./bitbash to pipe any program's output onto link. This is great for testing.
  • src
    • Verilog source for all the non-IP FPGA hardware.
  • tx_proj, rx_proj
    • Xilinx project/configuration files, Xilinx IP files (e.g. PLLs and FIFOs), FPGA configuration bitstreams, and any temp files I didn't manage to cover with .gitignore.
    • Both projects share the same src directory, to facilitate testbenches involving both RX and TX hardware.

fibreopticfpga's People

Contributors

wren6991 avatar

Watchers

James Cloos 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.