ЗАДАНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ МАССИВУ НА ЯЗЫКЕ 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!