ЗАДАНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ МАССИВУ НА ЯЗЫКЕ VHDL . АГРЕГАТЫ
Начальные значения объектам типа массив могут задаваться тремя способами:
Прямое определение - начальные значения элементов могут задаваться списком, в котором первое значение соответствует первому элементу массива, а каждое последующее — последующему элементу.
Ассоциирование.Выполняется ассоциирование значения индекса со значением элемента, т. е. сопоставление элементу с указанным индексом заданного значения элемента.
Агрегаты.Могут использоваться для задания значений нескольким переменным или сигналам одновременно. Это определение имеет следующий синтаксис:
(namel, name2.....name_n)<=name_aggregate
Например, пусть имеются четыре переменных типа bit и переменная типа bit_vector длины 4. Для того чтобы присвоить переменным значения элементов этого вектора, можно выполнить следующее действие: (z_flag, n_flag, v_flag, c_flag)<=flag_reg;
АТРИБУТЫ ДАННЫХ ТИПА МАССИВОВ ЯЗЫКА VHDL
Язык VHDL поддерживает набор атрибутов, применимых к объектам типа массив и позволяющих получить информацию о типе. Для обращения к значениям этих атрибутов используется тот же синтаксис, что и для неструктурированных типов. Перечень атрибутов приведен в таблице (А-имя типа массива или объекта массив)
Имя атрибута Описание
А' left (N) Левая граница массива по указанному измерению N
A' right (N) Правая граница массива по указанному измерению N
|
|
A' low(N) Нижняя граница массива по указанному измерению N
A'hight(N) Верхняя граница массива по указанному измерению N
A'range(N) Интервал индекса массива по указанному измерению N
A’reverse__range(N) Интервал индекса массива по указанному измерению
в обратном порядке
A'length(N) Длина интервала индекса массива по указанному
измерению N
Например:
type A is array( 1 to 4, 31 downto 0) оf boolean,
A'left(l)=l;
A’low(l)=l;
A'right(2)=0;
A'hight(2)=31;
A'range(l) is 1 to 4,
A'range(2) is 0 to 31;
A'length(1)=4;
A'length(2)=32;
МАССИВЫ НЕОГРАНИЧЕННОЙ ДЛИНЫ НА ЯЗЫКЕ 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---”;
Массивы неограниченной длины находят широкое применение при описании входных и выходных сигналов проектируемого устройства.
|
|
В качестве элементов массивов могут быть использованы массивы.
ПРЕДОПРЕДЕЛЕННЫЕ ТИПЫ МАССИВОВ ЯЗЫКА 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";
Все три константы имеют одно и то же значение. Символы подчеркивания могут использоваться в любом месте в битовой строке для облегчения чтения.
Дата добавления: 2020-04-08; просмотров: 239; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!