¿Puede alguien explicar qué significa esta línea en el código de un D Flip Flop escrito en Verilog?

0
module dflipflop (data  ,clk  , reset ,q);// Code for Asynchronous Positive Edge triggered D flip flop
input data, clk, reset ; 
output q;
reg q;
 always @ ( posedge clk or negedge reset)
  if (~reset) begin //what does this block of code mean
    q <= 1'b0 // particularly this line
  end  else begin
    q <= data; // and this one
end//
endmodule

Soy nuevo en el aprendizaje de Verilog y tengo que aprender los códigos para los distintos tipos de flip-flops. Sin embargo, no he podido entender esto completamente y lo que significa. Por ejemplo, como el flip-flop D se activa con flanco positivo, por lo tanto, escribimos el reloj de posición y tiene una entrada de reinicio asíncrono aparte de la entrada D normal. Pero lo que no entiendo es el uso del operador '< =' en las líneas resaltadas y lo que se está haciendo allí. ¿Significa que a q se le asigna un valor menor que cero? ¿A qué se refiere la variable de datos en la otra línea y qué significa exactamente la línea también?

    
pregunta anshuman_kmr

2 respuestas

2

En primer lugar, '< =' es un tipo de valor de asignación a la variable. No significa menos que; pero en cambio, el valor cero se asigna a la variable 'q' cuando se cumple la condición Resumen de la sintaxis verilog: enlace

si (~ restablecer): esto significa que la condición se cumple cuando restablecer = 0 (~ es un operador de negación a nivel de bits, verifique el enlace anterior en la sección del operador), lo que significa que cuando el restablecimiento es cero, la declaración q < = 1'b0 se ejecuta de otra manera, la entrada se pasa a la salida, que viene dada por 'q < = datos'. Esta es la funcionalidad de D flip-flop.

    
respondido por el rsg1710
1
<=

es un operador de asignación no bloqueante que se utiliza para ejecutar el código o pasar los valores simultáneamente / en paralelo. Esto significa que todos los valores se pasan simultáneamente, sin importar el orden en que los valores se transmiten a la señal

Esto está en contraste con

=

operador en el que los valores se pasan secuencialmente.

Considera este código

module test;

int a=4 , b=0 , c=0;


initial begin
 a<=10;
 b<=a;
 c<=a;

$display("a=%0d  b=%0d  c=%0d \n",a,b,c) ; //Here a=4  b=0  c=0 
                                           // and the values are assigned 
                                           // to the variables in the next cycle. You can 
                                           //check this out by using the always statement 

end

initial begin

  a=10;
  b=a;
  c=a;
  $display("a=%0d  b=%0d  c=%0d \n",a,b,c) ; //Here a=10  b=10  c=10 

endmodule
    
respondido por el Your IDE

Lea otras preguntas en las etiquetas