打印

verilog 求余计算,综合时出错

[复制链接]
7581|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,直接的除法是无法综合的

使用特权

评论回复
5
jingfeng90| | 2011-9-1 17:54 | 只看该作者
除法不能那样写,你最好用现成的模块,像
McuPlayer发表于 2010-7-7 13:12 | 只看该作者 回复 引用 评分 报告 返回版面 TOP  
得分:0
4楼:
先设计除法器吧,或者用现成的IP,直接的除法是无法综合的
说的

使用特权

评论回复
6
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,其他的应该可以用同样的方法得到

使用特权

评论回复
7
jakfens| | 2011-9-2 08:50 | 只看该作者
了解了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

53

帖子

2

粉丝