ошибка компилятора присваивания verilog - PullRequest
1 голос
/ 23 апреля 2011

У меня есть основная ошибка компилятора, которую я не могу выяснить. Код:

module (input [127:0] in1,
        input [2:0] en);
real a1;
if(en==3'b001)
begin
  a1=$bitstoreal(in1[31:0]);
end

Ошибка:

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

Ответы [ 2 ]

3 голосов
/ 23 апреля 2011

Назначения в Verilog выполняются оператором assign, если вы пытаетесь установить значение wire или внутри процедурного блока (always или initial) для других типов данных.

В вашем примере вам не хватает блока always:

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

У вас также могут возникнуть проблемы с назначением шины типу real, если вы не уверены в том, что делаете. Возможно, вам придется написать это как a1 = $itor(in1);

3 голосов
/ 23 апреля 2011

У вас есть процедурный код вне процедурной конструкции.

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