Added README

This commit is contained in:
David Lenfesty 2022-08-05 14:59:56 -06:00
commit d0c37c11ca

68
README.md Normal file
View File

@ -0,0 +1,68 @@
# Updated Sonar System
## Design Goals
- 4x 20MSPS channels @ > 8 bits
- Ethernet data channel
- Simplified software stack (or at least fewer layers of components)
- Well-documented
## System Architecture
<!-- made with asciiflow.com -->
```
┌─────────────┐
│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 (microwatt probably, I'm feeling a bit hipster)
- 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
I should be able to target the microwatt with Rust, hopefully do some embassy work and
then that gives me a good dev environment.
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.
[Reference for custom target triple](https://docs.rust-embedded.org/embedonomicon/custom-target.html)