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 Blackboard is used for implementation and verification. The Blackboard, built around Xilinx’s industry-leading ZYNQ device, includes everything needed to support a wide range of challenging designs. With only a PC and a Blackboard, 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. Introduction to the Blackboard, Vivado, and Verilog

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

  2. Logic Circuit Fundamentals

    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. Combinational Building Blocks

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

  5. Structural Verilog for combinational circuits

    Structural Verilog for combinational circuits

  6. Circuit Delays and Glitches

    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. Latches, Flip-flops, and Registers

    Fundamental electronic memory circuit design and application

  8. Counters, Clock Dividers, and the Seven-Segment Display

    Sequential components including counters and registers, and their applications

  9. Arithmetic Circuits - Adders and Multipliers

    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)

    An introduction to Arithmetic and Logic Units

  11. Introduction to State Machine Design

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

  12. Creating Digital Systems: partitioning, hierarchical design, and structural Verilog

    Fundamentals of digital system design

  13. HDMI Controller

    VGA controllers have been around for a long time, yet they are becoming outdated and HDMI is more common in today's market.