verilog两个程序几乎一样,为什么其中一个有问题?
程序一:
module test(in1,in2,in3,in4,in5,in6,in7,in8,switch,outdata);
input[3:0] in1,in2,in3,in4,in5,in6,in7,in8;
input[2:0] switch;
output[3:0] outdata;
reg[3:0] outdata;
always@(in1 or in2 or in3 or in4 or in5 or in6 or in7 or in8 or switch)
begin
case(switch)
3'b000: outdata=in1;
3'b001: outdata=in2;
3'b010: outdata=in3;
3'b011: outdata=in4;
3'b100: outdata=in5;
3'b101: outdata=in6;
3'b110: outdata=in7;
3'b111: outdata=in8;
default: outdata=4'bx;
endcase
end
endmodule
程序二:
module mux_8(data,sel,q);
input[2:0] sel;
input[7:0] data;
output q;
reg q;
always @ (sel or data)
case(sel)
3'b000 : q<=data[0];
3'b001 : q<=data[1];
3'b010 : q<=data[2];
3'b011 : q<=data[3];
3'b100 : q<=data[4];
3'b101 : q<=data[5];
3'b110 : q<=data[6];
3'b111 : q<=data[7];
default : q<=1‘bx;
endcase
endmodule
为什么程序一有警告:
Warning (10273): Verilog HDL warning at test.v(19): sign extended using "x" or "z"
去掉default后就好了。而程序二一点问题也没有?
请高手指教,谢谢 |