Chargement…
Chargement…
Start from a technical specification and design the complete VHDL, validated by GHDL simulation.
Exercises
69
Done
0
Total
69
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.
5-tap FIR Low-pass Filter
Implement a 5-tap direct-form FIR low-pass filter with line buffer and fixed coefficients.
4-Stage Pipelined 5x5 Multiplier
Transform a 5x5 combinational multiplier into a 4-stage pipelined architecture.
Hamming (7,4) Corrector
Decode a Hamming (7,4) word, compute the syndrome and correct one single-bit error.
4-Bit PISO Register
Implement a Parallel-In Serial-Out register with parallel load and controlled shifting.
Synchronous Modulo-6 Counter
Design a synchronous counter that cycles through states 0 to 5 with enable and terminal-count pulse.
time_of_day Clock with Record
Create a `time_of_day_pkg` package, a `record` type and a reusable time-of-day counter.
Priority Arbiter
Implement a combinational arbiter that grants the bus to the requester with the lowest numeric priority.
Signed-Magnitude Comparator
Compare two signed-magnitude numbers without treating them as two's-complement values.
Unconstrained Bit Reverser
Code a bit-order reverser compatible with vectors of different sizes and directions.
Binary to BCD Converter
Convert an 8-bit binary word into three BCD digits.
Gray Code Counter
Implement a 4-bit counter that exposes its value as Gray code.
Leading Zero Counter
Count consecutive zeros starting at the most significant bit.
Digital Differentiator
Compute the difference between two consecutive valid samples.
Lookup Table Interpolator
Linearly interpolate between four fixed table points.
Counter Manager
Control four 4-bit counters with select, increment, and clear.
Histogram Calculator
Accumulate four histogram bins from 2-bit samples.
Memory Copy Controller
Generate a read-then-write sequence to copy four words.
Scratchpad Accumulator
Accumulate signed values into four scratchpad locations.
Prime Number Checker
Determine whether a 4-bit value is prime.
Moving Maximum Filter
Output the maximum of the last four valid samples.
Factorial Calculator
Compute `n!` for a 3-bit input from 0 to 5.
Palindrome Checker
Check whether four nibbles form a palindrome sequence.
Two Sum Finder
Find whether any pair among four values reaches a target.
Run Length Encoder
Compress a 4-bit stream by emitting symbol and run length on changes.
Peak Detector
Detect a local maximum in an 8-bit sample stream.
Binary Search
Search a target in four sorted ascending values.
Dot Product Calculator
Compute the dot product of two four-element 4-bit vectors.
Insertion Sort Engine
Insert a stream of four values into an internal sorted array.
Mode Finder
Return the most frequent value among four 4-bit values.
Bitonic Sequence Detector
Detect an increasing run followed by a decreasing run in four values.
Ethernet Header Parser
Split a 14-byte Ethernet II header into its main fields.
IPv4 Header Checksum
Compute the one’s-complement checksum over ten 16-bit IPv4 header words.
ARP Request Detector
Detect an IPv4/Ethernet ARP request targeting the local address.
MAC Unit
Implement unsigned 8x8 multiply-accumulate.