Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Verilog

Pestillo D

Un flip-flop captura datos en su entrada en el borde positivo o negativo de un reloj. Lo importante a tener en cuenta es que lo que suceda con los datos después del borde del reloj hasta el siguiente borde del reloj no se reflejará en la salida. Un pestillo por otro lado, no captura en el borde de un reloj, sino que la salida sigue a la entrada siempre que se afirme el pin de habilitación.

Diseño

En este ejemplo, construiremos un pestillo que tiene tres entradas y una salida. La entrada d significa datos que pueden ser 0 o 1, rstn significa reinicio activo-bajo y en significa habilitar, que se utiliza para hacer que los datos de entrada se enganchen a la salida. Restablecer siendo activo-bajo simplemente significa que el elemento de diseño se restablecerá cuando esta entrada vaya a 0 o, en otras palabras, el restablecimiento está activo cuando su valor es bajo. El valor de la salida q es dictada por las entradas d , es y primero .

  
  
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

  

Tenga en cuenta que la lista de sensibilidad al always El bloque contiene todas las señales necesarias para actualizar la salida. Este bloque se activará cada vez que alguna de las señales en la lista de sensibilidad cambie su valor. También q obtendrá el valor de d solo cuando en es alto, y por lo tanto es un positivo pestillo.

Esquema

Banco de pruebas

  
  
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

  

Para hacer que nuestro banco de pruebas confirme y rechace las señales de una manera más aleatoria, hemos declarado un reg variable llamada retraso de tamaño 3 bits para que pueda tomar cualquier valor de 0 a 7. Entonces el retraso variable se utiliza para retrasar la asignación de d y es para obtener diferentes patrones en cada ciclo.

Salida

Registro de simulación
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.

Haga clic en la imagen para agrandarla.

d latch

Verilog

  1. Amplificador de emisor común
  2. Amplificador operacional simple
  3. Seguidor de voltaje de precisión
  4. Amplificador no inversor
  5. Entrada y salida básica de C#
  6. Entrada/salida básica de C++
  7. C Entrada Salida (E/S)
  8. Entrada, salida e importación de Python
  9. Entrada y salida básica de Java
  10. Entrada/salida básica de C++:ejemplo de Cout, Cin, Cerr
  11. C - Entrada y Salida