VHDL: Comment convertir un nombre en virgule flottante entier
Je veux passer un à partir d'un nombre à virgule flottante à un nombre entier. Fondamentalement, j'ai un nombre à virgule flottante compris entre 1 et 0, avec trois décimales et que je veux passer à un nombre entier, comme si je multiplie par 1000. Je soupçonne il devrait y avoir une manière plus optimale de le faire que de l'aide de l'arithmétique mult opération x1000. Im la recherche d'un morceau de code, de préférence. Merci à toutes les pices de code, des références, des articles ou des commentaires.
- Êtes-vous à l'aide de float (réel) dans un code comportemental pour la simulation ou en RTL code qui devrait aller à la quincaillerie?
- Je veux sinthesize d'opérations en virgule flottante.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez que ce pour simulations que vous pouvez faire quelque chose comme:
Si vous voulez synthétiser de matériel, vous pourriez envisager une puissance de deux pour faire la logique de plus en plus compacts.
Cependant, @Potatoswatter a un point valide: vous devriez vous demander si vous avez vraiment besoin d'un réel (virgule flottante).
Si vous avez un binaire à virgule flottante nombre qui n'est pas une constante, il n'y a aucun moyen de convertir un nombre entier en
[0,1000]
sans réellement effectuer la multiplication et de la partie intégrante de conversion.Essayer de faire de l'arithmétique binaire sur le papier. La base 10 mise à l'échelle ne fonctionne pas à un changement ou quelque chose de spécial... c'est juste un générique de mise à l'échelle de l'opération.
Puisque le nombre est dans la gamme
[0,1]
, envisager de faire tout l'arithmétique en virgule fixe, peut-être à l'aide de 1/1024 comme unité, ou même en fixe le point décimal avec 1/1000 comme unité.Vous devez uniquement utiliser le calcul en virgule flottante si vous avez besoin de plus de précision proche de zéro.