contador de 8 bits de T Flip Flops

0

Estoy tratando de construir un contador de 8 bits en Verilog. Necesito específicamente crear un módulo que instalé 8 veces. He seguido el diagrama a continuación (y asumí que solo puedo desarrollarlo para hacerlo de 8 en lugar de 4 bits). Parece que lo que he construido es un registro de desplazamiento, puede cambiar unos y ceros, en lugar de 0001 - > 0011 Necesito 0001 - > 0010 (duh!). Me siento como si hubiera malinterpretado el diagrama del circuito, ya que mi lógica parece de otra manera sólida. Cualquier ayuda muy apreciada!

TFlipFlop:

module tflfl(t, clk, clr, q);

input t;
input clk;
input clr;
output reg q;


always@(posedge clk, negedge clr)
    begin
        if(~clr)
            q <= 1'b0;
        else
            q <= t;
    end

endmodule

Implementación modular:

tflfl t1(.t(enable), .clk(clock), .clr(reset), .q(q0));    
tflfl t2(.t(q0), .clk(clock), .clr(reset), .q(q1));
tflfl t3(.t(q1 && q0), .clk(clock), .clr(reset), .q(q2));
tflfl t4(.t(q2 && q1 && q0), .clk(clock), .clr(reset), .q(q3));
tflfl t5(.t(q3 && q2 && q1 && q0), .clk(clock), .clr(reset), .q(q4));
tflfl t6(.t(q4 && q3 && q2 && q1 && q0), .clk(clock), .clr(reset), .q(q5));
tflfl t7(.t(q5 && q4 && q3 && q2 && q1 && q0), .clk(clock), .clr(reset), .q(q6));
tflfl t8(.t(q6 && q5 && q4 && q3 && q2 && q1 && q0), .clk(clock), .clr(reset), .q(q7));
    
pregunta DAnsermino

2 respuestas

4

Su esquema muestra un flip-flop tipo T, que alterna cuando su entrada es alta. Su código rtl, por otro lado, implementa un flip-flop tipo D regular. Tu módulo debería leer:

always@(posedge clk, negedge clr)
begin
    if(~clr)
        q <= 1'b0;
    else
        q <= q ^ t;
end

Al marcar con XOR la salida con la entrada, cambiarás el estado cuando t sea alto, creando un flip-flop tipo T.

La creación de instancias del módulo también es diferente del esquema. En todas sus entradas t falta el && enable que implementa la compuerta AND más a la izquierda en el esquema.

    
respondido por el Scott Teal
0

¿Se está construyendo un contador binario de 8 bits? Como 0000 0001 - > 0000 0010 - > 0000 0011 - > ?

¿Debe hacerse específicamente solo con T Flip Flops?

Puede ser una cadena JK FF. Tire todo el J & K alto. Reloj a la primera FF. Conecte las salidas Q directamente a los relojes de FF consecutivos (si es ~ Entrada de reloj) De lo contrario, use la salida ~ Q para marcar.

    
respondido por el seshu

Lea otras preguntas en las etiquetas