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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 10228|回复: 8

[求助] Qutus编译出错 loop with non-constant loop condition must terminate within 250

[复制链接]
发表于 2011-8-22 11:46:38 | 显示全部楼层 |阅读模式

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

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

x
新手,想写一个除16位数除以400,商四舍五入的模块,折腾了半天,quartus总是报错,不知道什么原因,请高手帮忙看看?
module div_400(A,Div);

input [15:0] A;//被除数
output [8:0] Div;//商
parameter B=16'd400;

reg [8:0] Div;
reg [8:0] Div_temp;
reg [15:0] A_temp;

always@(A)
begin

A_temp=A;
Div_temp=0;

while (A_temp>B)
begin
Div_temp=Div_temp+1;
A_temp=A_temp-B;
end

if (A_temp>=200)
begin
Div=Div_temp+1;
end
else
begin
Div=Div_temp;
end

end

endmodule

编译总是报错Verilog HDL Loop Statement error : loop with non-constant loop condition must terminate within 250 iterations
是什么原因呢?
发表于 2011-8-22 17:36:30 | 显示全部楼层
while (A_temp>B)
begin
Div_temp=Div_temp+1;
A_temp=A_temp-B;
end

这里要加循环退出条件不?当A_temp > B不再为1后
 楼主| 发表于 2011-8-22 18:04:59 | 显示全部楼层
应该不是这个问题吧
发表于 2012-2-22 10:31:21 | 显示全部楼层
呵呵,一般的循环语句用于testbench测试用,不适合于RTL综合。
发表于 2012-2-22 11:29:11 | 显示全部楼层
verilog是硬件描述语言,它的实现是对应一定的硬件结构。你这个是典型的c语言的结构模式...
你上面写的这段代码是没有办法用硬件来实现的,因为循环的次数是不固定的,无法确定最终的硬件结构。
而且就像ls所说的,循环语句一般用于testbench...不用于实现RTL代码...
发表于 2013-1-17 13:58:52 | 显示全部楼层
我也遇到相同的问题,貌似之前使用Quartus也没遇到过啊。。。。。
发表于 2014-5-27 11:31:57 | 显示全部楼层
“挂在天边的鱼 ”说的完全正确
发表于 2014-11-9 19:59:41 | 显示全部楼层
我也遇到这个问题,有啥解决之道呀?
/
改程序吗?直接设置那个数吗
发表于 2017-7-5 10:05:26 | 显示全部楼层
就是循环次数不固定造成的,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-11-5 21:51 , Processed in 0.025219 second(s), 10 queries , Gzip On, Redis On.

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