当前位置: 首页 > 工具软件 > variable-type > 使用案例 >

object “y“ on left-hand side of assignment must have a variable data type

彭宏深
2023-12-01

在学习过程中写了一个简单83编码器,代码如下

module code8_3(i,y);
input[7:0] i;
output[2:0] y;
	always@(i)
	begin
		case(i[7:0])
		8'b00000001:y[2:0]=3'b000;
		8'b00000010:y[2:0]=3'b001;
		8'b00000100:y[2:0]=3'b010;
		8'b00001000:y[2:0]=3'b100;
		8'b00010000:y[2:0]=3'b011;
		8'b00100000:y[2:0]=3'b101;
		8'b01000000:y[2:0]=3'b110;
		8'b10000000:y[2:0]=3'b111;
		default: y[2:0]=3'b000;
		endcase
	end
endmodule

报了九个错:Error (10137): Verilog HDL Procedural Assignment error at code8_3.v(8): object "y" on left-hand side of assignment must have a variable data type

可见这里y的格式可能有问题

经debug,发现always语句中的被赋值变量必须为reg型,所以在声明中声明为reg型即可 ,相对的用 assign 连续赋值的对象 必须定义成 wire(线型)

 类似资料: