ISE与Quartus II的综合工具性能疑问,请求指导!!!
本帖最后由 beirvin 于 2012-9-10 13:57 编辑刚开始学习FPGA,最近在编写数码管显示时遇到了一个让人不解的问题。不说废话,直接拿出我的问题吧,请看如下代码:
module number_mod_module
(
CLK, RSTn,
Number_Data,
Ten_Data, One_Data
);
input CLK;
input RSTn;
input Number_Data;
output Ten_Data;
output One_Data;
/*********************************/
reg rTen;
reg rOne;
always @ ( posedge CLK or negedge RSTn )
if( !RSTn )
begin
rTen <= 32'd0;
rOne <= 32'd0;
end
else
begin
rTen <= Number_Data / 10;
rOne <= Number_Data % 10;
end
/***********************************/
assign Ten_Data = rTen;
assign One_Data = rOne;
/***********************************/
endmodule
同样的代码,在Quartus II9.1上综合成功,但是在ISE12.4上综合就会出现如下报错:
ERROR:Xst:867 - "number_mod_module.v" line 48: Operator / is only supported when the second operand is a power of 2.
这句话的意思是二目运算符“/”只有第二个操作数为2的幂次方才有效。事实上我将其改成如下代码:
rTen <= Number_Data / 4;
rOne <= Number_Data % 4;
这样的话在ISE12.4上综合就能成功。
这个问题小弟着实不明白,希望各位仁兄给予指点!!!
补充一点,小弟拥有两块开发板,一款是赛灵思的spartan 3E XC3S500,一款是altera的cycloneII EP2C8Q208C8N,呵呵都是实验室提供的!
直接除法一般是不行的,也是不提倡的 楼上正解
不知道Quartus 是怎么综合的,窃以为最终不能综合成硬件吧,用来仿真还差不多 直接的,非移位可以搞定的除法操作导致生成组合除法器,消耗大,综合器不支持完全正常。
/10 和%10都可以用移位的方式解决 jlhgold 发表于 2012-9-10 21:35 static/image/common/back.gif
/10 和%10都可以用移位的方式解决
关注,是不是先*102再移动10位?FPGA有乘法器,对于常数还是有办法的 NJ8888 发表于 2012-9-10 21:43 static/image/common/back.gif
关注,是不是先*102再移动10位?FPGA有乘法器,对于常数还是有办法的
我想到的差不多 不过我想102.4应该也行 虽然没有试过 不过我至少觉得 这样肯定比直接 除 来的快些 NJ8888 发表于 2012-9-10 21:43 static/image/common/back.gif
关注,是不是先*102再移动10位?FPGA有乘法器,对于常数还是有办法的
给个参考链接 不是我写的 只是觉得很好 收藏的
http://blog.csdn.net/rill_zhen/article/details/7961937
http://blog.csdn.net/rill_zhen/article/details/7964535 jlhgold 发表于 2012-9-10 22:49 static/image/common/back.gif
给个参考链接 不是我写的 只是觉得很好 收藏的
http://blog.csdn.net/rill_zhen/article/details/7961937 ...
好资料,多谢分享 lgg88 发表于 2012-9-10 14:19 static/image/common/back.gif
直接除法一般是不行的,也是不提倡的
谢谢指导,阿莫论坛是我见过最活跃的论坛!
最近比较忙,给老师做项目,呵呵,没有来的及回复,见谅! zkf0100007 发表于 2012-9-10 17:07 static/image/common/back.gif
楼上正解
不知道Quartus 是怎么综合的,窃以为最终不能综合成硬件吧,用来仿真还差不多 ...
我在网上查到了一些资料,他们给出的解释是quartus II会自动把“除法器.V”和“求余器.v”自动添加到“使用文本.v”层次之下。我的理解是quartusII综合器会自动生成除法器和求余器的模块,而ISE综合器没有这个功能吧。最后还是要感谢你的指导! dr2001 发表于 2012-9-10 17:15 static/image/common/back.gif
直接的,非移位可以搞定的除法操作导致生成组合除法器,消耗大,综合器不支持完全正常。
...
也就是说,ISE是不持上面非移位的除法,我得自己用移位的方法来写吧! 本帖最后由 beirvin 于 2012-9-11 22:51 编辑
jlhgold 发表于 2012-9-10 21:35 static/image/common/back.gif
/10 和%10都可以用移位的方式解决
嗯,我下去试试,当时很奇怪同样的代码字不同的开发环境下的综合结果居然不同! jlhgold 发表于 2012-9-10 22:43 static/image/common/back.gif
我想到的差不多 不过我想102.4应该也行 虽然没有试过 不过我至少觉得 这样肯定比直接 除 来的快些 ...
嗯,谢谢各位的指导,呵呵,大家一起交流学起来才会更快,我是刚学完STM32转过来的~ beirvin 发表于 2012-9-11 22:49 static/image/common/back.gif
嗯,我下去试试,当时很奇怪同样的代码字不同的开发环境下的综合结果居然不同! ...
同样的代码在同一开发环境下,每次综合,布局,布线的结果都不同,更别说在不同的开发环境了
页:
[1]