New designs for the new ARVP sonar system.
Go to file
2022-09-10 15:28:58 -06:00
hardware hw/pmod: adjust schematic and start PCB 2022-09-10 15:28:58 -06:00
README.md hw/pmod: change symbol library to local path 2022-09-08 21:11:52 -06:00

Updated Sonar System

Repo Layout

hardware/ - Directory for any hardware designs
  pmod/ - A PMOD interface board, using 4 ADCs with LVDS converters to get data across PMOD
  sonar_symbols.kicad_sym - custom KiCAD symbols I create for hardware

Design Goals

  • 4x 20MSPS channels @ > 8 bits
  • Ethernet data channel
  • Simplified software stack (or at least fewer layers of components)
  • Well-documented

System Architecture

┌─────────────┐
│Main Computer│
└─────▲───────┘
      │
      │
      │
┌─────┴──────┐
│Ethernet PHY│
│      ▲     │           Interface Board (x4)
│      │     │       ┌──────────────────────────────┐
│      │     │       │                              │            ┌─────────────┐
│      │     │◄──────┤ LVDS Serializer◄─────────ADC │◄───────────┤ Hydrophones │
│      │     │       │                              │            └─────────────┘
│      │     │       └──────────────────────────────┘
│    FPGA    │
└─────▲──────┘
      │ Dev Board
      │ or
      │ Custom Board
      │
      │
      │
   ┌──┴───────────────────┐
   │ Peak Detector Board  │
   └──────────────────────┘
               (Temporary)

RTL Architecture

Diagram TODO

The plan is to use LiteX and let it do most of the heavy lifting. Components to generate:

  • Softcore (some RISC-V core)
  • Main memory bus
  • DMA engine
  • Gigabit Ethernet MAC

THis way the only actual RTL to write is the peripheral that interacts with the ADCs, which should be very simple. To do early bringup I can start with a blinky peripheral to demonstrate access to the bus, and then I can keep adding functionality.

Software Planning

Will try to use embassy on RISC-V if I can.

Should make sure to have a debug port available as early as possible.

I will make the interface as generic as possible, so it should be easy to swap out, but I will start by targetting zmq so I can change as little of the software stack as possible.