Tutorial 01
Introduction to Verilog HDL
What Verilog is, hardware vs software mindset, concurrency, levels of abstraction (behavioral/RTL/gate), and your first Verilog module.
What is VerilogConcurrencyFirst Module
Tutorial 15
Capstone Project: UART + FIFO
Build a complete UART receiver connected to a synchronous FIFO. Write a self-checking testbench, simulate with Icarus Verilog, and view waveforms in GTKWave.
UART RX FSM
Sync FIFO
Testbench
Integration
Icarus Verilog
Tutorial 14
RTL Design Patterns
Production RTL patterns: pipeline stages, valid-ready handshake, synchronous FIFO with MSB pointer trick, round-robin arbiter, clock enable vs clock gating, 2-FF CDC synchronizer, skid buffer.
pipelinevalid-readyFIFOCDC
Tutorial 13
Finite State Machines (FSM)
Design Moore and Mealy FSMs in Verilog: binary vs one-hot encoding, the 3-always coding pattern, traffic light controller, 101 sequence detector, and UART receiver FSM.
Moore/Mealyone-hot3-alwaysUART
Tutorial 11
System Tasks & Functions
Complete guide to $display, $monitor, $strobe, $time, $random, $readmemh, $dumpfile, $clog2, $signed — every simulator built-in with format specifiers and real examples.
$display$monitor$random$clog2
Tutorial 09
Testbench Writing
Write self-checking testbenches: clock generation, reset sequences, stimulus methods, $display/$monitor/$error, VCD waveform dump, and simulate with Icarus Verilog + GTKWave.
testbench$displayVCDIcarus Verilog
Tutorial 07
if, case, casex Statements
if-else chains → priority mux trees. case → parallel mux. casez wildcards. Latch-free patterns, full_case/parallel_case directives, and FSM output decode examples.
if / elsecase / defaultcasezPriority vs Parallel
Tutorial 04
Operators in Verilog
Arithmetic, bitwise, logical, reduction, shift, conditional (?:), concatenation ({}) and replication operators — each mapped to real hardware with working examples.
ArithmeticBitwiseReductionShiftMux (?:)
Tutorial 03
Data Types in Verilog
wire, reg, integer, real, time, parameter, localparam — the 4-value logic system (0, 1, X, Z), vectors, arrays, and signed vs unsigned arithmetic.
wire / reg4-value logicparameterVectors
Tutorial 02
Module & Port Declaration
Declare modules, define input/output/inout ports, set bit-widths, understand wire vs reg on ports, ANSI vs legacy style, and instantiate modules hierarchically.
module / endmoduleinput output inoutPort WidthInstantiation