Clock & tick
A clock edge is the moment state updates. One tick here means one modeled edge, not a measured duration on a board.
FPGA thinking for software developers
Describe circuits that work together, and learn how their timing changes the way you build software.
Explore streaming data, chip-level parallelism and software-controlled experiments, then study how inference and learning systems divide work between circuits and software. Begin in your browser; a board can come later.
Start the foundationsCIRCUITS TO SYSTEMS · READ, PREDICT, EXPLAIN
A circuit describes what is connected and how state changes. These lessons build the vocabulary for the experiment below.
These are planning estimates, not measured completion times. Shorter routes have narrower outcomes. All lessons remain open, and optional deep dives can take longer.
CONCEPTUAL EXPERIMENT · ABOUT 10–15 MINUTES
A signal source keeps producing events while software reads more slowly. Predict what a small queue can retain, then inspect every edge.
A clock edge is the moment state updates. One tick here means one modeled edge, not a measured duration on a board.
The trigger starts recording at a chosen tick. Each later pulse inside the capture window attempts to store one event.
A first-in, first-out queue sends the oldest record first. Ours has a fixed capacity. When full, it drops the newest arrival.
Read-before-write and drop-newest are choices in this original teaching model. They are not universal FPGA behavior.
3 / RUN & INSPECT
The waveform and result appear after you commit. A prediction is a hypothesis, not a score.
Commit your prediction to start the clock.
Scroll the waveform horizontally for later ticks. The event log lists every edge.
Stepping and replay change a JavaScript model. No HDL simulator or board is connected.
| Tick | Timestamp | Action | Pending |
|---|
Make a new prediction with the same event source and capture window. Change only the FIFO capacity or host read interval to keep every event. Use the log to explain which edge your change fixes.
A missing sequence number is evidence that a record did not arrive. The drop counter narrows the explanation in this model. A real connection can also lose or corrupt data elsewhere.
Pause host reads with interval 0 and lengthen the capture. Why does increasing capacity postpone overflow rather than remove the rate mismatch?
APPLY THE IDEAS · FIRST ATTEMPTS ARE RETAINED
Use the ideas of bounded storage, counter width and accepted transfers. Hints are optional and recorded. These checks do not lock the course.
Choose an open-ended challenge, or download the 15 foundation exercises and nine timing, crossing and memory challenges, plus six application challenges and six RL, verification and agent challenges, plus four inference and feasibility challenges. Read the practice and fast-route guide.
DESIGN, TRACE & EXPLAIN · UNGRADED
The transfer tasks offer a fast route if the fundamentals are familiar. Write your answer before consulting a reference. Saved responses can be exported for review; this page does not grade prose.
The workbook questions are loading. The download above is available if they cannot load.
THE COURSE MAP
Each module shows its readiness. Physical projects are optional companions.
KNOW WHAT YOUR EVIDENCE ESTABLISHES
The browser executes our declared rules. It helps reason about state, ordering and bounded storage. It cannot validate a hardware description.
A simulator executes Verilog or SystemVerilog against a testbench. Python and cocotb can drive checks. Those tests still depend on their coverage and assumptions.
Tools map logic onto FPGA resources and check constraints. A passing behavioral test does not establish resource fit or timing closure.
A board test exercises the actual clock, pins, interface and connected hardware. Nexys Video revision, cables, Windows tools and physical operation remain unverified here.
Lessons, code and diagrams are original teaching material informed by these references. Links are not claims that a source implements this model. No third-party project code is bundled.
Thanks to rothej for sharing public FPGA work that helped inform this course, including the FPGA CI/CD toolchain demo and its Python-based verification approach.