2017-05-24 2 views
1

J'essaie de trouver un équivalent de l'opérateur de puissance Verilog ** dans Chisel. Je suis passé par Chisel Cheat sheet et tutorial mais je n'ai pas trouvé ce que je cherchais. Après avoir traversé des conceptions écrites en Chisel, j'ai trouvé que les fonctions log2xx sont un choix populaire alors que l'opérateur de puissance n'est jamais utilisé. Bien sûr, je peux toujours utiliser l'opérateur de décalage pour obtenir la puissance de 2, mais j'espérais qu'il y a un opérateur de puissance générale dans Chisel. J'ai essayé d'utiliser les fonctions mathématiques de scala pour le travail mais j'ai eu une erreur de compilation.Opérateur de puissance à Chisel

+1

Pour plus de clarté, essayez-vous de créer du matériel capable de calculer un exposant ou essayez-vous de calculer une constante ou une largeur de bit? – jkoenig

+0

J'essaie de calculer la largeur de bande – maskarih

Répondre

1

Puisque vous essayez de calculer une largeur de bit qui est calculée à le temps d'élaboration (c'est-à-dire lorsque Scala élabore le graphe matériel), nous pouvons utiliser les fonctions Scala. Scala fournit seulement un power function for Doubles, mais cela fonctionne très bien pour ce cas. Essayez math.pow(base, exp).toInt, notez que base et exp peuvent être Ints et Scala les convertiront automatiquement en doubles pour l'appel de fonction. Vous avez simplement besoin de convertir le Double résultant en un Int pour l'utiliser comme bitwidth.