strix/README.md

50 lines
1.7 KiB
Markdown
Raw Normal View History

2024-07-21 18:23:20 +03:00
# STRIX
### Satellite True Random Information eXtractor
A portable wireless True Random Number Generator built on an Arduino MKR Vidor 4000.
## Planned Design
Entropy comes from FPGA ring oscillators whose sampled timing jitter is XOR-combined into output bits, with no pseudo-random post-processing. A SAMD21 serves the results over WiFi and USB.
- Separate stream per entropy source
- Raw and processed output modes, with a von Neumann extractor that can be toggled per output path
- On-device health tests (NIST SP 800-90B repetition count and adaptive proportion)
- Live statistics: bias, z-score, random walk and autocorrelation
- Configurable random-walk / majority-vote bias amplifier
2024-07-21 18:39:00 +03:00
2024-07-21 18:51:16 +03:00
## Set Up Dev Environment
Windows:
1. Install Arduino IDE from here or via chocolatey: `choco install arduino`
2. Install [Intel Quartus Lite](https://www.intel.com/content/www/us/en/software-kit/825278/intel-quartus-prime-lite-edition-design-software-version-23-1-1-for-windows.html). In the list of devices select `Cyclone 10 LP device support`
## FPGA Development
2024-07-27 17:05:36 +03:00
- Intel Quartus
- Open Project > select `strix.qpf` from the `fpga/src` directory in this repo.
## MCU Development
- Arduino IDE
- Boards Manager > Install 'Arduino SAMD Boards' (search for 'Vidor 4000')
- Library Manager > Install
- VidorPeripherals
- WiFiNINA (1.8.5, not higher)
- Open Project > `strix.ino` from the `arduino/strix` directory in this repo
2024-07-21 18:51:16 +03:00
## TODO
- Implement ring-oscillator entropy generators on the MKR Vidor 4000 FPGA
- Fetch random numbers from the FPGA via SPI
2024-07-21 18:51:16 +03:00
- Serve random numbers via USB
- Make Vidor pairable via Bluetooth/Wifi
- serve randomness wirelessly
- battery pack
- 3D case
---
2024-07-21 18:39:53 +03:00
## [Development Notes](NOTES.md)