2016-11-25 4 views
0

Я изучаю SystemVerilog, и сегодня мой лектор предупреждал нас от случайного ввода памяти в комбинационные системы. Он использовал следующий код в качестве примера:Почему это утверждение представляет память?

module gate(output logic y, input logic a); 
     always_comb 
      if(a) 
      y = '1; 
endmodule 

Однако я не понимаю, почему это представляет проблему. Насколько я вижу, это просто простой буфер. Каким образом этот код вводит память в систему?

ответ

3

В начале моделирования, если a == 0 значение y будет '0. Если позже a == 1'b1, то y станет '1. Какое значение вы ожидаете y, если позже на a == 0?

Ответ на этот вопрос заключается в том, что он сохранит прежнее значение: '1. То есть не поведение комбинационная логика, выход которого по определению зависит только от текущего состояния входов, не от их предыдущих состояний. Чтобы реализовать описанное вами поведение, синтезатору понадобится компонент с состояние, с хранения, с память. Он выполнит это с помощью защелки .

+0

Итак, будет ли это исправлено добавлением 'else y = '0;' после инструкции if? – imulsion

+3

yes ............ –

+0

Отлично, спасибо вам за помощь – imulsion

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