Chisel 中的电源操作符
Power operator in Chisel
我试图在 Chisel 中找到 Verilog 幂运算符 ** 的等价物。我浏览了 Chisel Cheat sheet and tutorial,但没有找到我要找的东西。在浏览了用 Chisel 编写的设计后,我发现 log2xx 函数是流行的选择,而从未使用过幂运算符。当然,我总是可以使用移位运算符来获得 2 的幂,但我希望 Chisel 中有通用的幂运算符。我尝试使用 scala 的数学函数来完成这项工作,但我遇到了编译错误。
由于您要计算的位宽是在 细化时间 计算的(即当 Scala 细化硬件图时),我们可以使用 Scala 函数。 Scala 只提供了一个 power function for Doubles,但在这种情况下工作得很好。试试 math.pow(base, exp).toInt
,注意 base
和 exp
都可以是 Ints,Scala 会自动将它们转换为 Double 以供函数调用。您只需将生成的 Double 转换为 Int 以用作位宽。
我试图在 Chisel 中找到 Verilog 幂运算符 ** 的等价物。我浏览了 Chisel Cheat sheet and tutorial,但没有找到我要找的东西。在浏览了用 Chisel 编写的设计后,我发现 log2xx 函数是流行的选择,而从未使用过幂运算符。当然,我总是可以使用移位运算符来获得 2 的幂,但我希望 Chisel 中有通用的幂运算符。我尝试使用 scala 的数学函数来完成这项工作,但我遇到了编译错误。
由于您要计算的位宽是在 细化时间 计算的(即当 Scala 细化硬件图时),我们可以使用 Scala 函数。 Scala 只提供了一个 power function for Doubles,但在这种情况下工作得很好。试试 math.pow(base, exp).toInt
,注意 base
和 exp
都可以是 Ints,Scala 会自动将它们转换为 Double 以供函数调用。您只需将生成的 Double 转换为 Int 以用作位宽。