如何使用verilog制作通用的NxM带符号数组乘法器?

时间:2016-04-01 15:05:02

标签: verilog system-verilog iverilog

之前我做过8位8位,但它不是通用的。我无法弄清楚如何调整代码使其成为NxM位。有谁可以帮助我?

1 个答案:

答案 0 :(得分:2)

您需要使用参数。参数基本上是输入常量,是编写通用代码的好方法。它们位于模块名称和列表中看起来像端口列表的端口之间,但前面有一个哈希:

module <MODULE NAME> #(<SOME TYPE> <PARAMETER NAME>=<DEFAULT_VALUE>, ...) (<THE PORTS>);

可以使用参数声明端口本身。通常使用参数来定义输入和输出的宽度。

这是一个例子(使用MxN乘数):

module MULT #(integer M=8, integer N=8) (input [M-1:0] A, [N-1:0] B, [(M+N)-1:0] F);

  assign F = A * B;

endmodule

http://www.edaplayground.com/x/2Bvx

所以,如果你很乐意合成你的乘数,这很容易。如果您的乘数设计更具结构性,那么您将不得不了解generate循环。