ВУЗ:
Составители:
42
Оператор возврата в теле функции обязателен. Он также прекращает
исполнение подпрограммы, но, кроме того, выполняет присвоение
значения результату, который используется в вызывающей программе на
месте вызова функции.
architecture NOTHING of SOMETHING is
type V is array (integer range<>) of integer;
function SUM_UNTIL_ZERO (signal DATA:in V) return integer is
variable I,SUM:integer;
begin
for I in DATA'range loop
if DATA(I) =0 then return 0;—обнаружен нулевой элемент
else SUM:= SUM+DATA(I);
end if;
end loop;
return SUM;
end SUM_UNTIL_ZERO;
signal DATA_ARRAY : V ( 0 to 15);
begin
process(DATA_ARRAY)
begin
RESULT <= INPUT+ SUM_UNTIL_ZERO(DATA_ARRAY);
end process;
end NOTHING;
В связи с рассмотренным примером отметим еще одно
обстоятельство. Здесь в описании функции тип формального параметра
определен как неограниченный массив целых. Фактический параметр
отнесен к тому же типу, но при декларации сигнала определен
фактический его размер. Размер массива в подпрограмме автоматически
устанавливается равным размеру фактического массива.
Разрешаемые сигналы и шины
Если сигнал имеет один драйвер, то его значение определяется
достаточно просто. Однако во многих системах к одной линии подключено
несколько источников. Например, шина данных компьютера может
принимать сигналы от процессора, памяти, периферийных устройств, а к
линии данных матрицы запоминающего устройства подключается
достаточно много ячеек памяти, а также буферы ввода/вывода. Этому
соответствуют программные модели, в которых один сигнал назначается в
42
Оператор возврата в теле функции обязателен. Он также прекращает
исполнение подпрограммы, но, кроме того, выполняет присвоение
значения результату, который используется в вызывающей программе на
месте вызова функции.
architecture NOTHING of SOMETHING is
type V is array (integer range<>) of integer;
function SUM_UNTIL_ZERO (signal DATA:in V) return integer is
variable I,SUM:integer;
begin
for I in DATA'range loop
if DATA(I) =0 then return 0;—обнаружен нулевой элемент
else SUM:= SUM+DATA(I);
end if;
end loop;
return SUM;
end SUM_UNTIL_ZERO;
signal DATA_ARRAY : V ( 0 to 15);
begin
process(DATA_ARRAY)
begin
RESULT <= INPUT+ SUM_UNTIL_ZERO(DATA_ARRAY);
end process;
end NOTHING;
В связи с рассмотренным примером отметим еще одно
обстоятельство. Здесь в описании функции тип формального параметра
определен как неограниченный массив целых. Фактический параметр
отнесен к тому же типу, но при декларации сигнала определен
фактический его размер. Размер массива в подпрограмме автоматически
устанавливается равным размеру фактического массива.
Разрешаемые сигналы и шины
Если сигнал имеет один драйвер, то его значение определяется
достаточно просто. Однако во многих системах к одной линии подключено
несколько источников. Например, шина данных компьютера может
принимать сигналы от процессора, памяти, периферийных устройств, а к
линии данных матрицы запоминающего устройства подключается
достаточно много ячеек памяти, а также буферы ввода/вывода. Этому
соответствуют программные модели, в которых один сигнал назначается в
Страницы
- « первая
- ‹ предыдущая
- …
- 40
- 41
- 42
- 43
- 44
- …
- следующая ›
- последняя »
