Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
verilog中的错误:使用系统verilog发出警告';N位向量?_Verilog - Fatal编程技术网

verilog中的错误:使用系统verilog发出警告';N位向量?

verilog中的错误:使用系统verilog发出警告';N位向量?,verilog,Verilog,我正在使用Icarus编译器,我正在做一个MUX4:1 代码是: module mux (in,out,select); input [3:0] in; input [1:0] select; output reg out; always@(select or in) begin if (select == 2b'00) out = in[0]; end else if (select == 2b'01) begin

我正在使用Icarus编译器,我正在做一个MUX4:1

代码是:

module mux (in,out,select);

input   [3:0] in;
input   [1:0] select;
output  reg out;

always@(select or in)
begin
    if (select == 2b'00)

        out = in[0];
    end 

    else if (select == 2b'01)
    begin
        out = in[1];
    end

    else if (select == 2b'10)
    begin   
        out = in[2];
    end

    else if (select == 2b'11)
    begin
        out = in[3];
    end

end
endmodule
但是,我从编译器那里得到了以下信息:

问题是因为我在“if”表达式中使用位格式而不是“int”表达式吗?

请尝试(使用verilog 2005或更高版本):


您的代码的问题是您正在编写
2b'00
而不是
2'b00
,并且Icarus会感到困惑,认为您正在编写SystemVerilog代码,这也是不正确的。所以,要么修复你的文字,要么像Morgan所说的那样更有效地编写代码

谢谢你,摩根。但是有两个问题:“out=in[select]是什么意思?”第二个问题:“always@*”和“always@(in或select)”有什么区别?
out=in[select]
表示使用
select
选择用于out的in位。其他语言中的标准数组选择。表示与您的
ifelse
相同,whcih也可以写成
case
station。如今,手动灵敏度列表不受欢迎。因为它们可能导致RTL和合成门级模拟错误匹配。@Morgan我更喜欢
always\u comb
而不是
always*
。在这个例子中,两者都会起作用,但后者更安全。@NIN你可以在这里读到区别:@DawidGrabowski我同意,这是系统Verilog。不过也谢谢你dave。问题是我无法理解“out=In[select]“声明。我不知道brakets在这里是如何工作的。您可以指定一个变量索引,而不是[0]中的固定索引,它将使用
select
的值作为索引。
module mux (  
  input       [3:0] in,
  input       [1:0] select,
  output  reg       out
);
  always @* begin
    out = in[select];
  end
endmodule