J'utilise Quartus Prime Pro.
je traite une fonction en tant que telle:VHDL ne peut pas correspondre contexte d'appel pour to_unsigned dans la fonction définie par l'utilisateur
library ieee ;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
function round_resize (a : unsigned; b : integer) return unsigned is
variable c : signed (a'length - 1 downto 0); --problem child
variable d : signed (b - 1 downto 0);
begin
c := a + to_signed(2**(b-2), a'length);
d := to_unsigned(c(c'length-2 downto (c'length-b-1)));
return d;
end function;
Mais j'obtiens l'erreur:
Error(13643): VHDL error at file.vhd(109): can't determine definition of operator ""+"" -- found 0 possible definitions
Je changé l'enfant problème à ceci:
c := to_unsigned(a + to_signed(2**(b-2), a'length), a'length);
Mais je obtenez l'erreur suivante:
Error(13815): VHDL Qualified Expression error at cpmmod.vhd(110): to_unsigned type specified in Qualified Expression must match signed type that is implied for expression by context
Quoi d'autre puis-je essayer de faire ce travail?
Eh bien, vous pourriez [respecter les types] (https://i.stack.imgur.com/5z9aA.jpg) mais on ne sait pas pourquoi vous faites tout cela. – user1155120
@ user1155120 Je ne comprends vraiment pas pourquoi vous ne mettez pas cela dans une réponse ... au lieu de cela, vous êtes juste un lien vers une image du code qui a une réponse! Pourquoi aller si tout cet effort, mais refuse toujours d'afficher une réponse? – JHBonarius