用于生成的VHDL错误

时间:2017-03-10 18:05:02

标签: loops for-loop vhdl xilinx

我是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”语句的语法错误是什么;它应该是在循环中间接声明的;不知道“生成”中的错误。

一些帮助?

2 个答案:

答案 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;