Digital Logic

The Digital Logic course presents the knowledge and skills needed to design and implement digital circuits using Verilog and an FPGA. The course is designed for first-semester university students, but it is suitable for anyone who wants to learn digital design and engineering. It starts from the very beginning, with no prior coursework assumed.

The course uses a series of hands-on design projects to illustrate and reinforce concepts presented in readings and lectures. Each project includes background reading material, homework problems, one or more design projects, and tutorials to introduce new tool features. The projects include required design tasks that reinforce core concepts, as well as optional design challenges that stretch beyond the basics.
The Xilinx Vivado tool is used for design capture, simulation, and syntheses, and the Boolean is used for implementation and verification. The Boolean includes everything needed to support a wide range of challenging designs. With only a PC and a Boolean, students can work at their own pace, and at a time and place of their choosing.

At the end of each week, students present their completed projects to an instructor or assistant. During the presentation, the instructor can ask questions to gauge comprehension, discuss design trade-offs, and provide feedback and guidance as appropriate. Submission forms are provided for recording and submitting scores.
By the end of the course, students are able to design, simulate and implement combinational and sequential logic circuits using behavioral and/or structural Verilog.

We welcome corrections, suggestions, and ideas for new design projects. Please send any comments to


  1. A First Project for the Boolean Board

    Fundamental concepts including basic definitions of voltage, current, ohms law, and other topics related to digital circuit design; design tools and technologies overview.

  2. Basic Logic Circuits

    Digital circuits and related terminology, design abstractions and design methods, implementation technologies, and digital system descriptions.

  3. Combinational Logic Circuits

    Combinational logic circuits: definitions, representations, and minimization methods

  4. Basic Combinational Building Blocks

    Combinational building blocks: Multiplexors, Decoders, Shifters, and Encoders

  5. Structural Verilog for Combinational Circuits

    Structural Verilog for combinational circuits

  6. Delays in Logic Circuits

    Changes to logic gate input signals ('0' to '1' or '1' to '0') can only cause logic gate outputs to change after some amount of time has passed. This module examines the effects of that time delay.

  7. Flip-flops and latches

    Fundamental electronic memory circuit design and application

  8. Counter, Clock Dividers, and the 7-segment Display

    Sequential components including counters and registers, and their applications

  9. Adders, Multipliers, and Comparators

    Arithmetic circuits like adders, subtractors, and multipliers are essential to computing circuits. This module presents the design and application or arithmetic circuits.

  10. Arithmetic and Logic Unit (ALU)

    A Simple ALU

  11. Introduction to State Machines

    An introduction to state machines and sequential circuits, featuring the design of a stopwatch

  12. The Design of a Simple Digital System

    Fundamentals of digital system design