
An introduction to the concept of digital versus analog.
Learn how boolean gates and timing diagrams drive hdl coding for fpga design, including inverter, and, or, xor gates, and the roles of truth tables and karnaugh maps.
Explore a traffic light example to illustrate logic operations using sensors and boolean equations, showing how green and red signals are controlled by logic gates and assignment in code.
Explore how a latch acts as a memory element via set-reset feedback, sustaining output after inputs change. Apply boolean expressions and or gates to traffic lights logic.
Explore enabled latches and series d flip-flops to implement time-stepped, rising-edge pulse operations that reset a traffic light after a four-second timer.
Examine clocked registers and latches via a rising-edge D flop in VHDL. Explore conditional when statements, sensitivity lists, and the process structure that implements a D flop.
Explore register-to-register transfers by clocking outputs into inputs, learn about setup and hold times, and analyze set-reset latches and set clock latches in FPGA clocked designs.
Explore coding a clock-enabled set-reset flop, using elsif logic and an else default, to gate the clock and manage propagation delays in a D flip-flop design.
Explore binary arithmetic and representations, group four-bit binary values to represent numbers, identify the least and most significant bits, and learn hex notation with 0x and a through f.
Explore shift registers, counters, and vectors, and distinguish 1k from 1K in binary data. Learn to count with six-bit counters, use signal buses, and implement simple addition in HDL.
Explore designing a 5-second traffic light counter using a binary counter, edge detection, and terminal count logic; implement with V HDL, XOR-based stages, and hex/decimal counting.
Design a counter-based timer for a traffic light system, defaulting the main highway to green, activating the north-south timer on sensor input, and using an east-west timer to regulate cycles.
Explore state machines, the core of digital design, including finite state machines and their state-driven transitions, and how outputs depend on state or on state and inputs.
Explore using case statements to implement state machines, replacing if-then chains. Implement a counter with enable and clear, using multi-bit vector signals and actions that can be several statements.
Explore how to implement a traffic light controller as a state machine using a case statement, with a multi-purpose counter timer managing idle, yellow, and green phases.
Learn to implement a traffic light controller with a two-block state machine and a multi-purpose counter timer, using labeled HDL states to drive east-west and north-south signals.
Learn how FPGAs serve as flexible programming platforms from RTL coding and HDL to IP blocks, and compare soft cores with hard microprocessors in system on a chip design.
Learn how to write VHDL code with plain text files and a text editor, covering header and entity declarations, architecture, and editor features like syntax highlighting and auto indentation.
Explore the structure of a VHDL file by examining entities, architectures, port declarations, and vector signals. Learn how unsigned arithmetic, type conversions, and HDL libraries enable practical timer counter designs.
Learn modular design by using a pulse generator and toggle block to debounce a push button and implement falling-edge detection on an FPGA, with hierarchical component instantiation.
Explore fpga design through simulation by building a test bench with an entity and architecture, applying stimulus to the unit under test and observing outputs.
Create a simulation testbench that generates stimulus signals to drive the FPGA design, instantiate the top level component, and produce a 10 MHz clock for verification.
Explore how Modelsim simulates digital designs with constants and stalling process statements, using a test bench and notepad plus plus to verify fpga-ready results.
Learn to use ModelSim with GUI and script workflow, set up folders, add source files, compile, and simulate to generate waveforms from test benches.
Explore how memory stores values in HDL, using a 3-bit address for eight entries and 8-bit data, including clocked single-port and dual-port RAMs and fifo memories.
Explore a simple ram built from eight enabled registers with address decoding and a write enable, and compare register-based memory to array memory using a while-loop test bench.
Explore single- and dual-port RAM design in v HDL, including address integer conversion and non-blocking reads. Discover how a tri-state buffer enables a shared bus with read and write enables.
Explore how a circular buffer implements a fifo by storing audio samples in a dual-port memory and wrapping addresses to read out in first-in, first-out order.
Explore memory-mapped buses, focusing on the Avalon bus and AXI-style interfaces, including master/slave roles, address and data widths, wait/burst signals, and byte enables, plus DMA and scatter-gather data transfers.
Explore serial interfaces replacing parallel buses with a single bidirectional line, covering RS-232 and UART, asynchronous byte-by-byte transmission with start, stop, LSB-first data, baud rate, and parity.
Compare I2C and SPI serial interfaces, detailing master-slave transactions, start conditions, acks, and bi-directional data, then explore timing, clocking, and FPGA high-speed transceivers.
Explore digital signal processing concepts from sampling real-world signals to implementing DSP blocks in FPGAs, including multipliers, adders, and binary shifts with two's complement signed numbers.
Single-wire serial interfaces must be latched at the receiving end, and this lecture explains how a virtual clock can be carried and recovered for the purpose.
VHDL is a powerful programming language for developing FPGAs, but is useless without an in-depth understanding of digital design. This course provides the student a comprehensive working knowledge of both of these in parallel. VHDL describes digital logic, and, as such, is an ideal vehicle for developing a deep understanding of the functional power available in modern FPGA devices.