Menu
Coddy logo textTech

Validation one-hot

Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 3 sur 38.

Les données one-hot comportent exactement un bit activé. Un décodeur génère ces données, tandis que la validation vérifie les données reçues avant de les utiliser. Pour les valeurs binaires connues, une valeur non nulle est one-hot lorsque bits & (bits - 1) est nulle. Cette section n’utilise pas cette méthode abrégée pour classer X ou Z.

Extrait pertinent  les déclarations et connexions environnantes sont fournies dans le défi.

assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);

La vérification de non-zéro exclut l’état inactif  l’astuce sur les bits rejette les bits multiples à 1.

Distinguez zéro, exactement un bit à 1 et plusieurs bits à 1 lors de la validation des requêtes.

challenge icon

Défi

Moyen

Pour des bits d’entrée connus sur 4 bits, définissez valid à un uniquement lorsqu’exactement un bit est à l’état haut. Utilisez la vérification de valeur non nulle avec bits & (bits - 1). Colonnes de sortie : valid. Toutes les valeurs de stimulation sont des valeurs binaires connues.

Complétez design.v et préservez les noms de module et les ports. Le testbench.v verrouillé fournit les changements d’entrée et affiche les sorties une fois qu’elles sont stabilisées. Il sélectionne un scénario à l’aide d’un argument du simulateur tel que +CASE=1 ; aucune entrée standard n’est requise. N’ajoutez pas d’affichage, de délais ni de terminaison de simulation au design. La sortie attendue est une ligne de valeurs décimales par observation, séparées par un espace et se terminant par un saut de ligne.

Essayez vous-même

module dut (input [3:0] bits, output valid);
    // Remplacez ce placeholder par votre conception.
    assign valid = 0;
endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Conception et vérification RTL

Entraînez-vous par vous-même : Compilateur Verilog en ligne