2013-11-01 24 views
-1

我必须使用Verilog(作业)分割两个8位数字。 我必须使用该模块是这一个:我必须做一个verilog程序,除以2数字

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

其中A = B * Q + R

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

有人告诉我,我可以使用SRT,牛顿迭代或施密特算法来解决这个问题,但我不明白他们是如何工作的?

任何帮助请?

+4

我认为重点是要了解这些算法之一是如何工作的,因为他们排除了更直接的算术方法。 – Morgan

回答

0

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

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

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

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

相关问题