cpld做除法的办法

[复制链接]
3553|3
 楼主| XLDZZ 发表于 2010-12-31 22:05 | 显示全部楼层 |阅读模式
最近搞一个电机的驱动  涉及到一个电子齿轮的算法需要用到除法

不知道是否能 用VHDL来写除法  书上只说规模太大,不适合做除法或乘法

  如果我定义两个signal 为integer 比如说60/29因该是等于2吗?

  主要是没有用过VHDL来写除法的 而且是用CPLD来写的
mmax 发表于 2010-12-31 22:41 | 显示全部楼层
齿轮比应该固定,乘除数固定,所以除法能用移位来搞定
60 / 29 = 2.069
=2+1/16+1/128
假设 a *60 / 29
= a<<1+a>>4+a>>7
wuyangtech 发表于 2010-12-31 23:05 | 显示全部楼层
VHDL是不能直接写除法的吧
linqing171 发表于 2011-1-1 19:11 | 显示全部楼层
范围窄的话,可以用比较器,比如
if(x<29) y=0 ;
else if(x<58)y=1;

或者搞个表格. 来存储0~255除以29后的结果和余数.
或者搞个表格, 来存储0*29~255*29 的结果,然后根据你的数据用循环(计数器简单的状态机)来进行比较,直到结果为止.
不过这个比用减法来做除法浪费了太多空间了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

182

帖子

0

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