【发布时间】:2016-02-16 13:02:36
【问题描述】:
我在 Verilog 中实现一个数学方程,在一个组合方案(赋值 = ...)中,合成工具 (Quartus II) 已经能够通过以下方式对 32 位无符号绝对数进行加、减和乘除分别使用运算符“+、- 和 *”。
然而,等式的最后一个步骤是除以两个 64 位无符号定点变量,64 位容量如此大的原因是因为我指定 16 位用于整数,48 位用于分数(虽然,计算机以二进制执行所有操作并且不关心分数,但我将能够检查数字以将分数与整数分开)。
问题是运算符“/”是无用的,因为它自动调用所谓的“LPM_divide”库,该库的输出只给我整数,不考虑分数,加上错误的位置(不太重要的位)。
例如:
b1000111010000001_00000000000000000000000000000000000 / b1000111010000001_0000000000000000000000000000000000000000000000000000000000
应该是1,它给了我
b00000000000000000_000000000000000000000000000000000000000000000001
那么,我怎样才能对可合成的verilog进行这种划分?我应该遵循什么方法或算法,我希望它更快,也许是一个完整的组合? 我希望它保持 16 个整数 - 24 个分数用户的观点。提前致谢。
【问题讨论】: