我是VHDL的新手用户。
我在此代码中出错:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity AandB is
Port ( a : in STD_LOGIC_vector(31 downto 0);
b : in STD_LOGIC_vector(31 downto 0);
salida : out STD_LOGIC_vector(31 downto 0)
);
end AandB;
architecture Behavioral of AandB is
begin
for i in 0 to 31 loop
salida(i) <= a(i) and b(i);
end loop;
end Behavioral;
错误是这样的:
ERROR:HDLCompiler:806 - Line 43: Syntax error near "for".
ERROR:HDLCompiler:69 - Line 45: <i> is not declared.
ERROR:HDLCompiler:806 - Line 47: Syntax error near "generate".
ERROR:HDLCompiler:854 - Line 39: Unit <behavioral> ignored due to previous errors.
我在这里搜索了输入代码`前3个错误。没有注意到“for”语句的语法错误是什么;它应该是在循环中间接声明的;不知道“生成”中的错误。
一些帮助?
答案 0 :(得分:0)
ThirtyTwoAnd: for i in 0 to 31 generate
salida(i) <= a(i) and b(i);
end generate ThirtyTwoAnd;
答案 1 :(得分:0)
Jim说的甚至可以简化。 ieee.std_logic_1164
实际上定义了:
FUNCTION "and" ( l,r : std_logic_vector ) RETURN std_logic_vector;
所以你可以在这种情况下使用相等长度的向量来写:
salida <= "and"(a, b);
但这也有效:
salida <= a and b;