Quand dois-je utiliser std_logic_vector et quand dois-je utiliser d'autres types de données?

Je suis nouveau sur le VHDL et j'ai du mal à déterminer les types de données sont appropriées pour l'utilisation où. Si je comprends bien, pour faire une synthèse, tout le haut niveau de l'entité ports doivent être déclarés std_logic_vector ou std_logic et jamais un autre type.

Mais std_logic_vector ne prend pas en charge l'arithmétique alors, comment dois-je gérer cela?

Mon intuition me dit que je dois simplement utiliser std_logic_vector au plus haut niveau et ensuite convertir ce vers et à partir de l'intégrale des types de données lors du passage à d'autres entités. Est-ce correct?

Et partie intégrante de ce type de données (entier, non signé, a signé) doit être utilisé lorsque? Je comprends la différence entre signés et non signés, mais quand dois-je utiliser integer?

source d'informationauteur Emil Eriksson