Ian Kigen
VLSI and Digital Design Engineer
IC design engineer working across digital RTL, verification, and VLSI implementation, from Verilog to silicon.
About Ian Kigen
Focus
📚 Education Contributions
Building a Mini CPU
Design a tiny instruction set and build the processor that executes it. Encoding instructions, the datapath with a register file and ALU, the fetch, decode and execute control FSM, and hand-assembling a program loaded with readmemh. Verified running a real loop.
Published: June 19, 2026
Building MCU Peripherals
Build the blocks a microcontroller hands you for free. A PWM generator from a counter and a comparator, a UART transmitter and receiver with baud-rate division and mid-bit sampling, and an SPI master built from a shift register. All verified in simulation.
Published: June 19, 2026
First Design on a Real FPGA
Take a design off the simulator and onto hardware. What is inside an FPGA, the open toolchain from Verilog to bitstream, pin constraint files, and reading a timing report. Blink an LED and count debounced button presses on a real board.
Published: June 19, 2026
FPGA and MCU Co-design
Partition a real system between an FPGA and a microcontroller. Comparing FPGAs, MCUs and DSPs, soft cores and system-on-chip, worked partitioning of a motor-control example, and building an SPI register interface between the two, with the honest case for not using an FPGA at all.
Published: June 19, 2026
From FPGA to ASIC with Sky130 and LibreLane
Take your Verilog all the way to a manufacturable chip. The ASIC flow from RTL through synthesis, floorplan, place and route, to GDSII, using the open Sky130 process design kit and LibreLane. Push an earlier design through the flow and read the results honestly.
Published: June 19, 2026
Memory, FIFOs, and Clock Domain Crossing
Store and buffer data inside an FPGA, and move it safely between unrelated clocks. Inferring block RAM, building a synchronous FIFO, why metastability makes one flip-flop insufficient, the two-flop synchroniser, and a Gray-coded dual-clock FIFO verified across two unrelated clocks.
Published: June 19, 2026
Simulation and Testbenches
Prove a design works before you build it. Testbench structure, applying stimulus, self-checking assertions, dumping waveforms, and reading them in GTKWave. Write self-checking testbenches for the adder and counter from Lesson 1.
Published: June 19, 2026
State Machines in Verilog
Design circuits that remember where they are. Finite state machines, Moore versus Mealy outputs, binary and one-hot encoding, and the two-block coding style. Build and verify a traffic-light controller, and fix the timing bug almost everyone writes first.
Published: June 19, 2026
Verilog Fundamentals
Write your first Verilog modules and understand what they become in hardware. Ports, wire versus reg, the three modelling styles, combinational and sequential logic, hierarchy, and the blocking versus non-blocking rule. Build logic gates, a 4-bit adder, and a counter, then simulate them.
Published: June 19, 2026
Sensors and Signal Conditioning
Build complete analog signal conditioning chains for real-world sensors. Learn thermistor, LDR, and strain gauge circuits. Understand the Wheatstone bridge, instrumentation amplifier, and how to prepare sensor signals for MCU ADC input.
Published: March 10, 2026
Oscillators and Timing Circuits
Build oscillator and timing circuits using the 555 timer IC. Learn astable and monostable modes, calculate frequency and duty cycle, understand crystal oscillators, and drive a buzzer at a precise frequency.
Published: March 9, 2026
Filters and Frequency Response
Design low-pass, high-pass, and band-pass filters using RC circuits. Calculate cutoff frequencies, understand Bode plots, and build an anti-aliasing filter for ADC inputs. Learn first-order and second-order filter behavior.
Published: March 8, 2026
Power Supply Design
Design reliable power supplies for microcontroller projects. Compare linear and switching regulators, understand LDO dropout voltage, calculate ripple and decoupling requirements. Build a 3.3V regulated supply from a 9V battery.
Published: March 7, 2026
Operational Amplifiers
Master op-amp configurations: inverting, non-inverting, buffer, comparator, and differential amplifier. Build a signal conditioning circuit that amplifies a thermistor signal for ADC input on a microcontroller.
Published: March 6, 2026
Transistors as Switches and Amplifiers
Learn how BJT and MOSFET transistors work as switches and amplifiers. Drive motors, relays, and high-power LEDs from low-current MCU GPIO pins. Understand saturation, cutoff, and the active region.
Published: March 5, 2026
Diodes, Rectifiers, and Protection Circuits
Understand diode operation, forward and reverse bias, rectifier circuits, Zener voltage regulation, and flyback protection. Build a half-wave rectifier and test flyback diode protection on a relay circuit.
Published: March 4, 2026
Capacitors, Inductors, and RC/RL Circuits
Understand capacitors and inductors as energy storage elements. Learn time constants, charging and discharging curves, and RC/RL circuit behavior. Build an RC filter on a breadboard and measure the time constant.
Published: March 3, 2026
Voltage, Current, and Resistance
Learn the three fundamental quantities of electronics: voltage, current, and resistance. Master Ohm's law, Kirchhoff's laws, power dissipation, and series/parallel resistor networks. Build voltage dividers and LED circuits on a breadboard.
Published: March 2, 2026
Introduction to Microcontroller Architecture
Explore Von Neumann and Harvard architectures, the CPU pipeline, ALU, registers, stack, program counter, and interrupt vector table. Trace what happens when you write int x = 5 down to the assembly level. Understand why GPIO registers live at specific memory addresses.
Published: March 10, 2026
ADC and DAC Fundamentals
Understand successive approximation ADC, resolution, quantization error, and the Nyquist sampling theorem. Explore R-2R ladder DACs and PWM as a pseudo-DAC. Learn what happens inside the 12-bit ADC of your STM32 when it converts an analog voltage.
Published: March 8, 2026
Bus Architecture and Communication Interfaces
Understand SPI, I2C, and UART at the signal level. See clock polarity, data framing, acknowledge bits, and baud rates. Learn the difference between parallel and serial buses and how each protocol works at the wire level.
Published: March 7, 2026
Memory: SRAM, Flash, EEPROM
Understand how SRAM cells store your variables, how Flash uses floating gates to hold your program, and how EEPROM provides byte-level non-volatile storage. Explore address buses, data buses, read/write cycles, and memory maps.
Published: March 6, 2026
Counters, Timers, and Frequency Dividers
Build ripple counters, synchronous counters, up/down counters, and frequency dividers with 74HC series ICs. See how the timer/counter peripherals inside every microcontroller work at the gate level.
Published: March 5, 2026
Flip-Flops, Latches, and Registers
Build SR latches, D flip-flops, JK flip-flops, shift registers, and parallel load registers. Drive 8 LEDs from 3 MCU pins using the 74HC595 shift register. Understand how SPI and serial communication work at the hardware level.
Published: March 4, 2026
Combinational Logic: Multiplexers, Decoders, Adders
Build multiplexers, demultiplexers, decoders, encoders, and binary adders from logic gates. Understand how these circuits form the foundation of address decoding, data routing, and arithmetic inside every microcontroller.
Published: March 3, 2026
Logic Gates and Boolean Algebra
Build AND, OR, NOT, NAND, NOR, and XOR circuits with 74HC series ICs on a breadboard. Verify truth tables with LEDs. Apply De Morgan's theorems and simplify Boolean expressions. See how bitwise C operators map directly to physical gates.
Published: March 2, 2026
Binary, Hex, and Number Systems
Learn binary counting, hexadecimal notation, BCD, and two's complement signed integers. Convert between number bases and read MCU register values in hex. Understand what each bit means when you write to a GPIO register.
Published: March 1, 2026