Cahier des charges
IntermédiaireLisez la spécification technique et concevez le VHDL complet. La simulation GHDL valide votre code.
Contrôleur FIFO synchrone
Implémentez un contrôleur FIFO synchrone gérant les pointeurs de lecture/écriture, les flags full/empty et le niveau de remplissage.
Maître AXI4 — canaux de lecture
Implémentez un maître AXI4 simple gérant les deux canaux de lecture : Read Address (AR) et Read Data (R).
Esclave AXI-Lite — carte de registres
Implémentez un esclave AXI-Lite avec trois registres 32 bits accessibles en lecture/écriture, gérés par deux machines à états indépendantes.
FSM — Feu piéton
Implémentez une machine a états a 3 process pour un feu piéton avec timer integre et gestion des durees par état.
Contrôleur LEDs — Machine a états Moore
Implémentez une machine a états Moore a 3 process qui fait defiler 4 LEDs en séquence sur commande.
Additionneur N bits — Ripple Carry
Implémentez un additionneur N bits a propagation de retenue (ripple carry) en utilisant uniquement des operateurs logiques, sans bibliotheque arithmetique.
Compteur bidirectionnel avec chargement parallele
Implémentez un compteur bidirectionnel générique avec chargement parallele, enable et reset asynchrone.
Anti-rebond configurable
Implémentez un circuit anti-rebond (debouncer) avec un temps de stabilisation configurable via des génériques.
Encodeur de priorité 8 vers 3
Implémentez un encodeur de priorité combinatoire 8 vers 3 qui encode la position du bit actif de plus haute priorité.
Compteur Johnson 4 bits
Implémentez un compteur Johnson 4 bits avec reset synchrone. Le compteur parcourt une séquence de 8 états avant de revenir a son état initial.
Barrel Shifter 8 bits
Implémentez un barrel shifter 8 bits effectuant un décalage logique a gauche en 3 etages combinatoires (shift-by-4, shift-by-2, shift-by-1).
Registre W1C (Write-1-to-Clear)
Implémentez un registre W1C : les bits se positionnent via i_set_en et s'effacent en écrivant 1 via i_clr_en.
Générateur de tick 1µs
Générez une impulsion périodique de 1µs à partir d'une horloge système de période connue.
Compteur N bits avec sortie de débordement
Implémentez un compteur générique N bits synchrone avec enable, reset asynchrone et indication de débordement.
Comparateur 8 bits
Implémentez un comparateur combinatoire 8 bits qui compare deux nombres non signes et indique la relation entre eux.
Additionneur-soustracteur 4 bits
Implémentez un bloc combinatoire 4 bits selectionnable en addition ou soustraction via un signal de contrôle.
Comparateur cascadable N bits
Implémentez un comparateur générique cascadable avec entrées de cascade pour connecter plusieurs etages.
Registre 8 bits avec chargement
Implémentez un registre 8 bits avec chargement parallele et reset asynchrone.
Registre a décalage bidirectionnel 4 bits
Implémentez un registre a décalage 4 bits pouvant décaler a gauche, a droite, charger en parallele ou conserver sa valeur.
ROM 8x4
Implémentez une mémoire morte (ROM) de 8 mots de 4 bits, purement combinatoire.
ROM 16x4 avec tableau constant
Implémentez une ROM 16 mots de 4 bits en utilisant un tableau constant VHDL.
RAM synchrone 8x4
Implémentez une mémoire RAM de 8 mots de 4 bits avec écriture synchrone et lecture asynchrone.
RAM synchrone 16x4
Implémentez une mémoire RAM de 16 mots de 4 bits avec écriture synchrone et lecture asynchrone.
Pile LIFO 8 niveaux, 8 bits
Implémentez une pile LIFO (Last In, First Out) de 8 niveaux sur 8 bits avec push, pop, et indicateurs empty/full.
RAM double port 8x8
Implémentez une RAM double port de 8 mots de 8 bits : un port d'écriture et un port de lecture indépendants.
Banc de registres 4x8
Implémentez un banc de 4 registres de 8 bits avec 1 port d'écriture et 2 ports de lecture.
Additionneur CLA 4 bits
Implémentez un additionneur 4 bits a anticipation de retenue (Carry Lookahead Adder).
Additionneur CLA 8 bits (2 blocs cascades)
Implémentez un additionneur CLA 8 bits en cascadant deux blocs CLA 4 bits.
Barrel Shifter 4 bits
Implémentez un barrel shifter 4 bits a 2 etages pouvant décaler logiquement a gauche de 0 a 3 positions.
Additionneur flottant simplifié 8 bits
Implémentez un additionneur pour un format flottant simplifié : 1 bit signe, 3 bits exposant (biais 3), 4 bits mantisse (implicite 1.xxxx).
Multiplieur flottant simplifié 8 bits
Implémentez un multiplieur pour le meme format flottant simplifié : 1 bit signe, 3 bits exposant (biais 3), 4 bits mantisse (1 implicite).
Générateur de parité 7 bits
Implémentez un générateur de parité paire : genere un bit de parité pour 7 bits de données, et vérifié un mot de 8 bits (7 data + 1 parité).
Compteur de population 8 bits (popcount)
Implémentez un compteur de population : compte le nombre de bits a '1' dans un vecteur de 8 bits.
Multiplexeur a priorité 4 canaux
Implémentez un multiplexeur a priorité : 4 canaux de données 4 bits avec bits de requete. Le canal de plus haute priorité active est sélectionné.
Synchroniseur Handshake CDC
Implémentez un synchroniseur a poignée de main (4 phases) pour transférer un bus de données entre deux domaines d'horloge indépendants.