打印

【高手指点】vhdl 进程嵌套循环过程

[复制链接]
3537|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kuige0803|  楼主 | 2012-8-22 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【高手指点】vhdl 进程嵌套循环过程
在进程中嵌套循环过程的语法问题,代码如下:
procedure (signal c : integer;
           signal d : integer  ) is
begin
   ......(省略)
end procedure;
type ArrayNxInt is array (natural range <>) of Integer;
signal a :ArrayNxInt (0 to 1);
signal b :ArrayNxInt (0 to 1);
process (clk)
begin
   if (clk'event and clk = '1') then
      for i in 0 to 1 loop
         Procedure1 (a(i), b(i));
      end loop;
   end if;
end process;
modelsim仿真是报错:
Actual (indexed name) for formal "c" is not a static signal;
Actual (indexed name) for formal "d" is not a static signal;
如果代码改为
process (clk)
begin
   if (clk'event and clk = '1') then
         Procedure1 (a(0), b(0));
         Procedure1 (a(1), b(1));
   end if;
end process;
或者组合逻辑
Label1 : for i in 0 to 1 generate
         Procedure1 (a(i), b(i));
end generate;
就没有问题。
在process中,编译器好像不能正确翻译for循环+进程语句。
现在需要在process中调用procedure,并且需要for循环,请高手指点,多谢!

相关帖子

沙发
kuige0803|  楼主 | 2012-8-22 15:30 | 只看该作者
up

使用特权

评论回复
板凳
GoldSunMonkey| | 2012-8-22 22:38 | 只看该作者
【高手指点】vhdl 进程嵌套循环过程
在进程中嵌套循环过程的语法问题,代码如下:
procedure (signal c : integer;
           signal d : integer  ) is
begin
   ......(省略)
end procedure;
type ArrayNxInt is  ...
kuige0803 发表于 2012-8-22 10:47
如果是要实现一个功能,请不要使用for,

如果要仿真可以使用for.

使用特权

评论回复
地板
GoldSunMonkey| | 2012-8-22 22:39 | 只看该作者
有问题继续问。

使用特权

评论回复
5
kuige0803|  楼主 | 2012-8-23 22:31 | 只看该作者
fpga vhdl 不能用for实现功能吗
如果不用for循环,可能整个代码处理会很麻烦

使用特权

评论回复
6
GoldSunMonkey| | 2012-8-23 22:33 | 只看该作者
fpga vhdl 不能用for实现功能吗
如果不用for循环,可能整个代码处理会很麻烦
kuige0803 发表于 2012-8-23 22:31
for很难被综合的。

使用特权

评论回复
7
GoldSunMonkey| | 2012-8-23 22:34 | 只看该作者
这个就是你要从软件工程师到硬件工程师的转变。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

1

粉丝