Menu
Coddy logo textTech

Priorité du reset et de l'activation

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

Un bloc cadencé peut conserver un registre en omettant une affectation lors des fronts désactivés. Ce stockage intentionnel diffère d’un latch combinatoire accidentel. Écrivez une priorité explicite entre la réinitialisation, le chargement et l’activation. Ici, les réinitialisations sont synchrones : elles prennent effet uniquement au front montant de l’horloge.

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

always @(posedge clk) begin
    if(rst) q <= 0;
    else if(en) q <= data;
end

La réinitialisation est prioritaire lorsque les deux contrôles sont activés, et les fronts désactivés sans réinitialisation conservent q.

Utilisez une chaîne de priorités cadencée et définissez précisément le comportement de la réinitialisation, du chargement, de l’activation et du maintien.

challenge icon

Défi

Moyen

Implémentez un registre 8 bits q avec une réinitialisation synchrone active à l’état haut rst et une activation en. Sur un front montant, la réinitialisation est prioritaire et remet q à zéro ; sinon, les fronts avec activation chargent a, tandis que les fronts sans activation conservent q. 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 module et les 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 retour à la ligne.

Essayez vous-même

module dut (input clk, input rst, input en, input [7:0] a, output reg [7:0] q);
    // Remplacez ce placeholder par votre design.
    initial q = 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