Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Entity call_pro is





port (

Data: in STD_LOGIC_VECTOR(0 to 7);

left_bit: out INTEGER);

end call_pro;

 

Architecture rtl of call_pro is

 

Procedure l_bit (signal DIN: in STD_LOGIC_VECTOR(0 to 7); signal

le_bite: out INTEGER) is

variable temp: integer;

Begin

temp:= 0;

For i in 0 to 7 loop

if (DIN(i) = '1') then

temp:= temp + 1;

end if;

end loop;

le_bite <= temp;

end l_bit;

 

signal DIN: STD_LOGIC_VECTOR(0 to 7);

signal bite1: integer;

 

Begin

DIN <= Data;

l_bit(DIN, bite1); --параллельный вызов процедуры с именем l_bit(…)

left_bit <= bite1;

 

end rtl;

 

Временная диаграмма работы проекта:

 

 

Этот проект реализует подсчет количества единиц содержащихся в слове длиной 1 байт при помощи подпрограммы процедуры l_bit(…..). Определение подпрограммы процедуры l_bit(…..) расположено в разделе объявлений тела архитектуры. В разделе выполняемых операторов используется оператор параллельного вызова определения процедуры. Процедура l_bit(…..) запускается на исполнение при любом изменении значения ее входного формального (фактического) параметра DIN. В конце своей работы процедура l_bit(…..) возвращает значение своего выходного формального параметра le_bite в оператор вызова (в раздел выполняемых операторов) на место фактического параметра bite1. В результате такого возврата значение параметра bite1 становится известным разделу выполняемых операторов тела архитектуры и, следовательно, его можно использовать при формировании других операторов тела архитектуры. Таким образом, оператор параллельного вызова определения процедуры всегдабудет запускать на исполнение определение своей процедуры, как только претерпит изменение любой из ее входных фактических параметров.

 

Пример оформления оператора последовательного вызова подпрограммы процедуры:

library IEEE;

use IEEE.STD_LOGIC_1164. all;

 

Entity call_pro is

port (

Data: in STD_LOGIC_VECTOR(7 downto 0);

left_bit: out INTEGER);

end call_pro;

 

Architecture rtl of call_pro is

 

procedure l_bit (signal DIN: in STD_LOGIC_VECTOR(7 downto 0);

Signal le_bite: out INTEGER) is

 

 

variable temp: integer;

 

Begin

temp:= 0;

for i in 0 to 7 loop

if (DIN(i) = '1') then

temp:= i;

 

end if;

end loop;

le_bite <= temp;

end l_bit;

 

signal DIN: STD_LOGIC_VECTOR(7 downto 0);

signal bite1: integer;

 

Begin

DIN <= Data;

Process (Din)

Begin

l_bit(DIN, bite1); --последовательный вызов процедуры с именем

--l_bit(…)

end process;

 

left_bit <= bite1;

end rtl;

 

Временная диаграмма работы проекта:

 

Этот проект определяет номер самого старшего разряда содержащего 1 в слове длиной 1 байт при помощи подпрограммы процедуры l_bit(…..). Определение подпрограммы процедуры l_bit(…..) расположено в разделе объявлений тела архитектуры. В разделе выполняемых операторов используется оператор последовательного вызова определения процедуры, так как он расположен в теле оператора process(Din). Определение Процедуры l_bit(…..) запускается на исполнение при любом изменении значения ее входного фактического параметра DIN, который содержится также в списке чувствительности оператора process(Din). Следовательно, определение процедуры l_bit(…..) будет запущено на исполнение только в случае активизации оператора process(Din). В конце своей работы процедура l_bit(…..) возвращает значение своего выходного формального параметра le_bite в оператор вызова (в раздел выполняемых операторов тела оператора process(Din)) на место фактического параметра bite1. В результате такого возврата значение параметра bite1 становится известным разделу выполняемых операторов тела архитектуры и, следовательно, его можно использовать при формировании других операторов тела архитектуры. Таким образом, оператор последовательного вызова определения процедуры всегдабудет запускать на исполнение определение своей процедуры, как только претерпит изменение любой из ее входных сигналов списка чувствительности оператора process(…).

 

ПЕРЕГРУЖЕННЫЕ ПРОЦЕДУРЫ (OVERLOADED PROCEDURES)

Перегружаемые процедуры – это процедуры с тем же самым именем, но с различным количеством или различными типами формальных параметров. Фактические параметры решают, какая перегружаемая процедура, будет вызываться.

 

Примеры Перегружаемых процедур:

Example 1:

procedure Calculate (W1,W2: in Real; signal Out1: inout Integer); procedure Calculate (W1,W2: in Integer; signal Out1: inout Real); -- calling of overloaded procedures: Calculate(23.76, 1.632, Sign1); Calculate(23, 826, Sign2);

В этом примере показаны вызовы перегружаемой процедуры Calculate - поскольку формальные параметры в заголовках процедур имеют различные типы. Только, когда процедура вызывается, Simulator определяет, какая версия процедуры должна использоваться, в зависимости от фактических параметров.

Важные примечания:

· Объявление Процедуры факультативно - определение процедуры может существовать без него. Если, однако, объявление процедуры используется, то определение процедуры должно быть ему обязательно сопоставлено.

· Подпрограммы (процедуры) могут быть вложены.

· Подпрограммы (процедуры) могут вызываться рекурсивно.

· Инструментальные средства Синтеза обычно поддерживают процедуры, пока они не содержат оператора wait.

· Подпрограммы процедуры в теле своего определения могут содержать простые операторы назначения значения сигналу. Идентификатор сигнала, которому назначается значение должен присутствовать в списке формальных параметров и причем сигнал должен иметь режим out или inout

· В разделе объявлений определения подпрограммы процедуры нельзя объявлять новые программные величины типа signal

· Объявления и определения подпрограмм процедур можно располагать в пакетах. Для обращения (вызова) к такой подпрограмме процедуре в проекте требуется указывать имя соответствующей библиотеки и пакета.

· Идентификаторы формальных параметров подпрограмм процедур специально в разделе объявлений тела архитектуры объявлять не обязательно

· Идентификаторы фактических параметров подпрограмм процедур должны быть специально объявлены в разделе объявлений тела архитектуры

· Имена формальных и фактических параметров подпрограмм процедур могут совпадать

 

 

- - - - - - - - - - - - - --- - - - - - - - - - - ---------------------------------------------------------------

В заключение приведем пример VHDL проектов в описании, которых используются подпрограммы процедуры. VHDL проекты дают возможность вычислить номер старшей позиции в слове длиной байт, которая содержит 1.

 

Вариант 1: (Параллельный вызов подпрограммы процедуры)

 

library IEEE;

use IEEE.STD_LOGIC_1164.all;

 







Дата добавления: 2015-09-15; просмотров: 534. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Тема 5. Организационная структура управления гостиницей 1. Виды организационно – управленческих структур. 2. Организационно – управленческая структура современного ТГК...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Разновидности сальников для насосов и правильный уход за ними   Сальники, используемые в насосном оборудовании, служат для герметизации пространства образованного кожухом и рабочим валом, выходящим через корпус наружу...

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

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Studopedia.info - Студопедия - 2014-2025 год . (0.01 сек.) русская версия | украинская версия