50 lines
No EOL
1.7 KiB
Markdown
50 lines
No EOL
1.7 KiB
Markdown
# 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
|
|
|
|
## 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
|
|
|
|
- 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
|
|
|
|
|
|
## TODO
|
|
|
|
- Implement ring-oscillator entropy generators on the MKR Vidor 4000 FPGA
|
|
- Fetch random numbers from the FPGA via SPI
|
|
- Serve random numbers via USB
|
|
- Make Vidor pairable via Bluetooth/Wifi
|
|
- serve randomness wirelessly
|
|
- battery pack
|
|
- 3D case
|
|
|
|
---
|
|
|
|
## [Development Notes](NOTES.md) |