Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Altera / MAX+PLUS II - AHDL.doc
Скачиваний:
139
Добавлен:
10.12.2013
Размер:
7.02 Mб
Скачать

2.2.6 Использование значений «по умолчанию» для переменных

Вы можете указать значение «по умолчанию» для узла или группы, которые используют числовое значение, которое нигде им не присваивается. Если узлу или группе никакое значение программистом не присваивается, то компилятор присваивает этой переменной значение GND.

В AHDL значения по умолчанию переменным назначаются в разделе Default Statement. В этом разделе вы можете указать значение для переменной, которая впоследствии будет использоваться в таблице истинности, в операторе IF, операторе CASE и т.д.

Пример default1.tdf иллюстрирует вышеизложенное. В этом примере на выходах устройства устанавливается код одного из пяти ASCII символов, выбираемого в соответствии с кодом на входе.

Работа устройства состоит в следующем:

  • Если входная последовательность совпадает с последовательностью стоящей в левой стороне таблицы истинности, то на выходе устанавливается соответствующий код. Если входная последовательность не совпадает ни с одним числом, стоящим в левой половине таблицы, то на выходе устанавливается код B”00111111”.

В примере 2.15 показаны проблемы, возникающие при присвоении одной и той же переменной нескольких значений, и то, как их разрешить при помощи AHDL.

SUBDESIGN default2

(

a, b, c : INPUT;

select_a, select_b, select_c : INPUT;

wire_or, wire_and : OUTPUT;

)

BEGIN

DEFAULTS

wire_or = GND;

wire_and = VCC;

END DEFAULTS;

IF select_a THEN

wire_or = a;

wire_and = a;

END IF;

IF select_b THEN

wire_or = b;

wire_and = b;

END IF;

На рисунке 2.6 представлена схема устройства, описанного в примере 2.15.

2.2.7 Описание активно-низкой логики

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

Одним из методов идентификации прерывающего устройства в мини- и микро-ЭВМ является метод аппаратного полинга, который заключается в следующем:

В аппаратном полинге (синонимы: дейзи-цепь, приоритетная цепочка, гирляндное или каскадное включение устройств) процессор и все периферийные устройства соединяются таким образом, что процессор может осуществить автоматический опрос с целью идентификации прерывающего устройства. Когда процессор реагирует на запрос прерывания, он формирует сигнал подтверждения прерывания INT ACK на линии, которая последовательно проходит через все устройства. При прохождении сигнала по цепочке проверяется состояние флажков готовности устройств. Если устройство не формирует прерывания, сигнал INT ACK проходит в следующее устройство, пока не встретится прерывающее (активное) устройство. Оно блокирует дальнейшее распространение сигнала INT ACK по цепочке. Таким образом, здесь приоритеты устройств определяются их физической близостью к процессору по линии INT ACK. Затем активное устройство передает по шине данных свой адрес (идентификатор или вектор) вместе со стробирующим (синхронизирующим) импульсом ~STROBE. Последний информирует процессор о нахождении на шине данных адреса устройства с наибольшим приоритетом, запрашивающего обслуживания. Этот адрес имеет однозначное соответствие с начальным адресом подпрограммы обслуживания прерывания данного устройства, в простейшем случае равен начальному адресу. Иногда возвращаемый адрес представляет собой индекс, прибавляемый к содержимому базового регистра процессора.

Устройство, разработанное в примере 2.16 (daisy.tdf) является узлом описанной дейзи-цепи.

Все входы в данном примере активно-низкие. Для обозначения активно-низких входов рекомендуется использовать символ «/» перед именем. Этот символ не является оператором, он – часть имени.

В данном примере операторы IF используются для определения активности модуля, т.е. когда сигнал на его входах равен GND.

Для получения более подробной информации см. разделы:

  • Перегрузка имени оператора

  • Использование значений «по умолчанию» для переменных

Соседние файлы в папке Altera