2013-04-14 2 views
1

1) Я понимаю, что сброс используется в ASIC для запуска из известного состояния. КакИспользование набора в флип-флопе

always @ (posedge clk or negedge reset) 
begin 
if (reset) 
//Initialize the signals 
else 
//do something 
end 

Но если это так, то почему бы нам не использовать set сигнал и начать с другого государства и в конечном итоге в конце концов, что схема, предполагают, чтобы сделать? Это кажется глупым, но я любопытно, что Я его никогда не видел.

always @ (posedge clk or negedge set) 
    begin 
    if (set) 
    //Initialize the signals 
    else 
    //do something 
    end 

2) Кроме того, я читал, что это необходимо, чтобы сигнал сброса должен быть смоделировано с помощью if/else заявления с возвратом в if состояния. Может ли кто-нибудь дать мне пример, как это сделать иначе?

ответ

1

Существует небольшая ошибка в примере вашего вопроса должно быть:

always @ (posedge clk or negedge reset) begin 
    if (~reset) begin //<-- Reset when rest low 
    //Initialize the signals 
    end 
    else begin 
    //do something 
    end 
end 

negedge reset срабатывает, когда сигнал будет низкой, поэтому вы хотите условие сброса, чтобы соответствовать. Это активный сброс низкого уровня. Для активного высокого сброса (Reset при reset == 1) вы хотите:

always @ (posedge clk or posedge reset) begin //<--Posedge trigger reset 
    if (reset) begin //<-- Reset when rest high 
    //Initialize the signals 
    end 
    else begin 
    //do something 
    end 
end 

состояние сброса не должно быть 0. Это может быть что угодно, но это должно быть известно статическое значение. т.е. NOT next_state или a+b и т. д. Он связан с буфером сброса триггера, и именно поэтому мы сохраняем имя сбрасываем.

Активные низкие сбрасывания являются предпочтительными в ASIC, так как при отсутствии питания он не возвращается. когда начинается чип, вы часто синхронно отпускаете сброс в позе часы. часто для как минимум 2 posedges. Это позволяет избежать сбоев сброса в течение небольшого промежутка времени.

Потому что вы хотите, чтобы активный сброс низкого уровня был применен при включении чипа, поэтому при включении питания все находится в известном состоянии, мы используем асинхронные сбросы. С синхронными сбросами вы не представляете, каким будет первое состояние. Синхронные сбросы часто используются государственными машинами и фильтрами, которые должны очищать данные. Асинхронные сбросы используются для сброса мощности (POR) для установки известных значений.

Структура if (reset) else используется так, чтобы инструменты синтеза могли пересчитать ее как триггер с асинхронным сбросом, попробовав другую структуру, которая может имитировать штраф, может даже синтезировать (неправильно), но вы можете легко получить аппаратные ошибки, которые делают не показывать в симуляции, что делает отладку очень сложной.

Возможно, вам будет интересно ознакомиться с set-reset flip-flops (SR Flip-Flop). Это просто JK с функцией Toggle.

Это может подразумеваться, используя следующее:

always @ (posedge clk or negedge reset or posedge set) begin 
    if (~reset) begin 
    //reset the signals 
    end 
    else if (set) begin 
    //set the signals 
    end 
    else begin 
    //do something 
    end 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^