Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Verilog

D Verriegelung

Ein Flip-Flop erfasst Daten an seinem Eingang an der positiven oder negativen Flanke einer Uhr. Es ist wichtig zu beachten, dass alles, was mit den Daten nach der Taktflanke bis zur nächsten Taktflanke passiert, nicht in der Ausgabe widergespiegelt wird. Ein Riegel erfasst andererseits nicht an der Flanke eines Takts, stattdessen folgt der Ausgang dem Eingang, solange der Aktivierungsstift aktiviert ist.

Gestaltung

In diesem Beispiel bauen wir ein Latch mit drei Eingängen und einem Ausgang. Die Eingabe d steht für Daten, die entweder 0 oder 1 sein können, rstn steht für Active-Low-Reset und en steht für Freigabe, die verwendet wird, um die Eingangsdaten mit dem Ausgang zu verriegeln. Zurücksetzen auf Low-Aktiv bedeutet einfach, dass das Designelement zurückgesetzt wird, wenn dieser Eingang auf 0 geht, oder mit anderen Worten, das Zurücksetzen ist aktiv, wenn sein Wert niedrig ist. Der Wert der Ausgabe q wird durch die Eingaben d bestimmt , de und rstn .

  
  
module d_latch (  input d,           // 1-bit input pin for data
                  input en,          // 1-bit input pin for enabling the latch
                  input rstn,        // 1-bit input pin for active-low reset
                  output reg q);     // 1-bit output pin for data output
 
   // This always block is "always" triggered whenever en/rstn/d changes
   // If reset is asserted then output will be zero
   // Else as long as enable is high, output q follows input d
   always @ (en or rstn or d)
      if (!rstn)
         q <= 0;
      else
         if (en)
            q <= d;
endmodule

  

Beachten Sie, dass die Sensitivitätsliste zum always gehört Block enthält alle Signale, die zur Aktualisierung des Ausgangs erforderlich sind. Dieser Block wird immer dann ausgelöst, wenn eines der Signale in der Empfindlichkeitsliste seinen Wert ändert. Auch q bekommt den Wert von d nur wenn en ist hoch und daher positiv verriegeln.

Schematisch

Testbench

  
  
module tb_latch;
   // Declare variables that can be used to drive values to the design
   reg d;  
   reg en;
   reg rstn;
   reg [2:0] delay;
   reg [1:0] delay2;
   integer i;
   
   // Instantiate design and connect design ports with TB signals
   d_latch  dl0 ( .d (d),
                  .en (en),
                  .rstn (rstn),
                  .q (q));

   // This initial block forms the stimulus to test the design
   initial begin
      $monitor ("[%0t] en=%0b d=%0b q=%0b", $time, en, d, q);
   
      // 1. Initialize testbench variables
      d <= 0;
      en <= 0;
      rstn <= 0;
      
      // 2. Release reset
      #10 rstn <= 1;
      
      // 3. Randomly change d and enable
      for (i = 0; i < 5; i=i+1) begin
         delay = $random;
         delay2 = $random;
         #(delay2) en <= ~en;
         #(delay) d <= i;
      end
   end
endmodule

  

Damit unsere Testbench Signale zufälliger bestätigt und deaktiviert, haben wir einen reg deklariert Variable namens Verzögerung der Größe 3 Bit, so dass es jeden Wert von 0 bis 7 annehmen kann. Dann die Verzögerung Variable wird verwendet, um die Zuweisung von d zu verzögern und en um in jeder Schleife unterschiedliche Muster zu erhalten.

Ausgabe

Simulationsprotokoll
ncsim> run
[0] en=0 d=0 q=0
[11] en=1 d=0 q=0
[18] en=0 d=0 q=0
[19] en=0 d=1 q=0
[20] en=1 d=1 q=1
[25] en=1 d=0 q=0
[27] en=0 d=0 q=0
[32] en=0 d=1 q=0
[33] en=1 d=1 q=1
[34] en=1 d=0 q=0
ncsim: *W,RNQUIE: Simulation is complete.

Klicken Sie auf das Bild, um es zu vergrößern.


Verilog

  1. Common-Emitter-Verstärker
  2. Einfacher Operationsverstärker
  3. Präzisions-Spannungsfolger
  4. C# Grundlegende Ein- und Ausgabe
  5. C++ Basic Input/Output
  6. C Eingang Ausgang (E/A)
  7. Python-Eingabe, -Ausgabe und -Import
  8. Java Basic Input und Output
  9. C++ Basic Input/Output:Cout, Cin, Cerr Beispiel
  10. C - Eingang und Ausgang