verilog 求余计算,综合时出错

[复制链接]
8848|6
 楼主| cc810610186 发表于 2010-5-29 16:07 | 显示全部楼层 |阅读模式
用四个数码管显示一个X千X百X十X的一个数字,
千位码是用这个数字除以1000,剩下的位原理类似,用除或者取余的语法来达成。
问题出现:编译时发生错误,除数只能用2的整次幂。divisor must be a positive constant power of 2

如:     num1    <= counter1%10;
            num2    <= counter1/10%10;
            num3    <= counter1/100%10;
            num4    <= counter1/1000;



但是我在看网上的有些网友的代码时,他们的程序里是可以直接这样实现的。这是不是跟芯片有关?
如果我想实现以上的功能,有什么其他的方法吗?谢谢指教
zhaoshifen 发表于 2010-6-25 12:17 | 显示全部楼层
有一些运算,比如除法,是不能综合的,只能进行仿真。一般的FPGA厂家体统的开发工具都有除法运算模块,可以直接调用,不过输出与输入之间有几个时钟的延时。
ma9453 发表于 2010-6-28 17:26 | 显示全部楼层
除法和乘法是不可综合的
McuPlayer 发表于 2010-7-7 13:12 | 显示全部楼层
先设计除法器吧,或者用现成的IP,直接的除法是无法综合的
jingfeng90 发表于 2011-9-1 17:54 | 显示全部楼层
除法不能那样写,你最好用现成的模块,像
McuPlayer发表于 2010-7-7 13:12 | 只看该作者 回复 引用 评分 报告 返回版面 TOP  
得分:0
4楼:
先设计除法器吧,或者用现成的IP,直接的除法是无法综合的
说的
utopiaworld 发表于 2011-9-1 22:49 | 显示全部楼层
取余只可以用做不可综合用,可以试试这样
假设一个2进制数为 (d7d6d5d4d3d2d1d0)2
然后 除以10 对应的余数 为 d0 + 2 d1 + 4d2 + 8d3 +6d4 + 2d5 + 4d6 + 8d7
假设这个数等于  d4d3d2d1d0 = d0 + 2 d1 + 4d2 + 8d3 +6d4 + 2d5 + 4d6 + 8d7
然后再次迭代,应该就可以求出模10,其他的应该可以用同样的方法得到
jakfens 发表于 2011-9-2 08:50 | 显示全部楼层
了解了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

53

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部