- •Файл Lekz5_massiv.Doc Лекция № 5 (5-тый курс) Тема: массивы в языке vhdl и проектах криптографических процессоров.
- •1. Вводные замечания и классификация массивов
- •2. Предопределенные типы массивов.
- •3. Массивы пользователя.
- •4. Примеры оформления объявлений пользовательских массивов:
- •5. Методы и средства для определения массивов (Задание значений элементам массивов)
- •6. Инициализация (задание) начальных значений массивов типов bit_vector и std_logic_vector посредством строки бит.
- •7. Инициализация (задание) начальных значений символьных типов массивов посредством символьной строки.
- •8. Программное формирование значений элементов массивов и доступ к элементам массивов
- •9. Пример vhdl проекта криптографического процессора, построенного с использованием массивов
2. Предопределенные типы массивов.
Предопределенный массив – это массив с заранее описанной разработчиками языка VHDL структурой и типом содержащихся в нем элементов. Некоторые из ранее проклассифицированных массивов описаны в пакетах Standart, Std_logic_1164, Std_logic_arith и Numeric_std .
Пакет Standart библиотеки Std описывает два одномерных неограниченных массива вида (типа):
Bit_vector;
String.
Объявления этих типов массивов имеют вид:
type bit_vector is array (natural range <>) of bit;
один индекс
t ype string is array (positive range <>) of character;
один индекс
Пакет Std_logic_1164 объявляет неограниченный одномерный массив типа std_logic_vector. Это объявление имеет вид:
type std_logic_vector is array (natural range <>) of std_logic;
Пакеты Std_logic_arith и Numeric_std объявляют неограниченные одномерные массивы типов signed и unsigned.
Эти объявления имеют вид:
type signed is array (natural range <>) of std_logic;
один индекс
type unsigned is array(positive range <>) of std_logic;
Обратите внимание, что в состав ранее приведенных объявлений входит один и тот же набор ключевых слов. Особо обратите внимание на слова is array. Эти ключевые слова означают, что слово, стоящее после ключевого слова type становится зарезервированным идентификатором типа, который можно использовать в VHDL программе. Это означает, что любая программная величина (constant, variable, signal) , связанная с этим зарезервированным идентификатором типа, является одномерным массивом, имеющим характеристики, определяемые этим зарезервированным идентификатором.
В круглых скобках выше приведенных объявлений содержится информация о количестве индексов и диапазоне их изменения. В конструкции этих объявлений после ключевого слова range стоит пара символов <>. Эта пара символов означает, что диапазон изменения индекса пока не задан. Количество индексов в этих объявлениях составляют 1. Тип значений, которые может принимать индекс, определяется словами natural или positive.
После ключевого слова of указан тип элементов, который может содержать массив.
Как говорилось выше, объявления некоторых одномерных массивов содержаться в пакетах. Поэтому для корректной работы VHDL программ, где используются программные величины указанных типов в заголовке программы должны содержаться имена библиотек и пакетов, которые содержат описания этих предопределенных массивов.
Для корректной работы VHDL программы, которая использует указанные выше предопределенные типы массивов, пользователю необходимо самому определить диапазон изменения индекса массива при объявлении программных величин.
Итак, если мы желаем использовать в программном проекте величину, связанную с одним из одномерных предопределенных массивов, мы должны сделать в программе записи вида:
s
ignal
masha : string (1 to 56)
тип прогр.величины имя величины структура этой величины
constant pas1: bit_vector (7 downto 0);
constant message1: string (0 downto 70);
variable perem1: std_logic_vector (0 to 15);
signal DataBus : unsigned (0 to 31);
Важное замечание : В языке VHDL с термином одномерный массив часть отождествляется термин vector. Другими словами, vector – это синоним для одномерного массива. Этот термин часто используется при работе с массивами типов:. bit_vector, std_logic_vector.
