Мой VHDL 1-битный поведенческий ALU завершен?

Я впервые пишу код VHDL, и мне интересно, завершен ли этот простой код ALU VHDL. Все, что я могу найти, для более сложных ALU, но мне просто нужно написать этот простой.

Проблема заключается в следующем:

Напишите поведенческую модель, которая представляет собой простой АЛУ с целочисленными входами и выходами, а также функцию выбора входа типа бит. Если выбрана функция '0', выход ALU должен быть суммой входов; в противном случае на выходе должна быть разница входов.

entity ALU is
    port(x, y, func: in bit; z: out bit;);
end entity ALU;

architecture behav of ALU is
begin
    alu: process is
    begin
        case func is
            when "0" =>
                z <= x + y;
                wait on x, y;
            when "1" =>
                z <= x - y;
                wait on x, y;
        end case;
    end process;
end behav;

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

Спасибо!

1 ответ

Решение

Ваш код потерпит неудачу, если ввод x а также y не меняй, а оператор func делает.

При этом во всем коде VHDL, который я когда-либо видел, вы просто использовали бы список чувствительности вместо операторов ожидания.

process(func, x, y)
begin
    case func is
        when "0" =>
            z <= x + y;
        when "1" =>
            z <= x - y;
    end case;
end process;

или, если вы используете VHDL-2008:

process(all)
begin
    case func is
    ...
Другие вопросы по тегам