ModelSIM no genera resultados para ninguna variable

-1

He estado trabajando en este tema durante días y no he podido resolverlo. Esperaba que alguno de ustedes pudiera ayudarme a resolver este problema.

Entonces, cuando ejecuto mi código SV en Quartus y lo compilo, no recibo ningún error. Esto también sucede cuando compilo mi código en ModelSIM. Sin embargo, siempre que genero mi análisis de forma de onda en ModelSIM, ninguna de las variables, excepto las que fuerzo, están cambiando sus valores.

El código está debajo:

Top_level.sv

module top_level (
    input logic SYS_CLK,
    input logic PS2_CLK,
    input logic PS2_DATA,
    input logic rst,
    output logic [3:0] VGA_R, VGA_G, VGA_B,
    output logic h_sync_o, v_sync_o  // h_sync and vertical sync output
);

logic reducedClk; 
logic halfClock;
logic [1:0] direction = 0;
logic [9:0] x = 0, y = 0;

halfClk half (
    .clk(SYS_CLK),
    .reset(rst),
    .halfclk(halfClock)
);
counter count (
    .SYS_CLK(SYS_CLK),
    .reset(rst),
    .newCLK(reducedClk)
);

halfClk.sv

module halfClk(input logic clk, input logic reset, output logic halfclk);   // This module takes in a clock signal, and outputs a clock signal with half the frequncy
    always_ff@(posedge clk) begin
        if (reset)
            halfclk <= 0;                                                       // at every single positive edge of the clock,
        halfclk = ~halfclk; 
    end                                                         // the slow clock flips. This means that for each two cycles of the clock, the half clock is cycled. 
endmodule                                                                           //this produces a duty cycle of 50%

counter.sv

module counter (
    input logic SYS_CLK,
    input logic reset,
    output logic newCLK
);

logic [11:0] CLK_COUNTER;

always_ff @(posedge SYS_CLK) begin  
    if (reset) begin
        CLK_COUNTER <= 0;
        newCLK <= 1;
    end     
    if (CLK_COUNTER < 2000) begin
        CLK_COUNTER <= CLK_COUNTER + 1;
        newCLK <= newCLK;
    end
    else begin
        CLK_COUNTER <= 0;
        newCLK <= ~newCLK;
    end
end 
endmodule 

Para los propósitos de esta pregunta, ignora todas las otras variables. Creo que si puedes ayudarme a averiguar por qué halfClock y reducedClock no están cambiando, me ayudará con los otros.

ModelSIM

Gracias por su ayuda de antemano, este error realmente ha sido molesto.

    
pregunta C. Ols

1 respuesta

0

Necesita un reinicio síncrono para que el registro se inicialice a 0 y luego comience a contar.

    
respondido por el RonaldB

Lea otras preguntas en las etiquetas