Menu
Coddy logo textTech

Paramètres à largeur sûre

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

Les fondamentaux ont introduit des largeurs configurables. Un RTL réutilisable doit également gérer la plus petite largeur légale, dimensionner délibérément les expressions intermédiaires et éviter les positions de bits codées en dur. La réplication {WIDTH{1'b1}} construit un masque de largeur correspondante. Les paramètres sont des constantes d’élaboration, et non des contrôles d’exécution.

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

wire [WIDTH:0] sum;
assign sum = {1'b0,a} + {1'b0,b};
assign y = sum[WIDTH] ? {WIDTH{1'b1}} : sum[WIDTH-1:0];

La position de la retenue et la valeur de saturation s’adaptent à la largeur configurée.

Testez la largeur minimale légale et déduisez chaque tranche et constante dépendant de la largeur à partir des paramètres.

challenge icon

Défi

Moyen

Construisez un incrémenteur de WIDTH bits qui renvoie les WIDTH bits de poids faible de a+1. L’entrée b n’est pas utilisée. Le même module doit fonctionner pour WIDTH=1 ainsi que pour des largeurs supérieures. WIDTH est positif. Le banc de test verrouillé instancie les valeurs de WIDTH 1, 4 et 8, en utilisant les bits de poids faible de a et b pour les instances plus étroites. Les colonnes de sortie sont y1, y4 et y8 en décimal.

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 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 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 retour à la ligne.

Essayez vous-même

module dut #(parameter WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
    // Implémentez le circuit paramétré.
    assign y = 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