always_comb块中的if-else语句将不会编译

时间:2019-07-12 03:49:34

标签: verilog system-verilog

我无法编译这段代码(2个错误)。总是@ *可以正常工作,但是当我用always_comb替换@ *时,它将无法编译。

为什么总是使用@ *而不是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条错误消息:

  • “开始”附近:语法错误,意外开始。

  • 在“ always_comb”之后的范围中发现
  • 语法错误。是否缺少'::'?

0 个答案:

没有答案