Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мова опису апаратури AHDL_Частина2.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
456 Кб
Скачать
☆

1.2. Дешифратор

Дешифратор — комбінаційний пристрій, що перетворює двійковий код у код «1 із N». Повний дешифратор має n входів і 2n виходів, Неповний — менше ніж 2n виходів.

Варіант текстового опису повного трирозрядного дешифратора з інверсними виходами:

SUBDESIGN DC

(

IN[3..0] : INPUT;

OUT[7..0] : OUTPUT;

)

BEGIN

DEFAULTS

OUT[] = VCC;

END DEFAULTS;

CASE IN [] IS

WHEN 0 => OUT[] = B"11111110";

WHEN 1 => OUT[] = B"11111101";

WHEN 2 => OUT[] = B"11111011";

WHEN 3 => OUT[] = B"11110111";

WHEN 4 => OUT[] = B"11101111";

WHEN 5 => OUT[] = B"11011111";

WHEN 6 => OUT[] = B"10111111";

WHEN 7 => OUT[] = B"01111111";

END CASE;

END;

У наведеній програмі так само явно задане значення вихідного коду (OUT[] = VCC) для незаданих таблицею істинності вхідних кодів.

На рис. 3. наведено часові діаграми, отримані в результаті моделювання наведеної програми.

Рис. 3.

Відмітимо, що якщо вхідний сигнал задати не чотирирозрядним, а трирозрядним вхідним кодом, то наведена в програмі таблиця істинності повністю визначає вихідну функцію алгебри логіки й спеціальне її довизначення не потрібно.

1.3. Мультиплексор

Мультиплексор — комбінаційний пристрій, що дозволяє послідовно опитувати велику кількість входів і передавати їхній стан на один вихід. Число інформаційних входів мультиплексора зазвичай дорівнює 2n, де n — число адресних входів.

Варіант опису мультиплексора, що має 4 інформаційних входи (INF[7..0]), 3 адресних входи (ADR[2..0]) і вхід дозволу роботи (CS) має вигляд:

SUBDESIGN MUX_3

(

INF[7..0], ADR[2..0], CS : INPUT;

OUT : OUTPUT;

)

BEGIN

IF CS THEN

CASE ADR[] IS

WHEN 0 => OUT =INF[0];

WHEN 1 => OUT =INF[1];

WHEN 2 => OUT =INF[2];

WHEN 3 => OUT =INF[3];

WHEN 4 => OUT =INF[4];

WHEN 5 => OUT =INF[5];

WHEN 6 => OUT =INF[6];

WHEN 7 => OUT =INF[7];

END CASE;

END IF;

END;

При CS = 0 на виході мультиплексора буде формуватися сигнал логічного нуля незалежно від стану інших входів (оскільки в даному текстовому описі логічна функція OUT не була визначена на таких наборах аргументів).

Якщо ENABLE = 1, то сигнал на виході визначається адресним кодом ADR[] і рівнем сигналу на відповідному інформаційному вході.

На рис. 4 наведено результати моделювання створеного мультиплексора.

Рис. 4

Розглянемо приклад параметризованого опису шинного мультиплексора з однорозрядним адресним входом, до інформаційних входів якого підключені дві WIDTH-розрядні шини A[WIDTH..1] і В[WIDTH..1].

PARAMETERS (WIDTH = 8);

ASSERT (WIDTH != 1)

REPORT "Value of parameter WIDTH = %" WIDTH

SEVERITY INFO;

ASSERT (WIDTH > 0)

REPORT "Value of parameter WIDTH must be greater then %" WIDTH

SEVERITY ERROR;

SUBDESIGN BUS_MUX_3

(

A[WIDTH..1], B[WIDTH..1], ADR : INPUT;

OUT[WIDTH..1] : OUTPUT;

)

BEGIN

IF ADR

THEN OUT[] = A[];

ELSE OUT[] = B[];

END IF;

END;

Рис. 5.

Оператори ASSERT використовуються для перевірки значення параметра WIDTH. Так, якщо, наприклад, за допомогою команди Global Project Parameters меню Assign (рис. 5.) параметру WIDTH присвоїти значення одиниці, то при компіляції модуля буде сформоване наступне повідомлення (рис. 6.)

Рис. 6.

«Рівень строгості» даного повідомлення INFO, тому компілятор продовжить роботу до кінця.

Якщо ж параметру WIDTH присвоїти нульове значення, то при компіляції модуля буде сформоване повідомлення, показане на рис. 7. Оскільки «Рівень строгості» даного повідомлення ERROR компілятор перерве свою роботу.

Рис. 7.

На рис. 8. наведено часові діаграми, що пояснюють роботу шинного мультиплексора.

Рис. 8.