Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ШкПЛИС_ahdl.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
164 Кб
Скачать
☆

Врезка 10

SUBDESIGN default1

(

i[3..0] : INPUT;

ascii_code[7..0] : OUTPUT;

)

BEGIN

DEFAULTS

ascii_code[] = B"00111111";% ASCII question mark"?" % END DEFAULTS;

TABLE

i[3..0] => ascii_code[];

B"1000" => B"01100001"; % "a" %

B"0100" => B"01100010"; % "b" %

B"0010" => B"01100011"; & "c" %

B"0001" => B"01100100"; % "d" %

END TABLE;

END;

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

В приведённом на врезке 11 файле default2.tdf показано, как при многократном присваивании узлу разных значений возникает конфликт и как он разрешается средствами AHDL.

Врезка 11

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;

IF select_c THEN

wire_or = c;

wire_and = c;

END IF;

END;

В данном примере выход wire_or устанавливается равным a, b или c, в зависимости от входных сигналов select_a, select_b и select_c. Если ни один из них не равен VCC, то выход wire_or принимает значение по умолчанию, равное GND.

Если более одного сигнала (select_a, select_b или select_c) равны VCC, то wire_or равно результату логической операции ИЛИ над соответствующими входными сигналами. Например, если select_a и select_b равны VCC, то wire_or равно a ИЛИ b.

С сигналом wire_and производятся аналогичные действия, но он становится равным VCC, когда входные сигналы select равны VCC, и равен логическому И от соответствующих входных сигналов, если более, чем один из них равен VCC.

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

На врезке 12 приводится файл daisy.tdf, который представляет модуль арбитражной схемы для соединения гирляндой (daisy chain). Данный модуль делает запрос на доступ к шине для предыдущего (в гирлянде) модуля. Он получает запрос на доступ к шине от самого себя и от следующего (в цепочке) модуля. Доступ к шине предоставляется модулю с более высоким приоритетом.