verilog 求余计算,综合时出错
时间:10-02
整理:3721RD
点击:
用四个数码管显示一个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;
但是我在看网上的有些网友的代码时,他们的程序里是可以直接这样实现的。这是不是跟芯片有关?
如果我想实现以上的功能,有什么其他的方法吗?谢谢指教
千位码是用这个数字除以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;
但是我在看网上的有些网友的代码时,他们的程序里是可以直接这样实现的。这是不是跟芯片有关?
如果我想实现以上的功能,有什么其他的方法吗?谢谢指教
有一些运算,比如除法,是不能综合的,只能进行仿真。一般的FPGA厂家体统的开发工具都有除法运算模块,可以直接调用,不过输出与输入之间有几个时钟的延时。
取余只可以用做不可综合用,可以试试这样
假设一个2进制数为 (d7d6d5d4d3d2d1d0)2
然后 除以10 对应的余数 为 d0 + 2 d1 + 4d2 + 8d3 +6d4 + 2d5 + 4d6 + 8d7
假设这个数等于 d4d3d2d1d0 = d0 + 2 d1 + 4d2 + 8d3 +6d4 + 2d5 + 4d6 + 8d7
然后再次迭代,应该就可以求出模10,其他的应该可以用同样的方法得到
先设计除法器吧,或者用现成的IP,直接的除法是无法综合的
除法和乘法是不可综合的
好吧,菜鸟找到答案了!
小编不够厚道,选几个下载还不给解压,不能这样挣分啊