Compiler errors verilog分配编译器错误

Compiler errors verilog分配编译器错误,compiler-errors,variable-assignment,verilog,Compiler Errors,Variable Assignment,Verilog,我有一个基本的编译器错误,我无法理解。 代码: 错误是: Error: E:/Modeltech_pe_edu_10.0/examples/FloatingPt.v(20): near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER or '#' or '(' 在过程构造之外有过程代码 real a1; initial begin if(en==3'b001) begin

我有一个基本的编译器错误,我无法理解。 代码:

错误是:

Error: E:/Modeltech_pe_edu_10.0/examples/FloatingPt.v(20): near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER or '#' or '('

在过程构造之外有过程代码

real a1;
initial
  begin
  if(en==3'b001)
    begin
    a1=$bitstoreal(in1[31:0]);
    end
  end

在过程构造之外有过程代码

real a1;
initial
  begin
  if(en==3'b001)
    begin
    a1=$bitstoreal(in1[31:0]);
    end
  end

如果您试图为其他数据类型设置
wire
的值或在程序块内(
始终
初始
),则Verilog中的赋值由
assign
语句完成

在您的示例中,缺少一个
始终
块:

always @(*) begin
    if(en==3'b001) begin
        a1=$bitstoreal(in1[31:0]);
    end
end

如果您不确定自己在做什么,那么将总线分配给
real
类型也可能会有问题。您可能需要将其编写为
a1=$itor(in1)

如果您试图为其他数据类型设置
导线
的值或在程序块内(
始终
初始
),则Verilog中的赋值由
赋值
语句完成

在您的示例中,缺少一个
始终
块:

always @(*) begin
    if(en==3'b001) begin
        a1=$bitstoreal(in1[31:0]);
    end
end

如果您不确定自己在做什么,那么将总线分配给
real
类型也可能会有问题。您可能需要将其编写为
a1=$itor(in1)

我不希望它在初始块中。还有别的办法吗?是的。使用任务或函数。查看此内存模型。->Sim模型->LPDDR Verilog模型。这个模型是mobile_ddr.v。你可以看到这个模型如何使用一些程序块进行高级控制,然后调用包含计算组的任务。我不希望它在初始块中。还有别的办法吗?是的。使用任务或函数。查看此内存模型。->Sim模型->LPDDR Verilog模型。该模型是mobile_ddr.v。您可以看到该模型如何使用一些程序块进行高级控制,然后调用包含计算组的任务。如果我不想包含always块,我该如何做?不可能对实际类型执行连续赋值。我认为它们是作为寄存器实现的。如果我不想包含一个always块,我该怎么做?不可能对实类型进行连续赋值。我认为它们是作为寄存器实现的。