Oui, il y a un problème d’approximation lors de l’utilisation du package math_real VHDL dans le logiciel Quartus® II pour les fonctions du journal et du sol ensemble. Dans certaines circonstances, une erreur d’arrondissement peut entraîner un calcul de valeur de sol incorrect.
Par exemple, lorsque vous utilisez la fonction de package math_real pour calculer log2(8.0), la bonne réponse doit être 3.0, mais la valeur réelle calculée dans le logiciel Quartus II est 2.99999999999999999996. Lorsque ce résultat est alors flooré, le résultat est 2.0 au lieu de 3.0.
Exemple
floor(log2(real(8))) = 2.0
Pour contourner ce problème dans le logiciel Quartus II, utilisez une des options suivantes
- Si la fonction de sol est appliquée aux calculs des journaux, ajoutez une marge d’erreur
- Exemple:
floor(0.000001 log2(real(8))) = 3.0
- Utilisez la fonction de conversion des entiers au lieu de la fonction de sol
- Exemple:
integer (log2(real(8))) = 3.0
Ce problème devrait être résolu dans une prochaine version du logiciel Quartus II.