beirvin 发表于 2012-9-10 13:56:19

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,呵呵都是实验室提供的!



lgg88 发表于 2012-9-10 14:19:57

直接除法一般是不行的,也是不提倡的

zkf0100007 发表于 2012-9-10 17:07:01

楼上正解
不知道Quartus 是怎么综合的,窃以为最终不能综合成硬件吧,用来仿真还差不多

dr2001 发表于 2012-9-10 17:15:26

直接的,非移位可以搞定的除法操作导致生成组合除法器,消耗大,综合器不支持完全正常。

jlhgold 发表于 2012-9-10 21:35:45

/10 和%10都可以用移位的方式解决

NJ8888 发表于 2012-9-10 21:43:44

jlhgold 发表于 2012-9-10 21:35 static/image/common/back.gif
/10 和%10都可以用移位的方式解决

关注,是不是先*102再移动10位?FPGA有乘法器,对于常数还是有办法的

jlhgold 发表于 2012-9-10 22:43:55

NJ8888 发表于 2012-9-10 21:43 static/image/common/back.gif
关注,是不是先*102再移动10位?FPGA有乘法器,对于常数还是有办法的

我想到的差不多 不过我想102.4应该也行 虽然没有试过 不过我至少觉得 这样肯定比直接 除 来的快些

jlhgold 发表于 2012-9-10 22:49:57

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

zkf0100007 发表于 2012-9-10 23:39:15

jlhgold 发表于 2012-9-10 22:49 static/image/common/back.gif
给个参考链接 不是我写的 只是觉得很好 收藏的
http://blog.csdn.net/rill_zhen/article/details/7961937 ...

好资料,多谢分享

beirvin 发表于 2012-9-11 22:38:14

lgg88 发表于 2012-9-10 14:19 static/image/common/back.gif
直接除法一般是不行的,也是不提倡的

谢谢指导,阿莫论坛是我见过最活跃的论坛!
最近比较忙,给老师做项目,呵呵,没有来的及回复,见谅!

beirvin 发表于 2012-9-11 22:46:19

zkf0100007 发表于 2012-9-10 17:07 static/image/common/back.gif
楼上正解
不知道Quartus 是怎么综合的,窃以为最终不能综合成硬件吧,用来仿真还差不多 ...

我在网上查到了一些资料,他们给出的解释是quartus II会自动把“除法器.V”和“求余器.v”自动添加到“使用文本.v”层次之下。我的理解是quartusII综合器会自动生成除法器和求余器的模块,而ISE综合器没有这个功能吧。最后还是要感谢你的指导!

beirvin 发表于 2012-9-11 22:47:39

dr2001 发表于 2012-9-10 17:15 static/image/common/back.gif
直接的,非移位可以搞定的除法操作导致生成组合除法器,消耗大,综合器不支持完全正常。
...

也就是说,ISE是不持上面非移位的除法,我得自己用移位的方法来写吧!

beirvin 发表于 2012-9-11 22:49:00

本帖最后由 beirvin 于 2012-9-11 22:51 编辑

jlhgold 发表于 2012-9-10 21:35 static/image/common/back.gif
/10 和%10都可以用移位的方式解决

嗯,我下去试试,当时很奇怪同样的代码字不同的开发环境下的综合结果居然不同!

beirvin 发表于 2012-9-11 22:50:47

jlhgold 发表于 2012-9-10 22:43 static/image/common/back.gif
我想到的差不多 不过我想102.4应该也行 虽然没有试过 不过我至少觉得 这样肯定比直接 除 来的快些 ...

嗯,谢谢各位的指导,呵呵,大家一起交流学起来才会更快,我是刚学完STM32转过来的~

zkf0100007 发表于 2012-9-12 12:41:43

beirvin 发表于 2012-9-11 22:49 static/image/common/back.gif
嗯,我下去试试,当时很奇怪同样的代码字不同的开发环境下的综合结果居然不同! ...

同样的代码在同一开发环境下,每次综合,布局,布线的结果都不同,更别说在不同的开发环境了
页: [1]
查看完整版本: ISE与Quartus II的综合工具性能疑问,请求指导!!!