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

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

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




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


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


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


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

Ситуация 26. ПРОВЕРЕНО МИНЗДРАВОМ   Станислав Свердлов закончил российско-американский факультет менеджмента Томского государственного университета...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

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

Йодометрия. Характеристика метода Метод йодометрии основан на ОВ-реакциях, связанных с превращением I2 в ионы I- и обратно...

Броматометрия и бромометрия Броматометрический метод основан на окислении вос­становителей броматом калия в кислой среде...

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