Создание сбоя в работе часов в дизайне verilog

StackOverflow https://stackoverflow.com/questions/2251465

  •  20-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю чип с использованием 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