我正在编写一些用于综合的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
是否可以在“始终”之前定义A?我不知道必须修复的数量的常见做法是什么,不是输入,也不是输出。我不想在合成期间放置不必要的端口。 非常感谢你的帮助!
答案 0 :(得分:2)
您可以将其定义为Local参数。这将仅限于此模块的范围。
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;