Часть, которая вызывает проблемы, это c[1] = p[0] + g[0] & c0;
. Что с этим не так?
module CLA_gen(p, g, c0, c);
input [3:0] p;
input [3:0] g;
input c0;
output reg [4:1] c;
begin
c[1] = p[0] + g[0] & c0;
end
endmodule
Часть, которая вызывает проблемы, это c[1] = p[0] + g[0] & c0;
. Что с этим не так?
module CLA_gen(p, g, c0, c);
input [3:0] p;
input [3:0] g;
input c0;
output reg [4:1] c;
begin
c[1] = p[0] + g[0] & c0;
end
endmodule
Вам не хватает вашего постоянного блока и его списка чувствительности.
always @(*)
c[1] = p[0] + g[0] & c0;
В коде, который вы разместили выше, вам не обязательно нужно начало/конец, поскольку у вас есть только одна строка. Но добавить его туда не помешает.
Скорее всего, вы хотите изменить:
begin
to:
always @* begin
Каждый begin/end
должен быть частью другой конструкции, такой как always
, initial
и т. д.
Удалите начало и конец, объявите c только как выход
следить за этим
module CLA_gen(p, g, c0, c);
input [3:0] p;
input [3:0] g;
input c0;
output [4:1] c;
assign c[1] = p[0] + g[0] & c0;
endmodule
Возможно, вам придется использовать ‹= вместо = .