Explique el siguiente código de Verilog de un flip flop D?

2

Estoy aprendiendo el idioma verilog. ¿Puede alguien explicar las preguntas que hago entre corchetes []:

module d_ff(q,d,clk,reset);
     output q;
     input d,clk,reset;
     reg q;
     always @(posedge reset or negedge clk)  [what is this always @()]
     if (reset)
         q<= 1'b0; [what is 1'b0]
     else
         q<=d;
endmodule

Para ver la salida, ¿cuál es mi siguiente paso? ¿Significa que tengo que escribir un bloque de estímulo después de este código? ¿Cuál es el significado de un bloque de estímulo?

    
pregunta SW.

3 respuestas

1

1'b0 es la sintaxis de Verilog para un valor constante que es un número de un bit expresado en formato binario con un valor de cero.

Un valor de bit de uno se expresaría como 1'b1.

De forma similar, un valor de cuatro bits en binario que tiene una magnitud equivalente a un valor decimal de 11 podría escribirse como 4'b1011.

También puedes expresar este mismo valor en una notación hexadecimal como 4'hB.

    
respondido por el Michael Karas
2
    //Module definition
        module d_ff(q,d,clk,reset);  

    //Argument Classification: You have to tell the compiler which signals are inputs 
    //and which ones are outputs.

                 output q;
                 input d,clk,reset;
                 reg q;                  

    //Sensitivity list: this is lists all signals that the block will be sensitive to.
   //In the example below the block will run when ever there is a positive edge on the 
   //reset signal or when there is a negative edge on the clock.

                 always @(posedge reset or negedge clk) 

//This is the block of code you want to run when a signal in the sensitivity list is 
//triggered

                 if (reset)
                     q<= 1'b0; 
                 else
                     q<=d;

//End the "d_ff module
            endmodule

Para probar si este bloque de código funciona, necesitará un bloque de estímulo (a veces llamado banco de prueba). El objetivo de este bloque será proporcionar las entradas del módulo para que pueda ver las salidas y verificar si El bloque funciona correctamente.

    
respondido por el KillaKem
-1

Cualquier cosa debajo siempre ocurre secuencialmente, ya que en el código se trabaja el procesamiento línea por línea en lugar de hacerlo en paralelo, donde verilog crea todos los cables en paralelo, es por eso que puedo poner los cables en el código casi donde quiero y aún saldrán a la luz. mi diagrama donde los necesito siempre y cuando los asigne correctamente.

    
respondido por el Kyle Calica-St

Lea otras preguntas en las etiquetas