문제

Verilog를 사용하여 칩을 설계하고 있습니다. 3 비트 카운터가 있습니다. 카운터가 8 번째 루프에있을 때 원합니다. 시계 결함이 있어야합니다 그리고 그 후에 정상적으로 작동합니다. Verilog 디자인에서 시계 결함을 생성하는 가능한 방법은 무엇입니까?

도움이 되었습니까?

해결책

시계 신호에서 글리치를 주입하는 한 가지 방법은 사용하는 것입니다. force 그리고 release 테스트 벤치에서 :

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

다른 팁

그래서 당신은 본질적으로 여분의 시계 가장자리를 원하십니까? RTL 에서이 작업을 수행하는 방법을 생각할 수 없습니다. 게이트 지연을 사용하여 추악한 해킹을 할 수 있지만 온도 및 공정 변화에 대해 특성화되어야합니다.

문제에 대한 다른 해결책을 생각하는 것이 좋습니다. 이 추가 시계 가장자리가 필요한 이유는 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top