ВУЗ:
Составители:
42
САПР поддерживает несколько предопределенных типов данных, достаточных для описания проектов
различного уровня сложности. Однако пользователь лишен возможности создавать свои альтернативные типы
данных. Рассмотрим предлагаемый набор предопределенных типов.
Тип bit - предопределенный перечислимый тип, который может принимать значения '0', '1' и 'D'.
Дополнительное значение 'D' (don't care) введено для обозначения неопределенного состояния. Когда какой-
либо сигнал имеет значение 'D', утилита логического синтеза может установить его в '0' или '1'. Это
единственное расширение языка, допущенное в САПР Alliance, которое не соответствует стандарту IEEE
Standard 1076 VHDL., то есть не является частью любого стандартного подмножества VHDL (S0, S1, S2).
Тип bit_vector - предопределенный массивный тип, элементами которого являются объекты типа bit.
Тип mux_bit - предопределенный подтип типа bit, связанный с функцией разрешения mux. Эта функция
следит, чтобы только один драйвер был подключен к сигналу. Эффективным значением сигнала является
значение активного драйвера. Если все драйверы отключены, значение сигнала устанавливается в '1'. Сигнал
типа mux_bit должен быть объявлен как шина (bus), например:
signal data: mux_bit bus;
Тип mux_vector - предопределенный массивный тип, элементами которого являются объекты типа mux_bit.
Тип wor_bit - предопределенный подтип типа bit, связанный с функцией разрешения wor. Эта функция
допускает, чтобы к одному сигналу были подключены несколько драйверов. Активные драйверы должны иметь
одинаковое значение. Эффективным значением сигнала является значение активных драйверов. Если все
драйверы отключены, значение сигнала устанавливается в '1'. Сигнал типа wor_bit должен быть объявлен как
шина (bus).
Тип wor_vector - предопределенный массивный тип, элементами которого являются объекты типа wor_bit.
Тип reg_bit - предопределенный подтип типа bit, связанный с функцией разрешения reg. Эта функция
следит, чтобы только один драйвер был подключен к сигналу. Эффективным значением сигнала является
значение активного драйвера. Если все драйверы отключены, значение сигнала устанавливается в '1'. Сигнал
типа reg_bit должен быть объявлен как регистр (register), например:
signal data: reg_bit register;
Тип reg_vector - предопределенный массивный тип, элементами которого являются объекты типа reg_bit.
Поскольку возможность создавать пользовательские типы данных отсутствует, среди массивных типов
доступны предопределенные bit_vector, reg_vector, mux_vector и wor_vector.
Для всех предопределенных типов поддерживаются следующие операции:
not, and, or, xor, nor, nand, &, =, /=
Другие стандартные операторы VHDL (+, -, >, <, и др.) в текущей версии САПР пока не поддерживаются.
Функции разрешения для контроля над сигналом и его драйверами используют оператор утверждения
(assertion_statement), о котором шла речь в разделе "Контроль ошибок в VHDL". В Alliance определены только
два значения уровня серьезности (severity levels) в данном операторе:
1) warning - при этом выводится предупреждающее сообщение, если утверждаемое условие не выполнено;
2) error - при этом значении выводится сообщение об ошибке, если утверждаемое условие не выполнено,
и моделирование останавливается.
Рассмотрим теперь более детально потоковое и структурное подмножества VHDL, поддерживаемые
Alliance.
4.2.2.1. Потоковое подмножество
Потоковое подмножество VHDL САПР Alliance носит название vbe. Такое же расширение по умолчанию
имеют файлы с описанием в потоковом стиле.
В описании архитектуры допускается использовать следующие параллельные предложения (оператор
process не поддерживается):
1) простое назначение сигнала (simple_signal_assignment), например:
command <= '1';
2) условное назначение сигнала (conditional_signal_assignment), например:
Name_34 <= guarded
null when des=hn
else a when j=mn
else l when s=mn
else rith ;
3) выборочное назначение сигнала (selected_signal_assignment), например:
with command select
name_Numb_1 <= guarded null when '1',
m when '0';
4) параллельный оператор утверждения (concurrent_assertion_statement);
5) оператор блока (block_statement).
Страницы
- « первая
- ‹ предыдущая
- …
- 39
- 40
- 41
- 42
- 43
- …
- следующая ›
- последняя »