boxboxbox 发表于 2013-3-1 15:17:15

移位作除法求解惑。。。

是不是所有的除法都可以用移位表达式表示出来?
如果直接使用fpga内的乘法器,除法器,那么整个模块的最高工作频率就会下降一大截;

乘法的例如:
reg data,temp;
data1<=data*10;

就可以写成 data1<={data,3'd0} + {data,1'd0};       // data<=temp<<3 + temp<<1


但是
如果是要除以10,即要算 data/10的商,这个移位表达式能写出来么?

philoman 发表于 2013-3-1 18:00:21

呵呵,data/10=data*0.1,也可以通过移位来实现

boxboxbox 发表于 2013-3-1 19:38:00

怎么移?

li37hao 发表于 2013-3-2 00:15:30

0.0625+0.03125+0.015625=0.109
data1<={4'd0,data}+{6'd0,data};

boxboxbox 发表于 2013-3-2 10:57:01

li37hao 发表于 2013-3-2 00:15 static/image/common/back.gif
0.0625+0.03125+0.015625=0.109
data1

多谢,近似的方法
但是精度有点低。。。
例如120/    10 = 12
而120*0.109= 13.08
。。。

philoman 发表于 2013-3-3 16:04:46

如果希望精度高,把位数搞长

NJ8888 发表于 2013-3-3 17:05:38

这个对于除数是变量的没法化除为乘
页: [1]
查看完整版本: 移位作除法求解惑。。。