T - Flip Flop usando D Flip Flop (Verilog)

0

Estoy intentando implementar t flop usando d flip flop en veilog para lo cual mi código de flip flop es así:

module dff(D, CLK, RESET, Q, QOUT);
input D, CLK, RESET;    // Inputs to flip flop 
output Q, QOUT;     // Output of flip flops

reg Q, QOUT;            // Flip Flops need to store the previous value, therefore using reg

always @ (posedge CLK or posedge RESET) begin   // This block executes every time at rising edge of clk or reset
if(RESET)                           // If reset is high
begin
    Q <= 1'b0;
    QOUT <= 1'b1;
end
else
begin
      Q <= D;
     QOUT <= ~D;
    end
end

endmodule

Y estoy usando este dff en mi módulo t flip flop que se ve así

module tff(T, CLK, RESET, Q, QOUT);

input T, CLK, RESET;
output Q, QOUT;

wire out1;
wire out2;
assign out1 = T ^ out2;

dff uut(out1, CLK, RESET, Q, QOUT);

assign Q = out2;

endmodule

Pero al compilar el código obtengo un error que es Xst: 528 - Fuente múltiple en la unidad tff en la señal Q; esta señal está conectada a varios controladores.

Por favor, ayúdame cuando me equivoque en mi código

    
pregunta Mayank Pal

2 respuestas

2

Q se asigna en dos lugares. Aquí:

dff uut(out1, CLK, RESET, Q, QOUT);

y aquí:

assign Q = out2;

Eliminar / comentar / cambiar uno o ambos.

    
respondido por el alex.forencich
0

Creo que el argumento Q de la instancia dff debería cambiarse a out2.

Debería verse así:

assign out1 = T ^ out2;

dff uut(out1, CLK, RESET, out2, QOUT);

assign Q = out2;
    
respondido por el BHook

Lea otras preguntas en las etiquetas