Dies ist mein Verilog-Code unten. Ich bekomme 2 Fehler in Modelsim, wenn ich versuche es zu kompilieren.Verliog Modelsim Fehler 2388. bereits in diesem Bereich angegeben
** Fehler (unterdrückbar): /home/ece4514/mul1.v(6): (vlog-2388) 'p' bereits in diesem Bereich (mul1) deklariert. ** Fehler (unterdrückbar): /home/ece4514/mul1.v(8): (vlog-2388) 'c' bereits in diesem Bereich (mul1) deklariert.
module mul1(output [103:0] p,
output [51:0] c,
input [51:0] x,
input [51:0] y);
reg [103:0]p;
reg [103:0]a;
reg c;
integer i;
always @(x , y)
begin
a=x;
p=0; // needs to zeroed
for(i=0;i<104;i=i+1)
begin
if(y[i])
p=p+a; // must be a blocking assignment
a=a<<1;
end
for(i=103;i>=0;i=i-1)
begin
if (p[i])
c=p[i:i-51];
break;
end
end
endmodule
Welche Änderung muss ich machen?
I geändert Code: Modul MUL1 (output reg [103: 0] p, Ausgang reg [51: 0] c, Eingang [51: 0] x, Eingang [51: 0] y) ; reg [103: 0] a; ganze Zahl i; immer @ (x, y) beginnen a = x; p = 0; // muss auf Null gesetzt werden für (i = 0; i <104; i = i + 1) beginnen if (y [i]) p = p + a; // muss eine Blockierungszuweisung sein a = a << 1; Ende for (i = 103; i> = 0; i = i-1) beginnen \t if (p [i]) \t \t c = p [i: i-51]; \t \t Bruch; \t Ende Ende endmodule die vorhergehenden Fehler gelöst, aber jetzt wird es einen neuen Fehler geben: c = p: Bereich muss durch konstante Ausdrücke für die Linie begrenzt werden [i: i-51]; –
change 'to p [i-: 52]' –