Journal

Cornell's Enigma project: FPGA computation and interface costs

October 9, 2026· 3 min read

The Cornell demonstrator combines C on HPS with Verilog computation; its resource report makes the control interface as important as the accelerator.

Audience and applicability

For engineers dividing a task between an SoC processor and FPGA logic. The project offers a concrete example of selecting the transfer boundary and checking interface cost before planning more parallel compute units.

Where the hardware/software boundary sits

Erica Jiang, Kelvin Resch and Isabella Frank built this Spring 2026 Cornell ECE 5760 project as an educational system inspired by Enigma and the Bombe. The C program on HPS handles user interaction and orchestration; computational work runs in Verilog on the FPGA. Communication uses Avalon PIO. The report describes nested state machines, data structures shared across software stages and lookup tables moved into M10K memory.

Their partition avoids returning every intermediate candidate to the processor. More filtering remains in programmable logic, and the software exchanges larger units of work. The engineering point is the frequency and size of transfers across the processor/FPGA boundary; it is not a general claim that moving a complete algorithm into hardware is always faster.

C control on HPS communicates through Avalon PIO with Verilog state machines and M10K tables, which return results.
Original FPGA.camp diagram of the reported demonstrator. Unimplemented parallel instances and cryptanalytic steps are omitted.FPGA.camp — original technical diagram based on cited primary sources.View full-size figure

The interface has a resource cost

Reported implementation properties
PropertyReported valueCondition
Demonstration clock25 MHzChosen for the final demonstration; no complete frequency analysis
Compute moduleAbout 4,700 ALMThe reported Bombe module named alan
PIOAbout 7,000 ALMThe authors identify it as the largest logic consumer

The report gives approximate resource counts. They are not a new FPGA.camp measurement or a controlled CPU/FPGA speed comparison.

Data source

Lookup arrays initially became large multiplexers. Moving tables to M10K and changing the interface reduced logic use, yet the PIO remained a major part of the design. Additional parallel solvers were a proposed extension: the authors did not finish the top-level manager. Resource arithmetic alone therefore does not establish a working parallel implementation.

What can be carried into another SoC project

  1. Measure the rate and payload size of processor/FPGA exchanges before selecting the hardware partition.
  2. Inspect the implemented cost of control and data interfaces alongside the compute module. A replicated datapath does not remove a shared interface bottleneck.
  3. Check how lookup tables map to memory or logic, then re-run utilization and timing after changing their representation.
  4. Treat proposed parallel units as a separate integration task: scheduling, shared-memory access and result collection still need verification.

Artifacts and historical limits

The primary report links public Google Drive pages for the Verilog and C archives, plus course demonstration videos. We did not establish a project GitHub repository or a reuse license for those archives. Permission printed in the appendix covers the course website and YouTube channel; it is not a general license for republishing the authors' figures. This review uses an original diagram.

The Hackaday title compares the project with Bletchley Park. The authors describe an algorithmic educational implementation rather than a faithful mechanical reconstruction, and explicitly say that the diagonal board was not implemented. The National Museum of Computing identifies the historical Turing–Welchman Bombe as an electromechanical machine and explains the diagonal board's role. The report also leaves full frequency characterization and broader benchmark evaluation unfinished. FPGA.camp has not reproduced the hardware experiment.

Sources

Cornell: primary project report

Source archives, videos and permissions

Verilog archive: Google Drive

C archive: Google Drive

Museum: the historical Bombe

Hackaday: source discovery

More from this section

Article

SourceBack to section