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

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

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; просмотров: 508. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

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