Détection des fronts échantillonnés
Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 19 sur 38.
Un niveau peut rester élevé pendant de nombreux cycles, tandis qu’une impulsion d’événement devrait durer un cycle. Stockez le niveau échantillonné précédent et comparez-le au niveau actuel. Ce détecteur de front suppose que l’entrée est déjà synchrone avec cette horloge ; ce n’est pas un synchroniseur de franchissement de domaines d’horloge.
Extrait pertinent ; les déclarations et connexions environnantes sont fournies dans le défi.
previous <= sig;
rising <= sig & ~previous;L’ancien niveau mémorisé produit une seule impulsion lors de la transition échantillonnée.
Comparez les niveaux échantillonnés actuel et précédent utilisez ce détecteur uniquement avec une entrée synchrone.
Défi
MoyenPour un signal sig déjà synchrone avec clk, produisez une impulsion enregistrée d’un cycle à chaque transition échantillonnée de 0 vers 1. Le rst synchrone efface le niveau précédent mémorisé et l’impulsion. Ainsi, un sig à l’état haut sur le premier front hors réinitialisation produit une impulsion. Colonnes de sortie : pulse. 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 ses ports. Le testbench.v verrouillé fournit les changements d’entrée et affiche les sorties après leur stabilisation. 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 sig, output reg pulse);
// Remplacez ce placeholder par votre design.
initial pulse = 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