声明具有参数化宽度的常量
Declaring a constant with a parameterized width
我想声明具有参数化宽度的常量。
例如,在这段代码中:
module mux2to1 #(parameter w = 4) (output [w-1:0] O, input [w-1:0] i0, i1, input Sel);
assign O = (Sel)? i1 : i0;
endmodule
module M1 #(parameter n = 4) (input [n-1:0] A, input F, output [n+1:0] B);
mux2to1#(n+2) mux (B, XXX, XXX, F);
endmodule
在XXX中,我想其中一个全1,另一个我想全0后跟一个1。
如何操作?
您可以使用复制连接运算符构造常量:
mux2to1 #(n+2) mux (B, {(n+2){1'b1}}, {{(n+1){1'b0}}, 1'b1}, F);
{(n+2){1'b1}}
创建一个 n+2
1'b1
位的常量。由于n
为4,所以{(n+2){1'b1}}
等同于{6{1'b1}}
,与6'b11_1111
等同。
{(n+1){1'b0}}
与 5'b0_0000
相同,然后只需将一个 1'b1
连接到那个。
我想声明具有参数化宽度的常量。 例如,在这段代码中:
module mux2to1 #(parameter w = 4) (output [w-1:0] O, input [w-1:0] i0, i1, input Sel);
assign O = (Sel)? i1 : i0;
endmodule
module M1 #(parameter n = 4) (input [n-1:0] A, input F, output [n+1:0] B);
mux2to1#(n+2) mux (B, XXX, XXX, F);
endmodule
在XXX中,我想其中一个全1,另一个我想全0后跟一个1。
如何操作?
您可以使用复制连接运算符构造常量:
mux2to1 #(n+2) mux (B, {(n+2){1'b1}}, {{(n+1){1'b0}}, 1'b1}, F);
{(n+2){1'b1}}
创建一个 n+2
1'b1
位的常量。由于n
为4,所以{(n+2){1'b1}}
等同于{6{1'b1}}
,与6'b11_1111
等同。
{(n+1){1'b0}}
与 5'b0_0000
相同,然后只需将一个 1'b1
连接到那个。