在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 47979|回复: 6

verilog中的for 语句

[复制链接]
发表于 2008-4-22 11:43:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我想用for 语句对存储单元进行初始化:
[email=always@(posedge]always@(posedge[/email] init_clk or negedge rst)
  begin
      if(rst==0)
  begin
        for(i=0;i<=255;i=i+1)
             begin
                   B2=0;
                  end
              end
       else
            begin
                for(j=0;j<=255;j=j+1)
                  begin
                           B2[j]=j;
                    end
             end
  end
用QUARTUS II编译出错说: loop must terminate within 5000 iterations.这是为什么呀,我不是给出了循环结束的条件了吧
请大家指点一下,先谢谢了
 楼主| 发表于 2008-4-22 15:34:43 | 显示全部楼层
begin
reg [7:0] i;
for(i=0;i<=255;i=i+1)
  begin
        B2=0;
  end
我又研究了一下,发现把for结束的条件变成i<255后就不会报错了,但是B[255]单元却没有logic drive .8位二进制数最大值是可以取到255的吧,这到底是怎么回事,是软件的问题吗.
请大家一定要帮帮我,谢谢
发表于 2008-4-22 17:16:55 | 显示全部楼层
不建议这样写Verilog。有没有想过综合出来的会是什么样的电路呢?

建议有空用一下Sypopsys的Leda或Novas的nLint,可以对Verilog代码作可综合性及代码风格的检查。

Verilog设计的初衷是仿真,可综合子集不过是很小一部分。
发表于 2008-4-28 01:10:56 | 显示全部楼层
这个是用在testbench里面的吧

照你所说
你用的 8-bit 二进制
那它所有的范围就是 0-255
加到255后然后变为0,所以你这是一个死循环。。。就是软件报错的原因
发表于 2008-4-28 01:14:01 | 显示全部楼层
既然是testbench里面的
无所谓可不可以综合

用 integer 可能好点
发表于 2008-4-28 08:13:31 | 显示全部楼层
呵呵,opencore里面常这么写!
发表于 2008-5-7 08:01:05 | 显示全部楼层

推荐使用 for循环来简化代码

推荐使用 for循环来简化代码,但是循环变量最好用reg 定义,不要用integer定义,否则DC会报警告
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 02:51 , Processed in 0.024358 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表