21ic电子技术开发论坛

标题: cpld做除法的办法 [打印本页]

作者: XLDZZ    时间: 2010-12-31 22:05
标题: cpld做除法的办法
最近搞一个电机的驱动  涉及到一个电子齿轮的算法需要用到除法

不知道是否能 用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 的结果,然后根据你的数据用循环(计数器简单的状态机)来进行比较,直到结果为止.
不过这个比用减法来做除法浪费了太多空间了.




欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/) Powered by Discuz! X3.5