求教Verilog 代码问题
时间:10-02
整理:3721RD
点击:
以下的这段代码在Modelsim下compile之后report sb.v(13): Illegal left-hand side in continuous assignment.请问为何?
另外:如果在always语句内存在局部声明变量,在modelsim编译时会报错,这是为什么?
module sb (me,sl,data);
input [1:3] sl;
input data;
output [7:0] me;
wire [7:0] me;
wire [1:3] sl;
wire data;
assign me [sl]=data;
endmodule
wire 不能这么用, 如果定义寄存器是可以的,可以考虑改为如下
reg [7:0] me;
always @(posedge clk)
me[sl] <= #1 data;
ls 说的对
正解,学习了。
如果在always语句内存在局部声明变量,在modelsim编译时会报错,这是为什么?
在 begin后面加一个随意的标识符,然后就可以begin 。end之间声明局部变量了
在这里纠正一个个人习惯问题 数据位宽最好是从高到低, 如代码中【1:3】最好写成【2:0】
问题已解决,谢谢楼上各位,呵呵。
