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

Врезка 7

SUBDESIGN 7segment

(

i[3..0] : INPUT;

a, b, c, d, e, f, g : OUTPUT;

)

BEGIN

TABLE

i[3..0] => a, b, c, d, e, f, g;

H"0" => 1, 1, 1, 1, 1, 1, 0;

H"1" => 0, 1, 0, 0, 0, 0, 0;

H"2" => 1, 1, 0, 1, 1, 0, 0;

H"3" => 1, 1, 1, 1, 0, 0, 1;

H"4" => 0, 1, 1, 0, 0, 1, 1;

H"5" => 1, 0, 1, 1, 0, 1, 1;

H"6" => 1, 0, 1, 1, 1, 1, 1;

H"7" => 1, 1, 1, 0, 0, 0, 0;

H"8" => 1, 1, 1, 1, 1, 1, 1;

H"9" => 1, 1, 1, 1, 0, 1, 1;

H"A" => 1, 1, 1, 0, 1, 1, 1;

H"B" => 0, 0, 1, 1, 1, 1, 1;

H"C" => 1, 0, 0, 1, 1, 1, 0;

H"D" => 0, 1, 1, 1, 1, 0, 1;

H"E" => 1, 0, 0, 1, 1, 1, 1;

H"F" => 1, 0, 0, 0, 1, 1, 1;

END TABLE;

END;

В этом примере показаны все возможные шестнадцатиричные цифры (i[3..0]) и соответствующие состояния светодиодов (a, b, c, d, e, f, g), которые обеспечивают “начертание” цифры на дисплее. Изображение светодиодов на дисплее дано в виде комментария перед файлом.

На врезке 8 приведён файл дешифратора адреса decode3.tdf для шестнадцатиразрядной микропроцессорной системы.

Врезка 8

SUBDESIGN decode3

(

addr[15..0], m/io : INPUT;

rom, ram, print, sp[2..1] : OUTPUT;

)

BEGIN

TABLE

m/io, addr[15..0] => rom, ram, print, sp[];

1, B"00XXXXXXXXXXXXXX" => 1, 0, 0, B"00";

1, B"100XXXXXXXXXXXXX" => 0, 1, 0, B"00";

0, B"0000001010101110" => 0, 0, 1, B"00";

0, B"0000001011011110" => 0, 0, 0, B"01";

0, B"0000001101110000" => 0, 0, 0, B"10";

END TABLE;

END;

В данном примере существуют тысячи возможных вариантов входа (адреса), поэтому было бы непрактично сводить их все в таблицу. Вместо этого, можно пометить символом “Х” несущественные, не влияющие на выход, разряды. Например, выходной сигнал rom (ПЗУ) будет высоким для всех 16384 вариантов адреса addr[15..0], которые начинаются с 00. Поэтому вам нужно только указать общую для всех вариантов часть кода, то есть 00, а в остальных разрядах кода поставить “Х”. Такой приём позволит использовать в данном проекте меньше устройств и ресурсов.

Приведённый на врезке 9 пример decode4.tdf показывает использование стандартной параметризируемой функции lpm_decode в задаче разработки дешифратора, аналогичной примеру decode1.tdf.

Врезка 9

INCLUDE "lpm_decode.inc";

SUBDESIGN decode4

(

address[15..0] : INPUT;

chip_enable : OUTPUT;

)

BEGIN

chip_eneble = lpm_decode(.data[]=address[])

WITH (LPM_WIDTH=16, LPM_DECODES=2^10)

RETURNS (.eq[H"0370"]);

END;

Иногда для переменных удобно использовать значения по умолчанию. Можно определить значения по умолчанию для узла или группы, которые будут автоматически использоваться, если в файле их значения не будут заданы. Язык AHDL позволяет присваивать значение узлу или группе в файле неодно-кратно. Если при этом произойдет конфликт, система автоматически будет использовать значения по умолчанию. Если они не были заданы, используется значение GND.

Объявление значений по умолчанию DEFAULTS можно использовать для задания переменных в таблице истинности, операторах IF и CASE.

На врезке 10 приводится файл default1.tdf, в котором происходит оценка входов и выбор соответствующего ASCII-кода.