No description
Find a file
2026-10-25 13:23:27 +02:00
arduino feat: add 16-ring bank, sampled XOR, pair capture and frequency counter (FPGA v2) 2026-10-25 13:03:53 +02:00
fpga feat: add four 90-ring entropy generators with spatial and temporal XOR (FPGA v3) 2026-10-25 13:23:27 +02:00
nix chore: add Quartus Prime Lite toolchain via nix flake in devbox 2026-10-25 12:09:56 +02:00
tools feat: add four 90-ring entropy generators with spatial and temporal XOR (FPGA v3) 2026-10-25 13:23:27 +02:00
.gitignore feat: add capture sketch, Vidor image tool and jitter analysis script 2026-10-25 12:30:16 +02:00
devbox.json feat: add four 90-ring entropy generators with spatial and temporal XOR (FPGA v3) 2026-10-25 13:23:27 +02:00
devbox.lock feat: add FPGA raw jitter capture design with SPI register interface 2026-10-25 12:25:25 +02:00
LICENSE Create LICENSE 2024-07-21 18:24:50 +03:00
NOTES.md fpga project set up 2024-07-21 18:38:16 +03:00
README.md docs: describe planned ring-oscillator design in README 2026-10-25 11:56:34 +02: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

Set Up Dev Environment

Windows:

  1. Install Arduino IDE from here or via chocolatey: choco install arduino
  2. Install Intel Quartus Lite. 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