Dépassement et saturation
Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 9 sur 38.
Le dépassement de capacité signé signifie que le résultat mathématique ne peut pas tenir dans la largeur signed choisie. Il diffère de la retenue non signée. Pour l’addition signed, des opérandes de même signe provoquent un dépassement lorsque le signe du résultat change. La saturation limite le résultat à une extrémité représentable au lieu de revenir au début.
Extrait pertinent ; les déclarations et connexions environnantes sont fournies dans le défi.
assign overflow = (a[7] == b[7]) && (sum[7] != a[7]);Des entrées de signes différents ne peuvent pas provoquer de dépassement lors d’une addition signed ; des entrées de même signe nécessitent une vérification du signe du résultat.
Vérifiez le dépassement de capacité de signed indépendamment de la retenue ; élargissez avant d’implémenter la saturation.
Défi
MoyenAdditionnez signed 8 bits a et b. Retournez le résultat signed replié y et overflow=1 uniquement lorsque la somme mathématique exacte est en dehors de l’intervalle -128 à 127. Colonnes de sortie : y, overflow. Toutes les valeurs de stimulus 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 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élais, 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 se terminant par un saut de ligne.
Essayez vous-même
module dut (input signed [7:0] a, input signed [7:0] b, output signed [7:0] y, output overflow);
// Remplacez ce placeholder par votre conception.
assign y = 0;
assign overflow = 0;
endmoduleCette 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
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