我的VHDL 1位行为ALU是否完整?

时间:2014-05-31 22:55:33

标签: vhdl alu

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

问题如下:

编写一个表示带有整数输入和的简单ALU的行为模型 输出和类型位的函数选择输入。如果函数select为'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 个答案:

答案 0 :(得分:2)

如果输入xy没有改变,但操作符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
    ...