Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz5_massiv.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
121.34 Кб
Скачать

3. Массивы пользователя.

Язык VHDL дает возможность пользователю самому объявить и определить любой тип для формирования характеристик массивов. Причин для самостоятельного объявления пользователем массива может быть несколько:

  • Отсутствует определение типа массива в библиотечных пакетах;

  • Не нравится идентификатор типа массива, который объявлен в пакете.

  • Уменьшить аппаратные затраты при реализации проекта

Если просмотреть более внимательно списочный состав типов массивов, приведенных в подразделе ** (стр.2), то нужно заметить, что ни в одном из пакетов языка VHDL нет объявления одномерных массивов целого типа и вещественного типа.

Отсутствуют объявления двухмерных массивов всех указанных в подразделе ** типов.

А именно эти разновидности массивов часто приходиться использовать при построении VHDL проектов криптографических процессоров.

Конструкция объявления одномерного массива пользовательского типа имеет такой вид:

type (имя пользов.типа) is array (диапазон измен.индекса) of тип содержащихся в нем элементов;

Конструкция объявления двухмерного массива пользовательского типа имеет такой вид:

type (имя пользов.типа) is array (диапазон измен.индекса 1-го измерения; диапазон измен.индекса 2-го измерения;) of тип содержащихся в нем элементов;

4. Примеры оформления объявлений пользовательских массивов:

Пример 1.

Пусть для работы нашей программы нужно организовать одномерный массив, содержащий 5 элементов типа integer. Для этого нужно объявить пользовательский тип массива с указанием того, что он будет содержать элементы типа integer:

type mas_int is array (0 to 4) of integer;

Теперь, используя имя объявленного типа можно с помощью его объявить программные величины (constant, variable, signal) как массивы:

Signal sig_mas : mas_int;

Эта запись означает, что в нашей VHDL программе мы используем программную величину Signal , которая имеет имя (идентификатор) sig_mas и эта величина является массивом типа mas_int. Другими словами, эта величина является одномерным (в круглых скобках один индекс) массивом, содержащим 5 элементов. Нумерация начинается с 0 и заканчивается 4 (range 0 to 4), элементами этого массива являются integer числа.

П ример 2.

t ype BYTE12 is array (0 to 7) of bit;

имя пользов. типа один индекс *

constant const12 : BYTE ;

Последнюю запись следует понимать так:

В VHDL программе планируется использовать программную величину constant с именем const12 , которая имеет пользовательский тип BYTE12 и является одномерным массивом, содержащим 8 элементов, нумерация элементов начинается с 0 и заканчивается 7, элементы этого массива имеют тип bit.

Примечание: Программную величину constant const12 мы могли бы определить, используя предопределенный тип bit_vector (0 to 7) :

constant const12 : bit_vector (0 to 7);

Пара строк примера 2, помеченная * и последняя строка примечания являются абсолютно эквивалентными с точки зрения функционирования программы.

Пример 3.

type mas1 is array (0 to 7) of character;

signal mas2_sig : mas1;

Пример 4.

В этом примере объявляется двухмерный символьный массив, содержащий 8-м строк и 16-ть столбцов. Затем этим

type mas2x is array (0 to 7; 0 to 15) of character;

variable mas2x_var : mas2x;

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