Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЛИС_20_01_15 / Учебное пособие Основы VHDL_3.doc
Скачиваний:
37
Добавлен:
12.02.2015
Размер:
84.48 Кб
Скачать

Типы языка vhdl

В языке VHDL реализована строгая типизация, т.е. смешение переменных разных типов недопустимо. Основными стандартными типами в VHDL являются: Ниже приведены стандартные типы VHDL как они задаются в библиотеках VHDL:

type bit is ('0', '1'),

для типа bit определено два логических уровня ‘0’ и ‘1’,

type bit_vector is array (natural range <>) of bit,

тип bit_vector представляет собой массив бит.

Тип boolean Тип может принимать два значения false и true, по умолчанию – false, т.к. оно задано первым в спимке перечисления:

type boolean is (false,true).

Тип Integer является базовым для представления целых чисел, он принимает целые значения в диапазоне от до :

type integer is range -2 147 483 647 to 2 147 483 647.

Для типа определены операторы +, -, *, /, mod(модуль), rem(остаток), =, /=(не равно), <, >, <=, >=, abs(абсолютное значение), **(возведние в степень); На основе типа integer определны стандартные подтипы:

subtype natural is integer range 0 to biggest_integer,

subtype positive is integer range1 to biggest_integer.

Все эти типы и операторы для них задаются во встроенной библиотеке Library STD.

Для представления всех возможных значений, принимаемых электрическим сигналом был разработан пакет STD_LOGIC_1164, в котором определны типы std_ulogic и std_logic. Тип std_ulogic определяется следующим образом:

type std_ulogic is

( 'U', -- Uninitialized

'X', -- Forcing Unknown

'0', -- Forcing 0

'1', -- Forcing 1

'Z', -- High Impedance

'W', -- Weak Unknown

'L', -- Weak 0

'H', -- Weak 1

'-' -- Don't care

);

Это перечисляемый тип, который может принимать девять значений, соответственно, не инициализированное, сильная неопределнность, сильный ноль, сильная единица, высокоимпедансное состояние, слабая неопределенность, слабый ноль, слабая единица, безразлично. U в названии означает Unresolved Type, т.е. тип не поддерживает использование нескольких источников для сигнала.

Тип std_logic определяется на основе типа std_ulogic:

sybtype std_logic is resolved std_ulogic.

Где resolved – функция, определяющая значение сигнала данного типа в ситуации наличия нескольких источников. Также в пакете STD_LOGIC_1164 определен вектор типа std_logic:

type std_logic_vector is array (natural range <> of std_logic

и набор функций для пробразования типов данных, некоторые из которых приведены ниже:

function To_StdLogicVector ( b :bit_vector ) return std_logic_vector,

function To_bivector (s : std_logic_vector; xmap : bit:=’0’ ) return bit_vector.

Тип std_logic в настоящее время считаетсястандартным типом для описания цифровых устройств. Synopsys создала пакеты std_logic_usigned, std_logic_signed, std_logic_arith, в которых определены арифметические и логические операции для типа std_logic_vector. Также в этих пакетах определена функция преобразования std_logic_vector в integer

function conv_integer(arg: std_logic_vector) return integer

и обратная из integer в std_logic_vector:

function conv_std_logic_vector(arg: integer; size: integer) return std_logic_vector.