【发布时间】:2017-02-14 06:09:40
【问题描述】:
module mult(a, b, p);
input [16:0] a;
input [16:0] b;
output p;
wire [31:0] p;
reg i;
wire pv;
wire bp;
assign pv = 32'b0;
assign bp = {16'b0,b} ;
initial begin
for (i = 0; i < 32 ; i = i + 1)
begin
if (a[i] == 1'b1)
begin
pv <= pv + bp;
end
bp <= bp << 1 ;
end
end
assign p = pv;
endmodule
编译代码时出现以下错误, 第 37 行对标量线“pv”的引用不是合法的 reg 或变量左值 第 37 行非阻塞赋值的非法左侧 第 39 行对标量线 'bp' 的引用不是合法的 reg 或变量左值 第 39 行非阻塞赋值的非法左侧
请帮忙。
【问题讨论】:
-
这段代码表明缺乏对基本 Verilog 概念的理解。在尝试修复代码之前,了解
wirevsregvsinteger以及assignvsinitialvsalways和阻塞分配 (=) 和非阻塞分配 (<=)
标签: verilog xilinx xilinx-ise