【发布时间】:2013-09-23 10:10:11
【问题描述】:
基本上,我正在尝试在 verilog 中编写一个可合成的模块,该模块执行 2 个数字之间的除法并对结果进行四舍五入。例如,如果我在做 56/30 那么结果值为 1.86 并且这个值应该四舍五入到 2 或者如果我在做 42/30 ,结果值是 1.4 应该四舍五入到 1 。可以用verilog编写可综合的代码来实现吗?
【问题讨论】:
-
您需要提供更多详细信息。你有哪款合成器?如果它实际上只是一个移位器,大多数只会将“/”运算符变成一个除数 - 除数必须是 2 的恒定幂。你的数字格式是什么?你了解四舍五入吗?您可能需要编写除法器 - 查找“非恢复除法”。
-
基本上我用于计算的数字是我模块的输入。所以数字是有线格式的。您提到除数必须是 2 的常数幂。但在模拟过程中,我得到 56/30 的输出为 1,这是商的底值。我的疑问是,如果除数是2的幂以外的数字,是否可以合成代码?
-
我相信@EML 指的是这样一个事实,即如果将常数或选择的除数(分母)定义为 2 的幂,您将得到一个移位器而不是除数器。与分频器相比,移位器的面积和功率效率都很高。
标签: verilog