J'ai écrit un code pour un multiplicateur de 52 bits que je dois donner sous une forme standard (standard à virgule flottante IEEE 754 pour les nombres de 64 bits). Donc après, je vérifie, combien de bits a-t-il dépassé de 64, de sorte que je mettrais ce nombre en exposant.Erreur de code Verilog: La plage doit être délimitée par des expressions constantes
module mul1(output reg [103:0] p,
output reg [51:0] c,
input [51:0] x,
input [51:0] y);
reg [103:0]a;
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
il donne une erreur: Gamme doit être délimitée par des expressions constantes pour la ligne: c = p [i: i-51]; Comment puis-je résoudre ce problème?
Possible copie de [Verilog: "... n'est pas une constante"] (http://stackoverflow.com/questions/29815974/verilog-is-not-a-constant) – Qiu