The LibFPGA blog

Practical FPGA design, one problem at a time: FIFOs and clock domains, timing closure, RISC-V soft cores, and the tools that make the hard parts routine.

Ring oscillators on FPGAs: free clocks, true randomness, and a security foot-gun

A ring oscillator is the simplest circuit that refuses to sit still. Wire an odd number of inverters into a loop and there is no set of logic levels that keeps every gate happy: whatever value you pick, it propagates around the ring, comes back inverted, and forces the first gate to flip. The nodes chase each other around forever, and the loop oscillates all by itself, with no crystal, no clock input, nothing but gates and the time it takes a signal to travel through them.

Jul 7, 2026 · 9 min read

Frequency dividers: how to make a slower clock (and when not to)

Almost every FPGA design needs more than one rate. The board gives you a 100 MHz crystal, but your UART wants 115200 baud, your SPI display wants 25 MHz, your heartbeat LED wants about 1 Hz, and your debounce logic wants a tick every millisecond. A frequency divider is the small piece of logic that turns one fast clock into these slower rates. It is one of the first things you build, and, as we will see, one of the first things people build wrong.

Jul 7, 2026 · 8 min read

How to cross a clock domain without corrupting your data

Every non-trivial FPGA design ends up with more than one clock: a 100 MHz core and a 125 MHz Ethernet MAC, a fast datapath and a slow control bus, an ADC clock and everything else. The moment a signal made in one clock domain is read in another you have a clock domain crossing (CDC), and if you wire it up naively it will work in simulation, pass on the bench, and then fail in the field one time in ten thousand. Here is why, and here is the small set of patterns that make it safe.

Jul 6, 2026 · 8 min read

The timing-closure triage checklist: what to do when slack goes negative

The timing report says -0.42 ns and the demo is Friday. Timing closure

Jul 3, 2026 · 3 min read

FPGAs in high-frequency trading: the anatomy of a nanosecond

High-frequency trading is the one industry where FPGAs aren't the

Jul 3, 2026 · 6 min read

FPGA reset strategies: async assert, sync deassert, and when to skip reset entirely

Reset looks like the simplest signal in a design and behaves like one of

Jul 3, 2026 · 3 min read