微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog中的for 语句

verilog中的for 语句

时间:10-02 整理:3721RD 点击:
我想用for 语句对存储单元进行初始化:
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.这是为什么呀,我不是给出了循环结束的条件了吧
请大家指点一下,先谢谢了

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的吧,这到底是怎么回事,是软件的问题吗.
请大家一定要帮帮我,谢谢

不建议这样写Verilog。有没有想过综合出来的会是什么样的电路呢?
建议有空用一下Sypopsys的Leda或Novas的nLint,可以对Verilog代码作可综合性及代码风格的检查。
Verilog设计的初衷是仿真,可综合子集不过是很小一部分。

这个是用在testbench里面的吧
照你所说
你用的 8-bit 二进制
那它所有的范围就是 0-255
加到255后然后变为0,所以你这是一个死循环。就是软件报错的原因

既然是testbench里面的
无所谓可不可以综合
用 integer 可能好点

呵呵,opencore里面常这么写!

推荐使用 for循环来简化代码
推荐使用 for循环来简化代码,但是循环变量最好用reg 定义,不要用integer定义,否则DC会报警告

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top