Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППЛИС_лаб2.doc
Скачиваний:
77
Добавлен:
05.06.2015
Размер:
1.31 Mб
Скачать

Variable

TRI_A[1..0]:TRI;

TRI_B[1..0]:TRI;

BEGIN

CASE (CS,ADR) IS

WHEN B"11" =>TRI_A[].OE=VCC;

WHEN B"10" =>TRI_B[].OE=VCC;

END CASE;

TRI_A[].IN= (IN2,IN1);

TRI_B[].IN= (DB2,DB1);

(DB2,DB1)= TRI_A[].OUT;

(OUT2,OUT1)= TRI_B[].OUT;

END;

Временная диаграмма работы шинного типичного приёмо-передатчика, представлена на рис 7.7.2.

Рис 7.7.2. Временная диаграмма работы шинного приёмо-передатчика,

7.8. Счетчики

Счетчики являются широко распространёнными электронными узлами, позволяющими организовать подсчёт импульсов. На языке AHDL счетчики наиболее просто построить, используя обращения к примитивам триггеров. Чаше всего используют триггеры типа DFF или DFFE .

Для организации счёта по различным модулям и с различными условиями сброса-установки можно использовать операторы CASE или IF THEN.

Ниже приведен пример счетчика, считающего импульсы от 3 до 12. Переход при счёте от значения 12 до значения 3 организован с помощью оператора CASE.

SUBDESIGN CNT3_15

( CLK :INPUT;

R :INPUT=GND;

Q[4..0]:OUTPUT;

)

Variable

RG[4..0]: DFF;

BEGIN

RG[].CLRN=!R;

RG[].CLK=CLK;

case Q[] IS

WHEN B"01111"=> RG[].D=B"00011";

WHEN OTHERS => RG[].D =RG[].Q+1;

END CASE;

Q[] = RG[].Q;

END;

Временная диаграмма работы счетчика приведена на рис 7.8.

Рис 7.8. Временная диаграмма работы счетчика.

7.9. Дешифраторы

Дешифраторы принадлежат к одним из наиболее распространённых типов узлов цифровой аппаратуры. Дешифратор работает по следующему алгоритму. Из всех выходных шин Qi только одна, номер которой определяется кодом адреса А[m..1], имеет значение, равное 1. Все остальные имеют состояние, равное 0.

На языке дешифраторы удобно реализовывать с помощью оператора CASE, либо с помощью таблицы истинности.

Ниже приведен пример восьмиразрядного дешифратора, реализованного с помощью таблицы истинности:

SUBDESIGN Desh8

( A[2..0] : INPUT;

Dec[7..0] :OUTPUT; )

BEGIN

TABLE

A[] => Dec[];

B"000" => B"00000001";

B"001" => B"00000010";

B"010" => B"00000100";

B"011" => B"00001000";

B"100" => B"00010000";

B"101" => B"00100000";

B"110" => B"01000000";

B"111" => B"10000000";

END TABLE;

END;

Временная диаграмма работы дешифратора приведена на рис 7.9.

Рис 7.9. Временная диаграмма работы дешифратора.

7.10. Компараторы

Компараторы позволяют решать задачу определения отношения между двумя двоичными числами. Отношения могут быть следующих типов: «>», «<», «>=», «<=», «==», «!=». Компараторы работают по сканирующему алгоритму. Они последовательно анализирую одноимённые разряды двух чисел, начиная со старших. При анализе разрядов формируются код сравнения Ki, который может иметь значение «больше», «меньше», «равно» (m, b, r). Если на текущем шаге Ki=m или Ki=b, отношение определено и анализ заканчивается. Если Ki=r, то анализ продолжается на следующем разряде.

На языке AHDL компараторы удобно реализовывать с помощью оператора IF THEN.

Ниже приведен пример компаратора трехразрядных чисел, который выдает «1», если A>B и «0» в противном случае.

SUBDESIGN comp

( A[2..0],B[2..0] : INPUT;

Q : output; )

BEGIN

IF A2 & !B2==1

THEN Q=B"1";

ELSIF B2 & !A2==1

THEN Q=B"0";

ELSIF A1 & !B1==1

THEN Q=B"1";

ELSIF B1 & !A1==1

THEN Q=B"0";

ELSIF A0 & !B0==1

THEN Q=B"1";

ELSE Q=B"0";

END IF;

END;

Временная диаграмма работы компаратора представлена на рисунке 7.10

Рис 7.10. Временная диаграмма работы компаратора.

Литература

1. Комолов Д.А., Мяльк Р.А., Зобенко А.А., Филиппов А.С. Системы автоматизированного проектирования фирмы Altera MAX+PLUS II и QUARTUS II. –Москва: ИП РадиоСофт, 2002-352с.: ил.

2. Антонов А.П., ЯЗЫК ОПИСАНИЯ ЦИФРОВЫХ УСТРОЙСТВ AlteraHDL. Москва, РадиоСофт, 2002. – 224с.

3. Стешенко В.Б. ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов. – Москва: ДОДЭКА, 2002 – 128с.