AFON // радиотехник affonya@mail.ru
← Проекты на AHDL

Проект 03. Дешифратор 3 в 8

Трёхразрядный код превращает в единицу один из восьми выходов. Проект вводит оператор CASE и логику разрешения, гасящую все выходы одной проверкой.

Задача

Активировать один из восьми выходов по трёхразрядному адресу.

Тип схемы: Комбинационная схема; при отсутствии разрешения все выходы пассивны.
Модуль: a03. Среда: MAX+PLUS II или ранние версии Quartus (Altera/Intel). Теорию по языкам описания аппаратуры смотрите в статьях VHDL и Verilog, по самим микросхемам — на странице ПЛИС.

Алгоритм

  1. Объявить трёхразрядный адрес, вход разрешения и восьмиразрядный выход.
  2. Проверить разрешение оператором IF.
  3. Внутри разрешённой ветви оператором CASE задать код для каждого значения адреса.
  4. В запрещающей ветви обнулить весь выходной вектор одной записью.

Код на AHDL

Скачать: a03.tdf

% Проект 03. Дешифратор 3 в 8 %
% Оператор CASE: по трёхразрядному адресу активируется %
% один из восьми выходов; вход en гасит все выходы.    %

SUBDESIGN a03
(
    addr[2..0]  : INPUT;
    en          : INPUT;
    y[7..0]     : OUTPUT;
)

BEGIN
    IF (en == VCC) THEN
        CASE addr[] IS
            WHEN 0 => y[] = B"00000001";
            WHEN 1 => y[] = B"00000010";
            WHEN 2 => y[] = B"00000100";
            WHEN 3 => y[] = B"00001000";
            WHEN 4 => y[] = B"00010000";
            WHEN 5 => y[] = B"00100000";
            WHEN 6 => y[] = B"01000000";
            WHEN 7 => y[] = B"10000000";
        END CASE;
    ELSE
        y[] = B"00000000";
    END IF;
END;

Пояснения

  • Векторная константа вида B"00000001" задаёт сразу восемь бит — компактнее, чем присваивать каждому разряду отдельно.
  • Вход разрешения обработан снаружи CASE: это типичный приём, разделяющий «включён ли блок» и «что он делает», если включён.
  • AHDL не требует ветви по умолчанию в CASE так строго, как некоторые другие языки, но её отсутствие может привести к синтезу защёлки — привычка добавлять все случаи того стоит.

Что дальше

Следующие проекты — в разделе проекты на AHDL. Сравнить подход с современными языками можно в статьях VHDL и Verilog, а разобраться в устройстве кристаллов — в статье ПЛИС: FPGA и CPLD.