Skip to content

bcrist/vera

Repository files navigation

Homebrew discrete-logic CPU

"I call it Vera" - Jayne Cobb

Specs

  • up to 20 MHz clock
  • 4-stage pipeline (runs 4 threads simultaneously)
  • 32x 32b general purpose registers (stack addressed)
  • 32b ALU (2x L4C381)
  • 32b logarithmic shifter
  • 16b * 16b -> 32b single cycle multiplier (32b * 32b -> 32b in 5 cycles)
  • 32b popcount/extension/truncation unit
  • 32b virtual addresses
  • 16x4x128 entry, 2 way set-associative, software filled TLB
    • 4 KiB pages
  • 64 MiB physical address space (24b address x 32b data)
    • up to 16 MiB SRAM
    • up to 16 MiB I/O space
    • up to 32 MiB pipeline-private, zero-wait SDRAM

Design Constraints

Since everyone in the homebrew CPU community has their own ideas of what kinds of technology are acceptable to use, here are my self-imposed restrictions and allowances:

  • Backplane/card cage construction is preferred
    • This facilitates building and testing smaller parts separately
    • Blinkenlights are cool, but not particularly interesting at MHz frequencies
  • 3.3V LVTTL/LVCMOS signalling is preferred
    • Backplane signals must not exceed 3.3V (ignoring overshoot transients)
    • 5V TTL outputs are allowed within a board, when paired with an 5V-tolerant receiver
    • Differential LVPECL/LVDS signalling is allowed for clocks
    • All boards should locally generate their own Vcc from a common 12V supply distributed by the backplane
  • SMD footprints are fine
    • >= 0.5mm pitch for QFP/QFN/(T)(S)SOP
    • >= 0.8mm pitch for BGA
  • Modern SRAM, dual-port SRAM, and SDRAM is fine to use
  • Dedicated adder/multiplier/ALU ASICs are allowed
    • But "not quite microprocessor" parts like Am2901 or Am29116/7 are not allowed (except in peripheral devices)
  • FPGAs are not allowed
    • Designing with HDLs feels more like work than fun for me, and all of the FPGA toolchains make me want to pull my hair out
  • CPLDs and other programmable logic are allowed only if I have created the entire programming toolchain myself
    • Designing for CPLDs (without HDLs) is extremely similar to designing for discrete logic, but simplifies board layout significantly, and often provides better timing characteristics
  • Microcontrollers or other ASICs are allowed for bootstrapping or debugging purposes, or within peripheral devices
    • Absolutely none within the data or control paths of the CPU itself

About

Homebrew discrete logic CPU

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •