Cahier des charges

Intermédiaire

Lisez la spécification technique et concevez le VHDL complet. La simulation GHDL valide votre code.

0 / 35
1

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.

Télécom

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).

Verrouillé

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.

Verrouillé

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.

Verrouillé

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.

Verrouillé

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.

Verrouillé

Compteur bidirectionnel avec chargement parallele

Implémentez un compteur bidirectionnel générique avec chargement parallele, enable et reset asynchrone.

Verrouillé

Anti-rebond configurable

Implémentez un circuit anti-rebond (debouncer) avec un temps de stabilisation configurable via des génériques.

Verrouillé

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é.

Verrouillé

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.

Verrouillé

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).

Verrouillé

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.

Verrouillé

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.

Verrouillé

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.

Verrouillé

Comparateur 8 bits

Implémentez un comparateur combinatoire 8 bits qui compare deux nombres non signes et indique la relation entre eux.

Verrouillé

Additionneur-soustracteur 4 bits

Implémentez un bloc combinatoire 4 bits selectionnable en addition ou soustraction via un signal de contrôle.

Verrouillé

Comparateur cascadable N bits

Implémentez un comparateur générique cascadable avec entrées de cascade pour connecter plusieurs etages.

Verrouillé

Registre 8 bits avec chargement

Implémentez un registre 8 bits avec chargement parallele et reset asynchrone.

Verrouillé

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.

Verrouillé

ROM 8x4

Implémentez une mémoire morte (ROM) de 8 mots de 4 bits, purement combinatoire.

Verrouillé

ROM 16x4 avec tableau constant

Implémentez une ROM 16 mots de 4 bits en utilisant un tableau constant VHDL.

Verrouillé

RAM synchrone 8x4

Implémentez une mémoire RAM de 8 mots de 4 bits avec écriture synchrone et lecture asynchrone.

Verrouillé

RAM synchrone 16x4

Implémentez une mémoire RAM de 16 mots de 4 bits avec écriture synchrone et lecture asynchrone.

Verrouillé

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.

Verrouillé

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.

Verrouillé

Banc de registres 4x8

Implémentez un banc de 4 registres de 8 bits avec 1 port d'écriture et 2 ports de lecture.

Verrouillé

Additionneur CLA 4 bits

Implémentez un additionneur 4 bits a anticipation de retenue (Carry Lookahead Adder).

Verrouillé

Additionneur CLA 8 bits (2 blocs cascades)

Implémentez un additionneur CLA 8 bits en cascadant deux blocs CLA 4 bits.

Verrouillé

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.

Verrouillé

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).

Verrouillé

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).

Verrouillé

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é).

Verrouillé

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.

Verrouillé

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é.

Verrouillé

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.

Verrouillé