Compteurs saturants
Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 17 sur 38.
Fundamentals utilisait un compteur avec retour à zéro. Un compteur saturant s’arrête plutôt à une limite, ce qui est utile pour les comptages bornés. Ajoutez une protection explicite à la mise à jour arithmétique et veillez à ce que les comportements d’activation et de réinitialisation restent indépendants de la limite.
Extrait pertinent ; les déclarations et connexions environnantes sont fournies dans le défi.
always @(posedge clk) begin
if(rst) count <= 0;
else if(en && count != 15) count <= count + 1;
endLa valeur maximale est conservée au lieu de revenir à zéro.
Protégez explicitement les mises à jour des limites lorsqu’un compteur doit atteindre une valeur plafond au lieu de revenir à zéro.
Défi
MoyenCréez un compteur saturant de 4 bits q. Le rst synchrone l'efface. Les fronts activés l'incrémentent jusqu'à 15, puis le maintiennent à 15 ; les fronts désactivés le maintiennent également. La réinitialisation est prioritaire. Colonne de sortie : q. 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 préservez les noms de ses modules et de ses 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 saut de ligne.
Essayez vous-même
module dut (input clk, input rst, input en, output reg [3:0] q);
// Remplacez ce placeholder par votre design.
initial q = 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êtes4RTL séquentiel contrôlé
Priorité du reset et de l'activationCompteurs saturantsMise en pipeline des données et de validDétection des fronts échantillonnésRécapitulatif - Compteur d'événements2Largeurs 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