Exercices de logique Synchrone sous YosysDigitalJS

Les exercices

Variantes de la bascule D

Bascule D avec enable

  • Nous voulons construire une bascule D munie d’un signal reset, synchrone actif à l’état haut

  • Cette bascule sera munie d’un signal supplémentaire en

  • Si le signal en vaut 1, la bascule fonctionne normalement.

  • Si le signal en vaut 0, la bascule est gelée, la sortie Q garde sa valeur même après un front montant de l’horloge.

    1. Faites un schéma à base de portes simples et d’une bascule D.

    2. Écrivez le code SystemVerilog équivalent

Compteurs synchrones

Compteurs synchrones

  • Nous voulons construire un système qui compte à chaque cycle d’horloge:

    • à chaque front sa sortie est incrémentée de 1,

    • la valeur de la sortie appartient à l’intervalle [0,255],

    • après la valeur maximale 255, la séquence reboucle et on repasse à 0.

  • Ajouter la possibilité de le remettre à zéro de façon:

    1. asynchrone

    2. synchrone

  • Ajouter deux entrées permettant de le configurer le compteur en mode:

    1. comptage (+1 à chaque front),

    2. décomptage (-1 à chaque front),

    3. stoppé (conserve sa valeur).

  • Modifier le compteur pour qu’il ne compte que jusqu’à 13 puis:

    1. se bloque jusqu’à la prochaine remise à 0.

    2. repart à 0.

  • Modifier le code obtenu pour que la valeur d’arrêt puisse venir d’une entrée.

Pour tester votre code SystemVerilog utilisez DigitalJS.

Serialisation

Conversion parallèle série

Conversion parallèle série

  • Nous recevons, de manière synchrone, une séquence de données data_in codées sur 4 bits.

  • À chaque cycle d’horloge un signal en_in indique si la donnée data_in est une donnée valide.

  • Transformer cette séquence en séquences de données data_out de 1 bit, accompagnée d’un signal en_out indiquant si la donnée data_out est valide.

    1. Déterminez les conditions de bon fonctionnement du dispositif (oubliées dans l’énoncé).

    2. Réalisez un chronogramme montrant un exemple de transmission.

    3. Déterminez le ou les signaux supplémentaires nécessaires au fonctionnement du dispositif.

    4. Déterminez les éléments logiques nécessaires à la réalisation du dispositif.

    5. Faites un schéma.

    6. Ecrivez le code SystemVerilog équivalent.

Pour tester votre solution en SystemVerilog sur DigitalJS vous disposez d’un environnement de test:

  1. Dans la section "Logique séquentielle" des exemples, choisissez Conversion parallèle série

    1. vous disposez ainsi d’un environnement de test avec un générateur d’échantillons

  2. Implémentez vos solutions dans le module serialiseur.

K2000

K2000

K2000

Nous voulons construire un système synchrone qui contrôle un ensemble de LEDs tel que:

  • initialement seule la LED se trouvant tout à droite est allumée,

  • à chaque cycle d’horloge la position de la LED allumée se décale d’une LED vers la gauche,

  • une fois arrivé au bout de la rangée de LEDs, on repart dans l’autre sens.

Faites attention au fait qu’il doit toujours y avoir une LED allumée.

Pour tester votre code SystemVerilog utilisez DigitalJS.