Menu
Coddy logo textTech

Ports de lecture enregistrés

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

Une lecture enregistrée capture les données de la mémoire sur un front d’horloge et conserve ensuite cette valeur. Une validation de lecture peut préserver la sortie précédente pendant les cycles où elle est désactivée. La réinitialisation du registre de lecture ne nécessite pas d’effacer chaque mot mémoire. Avec des affectations de lecture et d’écriture non bloquantes, l’expression de lecture voit le mot présent avant le front.

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

always @(posedge clk) begin
    if(we) mem[waddr] <= data;
    if(rst) q <= 0;
    else if(re) q <= mem[raddr];
end

Le registre de sortie se met à jour uniquement sur le front spécifié et lorsque le chemin est activé.

Latence de lecture du document, comportement lorsque la lecture est désactivée et état réinitialisé qui est effectivement effacé.

challenge icon

Défi

Moyen

Implémentez une mémoire de quatre mots de 8 bits avec une écriture synchrone et une lecture enregistrée de q. we écrit sur les fronts montants. rst efface q de manière synchrone uniquement ; sinon, re charge q depuis mem[raddr] avant le front ; re=0 conserve q. La mémoire n’est pas réinitialisée et les écritures sont indépendantes de rst. Si la lecture et l’écriture partagent une adresse sur un même front, q reçoit l’ancien mot. Les tests initialisent les mots avant les lectures activées. Colonnes 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 ses noms de modules et 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 we, input re, input [1:0] waddr, input [1:0] raddr, input [7:0] data, 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