Инструкция if-else в блоке always_comb не будет компилироваться - PullRequest
0 голосов
/ 12 июля 2019

Я не могу получить этот кусок кода для компиляции (2 ошибки).Он работал нормально с Always @ *, но когда я заменил @ * на Always_comb, он не скомпилируется.

Почему бы это работать с использованием Always @ *, но не Always_comb?Некоторая логическая логика в выражении if-else?

Спасибо.

module Pri_Encoder(Out, In);

    output [1:0] Out;
    reg [1:0] Out;
    input [3:0] In;

    always_comb begin
        if(In[3])
            begin
            Out[0] = 1'b1;
            Out[1] = 1'b1;
            end
        else if(In[2])
            begin
            Out[0] = 1'b0;
            Out[1] = 1'b1;
            end
        else if(In[1])
            begin
            Out[0] = 1'b1;
            Out[1] = 1'b0;
            end
        else if(In[0])
            begin
            Out[0] = 1'b0;
            Out[1] = 1'b0;
            end
        else
            begin
            Out[0] = 1'b0;
            Out[1] = 1'b0;
            end
    end
endmodule

2 сообщения об ошибках:

  • рядом с "begin":синтаксическая ошибка, неожиданное начало.

  • Синтаксическая ошибка обнаружена в области действия, следующей за Always_comb.Есть пропущенный '::'?

...