
- •Файл Lekz5_massiv.Doc Лекция № 5 (5-тый курс) Тема: массивы в языке vhdl и проектах криптографических процессоров.
- •1. Вводные замечания и классификация массивов
- •2. Предопределенные типы массивов.
- •3. Массивы пользователя.
- •4. Примеры оформления объявлений пользовательских массивов:
- •5. Методы и средства для определения массивов (Задание значений элементам массивов)
- •6. Инициализация (задание) начальных значений массивов типов bit_vector и std_logic_vector посредством строки бит.
- •7. Инициализация (задание) начальных значений символьных типов массивов посредством символьной строки.
- •8. Программное формирование значений элементов массивов и доступ к элементам массивов
- •9. Пример vhdl проекта криптографического процессора, построенного с использованием массивов
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;