Attention, ta méthode te fait perdre le bit de signe. Et tu peux te retrouver avec des valeurs qui n'ont rien à voir.
 
Je ne sais plus si l'attribut length est papplicable à un signal. si c'est la cas, cette version est plus sure:
Code :
 sum(0) <= resize(temp(0), temp(0)'length+1) +  resize(temp(1), temp(1)'length+1); 
 
  | 
 
DE même pour être générique, tu peux déclarer tes signaux en fonction de la taille de tes entrées, Par exemple:
Code :
 type ram16 is array (0 to 3) of signed(code'high downto code'low); 
 
  | 
 
Aussi, au lieu de faire des cast (signed) sur data et CD, pourquoi ne pas les déclarrer signed?
 
 ---------------
			
sheep++