2

这是我第一次写VHDL代码,我想知道这个简单的ALU VHDL代码是否完整。我能找到的所有内容都是针对更复杂的 ALU,但我只需要编写这个简单的 ALU。

问题如下:

编写一个行为模型,表示一个简单的 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;

我并不是要一个完整的解决方案,而只是想知道我的代码是否是解决这个简单问题所需的一切。

谢谢!

4

1 回答 1

2

如果输入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
    ...
于 2014-05-31T23:02:10.520 回答