微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog 求余计算,综合时出错

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;

但是我在看网上的有些网友的代码时,他们的程序里是可以直接这样实现的。这是不是跟芯片有关?
如果我想实现以上的功能,有什么其他的方法吗?谢谢指教

有一些运算,比如除法,是不能综合的,只能进行仿真。一般的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,直接的除法是无法综合的

除法和乘法是不可综合的

好吧,菜鸟找到答案了!

小编不够厚道,选几个下载还不给解压,不能这样挣分啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top