Cahier des charges

Débutant

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

0 / 55
1

Esclave SPI (CPOL=0, CPHA=0)

Implémentez un esclave SPI générique en mode 0 (CPOL=0, CPHA=0) qui reçoit une trame de 32 bits.

IndustrieMédical

Maître SPI 8 bits

Implémentez un maître SPI (mode 0 : CPOL=0, CPHA=0) capable d'émettre et de recevoir un octet sur un bus SPI.

Verrouillé

Maître SPI mode 0

Implémentez un maître SPI en mode 0 (CPOL=0, CPHA=0) capable de transférer 8 bits en série.

Verrouillé

Compteur BCD

Implémentez un compteur BCD synchrone qui compte de 0 à 9 puis reboucle à 0, avec reset asynchrone actif bas et entrée d'activation.

Verrouillé

Diviseur d'horloge

Implémentez un diviseur d'horloge générique qui divise la fréquence d'entrée par 2×G_HAL-, avec reset asynchrone.

Verrouillé

Bascule D avec enable

Implémentez une bascule D avec enable et reset asynchrone actif haut. La bascule mémorise i_d sur le front montant uniquement si i_en est actif.

Verrouillé

Registre à décalage 4 bits

Implémentez un registre à décalage série 4 bits (SISO) avec reset asynchrone. Les bits se décalent vers la droite à chaque front montant.

Verrouillé

Détecteur de séquence «101»

Implémentez une machine à états Mealy qui détecte la séquence binaire «101» sur une entrée série, avec gestion du chevauchement.

Verrouillé

ALU simple 4 opérations

Implémentez une ALU combinatoire réalisant 4 opérations sur deux opérandes 8 bits : addition, soustraction, ET logique et OU logique, avec drapeau de retenue.

Verrouillé

Latch transparent (piège FPGA)

Implémentez un latch transparent pour comprendre ce piège classique du FPGA. Quand enable est haut, la sortie suit l'entrée ; quand enable est bas, la sortie conserve sa valeur.

Verrouillé

Registre à décalage chargeable

Implémentez un registre à décalage chargeable 8 bits combinant chargement parallèle et décalage à gauche, avec priorité au chargement.

Verrouillé

Étireur d'impulsion

Implémentez un étireur d'impulsion qui prolonge un signal d'un cycle en une sortie active pendant G_CYCLES cycles d'horloge.

Verrouillé

Timer Watchdog

Implémentez un timer watchdog de sécurité : un compteur décrémente en continu et déclenche un timeout si aucun signal i_kick n'est reçu à temps.

Verrouillé

Contrôleur de séquence LED

Implémentez un contrôleur FSM à 3 états (OFF, BLINK, ON) qui pilote une LED avec clignotement. Chaque appui sur le bouton avance la séquence.

Verrouillé

Générateur PWM

Implémentez un générateur PWM avec un compteur séquentiel et une sortie combinatoire contrôlée par le rapport cyclique.

Verrouillé

LFSR 8 bits

Implémentez un registre à décalage à rétroaction linéaire (LFSR) 8 bits avec chargement de graine et sortie combinatoire de feedback.

Verrouillé

Filtre moyenneur glissant (4 echantillons)

Implémentez un filtre moyenneur glissant sur 4 echantillons avec un registre a décalage séquentiel et un calcul combinatoire de la moyenne.

Verrouillé

Registre parallele générique avec enable

Implémentez un registre parallele N bits avec enable et détection combinatoire de mise a jour.

Verrouillé

Synchroniseur CDC 2-FF avec détection de fronts

Implémentez un synchroniseur CDC a deux bascules avec détection combinatoire de fronts montants et descendants.

Verrouillé

CRC-16/CCITT (polynome 0x1021)

Implémentez un calculateur CRC-16 synchrone, bit par bit, avec le polynome CCITT et une sortie combinatoire du registre CRC.

Verrouillé

Maitre I2C — Démarrage & adressage

Implémentez les deux premieres phases d'un maitre I2C : condition START et envoi de l'adresse 7 bits + bit R/W via une FSM a 5 états.

Verrouillé

Décodeur 7 segments

Implémentez un décodeur 7 segments qui convertit un chiffre BCD (0-9) en 7 signaux pour allumer les bons segments d'un afficheur, avec enable.

Verrouillé

Top Level — Instanciation

Implémentez un top level qui instancie un compteur BCD et un décodeur 7 segments, en câblant correctement les signaux internes et les ports externes.

Verrouillé

Additionneur 1 bit complet

Concevez un additionneur 1 bit complet (full adder) avec retenue entrante et sortante. Ce bloc est la brique de base de toute unite arithmetique.

Verrouillé

Multiplexeur 4 vers 1

Concevez un multiplexeur 4 vers 1 purement combinatoire. Le selecteur de 2 bits choisit laquelle des 4 entrées est transmise en sortie.

Verrouillé

Décodeur binaire 2 vers 4

Concevez un décodeur binaire 2 vers 4 avec signal d'activation (enable). La sortie est un code one-hot correspondant a la valeur du selecteur lorsque le décodeur est actif.

Verrouillé

Vérificateur de parité 8 bits

Concevez un vérificateur de parité sur 8 bits. La sortie indique si le nombre de bits a 1 dans l'entrée est impair (parité = 1) ou pair (parité = 0).

Verrouillé

Comparateur 4 bits

Concevez un comparateur combinatoire 4 bits qui compare deux nombres non signes et indique si le premier est superieur, egal ou inferieur au second.

Verrouillé

Multiplieur binaire 4 bits

Concevez un multiplieur combinatoire 4 bits qui calcule le produit de deux nombres non signes sur 8 bits de sortie.

Verrouillé

Convertisseur BCD vers binaire

Concevez un convertisseur combinatoire qui transforme un nombre BCD (Binary-Coded Decimal) sur 8 bits en sa valeur binaire sur 7 bits.

Verrouillé

Porte AND

Concevez une porte logique AND a deux entrées. C'est la brique de base de toute logique combinatoire.

Verrouillé

Porte OR

Concevez une porte logique OR a deux entrées. La sortie est active des qu'au moins une entrée est a '1'.

Verrouillé

Porte NOT (Inverseur)

Concevez un inverseur logique. La sortie est le complément de l'entrée.

Verrouillé

Porte NAND

Concevez une porte logique NAND a deux entrées. C'est la porte universelle : toute fonction logique peut etre construite avec des portes NAND.

Verrouillé

Porte NOR

Concevez une porte logique NOR a deux entrées. Comme la NAND, c'est une porte universelle.

Verrouillé

Porte XOR

Concevez une porte logique XOR (OU exclusif) a deux entrées. Utilisee dans les additionneurs, la détection de parité et le chiffrement.

Verrouillé

Porte XNOR

Concevez une porte logique XNOR (equivalence) a deux entrées. La sortie est active lorsque les deux entrées sont identiques.

Verrouillé

Multiplexeur 2 vers 1

Concevez un multiplexeur 2 vers 1 purement combinatoire. Le selecteur choisit laquelle des 2 entrées est transmise en sortie.

Verrouillé

Multiplexeur 8 vers 1

Concevez un multiplexeur 8 vers 1 purement combinatoire. Le selecteur de 3 bits choisit laquelle des 8 entrées est transmise en sortie.

Verrouillé

Demultiplexeur 1 vers 2

Concevez un demultiplexeur 1 vers 2. L'entrée est acheminee vers l'une des deux sorties selon le selecteur.

Verrouillé

Demultiplexeur 1 vers 4

Concevez un demultiplexeur 1 vers 4. L'entrée est acheminee vers l'une des quatre sorties selon le selecteur de 2 bits.

Verrouillé

Décodeur binaire 3 vers 8

Concevez un décodeur binaire 3 vers 8 avec signal d'activation. La sortie est un code one-hot correspondant a la valeur du selecteur.

Verrouillé

Convertisseur binaire vers Gray

Concevez un convertisseur 4 bits de code binaire vers code Gray. Le code Gray est utilise dans les communications car un seul bit change entre deux valeurs consecutives.

Verrouillé

Convertisseur Gray vers binaire

Concevez un convertisseur 4 bits de code Gray vers code binaire. Opération inverse du convertisseur binaire vers Gray.

Verrouillé

Demi-additionneur

Concevez un demi-additionneur (half adder) qui additionne deux bits sans retenue entrante.

Verrouillé

Soustracteur 4 bits

Concevez un soustracteur combinatoire 4 bits qui calcule la difference de deux nombres non signes avec indication d'emprunt.

Verrouillé

Bascule JK

Implémentez une bascule JK avec reset asynchrone actif haut. La bascule JK est la plus polyvalente : elle peut maintenir, mettre a '1', mettre a '0' ou basculer sa sortie.

Verrouillé

Bascule T

Implémentez une bascule T (Toggle) avec reset asynchrone actif haut. Quand T='1', la sortie bascule a chaque front montant.

Verrouillé

Bascule SR synchrone

Implémentez une bascule SR synchrone avec reset asynchrone actif haut. S met la sortie a '1', R la remet a '0'.

Verrouillé

Registre 4 bits

Implémentez un registre 4 bits avec enable et reset asynchrone actif haut.

Verrouillé

Registre a décalage gauche 4 bits

Implémentez un registre a décalage a gauche 4 bits avec entrée série et reset asynchrone.

Verrouillé

Registre SIPO 4 bits

Implémentez un registre a décalage série vers parallele (SIPO) 4 bits avec reset asynchrone. Les bits entrent en série et sont disponibles en parallele.

Verrouillé

Compteur 4 bits croissant

Implémentez un compteur synchrone 4 bits croissant avec enable et reset asynchrone.

Verrouillé

Compteur 4 bits decroissant

Implémentez un compteur synchrone 4 bits decroissant avec enable et reset asynchrone. Le reset initialise a la valeur maximale (15).

Verrouillé

Compteur en anneau 4 bits

Implémentez un compteur en anneau (ring counter) 4 bits avec reset asynchrone. Un seul bit a '1' circule dans le registre.

Verrouillé