scala - Chisel 中的电源操作符

标签 scala chisel register-transfer-level

我正试图在 Chisel 中找到 Verilog 幂运算符 ** 的等价物。我经历了Chisel Cheat sheettutorial但我没有找到我要找的东西。在浏览了用 Chisel 编写的设计后,我发现 log2xx 函数是流行的选择,而从未使用过幂运算符。当然,我总是可以使用移位运算符来获得 2 的幂,但我希望 Chisel 中有通用的幂运算符。我尝试使用 scala 的数学函数来完成这项工作,但我遇到了编译错误。

最佳答案

由于您正在尝试计算在细化时间(即当 Scala 细化硬件图时)计算的位宽,我们可以使用 Scala 函数。 Scala 只提供了一个power function for Doubles ,但这对这种情况来说效果很好。尝试 math.pow(base, exp).toInt,注意 baseexp 都可以是 Ints,Scala 会自动将它们转换为 Double用于函数调用。您只需将生成的 Double 转换为 Int 以用作位宽。

关于scala - Chisel 中的电源操作符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44149000/

相关文章:

chisel - 如何覆盖/扩展凿子信号命名

chisel - 在凿子中将参数传递给 verilator 后端

verilog - Verilog 中的行为算法 (GCD) - 可能吗?

system-verilog - System Verilog always_latch 与 always_ff

scala - 寻找在 Scala 中动态组合函数的最佳实践

scala - Scala:对重载定义的含糊不清-最佳歧义消除?

fpga - Chisel3 REPL peek 值是正确的,但期望在测试中失败

cpu-architecture - MemReq 和 MemResp 在 RoccIO 中如何工作 - RISCV

scala - 为什么内存接收器在追加模式下不写入任何内容?

scala - 是否有适用于 Haskell 或 Scala 等功能语言的 LL 解析器生成器?