Курсовая работа: Основы языка VHDL
signal GATE_DELAY: TIME := 10 ns;
В первом примере декларируется объект CLOCKтипа BIT, начальное значение при моделировании будет взято по умолчанию, т.е. 0 (набор значений типа BIT: 0,1 и крайнее левое значение 0).
Не все объекты в языке VHDLсоздаются путем декларирования, например, входные/выходные порты всегда считаются объектами класса signal.
1.4 Типы данных
Каждый объект в языке VHDLможет хранить значения, относящиеся к определенному набору. Это множество значений декларируется с помощью объявления типа (typedeclaration). Тип – это имя, которое связывается с определенным набором значений и набором операций. Некоторые типы предопределены языком VHDL. Например, BOOLEANимеет набор значений FALSE, TRUEи набор операторов: and, or, nor, nand, not. В языке имеется возможность создавать новые типы с использованием деклараций и задания набора операций.
Все возможные типы в VHDLраспадаются на четыре больших категории:
- scalar(скалярные),
- composite(композитные) – они состоят из элементов одного типа (массивы) или различного типа (записи),
- accesstype(типы доступа) – обеспечивают доступ к данному типу через указатели,
- filetypes(тип – файл) – обеспечивает доступ к объектам, содержащим последовательности значений данного типа.
В свою очередь скалярные типы подразделяются на четыре вида:
-enumeration(перечислимый тип),
-integer(целый тип),
-physical(физический тип),
-floatingpoint(тип “с плавающей запятой”).
Перечислимый тип
В декларации определяется набор определенных пользователем значений, например:
type MVL is ('U','0','1','Z);
type MICRO_OP is (LOAD, STORE, ADD, SUB, MUL, DIV);
MVL – перечислимый тип с упорядоченным набором значений: 'U', '0', '1', и 'Z'. MICRO_OP имеетнаборзначений: LOAD, STORE, ADD, SUB, MUL, DIV. Порядок записи значений в декларации определяет лексику, т.е. значение справа всегда больше значения слева: STORE<DIVistrue, SUB> MULisfalse. Значения в перечислимых типах имеют позиционный номер. Позиционный номер самого левого элемента 0. Значения в перечислимых типах еще называют enumerationliterals(литералы перечислимого типа). Например, вдекларации:
type CAR_STATE is (STOP, SLOW, MEDIUM, FAST);
литералами являются STOP, SLOW, MEDIUM, FASTи только они могут присваиваться переменной CAR_STATE.
Целый тип
Integer– целое, задает тип, набор значений которого находится в заданном целочисленном диапазоне, например:
type INDEX is range 0 to 15;
type WORD_LENGTH is range 31 downto 0;
subtype DATA_WORD is WORD_LENGTH range 15 downto 0;
type MY_WORD is range 4 to 6;
INDEX– это переменная целочисленного типа, набор значений которой размещен в диапазоне целых от 0 до 15. DATA_WORD– подтип WORLD_LENGTHв диапазоне от 15 до 0. В отличие от перечислимых в целочисленных типах позиционный номер равен величине значения, например, для значения 31 переменной WORD_LENGTHпозиция равна 31.
Тип “с плавающей запятой”
Тип floatingpointобладает набором значений в заданном диапазоне вещественных чисел, например:
type TTL_VOLTAGE is range 1.4 to 5.5
type REAL_DATA is range 0.0 to 31.9;