algorithm - 在硬件中除小整数时应该使用什么除法算法?

标签 algorithm verilog division fpga

我需要将0-1023范围内的整数乘以1023,然后将结果除以硬件(verilog/fpga实现)中1-1023范围内的数字。乘法很简单,因为我可能只需移动 10 位就可以了(如果需要的话,我会减去额外的 1023)。不过,这种划分有点有趣。面积/功耗对我来说并不重要(我在 FPGA 中,所以资源已经在那里)。只要我可以管道化设计,延迟(在合理范围内)就不是什么大问题。显然有几种选择具有不同的权衡,但我想知道对于这种情况是否有一个“明显”或“无需思考”的算法。鉴于操作数范围有限和我拥有的丰富资源(bram 等),我想知道是否没有明显的事情要做。

最佳答案

如果您可以使用定点精度而不是整数,则可以更改:

divide the result by a number ranging from 1-1023

乘以 1 - 1/1023 范围内的数字,即预先计算除法并将其存储为乘法系数。

关于algorithm - 在硬件中除小整数时应该使用什么除法算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111366/

相关文章:

algorithm - 有没有一种简单的方法可以找到一组子集的非重复组?

基于参数值的 Verilog 条件硬件

Python 3.6 : Floor division of a complex number

verilog - 如何修复实例 : Undefined variable B? 上的错误

python - python 中的多项式除法

c - 除算法 C 得到 float

algorithm - BFS 中 O(V+E) 如何等于 O(b^d)

c# - 如何将字符串转换为整数表示并将其改回

c# - 如何将数组分成 3 部分,每部分的总和大致相等

verilog:如何添加参数