Défi - Pipeline de parité
Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 36 sur 38.
Défi
MoyenConstruisez un pipeline de parité à deux étapes. Capturez d’abord les données d’octet et in_valid. Lors du front suivant qui n’est pas une réinitialisation, la sortie de parité est le XOR de réduction de l’octet capturé précédemment lorsque sa valeur valid précédente est haute, sinon zéro. out_valid correspond à cette valeur valid retardée. La réinitialisation synchrone rst efface les deux étapes et les sorties. Colonnes de sortie : parity, out_valid. Toutes les commandes et les données sont stables avant chaque front montant de l’horloge ; les résultats sont observés ensuite.
Complétez design.v et conservez les noms de module et les ports correspondants. Le fichier testbench.v verrouillé fournit les changements d’entrée et affiche les sorties une fois celles-ci stabilisées. Il choisit un scénario à l’aide d’un argument du simulateur tel que +CASE=1 ; aucune entrée standard n’est requise. N’ajoutez ni affichage, ni délai, ni terminaison de simulation au design. La sortie attendue est une ligne de valeurs décimales par observation, séparées par un espace et terminées par un saut de ligne.
Essayez vous-même
module dut (input clk, input rst, input in_valid, input [7:0] data, output reg parity, output reg out_valid);
// Remplacez ce placeholder par votre design.
initial parity = 0;
initial out_valid = 0;
endmoduleToutes les leçons de Conception et vérification RTL
1RTL combinatoire fiable
Les valeurs par défaut évitent les latchsEncodeurs de prioritéValidation one-hotDécodage sûr avec caseRécapitulatif - Routeur de requêtes2Largeurs et arithmétique signée
Préserver les bits de retenueComparaisons signéesDécalages arithmétiques vers la droiteDépassement et saturationRécapitulatif – différence signéeEntraînez-vous par vous-même : Compilateur Verilog en ligne