-1

我必须使用 Verilog(作业)来划分两个 8 位数字。我必须使用的模块是这个:

module divider(
output reg[7:0] q,         
output reg[7:0] r,
input [7:0] a,b);
endmodule

其中 a=b*q+r

我不允许使用重复减法或 / 和 % 运算符。

有人告诉我我可以使用 SRT、Newton-Raphson 或 Goldschmidt 算法来解决它,但我不明白它们是如何工作的......

有什么帮助吗?

4

1 回答 1

0

第 1 步:从Wikipedia和 Google 开始。牛顿的方法有很多东西。

第 2 步:用你最喜欢的软件语言(Python、Scala、C 等)编写原型。

第 3 步:只有完成前两个步骤后,您才能在 Verilog 中编写解决方案。

牛顿法背后的基本思想是进行猜测,然后在每个时钟周期/迭代中改进你的猜测。你的猜测最终会收敛到正确的答案。一旦新的猜测与之前的猜测几乎相同,您就完成了。

于 2013-11-02T04:51:21.540 回答