我正在使用编译器Icarus,而我正在以4:1的方式执行Mux。
代码如下:
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
但是我从compilator那里收到了这条消息:
我的问题是,问题是因为我在内部使用位格式"如果"代替表达" int"表达?
Sincerilly。 NIN。
答案 0 :(得分:2)
您的代码存在的问题是您正在编写2b'00
而不是2'b00
,并且Icarus会因为您正在编写SystemVerilog代码而感到困惑,这也不正确。因此要么修复你的文字,要么像摩根发布的那样更有效地编写你的代码。
答案 1 :(得分:1)
尝试(使用verilog 2005或更高版本):
module mux (
input [3:0] in,
input [1:0] select,
output reg out
);
always @* begin
out = in[select];
end
endmodule