contador de 8 bits verilog

1

¿Por qué solo obtengo 00? Debería obtener un contador en el borde positivo del reloj. ¿Cómo lo corrijo?

El contador síncrono de 8 bits que usa T Flip-Flops y AND Gates Considere el circuito en la Figura 1. Es un contador síncrono de 4 bits que utiliza cuatro flipflops de tipo T. El contador aumenta su valor en cada borde positivo de la señal del reloj si la señal de habilitación es alta, ya que es una señal activa-alta. El contador se borra inmediatamente a 0 mediante el ajuste de la señal Clear asíncrona baja, ya que es una señal activa-baja. Se considera que la salida del flip-flop más a la izquierda en el diagrama representa el LSB del contador.

module lab4part1(SW, KEY, HEX1, HEX0);
    input [1:0] SW;
    input  [0:0] KEY;
    output [0:6] HEX1,HEX0;

    wire [6:0] W;
    wire [7:0] S;

    assign W[0] = SW[1] & S[7];
    assign W[1] =  W[0] & S[6];
    assign W[2] =  W[1] & S[5];
    assign W[3] =  W[2] & S[4];
    assign W[4] =  W[3] & S[3];
    assign W[5] =  W[4] & S[2];
    assign W[6] =  W[5] & S[1];


    tff0 u1 (SW[0],KEY[0],S[7]);
    tff0 u2 (W[0], KEY[0],S[6]);
    tff0 u3 (W[1], KEY[0],S[5]);
    tff0 u4 (W[2], KEY[0],S[4]);
    tff0 u5 (W[3], KEY[0],S[3]);
    tff0 u6 (W[4], KEY[0],S[2]);
    tff0 u7 (W[5], KEY[0],S[1]);
    tff0 u8 (W[6], KEY[0],S[0]);

    seg7 (S[3:0] , HEX0 );
    seg7 (S[7:4] , HEX1 );

endmodule 

module tff0(T, Clock, ClearN, Q);
    input T, Clock, ClearN;
    output reg   Q;

    always @ ( posedge Clock, negedge ClearN)
            if ( ~ClearN )begin 
                Q <=0;
            end
            else  if ( T ) begin
                Q <= !Q;
            end

endmodule

module seg7(bcd,leds);
 input [3:0] bcd;
 output reg [6:0] leds;

 always @ (bcd)
 case (bcd)
 0:  leds = 7'b0000001;
 1:  leds = 7'b1001111;
 2:  leds = 7'b0010010;
 3:  leds = 7'b0000110; 
 4:  leds = 7'b1001100;
 5:  leds = 7'b0100100;
 6:  leds = 7'b0100000;
 7:  leds = 7'b0001111;
 8:  leds = 7'b0000000;
 9:  leds = 7'b0000100;
 10: leds = 7'b0001000;
 11: leds = 7'b1100000;
 12: leds = 7'b0110001;
 13: leds = 7'b1000010;
 14: leds = 7'b0110000;
 15: leds = 7'b0111000;
 default: leds = 7'bx;
 endcase

 endmodule
    
pregunta Luis Rodriguez

1 respuesta

1

Usted define el módulo como tff0(T, Clock, ClearN, Q); pero alimentándolo con tff0 u1 (SW[0],KEY[0],S[7]); , donde SW[0] se usa como T , KEY[0] se usa como Clock , S[7] se usa como ClearN , y La salida Q no está conectada.

Por supuesto, al desordenar los cables para tff0 , la matriz S , tal como se usa solo como entrada, no cambia, y siempre es un valor predeterminado como estaba al comienzo (0).

    
respondido por el Anonymous

Lea otras preguntas en las etiquetas