Атрибуты скалярного типа в языке VHDL. — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Атрибуты скалярного типа в языке VHDL.

2017-11-28 324
Атрибуты скалярного типа в языке VHDL. 0.00 из 5.00 0 оценок
Заказать работу

Атрибутом называют особенное, долговременное свойство предмета. В языке VHDL сигналы, переменные и другие объекты, кроме своего значения, также имеют множество атрибутов. У каждого типа объектов есть несколько предопределенных атрибутов. Пользователь также может ввести ряд специальных атрибутов. Атрибуты бывают различного типа: атрибут - тип, значение, сигнал, функция, диапазон.

Атрибут объекта записывается как

\имя объекта\' \имя атрибута\.

Для скалярного типа Т предопределены следующие атрибуты:

T'left - самое левое значение множества элементов скалярного типа Т.
T'right - самое правое значение множества элементов скалярного типа Т.
T'high - наибольшее значение в множестве элементов скалярного типа Т.
T'low -наименьшее значение в множества элементов скалярного типа Т.
T'image(X) - функция строкового представление выражения Х типа Т.
T'value(Х) - функция значения типа Т от строкового представления Х.
T'pos(Х) - функция номера позиции элемента Х типа Т.
T'val(Х) -функция значения элемента типа Т стоящего в позиции Х.

Примерыатрибутов:

type st is (one,two,three); st'right = three, st'pos(three) = 2, st'val(1) = two.
positive'low = 1, positive'high =2147483647.
integer'value("1_000") =1000, integer'image(330) ="330".


Атрибуты регулярного типа в языке VHDL.

Атрибутом называют особенное, долговременное свойство предмета. В языке VHDL сигналы, переменные и другие объекты, кроме своего значения, также имеют множество атрибутов. У каждого типа объектов есть несколько предопределенных атрибутов. Пользователь также может ввести ряд специальных атрибутов. Атрибуты бывают различного типа: атрибут - тип, значение, сигнал, функция, диапазон.

Атрибут объекта записывается как

\имя объекта\' \имя атрибута\.

Для регулярного типа A предопределены следующие атрибуты:

A'left[(N)] - левое значение диапазона индексов по N-й размерности.
A'right[(N)] - правое значение диапазона индексов по N-й размерности.
A'high[(N)] - наибольшее значение диапазона индексов по N-й размерности.
A'low[(N)] - наименьшее значение диапазона индексов по N-й размерности.
A'range[(N)] - диапазон индексов по N-й размерности.
A'reverse_range[(N)] - обратный диапазон индексов по N-й размерности.
A'length[(N)] - протяженность диапазона индексов по N-й размерности.
A'ascending[(N)] - функция, равная true, если диапазон индексов по N-й размерности - возврастающий.

Примерыпримененияатрибутов:

type s2 is array (2 downto 1, 0 to 3) of integer;
s2'left(1) = 2, s2'right(2) = 3, s2'high(1) = 2, s2'low(2) = 0,
s2'range(2) = 0 to 3, s2'reverse_range(1) = 1 to 2, s2'length(2) = 4.


Циклы в VHDL.

В VHDL существует три вида циклов: бесконечный, while и for. Синтаксис бесконечного цикла выглядит следующим образом:

[ loop_label: ] loop

{ sequential_statement }

end loop [ loop_label ];

Такие циклы часто используются для генерирования синхросигнала, как это сделано в следующем примере:

signal Clock: BIT:= ’0′; — инициализация в 0

Clk_1: process (Clock)

Begin

L1: loop

Clock <= not Clock after 5 ns; — период Clock равен 10 ns

endloop L1;

end process Clk_1;

Для завершения цикла может быть применен оператор exit, а для прерывания теку-

щейитерации – оператор next:

[ label: ] exit [ loop_label ][ when boolean _expression];

[ label:] next [ loop_label ] [ when boolean _expression];

Если метка не указана, то действие оператора относится к содержащему его циклу. Необязательное выражение boolean_expression позволяет задавать условие прерыва- ния выполнения цикла или его итерации. В следующем коде выполнение цикла завер- шится, когда А станет больше 10:

L2: loop

A:= A+1;

exit L2 when A > 10;

endloop L2;

Цикл for

Общая форма цикла for имеет следующий вид:

[loop_label:] for loop_index in range loop

sequential statements

end loop [loop-label];

Индекс цикла loop_index автоматически описывается при использовании оператора цикла и не требует его предварительного декларирования. Индекс инициализируется первым значением из указанного диапазона range, после чего выполняются последо- вательные операторы (sequential statements). Индекс цикла может быть использован в последовательных операторах, но не может быть изменен в них. После выполнения одной итерации цикла индекс получает следующее значение из диапазона и последо- вательность операторов выполняется снова. Процесс продолжается до тех пор, пока индекс цикла не переберет все значения диапазона. После этого выполнение операто- ра цикла заканчивается и индекс становится недоступным. Для следующего цикла- индекс count_value в начале выполнения цикла будет инициализирован значением 0 и последовательность операторов в цикле будет выполнена 128 раз:

for count_value in 0 to 127 loop

count_out <= count_value after 5 ns;

endloop;

Цикл while

Выполнение операторов, размещенных в условном цикле while, будет продолжаться до тех пор, пока условие conditionимеет значение истины:

[ loop_label: ] while condition loop

{ sequential_statement }

end loop [ loop_label ];



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

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.