首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >for generate中的VHDL错误

for generate中的VHDL错误
EN

Stack Overflow用户
提问于 2017-03-11 02:05:02
回答 2查看 1.3K关注 0票数 0

我是VHDL的新手。

我在这段代码中有一个错误:

代码语言:javascript
复制
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;

错误是这样的:

代码语言:javascript
复制
 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“语句的语法错误是什么;它假定是在循环中间接声明的;不知道"generate”中的错误。

帮帮忙?

EN

回答 2

Stack Overflow用户

发布于 2017-03-11 03:09:01

代码语言:javascript
复制
ThirtyTwoAnd: for i in 0 to 31 generate

    salida(i) <= a(i) and b(i);

end generate ThirtyTwoAnd;
票数 0
EN

Stack Overflow用户

发布于 2017-03-19 04:32:20

吉姆说的话甚至可以简化。ieee.std_logic_1164实际上定义了:

代码语言:javascript
复制
FUNCTION "and"  ( l,r : std_logic_vector ) RETURN std_logic_vector;

所以在等长向量的情况下,你可以这样写:

代码语言:javascript
复制
salida <= "and"(a, b);

但这也是可行的:

代码语言:javascript
复制
salida <= a and b;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42724988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档