我有
douta : in std_logic_vector (3 downto 0);
doutb : in std_logic_vector (3 downto 0);
c0 : in std_logic;
f1 : in std_logic;
f0 : in std_logic;
res : out std_logic_vector (3 downto 0);
我正在尝试构建一个简单的 ALU,这个 ALU 提供的功能之一是当
f1 and f0 both = 1
res = douta plus b plus c0
所以我写了
f1 = '1' and f0 = '1' then res <= douta + doutb + c0;
但显然它不会起作用,因为douta
and的数据类型doutb
是std_logic_vector
asco
只是std_logic
编译时出现此错误
' Error 603 line 34 : Incompatible types for arithmetic operator: LHS=std_logic_vector!18, RHS=std_logic
知道如何解决这个问题吗?
编辑: 也试过
f1 = '1' and f0 = '1' then res <= douta + doutb + ("000" & c0);
但仍然没有运气,这次编译器说
LHS=std_logic_vector!7, RHS=array_1_of_std_logic_3_d_0