Мне нужно преобразовать Float32 в Chisel FixedPoint, выполнить некоторые вычисления и снова преобразовать FixedPoint в Float32.
Например, мне нужно следующее:
val a = 3.1F
val b = 2.2F
val res = a * b // REPL returns res: Float 6.82
Теперь я делаю это:
import chisel3.experimental.FixedPoint
val fp_tpe = FixedPoint(6.W, 2.BP)
val a_fix = a.Something (fp_tpe) // convert a to FixPoint
val b_fix = b.Something (fp_tpe) // convert b to FixPoint
val res_fix = a_fix * b_fix
val res0 = res_fix.Something (fp_tpe) // convert back to Float
В результате я бы ожидал, что дельта будет в диапазоне, например
val eps = 1e-4
assert ( abs(res - res0) < eps, "The error is too big")
Кто может предоставить рабочий пример класса Chisel3 FixedPoint для псевдокода выше?