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 Ссылки на скалярный провод «р» не является юридической регла или переменным именующее линии 37 Illegal левой стороны неблокируемом назначения линии 39 Ссылка на скалярный провод «bp» не является юридическим регистром или переменной lvalue , строка 39 Незаконная левая сторона неблокирующего назначенияОшибки при проверке синтаксиса
Помощь с помощью Pls.
Этот код демонстрирует отсутствие понимания основных концепций Verilog. Прежде чем пытаться исправить свой код, изучите различия и обычаи 'wire' vs' reg' vs 'integer', а также' assign' vs 'initial' vs' always' и блокировки присвоений ('=') vs non- блокировка присвоений ('<=') – Greg