Domanda

Io sono la progettazione di un chip utilizzando un Verilog. Ho un counter.I 3 bit vogliono che quando il contatore è alla sua 8 ° ciclo, non ci dovrebbe essere un problema tecnico di clock e successivamente lavorare normally.What potrebbero essere i possibili modi di produrre un glitch in un orologio disegno Verilog?

È stato utile?

Soluzione

Un modo per iniettare difetti su un segnale di clock è quello di utilizzare force e release dal banco di prova:

module tb;

reg clk;
reg [2:0] cnt;
reg reset;

always begin
    #5 clk <= 0;
    #5 clk <= 1;
end

always @(posedge clk or posedge reset) begin
    if (reset) begin
        cnt <= 0;
    end else begin
        cnt <= cnt + 1;
    end
end

always begin: inject_clk_glitch
    wait(cnt == 7);
    #1 force clk = 1;
    #1 force clk = 0;
    #1 release clk;
end

initial begin
    reset = 1;
    #20 reset = 0;
    #500 $finish;
end

endmodule

Altri suggerimenti

Così si vuole essenzialmente un fronte di clock in più? Non riesco a pensare a un modo per fare questo in RTL. Si può essere in grado di fare un brutto hack utilizzando ritardi cancello, ma questo avrebbe bisogno di essere caratterizzato più di variazioni di temperatura e di processo.

Mi raccomando che si pensa di un'altra soluzione al vostro problema. Perché avete bisogno di questo fronte di clock in più?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top