Применение языка VHDL при проектировании специализированных СБИС. Ивченко В.Г. - 30 стр.

UptoLike

Составители: 

31
многозначной логике). Функция разрешения (resolution function) обеспечивает возможность моделирования этих
зависящих от технологии особенностей.
Для того, чтобы понять, как функция разрешения связывается с сигналом, подобным BRQ, необходимо
рассмотреть более подробно пакет Defs. Пакет содержит объявления типов и подпрограмм. Пакет делится на
две части: объявление пакета и тело пакета. Тело пакета содержит реализации всех подпрограмм, имеющихся в
объявлении пакета.
Объявление пакета для пакета Defs на рис. 9 демонстрирует механизм, необходимый для описания двух
различных типов разрешения сигнала. Первый вид - разрешение типа логическое И. Второй - тристабильное
разрешение. При тристабильном разрешении ожидается, что все источники сигнала, кроме одного,
устанавливаются в отключенное состояние 'Z'. Оставшийся '0' или '1' в группе источников будет определять
окончательное состояние сигнала.
package Defs is
-- многозначный логический тип
type MVL is ('1','0','Z','E');
type MVL_vector is array (natural range<>) of MVL;
-- подтип проводной логики для MVL
function wired_and(X:MVL_vector) return MVL;
subtype wbit is wired_and MVL;
type wbit_vector is array (natural range <>) of wbit;
-- подтип тристабильной логики для MVL
function tristate(X:MVL_vector) return MVL;
subtype tribit is tristate MVL;
type tribit_vector is array (positive range <> )
of tribit;
-- подтипы используются для объявления сигналов,
-- переменных и констант
subtype address is tribit_vector(0 to 18);
subtype byte is tribit_vector(0 to 7);
subtype half_word is tribit_vector(0 to 15);
-- некоторые служебные функции
function AnyOf(X:tribit_vector) return MVL;
function IntVal(X:tribit_vector) return integer;
-- Другие объявления функций, необходимые для
-- полноты Defs...
function "and" (X,Y:MVL) return MVL;
function "not" (X:MVL) return MVL;
.
.
end Defs;
Рис. 9. Объявление пакета Defs
Тип MVL представляется списком из четырех логических значений. MVL_vector является типом, который
может быть использован для объявления одномерных массивов MVL-значений.
Один из способов, при помощи которого функция разрешения может быть связана с сигналом, является
объявление подтипа. Разрешениепроводное И связывается с сигналом подтипа wbit; тристабильное
разрешение связывается с сигналом подтипа tribit.
Функция wired_and реализует разрешение сигнала типа проводное И. Она ассоциируется с сигналами
подтипа wbit, так
как это подразумевается в объявлении типа wbit. Как только сигнал типа wbit необходимо
оценить, программа моделирования будет собирать значения всех источников в массив и вызывать функцию
wired_and, которой в качестве аргумента будет передаваться этот массив. Функция wired_and будет
просматривать собранные значения и возвращать одно разрешенное значение (resolved value), как результат.
Это разрешенное значение становится новым значением сигнала. Тип wbit_vector может быть использован для
объявления массивов wbit элементов. Каждый элемент будет разрешаться независимо.
Тип tribit, функция разрешения tristate и массив типа tribit_vector определяются аналогично. Программа
моделирования будет передавать массив MVL-значений функции tristate, как только появится необходимость
оценить сигнал типа tribit. Если больше, чем один элемент массива не равен 'Z',
то tristate сигнализирует об
ошибке, возвращая в качестве результирующего значения сигнала 'E'. В противном случае возвращаемым
значением будет значение единственного не равного 'Z' сигнала. Значение каждого элемента массива
tribit_vector будет разрешаться независимо.
Последние объявления в Defs создают подтипы и функции, которые используются в архитектуре плат и во
всей этой главе. Заметим, что операторы and и not получили добавочный смысл - они в дальнейшем могут быть
также хорошо использованы для MVL-значений.