UN D la bascule est un élément séquentiel qui suit la broche d'entrée d au bord donné de l'horloge. La bascule D est un composant fondamental des circuits logiques numériques.
Il existe deux types de bascules D implémentées : les bascules D Rising-Edge et les bascules D Falling-Edge.
Multiplexeur 8 à 1
La bascule D est un dispositif de mémoire déclenché par front qui transfère la valeur d'un signal sur son entrée D vers sa sortie Q lorsqu'une transition de front active se produit sur son entrée d'horloge. Ensuite, la valeur de sortie est conservée jusqu'au prochain cycle d'horloge actif.
Les bascules sont déduites en utilisant le front déclenché toujours déclarations. Le toujours L'instruction est déclenchée par front en incluant soit un pose ou négation clause dans la liste des événements. Voici quelques exemples de séquences toujours déclarations, telles que :
shweta tiwari
always @(posedge Clock) always @(negedge Clock) always @(posedge Clock or posedge Reset) always @(posedge Clock or negedge Reset) always @(negedge Clock or posedge Reset) always @(negedge Clock or negedge Reset)
Si une bascule à réinitialisation asynchrone est modélisée, une seconde pose ou négation une clause est nécessaire dans la liste d'événements du toujours déclaration. De plus, la plupart des outils de synthèse exigent que la réinitialisation soit utilisée dans si instruction directement après l'instruction toujours, ou après commencer si c'est dans une séquence début-fin bloc.
Exemple
//Active low asynchronous reset always @(posedge Clock or negedge Reset) begin if (!Reset) ……. …….. end
Conception 1 : avec la réinitialisation asynchrone active-low
module dff (input d, input rstn, input clk, output reg q); always @ (posedge clk or negedge rstn) if (!rstn) q <= 0; else q <="d;" endmodule pre> <p> <strong>Hardware Schematic</strong> </p> <img src="//techcodeview.com/img/verilog-tutorial/20/d-flip-flop-2.webp" alt="D Flip-Flop"> <p> <strong>Testbench</strong> </p> <pre> module tb_dff; reg clk; reg d; reg rstn; reg [2:0] delay; dff dff0 ( .d(d), .rsnt (rstn), .clk (clk), .q (q)); // Generate clock always #10 clk = ~clk; // Testcase initial begin clk <= 0; d <="0;" rstn #15 #10 for (int i="0;" 5; begin delay="$random;" #(delay) end endmodule pre> <h3>Design 2: With sync active-low reset</h3> <pre> module dff (input d, input rstn, input clk, output reg q); always @ (posedge clk) if (!rstn) q <= 0; else q <="d;" endmodule pre> <p> <strong>Hardware Schematic</strong> </p> <img src="//techcodeview.com/img/verilog-tutorial/20/d-flip-flop-3.webp" alt="D Flip-Flop"> <p> <strong>Testbench</strong> </p> <pre> module tb_dff; reg clk; reg d; reg rstn; reg [2:0] delay; dff dff0 ( .d(d), .rsnt (rstn), .clk (clk), .q (q)); // Generate clock always #10 clk = ~clk; // Testcase initial begin clk <= 0; d <="0;" rstn #15 #10 for (int i="0;" 5; begin delay="$random;" #(delay) end endmodule pre> <hr></=></pre></=></pre></=></pre></=>=>=>=>