在verilog中定义一个常量(用于合成)
我正在写一些用于合成的Verilog代码。 我的块有一个reg类型a,它必须始终具有相同的值。 为了避免语法错误,我编写了以下内容:在verilog中定义一个常量(用于合成),verilog,Verilog,我正在写一些用于合成的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,
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
是否可以在“始终”之前定义一个?我不知道对于必须固定且不是输入或输出的数量,通常的做法是什么。我不希望在合成过程中放置不必要的端口。
非常感谢你的帮助 您可以将其定义为本地参数。这将仅将其范围限制在本模块内
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;
您可以将其定义为本地参数。这将仅将其范围限制在本模块内
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;
ck
未声明,按照您编写always块的方式,您的代码将被视为没有触发器的纯组合逻辑。非常确定always@(ck或rst)
应该是always@(posedge ck或posedge rst)
。谢谢!我避免使用posedge,因为我需要两条边ck
没有声明,并且按照您编写always块的方式,您的代码将被视为没有触发器的纯组合逻辑。非常确定always@(ck或rst)
应该是always@(posedge ck或posedge rst)
。谢谢!我在避开posedge,因为我需要两条边谢谢!但是如何合成localparam呢?我的目标是有一个固定(不可编程)输入的寄存器。SLOCALPARAM将是一个硬编码值。不能改变的东西,使用接地和电压将值驱动为0和1的组合。您不需要固定值的寄存器。谢谢!但是如何合成localparam呢?我的目标是有一个固定(不可编程)输入的寄存器。SLOCALPARAM将是一个硬编码值。不能改变的东西,使用接地和电压将值驱动为0和1的组合。固定值不需要寄存器。