复数乘法verilog优化_从一个小案例学IC设计的算法优化

今天讲一个很简单的IC设计算法优化案例,希望大家能够从中找到芯片设计优化的一些方法。案例取自本人工作开发的一点小经历,省去背景和细节,单独拎出一个局部讲一下。

题目是这样的:有一个4bit宽的整数,要求实现其乘以0.675之后的下取整。

怎么用verilog实现呢?

看到这个题,你当然不能直接写: assign output = input *0.675;

因为被乘数是个小数。如果被乘数是整数的话,这么写“*”倒也可以,只不过最后会用乘法器来实现,浪费面积而已。

最简单的办法就是用查找表:

0 * 0.675,得到0, 下取整得到0;

1 * 0.675,得到0.675,下取整得到0;

2* 0.675,得到1.35, 下取整得到1;

3* 0.675,得到2.025, 下取整得到2;

............

15*0.675,得到10.125,下取整得到10;

高级一点的办法是把0.675转换成分数。

0.675=27/40;

先乘以27,再除以40;

乘以27很简单,可以拆成乘以(16+8+2+1),采用左移累加来实现。但是分母是40,没法通过右移来实现除法。除非分母是32或者64。

下面就是我的优化步骤:

(1)对于分数乘法,我们希望分母是2的指数,分子无

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值