Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROGRAMMIRUEMYE_TsIFROVYE_USTROJSTVA.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.86 Mб
Скачать
  1. Массивы неограниченной длины на языке vhdl.

Массив – набор элементов одного типа.

Для массивов неограниченной длины не задаётся конкретный диапазон индекса, а только его тип. Описание таких типов имеет следующий синтаксис:

type name is array (name_of_type_of_index range <>) of element_type;

Например:

type sample is array (natural range <>) of integer;

Когда описывается объект такого типа, то необходимо задать конкретное значение интервала для индекса, например:

variable sh_sam: sample (0 to 63);

На базе типа, описанного таким образом, можно определять подтипы, в которых также должно быть задано конкретное значение интервала для индекса.

Если таким типом описывается константа, то это делается на базе агрегатного описания. В таком описании могут быть просто перечислены значения элементов или же могут быть номера элементов, которым присваиваются значения, а в агрегате задаются напрямую.

Например:

constant cc_dam:=(127,63,0,-63);

constant dd_dam:=(1=>23, 3=>4, 2=>100);

Битовые векторы. Для представления битовых векторов язык VHDL имеет встроенный тип – массив неограниченной длины с битовым типом элементов и положительным типом индекса:

type bit_vector is array (positive range <>) of bit;

В VHDL определены типы Signed и Unsigned. Это массивы неограниченной длины, элементы которых имеют тип bit, но для которых определён расширенный набор операций и функций преобразования.

Строки. Для представления строк, VHDL имеет встроенный тип – массив неограниченной длины с символьным типом элементов и положительным типом индекса:

type string is array (positive range <>) of character;

Физические типы неограниченной длины. Пакет стандартной логики std_logic_1164 предлагает следующие типы - массивы неограниченной длины:

type std_ulogic_vector is array (natural range <>) of std_ulogic;

Например:

variable c_t: std_ulogic_vector (0 to 13) :=”ZZZZZ11Z00---”;

Массивы неограниченной длины находят широкое применение при описании входных и выходных сигналов проектируемого устройства.

В качестве элементов массивов могут быть использованы массивы.

  1. Предопределенные типы массивов языка vhdl. Битовые векторы и строки.

Существуют две разновидности типа "массив": ограниченный (constrained) и неограниченный (unconstrained).

Объявление ограниченного типа определяет границы диапазона индексов (число элементов массива) в каждом измерении при определении типа.

Объявление неограниченного типа не определяет границы диапазона индексов.

В языке имеется несколько предопределенных типов "массив". Их объявления выглядят следующим образом:

TYPE STRING IS ARRAY (POSITIVE RANGE <>) OF CHARACTER;

TYPE BIT_VECTOR IS ARRAY (NATURAL RANGE <>) OF BIT;

TYPE STD_LOGIC_VECTOR IS ARRAY (NATURAL RANGE <>) OF STD_LOGIC;

TYPE STD_ULOGIC_VECTOR IS ARRAY (NATURAL RANGE <>) OF STD_ULOGIC;

Объявление объекта типа "неограниченный массив" должно содержать ограничения на индекс. Диапазон изменения индексов может быть ограничен с использованием ключевых слов TO или DOWNTO:

TYPE data_memory_type IS ARRAY (INTEGER RANGE <>) OF BIT;

VARIABLE data_ memory : data_memory_type (0 TO 255);

Строки, битовые векторы используются для конструирования значений для объектов массивных типов. Они могут использоваться в любом месте, где допускается значение типа массив.

Не надо путать символ ('A') со строкой, представляющей массив длиной 1 ("A"). VHDL позволяет компактно описывать битовые строки (значение типа bit vector) в базисе 2,8 и 16.

constant clear:bit_vector :=B"00_101_010";

constant empty:bit_vector :=O"052";

constant null:bit_vector :=X"2A";

Все три константы имеют одно и то же значение. Символы подчеркивания могут использоваться в любом месте в битовой строке для облегчения чтения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]