如何通过按位运算或定点乘法避免桶形移位器?

问题描述

在浮点运算中,通常使用动态移位器来调整尾数。这可以通过桶形移位器来完成。可以使用 Mux 2:1 执行桶形移位器。由级联的 2:1 Mux 组成的桶形移位器的 2:1 Mux 数量为:

在 32 位桶形移位器的情况下,2:1 多路复用器的总数为 160。每个多路复用器具有 2 个与门、一个或门和一个非门。因此,执行 32 位桶形移位器的门总数为:

我认为这是一个非常昂贵的硬件资源成本,因此,我认为优化硬件利用率的一个方法是通过定点乘法执行移位,因为移位相同,乘以 2 的幂,因此:

术语

可以存储在 ROM 或 LUT 中,并根据要移位的位数进行寻址。这样,只需要一个乘数。如果这个动态移位器的目的是用于 fp32 中的算术,那么只需要一个 24x24 位乘法器,即 48 位的结果,最后只得到结果的 MSB 位。

是否有其他方法可以实现避免桶形移位器的动态移位器?我正在使用 Quartus II 编译器进行实验,使用桶形移位器的 ALM 必需品的数量比使用乘法器的要多得多。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)