-
Multiplieur 16*16
Bonjour,
je veux multiplier deux entrées sur 16 bits (donc résultat sur 32 bits) or le synthétiseur que j'utilise ne connaît pas l'instruction '*' du VHDL. Je dois donc décrire le comportement d'un multiplieur 16*16. Puis-je trouver facilement une telle description libre de droits ?
Merci du coup de main.
-
Bonsoir,
Si vous êtes sur une cible :
- Altera : il faut utiliser le MegaWizard. Par exemple, lancer QuartusII et ouvrez un projet, puis "MegaWizard Plug-In Manager", puis "Create a new...", puis Arithmetic, et enfin ALTMULT_ACCUM ou ALTMULT_ADD ou ALTMULT_COMPLEX
- Xilinx : il faut utiliser le CORE Generator, puis "Math Functions", puis "Multipliers" et enfin vous choississez l'un des modules listés.
- autre : vous utilisez les outils du fondeur pour générer le module
- version générique "full VHDL" : le plus simple est de faire 16 additions conditionnelles. Pour faire A x B, considérez que B est la somme d'éléments binaires, donc 2^i + 2^j + 2^k etc... Vous n'avez plus qu'à faire la somme et le tour est joué. Le mieux sur une cible pas trop ancienne, est de faire un 1er étage avec 4 additionneurs à 4 entrées, et un 2ème étage avec 1 additionneur reprenant les 4 sorties du 1er étage. Donc 2 cycles d'horloge.
Cdlt