我必须制作一个划分2个数字的verilog程序

时间:2013-11-01 13:17:21

标签: verilog division subtraction

我必须使用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算法来解决它,但我不明白它们是如何工作的......

有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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