Составители:
36
Однако во многих системах к одной линии подключено несколько источников. На-
пример, шина данных компьютера может принимать сигналы от процессора, памяти, пери-
ферийных устройств, а к линии данных матрицы запоминающего устройства подключается
достаточно много ячеек памяти, а также буферы ввода-вывода. Этому соответствуют про-
граммные модели, в которых один сигнал назначается в нескольких параллельных операто-
рах и процессах. В VHDL не любые сигналы способны принимать значение в соответствии
со значениями нескольких источников. Сигналы, значения которых автоматически опреде-
ляются исходя из состояний нескольких источников (драйверов), называют разрешаемыми
(resolved). Разрешаемым может быть объявлен конкретный сигнал или подтип данных, к
которому такой сигнал отнесен при его декларации. Мы ограничимся объявлением сигнала
как разрешаемого (resolved) через использование декларации разрешаемого подтипа. Напом-
ним, что декларация подтипа может содержать имя функции разрешения (resolution func-
tion). Функция разрешения определяет правило вычисления сигнала, формируемого несколь-
кими независимыми источниками. В общем случае функция разрешения зависит от конкрет-
ных условий приложения проекта, в том числе технологии изготовления проектируемого
устройства, и если в системе интерпретации отсутствует подходящий аналог, требуется раз-
работка соответствующей программы.
Функция разрешения локализуется в том же программном модуле, что и декларация
подтипа, и вызывается всякий раз, когда меняет состояние любой из драйверов разрешаемого
сигнала. Можно сказать, что по умолчанию предполагается наличие в программном модуле
параллельного вызова этой функции, причем драйверы сигналов являются ее фактическими
параметрами, а возвращаемое значение присваивается сигналу.
Рассмотрим в качестве примера так называемое монтажное ИЛИ. В качестве базового
типа данных выберем
bit. Введём функцию разрешения wired_OR:
function wired_OR (inputs : in bit_vector) return bit is
variable X : bit := ’0’;
begin
for i in inputs’range loop
if inputs(i)=’1’ then
X:=’1’;
exit;
end if;
end loop;
return X;
end;
Пусть эта функция определена в некотором архитектурном теле или пакете. Там же
вводим подтип:
subtype WO is wired_OR bit;
Объявим сигнал и в разделе операторов объединим выходы элементов (в данном случае
— 2-х элементов И):
signal Y : WO;
…
Y <= X1 and X2;
Y <= X3 and X4;
Однако во многих системах к одной линии подключено несколько источников. На- пример, шина данных компьютера может принимать сигналы от процессора, памяти, пери- ферийных устройств, а к линии данных матрицы запоминающего устройства подключается достаточно много ячеек памяти, а также буферы ввода-вывода. Этому соответствуют про- граммные модели, в которых один сигнал назначается в нескольких параллельных операто- рах и процессах. В VHDL не любые сигналы способны принимать значение в соответствии со значениями нескольких источников. Сигналы, значения которых автоматически опреде- ляются исходя из состояний нескольких источников (драйверов), называют разрешаемыми (resolved). Разрешаемым может быть объявлен конкретный сигнал или подтип данных, к которому такой сигнал отнесен при его декларации. Мы ограничимся объявлением сигнала как разрешаемого (resolved) через использование декларации разрешаемого подтипа. Напом- ним, что декларация подтипа может содержать имя функции разрешения (resolution func- tion). Функция разрешения определяет правило вычисления сигнала, формируемого несколь- кими независимыми источниками. В общем случае функция разрешения зависит от конкрет- ных условий приложения проекта, в том числе технологии изготовления проектируемого устройства, и если в системе интерпретации отсутствует подходящий аналог, требуется раз- работка соответствующей программы. Функция разрешения локализуется в том же программном модуле, что и декларация подтипа, и вызывается всякий раз, когда меняет состояние любой из драйверов разрешаемого сигнала. Можно сказать, что по умолчанию предполагается наличие в программном модуле параллельного вызова этой функции, причем драйверы сигналов являются ее фактическими параметрами, а возвращаемое значение присваивается сигналу. Рассмотрим в качестве примера так называемое монтажное ИЛИ. В качестве базового типа данных выберем bit. Введём функцию разрешения wired_OR: function wired_OR (inputs : in bit_vector) return bit is variable X : bit := ’0’; begin for i in inputs’range loop if inputs(i)=’1’ then X:=’1’; exit; end if; end loop; return X; end; Пусть эта функция определена в некотором архитектурном теле или пакете. Там же вводим подтип: subtype WO is wired_OR bit; Объявим сигнал и в разделе операторов объединим выходы элементов (в данном случае — 2-х элементов И): signal Y : WO; … Y <= X1 and X2; Y <= X3 and X4; 36
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »