Specification
IntermediateRead the technical specification and design the complete VHDL. GHDL simulation validates your code.
Synchronous FIFO Controller
Implement a synchronous FIFO controller managing read/write pointers, full/empty flags and fill level.
AXI4 Master — Read Channels
Implement a simple AXI4 master managing the two read channels: Read Address (AR) and Read Data (R).
AXI-Lite Slave — Register Map
Implement an AXI-Lite slave with three 32-bit read/write registers, managed by two independent state machines.
FSM — Pedestrian Light
Implement a 3-process state machine for a pedestrian light with integrated timer and per-state duration management.
LED Controller — Moore State Machine
Implement a 3-process Moore state machine that cycles 4 LEDs in sequence on command.
N-bit Adder — Ripple Carry
Implement an N-bit ripple carry adder using only logical operators, without any arithmetic library.
Bidirectional Counter with Parallel Load
Implement a generic bidirectional counter with parallel load, enable, and asynchronous reset.
Configurable Debouncer
Implement a debouncer circuit with configurable stabilization time via generics.
8-to-3 Priority Encoder
Implement an 8-to-3 combinational priority encoder that encodes the position of the highest-priority active bit.
4-bit Johnson Counter
Implement a 4-bit Johnson counter with synchronous reset. The counter goes through a sequence of 8 states before returning to its initial state.
8-bit Barrel Shifter
Implement an 8-bit barrel shifter performing a logical left shift in 3 combinational stages (shift-by-4, shift-by-2, shift-by-1).
W1C Register (Write-1-to-Clear)
Implement a W1C register: bits are set via i_set_en and cleared by writing 1 via i_clr_en.
1µs Tick Generator
Generate a 1µs periodic pulse from a system clock with known period.
N-bit Counter with Overflow Output
Implement a generic synchronous N-bit counter with enable, asynchronous reset and overflow indication.
8-Bit Comparator
Implement an 8-bit combinational comparator that compares two unsigned numbers and indicates their relationship.
4-Bit Adder-Subtractor
Implement a 4-bit combinational block selectable between addition and subtraction via a control signal.
Cascadable N-Bit Comparator
Implement a generic cascadable comparator with cascade inputs for connecting multiple stages.
8-Bit Register with Load Enable
Implement an 8-bit register with parallel load enable and asynchronous reset.
4-Bit Bidirectional Shift Register
Implement a 4-bit shift register that can shift left, shift right, parallel load, or hold its value.
8x4 ROM
Implement an 8-word by 4-bit read-only memory (ROM), purely combinational.
16x4 ROM with Constant Array
Implement a 16-word by 4-bit ROM using a VHDL constant array.
8x4 Synchronous RAM
Implement an 8-word by 4-bit RAM with synchronous write and asynchronous read.
16x4 Synchronous RAM
Implement a 16-word by 4-bit RAM with synchronous write and asynchronous read.
8-Deep 8-Bit LIFO Stack
Implement an 8-deep, 8-bit LIFO stack with push, pop, and empty/full flags.
8x8 Dual-Port RAM
Implement an 8-word by 8-bit dual-port RAM: independent write and read ports.
4x8 Register File
Implement a 4-register, 8-bit register file with 1 write port and 2 read ports.
4-Bit Carry Lookahead Adder
Implement a 4-bit Carry Lookahead Adder (CLA).
8-Bit CLA Adder (2 Cascaded Blocks)
Implement an 8-bit CLA adder by cascading two 4-bit CLA blocks.
4-Bit Barrel Shifter
Implement a 4-bit, 2-stage barrel shifter that can logically shift left by 0 to 3 positions.
Simplified 8-Bit Floating-Point Adder
Implement an adder for a simplified float format: 1 sign bit, 3 exponent bits (bias 3), 4 mantissa bits (implicit 1.xxxx).
Simplified 8-Bit Floating-Point Multiplier
Implement a multiplier for the same simplified float format: 1 sign bit, 3 exponent bits (bias 3), 4 mantissa bits (implicit 1).
7-Bit Parity Generator
Implement an even parity generator: generates a parity bit for 7 data bits, and verifies an 8-bit word (7 data + 1 parity).
8-Bit Population Counter (Popcount)
Implement a population counter: count the number of '1' bits in an 8-bit vector.
4-Channel Priority Multiplexer
Implement a priority multiplexer: 4 data channels of 4 bits with request bits. The highest-priority active channel is selected.
CDC Handshake Synchronizer
Implement a 4-phase handshake synchronizer to transfer a data bus between two independent clock domains.