Изучение VHDL

Параллельный оператор assert.


Этот оператор имеет такой же синтаксис, как и соответствующий ему последователь­ный оператор. Он выполняется точно так же, как и процесс, в исполнительной части которого стоит последовательный оператор assert  с таким  же содержанием.

Объект проекта описывается набором составных частей проекта, таких как: объявление объекта, тело архитектуры объекта. Не все знают, что в исполнительной части объекта проекта, которая открывается словом begin, вставляются параллельные операторы, которые не выполняют присваиваний сигналам, т.е. не влияют на поведение объекта. Это, так называемые, пассивные вызовы процедуры и процессы. Наиболее частое применение этих операторов – проверка соответствия входных сигналов, поступающих через порты, заданным требованиям или соответствие включения объекта в окружение, задаваемое ограничениями на настроечные константы generic. Например, проверяется время предустановки сигнала относительно фронта синхросерии, соответствие его уровней, разрядность входных данных и т.п. Так вот, при несоответствии сигналов или настроечных констант, оператор assert выдает сообщение об ошибке.  

Рассмотрим пример объявления объекта RS-триггера:

entity RS_FF is

   generic(delay:time);

   port(R, S: in bit;

        Q: out bit:='0';

        nQ: out bit:='1');

begin

      assert (R and S) /='1' report" In RS_FF R=S=1" severity error;

end entity RS_FF;

В нем настроечная константа delay задает параметр задержки, например, от входа до выхода, который будет подставлен при компиляции на этапе связывания компонентов.  Порты R,S имеют режим ввода in, а порты Q, nQ – режим вывода out. При единичных сигналах на обоих входах, т.е. когда RS – триггер функционирует неправильно, оператор assert выдает сообщение об ошибке.

Содержание раздела