ВУЗ:
Составители:
20
array ( <диапазон> «, <диапазон> ») of <тип элемента массива>
Диапазон задает множество допустимых значений индекса. Число
измерений массива формально не ограничено. Если диапазон задан
конструкцией range<>, то это является объявлением неограниченного
массива. В этом случае определяется не диапазон значений индекса, а
только тип индексной переменной.
Такое определение предполагает задание диапазона при определении
конкретного
экземпляра объекта.
Примеры:
type RAM is array (LENGTH-1 downto 0) of integer range 2**WIDTH-l
downto 0;
type RAM1 is array (LENGTH-1 downto 0,WIDTH-1 DOWNTO 0) of
std_logic;
type RAM2 is array (integer range<>, integer range<>) of std_logic;
Во всех приведенных декларациях объявляется в сущности одно и то
же, а именно матрица ячеек памяти емкостью LENGTH слов по WIDTH
разрядов в каждом, причем предполагается, что эти параметры были ранее
определены. Однако выполнено это разными способами, а значит, и
ссылаться на
эти типы следует по-разному. RAM и RAM1 определены как
ограниченные типы массивов, RAM — как одномерный массив целых, a
RAM1 — как двумерный массив битов. RAM2 определен как
неограниченный тип и требует задания границ индексов при декларации
объектов выбранного типа.
Декларации объектов, принадлежащих приведенным типам, могут
выглядеть следующим образом:
variable RAM_INSTANCE: RAM;
variable RAM1_INSTANCE: RAM1;
variable RAM2_INS: RAM2(LENGTH-1 downto 0, WIDTH-1 downto 0);
При обращении к элементам массива в программе индексы
помещаются в скобках следом за именем массива:
RAM2_INS(у, 5) :=’1’;
Для одномерных массивов определено несколько групповых
операций, в которых массив рассматривается как единое целое. Это,
прежде всего, операция конкатенации & (объединение строк). Например,
приведенная ниже последовательность операторов присваивает сигналу
значение "10011101".
A:="1001";
B<= "1101" &
а;
Здесь: A и B — строки или битовые векторы, причем A -
20 array ( <диапазон> «, <диапазон> ») of <тип элемента массива> Диапазон задает множество допустимых значений индекса. Число измерений массива формально не ограничено. Если диапазон задан конструкцией range<>, то это является объявлением неограниченного массива. В этом случае определяется не диапазон значений индекса, а только тип индексной переменной. Такое определение предполагает задание диапазона при определении конкретного экземпляра объекта. Примеры: type RAM is array (LENGTH-1 downto 0) of integer range 2**WIDTH-l downto 0; type RAM1 is array (LENGTH-1 downto 0,WIDTH-1 DOWNTO 0) of std_logic; type RAM2 is array (integer range<>, integer range<>) of std_logic; Во всех приведенных декларациях объявляется в сущности одно и то же, а именно матрица ячеек памяти емкостью LENGTH слов по WIDTH разрядов в каждом, причем предполагается, что эти параметры были ранее определены. Однако выполнено это разными способами, а значит, и ссылаться на эти типы следует по-разному. RAM и RAM1 определены как ограниченные типы массивов, RAM — как одномерный массив целых, a RAM1 — как двумерный массив битов. RAM2 определен как неограниченный тип и требует задания границ индексов при декларации объектов выбранного типа. Декларации объектов, принадлежащих приведенным типам, могут выглядеть следующим образом: variable RAM_INSTANCE: RAM; variable RAM1_INSTANCE: RAM1; variable RAM2_INS: RAM2(LENGTH-1 downto 0, WIDTH-1 downto 0); При обращении к элементам массива в программе индексы помещаются в скобках следом за именем массива: RAM2_INS(у, 5) :=’1’; Для одномерных массивов определено несколько групповых операций, в которых массив рассматривается как единое целое. Это, прежде всего, операция конкатенации & (объединение строк). Например, приведенная ниже последовательность операторов присваивает сигналу значение "10011101". A:="1001"; B<= "1101" & а; Здесь: A и B — строки или битовые векторы, причем A -
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »