之前我做过8位8位,但它不是通用的。我无法弄清楚如何调整代码使其成为NxM位。有谁可以帮助我?
答案 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
循环。