Menu
Coddy logo textTech

Безопасное декодирование case

Часть раздела Проектирование и верификация RTL путешествия по Verilog на Coddy. Урок 4 из 38.

Используй обычную конструкцию case для точных управляющих кодов. Задай поведение default для неподдерживаемых кодов и используй assign для всех выходов. Декодирование с подстановочными символами с помощью casex может скрывать неизвестные управляющие биты при симуляции, поэтому оно не подходит, если во время отладки неизвестные значения должны оставаться видимыми.

Соответствующий фрагмент; окружающие объявления и соединения предоставлены в задании.

always @* begin
    y = 0;
    invalid = 0;
    case (op)
        0: y = a & b;
        1: y = a | b;
        default: invalid = 1;
    endcase
end

Неподдерживаемые коды приводят к явному статусу, а не сохраняют предыдущий результат.

Явно определяйте неподдерживаемые коды управления и не маскируйте неизвестные элементы управления с помощью casex.

challenge icon

Задание

Средне

Реализуйте 8-битный логический блок: op 0 вычисляет a AND b, op 1 вычисляет a OR b, op 2 вычисляет a XOR b, а op 3 возвращает ноль, устанавливая invalid в единицу. Для поддерживаемых операций значение invalid равно нулю. Столбцы вывода: y, invalid. Все входные значения являются известными двоичными значениями.

Завершите design.v, сохранив имена его модулей и портов. Заблокированный testbench.v задаёт изменения входных данных и выводит результаты после их стабилизации. Он выбирает сценарий с помощью аргумента симулятора, например +CASE=1; стандартный ввод не требуется. Не добавляйте в design вывод, задержки или завершение симуляции. Ожидаемый вывод — одна строка десятичных значений для каждого наблюдения, разделённых одним пробелом и заканчивающихся символом новой строки.

Попробуйте сами

module dut (input [1:0] op, input [7:0] a, input [7:0] b, output reg [7:0] y, output reg invalid);
    // Замените этот заполнитель на ваш дизайн.
    initial y = 0;
    initial invalid = 0;
endmodule
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Проектирование и верификация RTL

Потренируйтесь самостоятельно: Онлайн-компилятор Verilog