Применение языка VHDL при проектировании специализированных СБИС. Ивченко В.Г. - 10 стр.

UptoLike

Составители: 

11
Добавочные типы с плавающей точкой могут быть объявлены явно заданием диапазона значений,
допустимых для объектов данного типа. Рассмотрим пример объявлений типа с плавающей точкой.
type Probability is range 0.0 to 1.0;
Диапазоны задаются либо убывающей, либо возрастающей последовательностью значений. Границы
диапазона могут быть произвольными выражениями. Рассмотрим, как объявляются объекты, использующие
эти типы.
constant alpha_level: Probability:=0.75;
variable beta_level: Probability;
Константе должно быть присвоено значение в момент объявления. Аналогично начальное значение может
быть присвоено переменной.
Литералы с плавающей точкой представляют значения любого типа с плавающей точкой и всегда содержат
десятичную точку или отрицательную экспоненту: например, 3.14159, -23.0, 1E-2. Запись с экспонентой может
быть использована для любого вида числовых литералов: 9Е целое, а 0.324Е-3 с плавающей точкой.
Для формирования выражения может быть использована комбинация имен объектов, литералов и
операторов.
Все обычные арифметические операторы и операторы отношения являются предопределенными для типа с
плавающей точкой. Тем не менее, оба аргумента оператора должны быть одного типа. Предопределенный
оператор ">" не работает с операндами различных типов, даже если они имеют одинаковый диапазон.
Все целые типы и типы с плавающей точкой являются тесно связанными типами (closely related types) и
VHDL обеспечивает для этих типов преобразование (conversion) между любыми парами.
1.3.1.3. Перечислительные типы
Тип состоит из множества возможных значений, которые могут принимать объекты этого типа, вместе с
множеством операций над типом. В объявлении перечислительного типа явно перечисляются идентификаторы
и графические символы, которые означают значения типа. Идентификаторы и символы являются литералами
для типа точно так же, как 3 и 245 являются литералами целого типа. Значения упорядочены и отношение
упорядочения определяется последовательностью их появления в списке. Рассмотрим несколько примеров:
type severity is(OKAY,NOTE,WARNING,ERROR,FAILURE);
type color is(red,orange,yellow,green,blue,indigo,violet);
type bit6 is('U','0','1','F','R','X');
type fuzzy_logic is('0', may be,'1');
Нет необходимости писать объявления для следующих перечислительных типов, поскольку они являются
предопределенными:
type character is (NUL,...,'A','B','C',...DEL);
type boolean is (False,True);
type bit is ('0','1');
Тип character включает символы для всех печатаемых и непечатаемых элементов кода ASCII, а также для их
графических представлений.
Логические операторы and, or, nand, nor и xor определяются для операндов типа bit или типа boolean и дают
результат того же самого типа, что и операнды (но нельзя задать один операнд типа boolean, а другой типа bit).
Операторы отношения "=", ">", ">=" и другие дают результат типа boolean независимо от того, какие типы
операндов. Рассмотрим несколько примеров:
signal chip_select,data_rdy,inhibit: bit;
variable level:severity;
variable test_result:probability;
signal proceed:boolean;
.
.
.
chip_select<=data_rdy and not inhibit; --Логические
-- операции над битами при назначении сигналов
if level <= red then ... -- Выражение с отношением,
-- использующее
-- перечислительный тип
proceed <= test_result > Alpha_level; -- Результат
-- операции отношения над
-- значениями с плавающей
-- точкой булевого типа
Не нужно путать два значения символа "<=". Этот символ используется как при назначении сигналу
значения некоторого выражения, так и представляет отношение "меньше или равно".