在 verilog 中定义一个常量(用于综合)
define a constant in verilog (for synthesis)
我正在编写一些用于综合的 Verilog 代码。
我的块有一个 reg 类型 A,必须始终具有相同的值。
为了不出现语法错误,我这样写:
module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
output [11:0] OUT, OUTN;
input [11:0] in, OUTlevelL;
input mode_1, mode_0, rst;
reg [11:0] OUT, OUTN;
reg [11:0] A;
integer B;
always @(ck or rst)
if(~rst)
begin
A =512;
B =in[10:0];
case ({mode_1, mode_0})
2'b00: begin
OUT=A-B;
OUTN=~OUT;
end
default: begin
OUT=OUTlevelL;
OUTN=~OUT;
end
endcase
end
else
begin
A =512;
B =0;
OUT =0;
OUTN=1;
end
endmodule
是否可以在"always"之前定义A?我不知道对于必须固定且既不是输入也不是输出的数量的常见做法是什么。我不想在合成过程中放置不必要的端口。
非常感谢您的帮助!
您可以将其定义为本地参数。这将仅将其范围限制在该模块内。
module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
output [11:0] OUT, OUTN;
input [11:0] in, OUTlevelL;
input mode_1, mode_0, rst;
reg [11:0] OUT, OUTN;
localparam [11:0] A=512;
我正在编写一些用于综合的 Verilog 代码。 我的块有一个 reg 类型 A,必须始终具有相同的值。 为了不出现语法错误,我这样写:
module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
output [11:0] OUT, OUTN;
input [11:0] in, OUTlevelL;
input mode_1, mode_0, rst;
reg [11:0] OUT, OUTN;
reg [11:0] A;
integer B;
always @(ck or rst)
if(~rst)
begin
A =512;
B =in[10:0];
case ({mode_1, mode_0})
2'b00: begin
OUT=A-B;
OUTN=~OUT;
end
default: begin
OUT=OUTlevelL;
OUTN=~OUT;
end
endcase
end
else
begin
A =512;
B =0;
OUT =0;
OUTN=1;
end
endmodule
是否可以在"always"之前定义A?我不知道对于必须固定且既不是输入也不是输出的数量的常见做法是什么。我不想在合成过程中放置不必要的端口。 非常感谢您的帮助!
您可以将其定义为本地参数。这将仅将其范围限制在该模块内。
module dig_block ( OUT, OUTN, in , OUTlevelL, mode_1, mode_0 , rst);
output [11:0] OUT, OUTN;
input [11:0] in, OUTlevelL;
input mode_1, mode_0, rst;
reg [11:0] OUT, OUTN;
localparam [11:0] A=512;