[Actel FPGA] 请教,求余时出错

[复制链接]
3138|6
 楼主| LPC300 发表于 2010-5-30 12:40 | 显示全部楼层 |阅读模式
用四个数码管显示一个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;



但是我在看网上的有些网友的代码时,他们的程序里是可以直接这样实现的。这是不是跟芯片有关?
maoyanketi 发表于 2010-5-30 12:44 | 显示全部楼层
与芯片、综合器有关,对除法、取余等操作有些综合器不支持~
 楼主| LPC300 发表于 2010-6-5 23:13 | 显示全部楼层
那我要实现以上功能有什么其他的方法吗?谢谢指导
3B1105 发表于 2010-6-5 23:14 | 显示全部楼层
比如除法器,就是用FPGA内部逻辑资源搭建,网上有很多除法器的实现方式,可作为参考~
6019实验室 发表于 2010-6-5 23:15 | 显示全部楼层
FPGA是逻辑门电路,所以要考逻辑方法实现除法器,因此不支持除法综合。

FPGA做数据处理太差啦!
yelinggtx 发表于 2010-6-7 17:34 | 显示全部楼层
5# 6019实验室

FPGA做数据处理并没有你想象的那么差,现在很多FPGA都集成了乘法器 FFT等IPCore,算法处理同DSP不相上下,如果只是IPCore,为软核的话,根据自己程序的写法和芯片的架构有密切关系,所以FPGA数据处理能力是值得信任的,如果用FPGA专做算法,不推荐,但是掺杂有数据处理的综合设计FPGA优势明显
aresc 发表于 2010-6-8 21:27 | 显示全部楼层
用减法就可以了,比如4567,先求千位的数字N4,再求百位数字N3,十位数字N2以及个位数字N1

int N4 =N3=N2=N1= 0;
int i;
int value = 4567;
while (value >= 1000)
{
      N4++;
      value -= 1000;
}
while (value >= 100)
{
      N3++;
      value -= 100;
}
while (value >= 10)
{
      N2++;
      value -= 10;
}

N1 = value;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:30——驱动高手、流利的英语

107

主题

525

帖子

0

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